'use strict'
var __esbuild_esm_mermaid_nm
;(__esbuild_esm_mermaid_nm ||= {}).mermaid = (() => {
  var abe = Object.create
  var _y = Object.defineProperty
  var sbe = Object.getOwnPropertyDescriptor
  var obe = Object.getOwnPropertyNames
  var lbe = Object.getPrototypeOf,
    cbe = Object.prototype.hasOwnProperty
  var o = (t, e) => _y(t, 'name', { value: e, configurable: !0 })
  var N = (t, e) => () => (t && (e = t((t = 0))), e)
  var Pi = (t, e) => () => (e || t((e = { exports: {} }).exports, e), e.exports),
    ur = (t, e) => {
      for (var r in e) _y(t, r, { get: e[r], enumerable: !0 })
    },
    V4 = (t, e, r, n) => {
      if ((e && typeof e == 'object') || typeof e == 'function')
        for (let i of obe(e)) !cbe.call(t, i) && i !== r && _y(t, i, { get: () => e[i], enumerable: !(n = sbe(e, i)) || n.enumerable })
      return t
    },
    Cr = (t, e, r) => (V4(t, e, 'default'), r && V4(r, e, 'default')),
    Aa = (t, e, r) => ((r = t != null ? abe(lbe(t)) : {}), V4(e || !t || !t.__esModule ? _y(r, 'default', { value: t, enumerable: !0 }) : r, t)),
    ube = t => V4(_y({}, '__esModule', { value: !0 }), t)
  var U4 = Pi((HC, WC) => {
    'use strict'
    ;(function (t, e) {
      typeof HC == 'object' && typeof WC < 'u'
        ? (WC.exports = e())
        : typeof define == 'function' && define.amd
          ? define(e)
          : ((t = typeof globalThis < 'u' ? globalThis : t || self).dayjs = e())
    })(HC, function () {
      'use strict'
      var t = 1e3,
        e = 6e4,
        r = 36e5,
        n = 'millisecond',
        i = 'second',
        a = 'minute',
        s = 'hour',
        l = 'day',
        u = 'week',
        h = 'month',
        f = 'quarter',
        d = 'year',
        p = 'date',
        m = 'Invalid Date',
        g = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,
        y = /\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,
        v = {
          name: 'en',
          weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
          months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
          ordinal: o(function (k) {
            var L = ['th', 'st', 'nd', 'rd'],
              A = k % 100
            return '[' + k + (L[(A - 20) % 10] || L[A] || L[0]) + ']'
          }, 'ordinal')
        },
        x = o(function (k, L, A) {
          var I = String(k)
          return !I || I.length >= L ? k : '' + Array(L + 1 - I.length).join(A) + k
        }, 'm'),
        b = {
          s: x,
          z: o(function (k) {
            var L = -k.utcOffset(),
              A = Math.abs(L),
              I = Math.floor(A / 60),
              M = A % 60
            return (L <= 0 ? '+' : '-') + x(I, 2, '0') + ':' + x(M, 2, '0')
          }, 'z'),
          m: o(function k(L, A) {
            if (L.date() < A.date()) return -k(A, L)
            var I = 12 * (A.year() - L.year()) + (A.month() - L.month()),
              M = L.clone().add(I, h),
              P = A - M < 0,
              B = L.clone().add(I + (P ? -1 : 1), h)
            return +(-(I + (A - M) / (P ? M - B : B - M)) || 0)
          }, 't'),
          a: o(function (k) {
            return k < 0 ? Math.ceil(k) || 0 : Math.floor(k)
          }, 'a'),
          p: o(function (k) {
            return (
              { M: h, y: d, w: u, d: l, D: p, h: s, m: a, s: i, ms: n, Q: f }[k] ||
              String(k || '')
                .toLowerCase()
                .replace(/s$/, '')
            )
          }, 'p'),
          u: o(function (k) {
            return k === void 0
          }, 'u')
        },
        T = 'en',
        S = {}
      S[T] = v
      var w = '$isDayjsObject',
        E = o(function (k) {
          return k instanceof O || !(!k || !k[w])
        }, 'S'),
        _ = o(function k(L, A, I) {
          var M
          if (!L) return T
          if (typeof L == 'string') {
            var P = L.toLowerCase()
            S[P] && (M = P), A && ((S[P] = A), (M = P))
            var B = L.split('-')
            if (!M && B.length > 1) return k(B[0])
          } else {
            var F = L.name
            ;(S[F] = L), (M = F)
          }
          return !I && M && (T = M), M || (!I && T)
        }, 't'),
        C = o(function (k, L) {
          if (E(k)) return k.clone()
          var A = typeof L == 'object' ? L : {}
          return (A.date = k), (A.args = arguments), new O(A)
        }, 'O'),
        D = b
      ;(D.l = _),
        (D.i = E),
        (D.w = function (k, L) {
          return C(k, { locale: L.$L, utc: L.$u, x: L.$x, $offset: L.$offset })
        })
      var O = (function () {
          function k(A) {
            ;(this.$L = _(A.locale, null, !0)), this.parse(A), (this.$x = this.$x || A.x || {}), (this[w] = !0)
          }
          o(k, 'M')
          var L = k.prototype
          return (
            (L.parse = function (A) {
              ;(this.$d = (function (I) {
                var M = I.date,
                  P = I.utc
                if (M === null) return new Date(NaN)
                if (D.u(M)) return new Date()
                if (M instanceof Date) return new Date(M)
                if (typeof M == 'string' && !/Z$/i.test(M)) {
                  var B = M.match(g)
                  if (B) {
                    var F = B[2] - 1 || 0,
                      z = (B[7] || '0').substring(0, 3)
                    return P ? new Date(Date.UTC(B[1], F, B[3] || 1, B[4] || 0, B[5] || 0, B[6] || 0, z)) : new Date(B[1], F, B[3] || 1, B[4] || 0, B[5] || 0, B[6] || 0, z)
                  }
                }
                return new Date(M)
              })(A)),
                this.init()
            }),
            (L.init = function () {
              var A = this.$d
              ;(this.$y = A.getFullYear()),
                (this.$M = A.getMonth()),
                (this.$D = A.getDate()),
                (this.$W = A.getDay()),
                (this.$H = A.getHours()),
                (this.$m = A.getMinutes()),
                (this.$s = A.getSeconds()),
                (this.$ms = A.getMilliseconds())
            }),
            (L.$utils = function () {
              return D
            }),
            (L.isValid = function () {
              return this.$d.toString() !== m
            }),
            (L.isSame = function (A, I) {
              var M = C(A)
              return this.startOf(I) <= M && M <= this.endOf(I)
            }),
            (L.isAfter = function (A, I) {
              return C(A) < this.startOf(I)
            }),
            (L.isBefore = function (A, I) {
              return this.endOf(I) < C(A)
            }),
            (L.$g = function (A, I, M) {
              return D.u(A) ? this[I] : this.set(M, A)
            }),
            (L.unix = function () {
              return Math.floor(this.valueOf() / 1e3)
            }),
            (L.valueOf = function () {
              return this.$d.getTime()
            }),
            (L.startOf = function (A, I) {
              var M = this,
                P = !!D.u(I) || I,
                B = D.p(A),
                F = o(function (Z, ue) {
                  var Q = D.w(M.$u ? Date.UTC(M.$y, ue, Z) : new Date(M.$y, ue, Z), M)
                  return P ? Q : Q.endOf(l)
                }, 'l'),
                z = o(function (Z, ue) {
                  return D.w(M.toDate()[Z].apply(M.toDate('s'), (P ? [0, 0, 0, 0] : [23, 59, 59, 999]).slice(ue)), M)
                }, '$'),
                $ = this.$W,
                U = this.$M,
                K = this.$D,
                ee = 'set' + (this.$u ? 'UTC' : '')
              switch (B) {
                case d:
                  return P ? F(1, 0) : F(31, 11)
                case h:
                  return P ? F(1, U) : F(0, U + 1)
                case u:
                  var Y = this.$locale().weekStart || 0,
                    ce = ($ < Y ? $ + 7 : $) - Y
                  return F(P ? K - ce : K + (6 - ce), U)
                case l:
                case p:
                  return z(ee + 'Hours', 0)
                case s:
                  return z(ee + 'Minutes', 1)
                case a:
                  return z(ee + 'Seconds', 2)
                case i:
                  return z(ee + 'Milliseconds', 3)
                default:
                  return this.clone()
              }
            }),
            (L.endOf = function (A) {
              return this.startOf(A, !1)
            }),
            (L.$set = function (A, I) {
              var M,
                P = D.p(A),
                B = 'set' + (this.$u ? 'UTC' : ''),
                F = ((M = {}),
                (M[l] = B + 'Date'),
                (M[p] = B + 'Date'),
                (M[h] = B + 'Month'),
                (M[d] = B + 'FullYear'),
                (M[s] = B + 'Hours'),
                (M[a] = B + 'Minutes'),
                (M[i] = B + 'Seconds'),
                (M[n] = B + 'Milliseconds'),
                M)[P],
                z = P === l ? this.$D + (I - this.$W) : I
              if (P === h || P === d) {
                var $ = this.clone().set(p, 1)
                $.$d[F](z), $.init(), (this.$d = $.set(p, Math.min(this.$D, $.daysInMonth())).$d)
              } else F && this.$d[F](z)
              return this.init(), this
            }),
            (L.set = function (A, I) {
              return this.clone().$set(A, I)
            }),
            (L.get = function (A) {
              return this[D.p(A)]()
            }),
            (L.add = function (A, I) {
              var M,
                P = this
              A = Number(A)
              var B = D.p(I),
                F = o(function (U) {
                  var K = C(P)
                  return D.w(K.date(K.date() + Math.round(U * A)), P)
                }, 'y')
              if (B === h) return this.set(h, this.$M + A)
              if (B === d) return this.set(d, this.$y + A)
              if (B === l) return F(1)
              if (B === u) return F(7)
              var z = ((M = {}), (M[a] = e), (M[s] = r), (M[i] = t), M)[B] || 1,
                $ = this.$d.getTime() + A * z
              return D.w($, this)
            }),
            (L.subtract = function (A, I) {
              return this.add(-1 * A, I)
            }),
            (L.format = function (A) {
              var I = this,
                M = this.$locale()
              if (!this.isValid()) return M.invalidDate || m
              var P = A || 'YYYY-MM-DDTHH:mm:ssZ',
                B = D.z(this),
                F = this.$H,
                z = this.$m,
                $ = this.$M,
                U = M.weekdays,
                K = M.months,
                ee = M.meridiem,
                Y = o(function (ue, Q, j, ne) {
                  return (ue && (ue[Q] || ue(I, P))) || j[Q].slice(0, ne)
                }, 'h'),
                ce = o(function (ue) {
                  return D.s(F % 12 || 12, ue, '0')
                }, 'd'),
                Z =
                  ee ||
                  function (ue, Q, j) {
                    var ne = ue < 12 ? 'AM' : 'PM'
                    return j ? ne.toLowerCase() : ne
                  }
              return P.replace(y, function (ue, Q) {
                return (
                  Q ||
                  (function (j) {
                    switch (j) {
                      case 'YY':
                        return String(I.$y).slice(-2)
                      case 'YYYY':
                        return D.s(I.$y, 4, '0')
                      case 'M':
                        return $ + 1
                      case 'MM':
                        return D.s($ + 1, 2, '0')
                      case 'MMM':
                        return Y(M.monthsShort, $, K, 3)
                      case 'MMMM':
                        return Y(K, $)
                      case 'D':
                        return I.$D
                      case 'DD':
                        return D.s(I.$D, 2, '0')
                      case 'd':
                        return String(I.$W)
                      case 'dd':
                        return Y(M.weekdaysMin, I.$W, U, 2)
                      case 'ddd':
                        return Y(M.weekdaysShort, I.$W, U, 3)
                      case 'dddd':
                        return U[I.$W]
                      case 'H':
                        return String(F)
                      case 'HH':
                        return D.s(F, 2, '0')
                      case 'h':
                        return ce(1)
                      case 'hh':
                        return ce(2)
                      case 'a':
                        return Z(F, z, !0)
                      case 'A':
                        return Z(F, z, !1)
                      case 'm':
                        return String(z)
                      case 'mm':
                        return D.s(z, 2, '0')
                      case 's':
                        return String(I.$s)
                      case 'ss':
                        return D.s(I.$s, 2, '0')
                      case 'SSS':
                        return D.s(I.$ms, 3, '0')
                      case 'Z':
                        return B
                    }
                    return null
                  })(ue) ||
                  B.replace(':', '')
                )
              })
            }),
            (L.utcOffset = function () {
              return 15 * -Math.round(this.$d.getTimezoneOffset() / 15)
            }),
            (L.diff = function (A, I, M) {
              var P,
                B = this,
                F = D.p(I),
                z = C(A),
                $ = (z.utcOffset() - this.utcOffset()) * e,
                U = this - z,
                K = o(function () {
                  return D.m(B, z)
                }, 'D')
              switch (F) {
                case d:
                  P = K() / 12
                  break
                case h:
                  P = K()
                  break
                case f:
                  P = K() / 3
                  break
                case u:
                  P = (U - $) / 6048e5
                  break
                case l:
                  P = (U - $) / 864e5
                  break
                case s:
                  P = U / r
                  break
                case a:
                  P = U / e
                  break
                case i:
                  P = U / t
                  break
                default:
                  P = U
              }
              return M ? P : D.a(P)
            }),
            (L.daysInMonth = function () {
              return this.endOf(h).$D
            }),
            (L.$locale = function () {
              return S[this.$L]
            }),
            (L.locale = function (A, I) {
              if (!A) return this.$L
              var M = this.clone(),
                P = _(A, I, !0)
              return P && (M.$L = P), M
            }),
            (L.clone = function () {
              return D.w(this.$d, this)
            }),
            (L.toDate = function () {
              return new Date(this.valueOf())
            }),
            (L.toJSON = function () {
              return this.isValid() ? this.toISOString() : null
            }),
            (L.toISOString = function () {
              return this.$d.toISOString()
            }),
            (L.toString = function () {
              return this.$d.toUTCString()
            }),
            k
          )
        })(),
        R = O.prototype
      return (
        (C.prototype = R),
        [
          ['$ms', n],
          ['$s', i],
          ['$m', a],
          ['$H', s],
          ['$W', l],
          ['$M', h],
          ['$y', d],
          ['$D', p]
        ].forEach(function (k) {
          R[k[1]] = function (L) {
            return this.$g(L, k[0], k[1])
          }
        }),
        (C.extend = function (k, L) {
          return k.$i || (k(L, O, C), (k.$i = !0)), C
        }),
        (C.locale = _),
        (C.isDayjs = E),
        (C.unix = function (k) {
          return C(1e3 * k)
        }),
        (C.en = S[T]),
        (C.Ls = S),
        (C.p = {}),
        C
      )
    })
  })
  var f$,
    iu,
    X,
    Dy,
    ko,
    yt = N(() => {
      'use strict'
      ;(f$ = Aa(U4(), 1)),
        (iu = { trace: 0, debug: 1, info: 2, warn: 3, error: 4, fatal: 5 }),
        (X = {
          trace: o((...t) => {}, 'trace'),
          debug: o((...t) => {}, 'debug'),
          info: o((...t) => {}, 'info'),
          warn: o((...t) => {}, 'warn'),
          error: o((...t) => {}, 'error'),
          fatal: o((...t) => {}, 'fatal')
        }),
        (Dy = o(function (t = 'fatal') {
          let e = iu.fatal
          typeof t == 'string' ? t.toLowerCase() in iu && (e = iu[t]) : typeof t == 'number' && (e = t),
            (X.trace = () => {}),
            (X.debug = () => {}),
            (X.info = () => {}),
            (X.warn = () => {}),
            (X.error = () => {}),
            (X.fatal = () => {}),
            e <= iu.fatal && (X.fatal = console.error ? console.error.bind(console, ko('FATAL'), 'color: orange') : console.log.bind(console, '\x1B[35m', ko('FATAL'))),
            e <= iu.error && (X.error = console.error ? console.error.bind(console, ko('ERROR'), 'color: orange') : console.log.bind(console, '\x1B[31m', ko('ERROR'))),
            e <= iu.warn && (X.warn = console.warn ? console.warn.bind(console, ko('WARN'), 'color: orange') : console.log.bind(console, '\x1B[33m', ko('WARN'))),
            e <= iu.info && (X.info = console.info ? console.info.bind(console, ko('INFO'), 'color: lightblue') : console.log.bind(console, '\x1B[34m', ko('INFO'))),
            e <= iu.debug && (X.debug = console.debug ? console.debug.bind(console, ko('DEBUG'), 'color: lightgreen') : console.log.bind(console, '\x1B[32m', ko('DEBUG'))),
            e <= iu.trace && (X.trace = console.debug ? console.debug.bind(console, ko('TRACE'), 'color: lightgreen') : console.log.bind(console, '\x1B[32m', ko('TRACE')))
        }, 'setLogLevel')),
        (ko = o(t => `%c${(0, f$.default)().format('ss.SSS')} : ${t} : `, 'format'))
    })
  var hbe,
    u0,
    qC,
    d$,
    H4 = N(() => {
      'use strict'
      ;(hbe = Object.freeze({ left: 0, top: 0, width: 16, height: 16 })),
        (u0 = Object.freeze({ rotate: 0, vFlip: !1, hFlip: !1 })),
        (qC = Object.freeze({ ...hbe, ...u0 })),
        (d$ = Object.freeze({ ...qC, body: '', hidden: !1 }))
    })
  var fbe,
    p$,
    m$ = N(() => {
      'use strict'
      H4()
      ;(fbe = Object.freeze({ width: null, height: null })), (p$ = Object.freeze({ ...fbe, ...u0 }))
    })
  var YC,
    W4,
    g$ = N(() => {
      'use strict'
      ;(YC = o((t, e, r, n = '') => {
        let i = t.split(':')
        if (t.slice(0, 1) === '@') {
          if (i.length < 2 || i.length > 3) return null
          n = i.shift().slice(1)
        }
        if (i.length > 3 || !i.length) return null
        if (i.length > 1) {
          let l = i.pop(),
            u = i.pop(),
            h = { provider: i.length > 0 ? i[0] : n, prefix: u, name: l }
          return e && !W4(h) ? null : h
        }
        let a = i[0],
          s = a.split('-')
        if (s.length > 1) {
          let l = { provider: n, prefix: s.shift(), name: s.join('-') }
          return e && !W4(l) ? null : l
        }
        if (r && n === '') {
          let l = { provider: n, prefix: '', name: a }
          return e && !W4(l, r) ? null : l
        }
        return null
      }, 'stringToIcon')),
        (W4 = o((t, e) => (t ? !!(((e && t.prefix === '') || t.prefix) && t.name) : !1), 'validateIconName'))
    })
  function y$(t, e) {
    let r = {}
    !t.hFlip != !e.hFlip && (r.hFlip = !0), !t.vFlip != !e.vFlip && (r.vFlip = !0)
    let n = ((t.rotate || 0) + (e.rotate || 0)) % 4
    return n && (r.rotate = n), r
  }
  var v$ = N(() => {
    'use strict'
    o(y$, 'mergeIconTransformations')
  })
  function XC(t, e) {
    let r = y$(t, e)
    for (let n in d$) n in u0 ? n in t && !(n in r) && (r[n] = u0[n]) : n in e ? (r[n] = e[n]) : n in t && (r[n] = t[n])
    return r
  }
  var x$ = N(() => {
    'use strict'
    H4()
    v$()
    o(XC, 'mergeIconData')
  })
  function b$(t, e) {
    let r = t.icons,
      n = t.aliases || Object.create(null),
      i = Object.create(null)
    function a(s) {
      if (r[s]) return (i[s] = [])
      if (!(s in i)) {
        i[s] = null
        let l = n[s] && n[s].parent,
          u = l && a(l)
        u && (i[s] = [l].concat(u))
      }
      return i[s]
    }
    return o(a, 'resolve'), (e || Object.keys(r).concat(Object.keys(n))).forEach(a), i
  }
  var T$ = N(() => {
    'use strict'
    o(b$, 'getIconsTree')
  })
  function w$(t, e, r) {
    let n = t.icons,
      i = t.aliases || Object.create(null),
      a = {}
    function s(l) {
      a = XC(n[l] || i[l], a)
    }
    return o(s, 'parse'), s(e), r.forEach(s), XC(t, a)
  }
  function jC(t, e) {
    if (t.icons[e]) return w$(t, e, [])
    let r = b$(t, [e])[e]
    return r ? w$(t, e, r) : null
  }
  var k$ = N(() => {
    'use strict'
    x$()
    T$()
    o(w$, 'internalGetIconData')
    o(jC, 'getIconData')
  })
  function KC(t, e, r) {
    if (e === 1) return t
    if (((r = r || 100), typeof t == 'number')) return Math.ceil(t * e * r) / r
    if (typeof t != 'string') return t
    let n = t.split(dbe)
    if (n === null || !n.length) return t
    let i = [],
      a = n.shift(),
      s = pbe.test(a)
    for (;;) {
      if (s) {
        let l = parseFloat(a)
        isNaN(l) ? i.push(a) : i.push(Math.ceil(l * e * r) / r)
      } else i.push(a)
      if (((a = n.shift()), a === void 0)) return i.join('')
      s = !s
    }
  }
  var dbe,
    pbe,
    E$ = N(() => {
      'use strict'
      ;(dbe = /(-?[0-9.]*[0-9]+[0-9.]*)/g), (pbe = /^-?[0-9.]*[0-9]+[0-9.]*$/g)
      o(KC, 'calculateSize')
    })
  function mbe(t, e = 'defs') {
    let r = '',
      n = t.indexOf('<' + e)
    for (; n >= 0; ) {
      let i = t.indexOf('>', n),
        a = t.indexOf('</' + e)
      if (i === -1 || a === -1) break
      let s = t.indexOf('>', a)
      if (s === -1) break
      ;(r += t.slice(i + 1, a).trim()), (t = t.slice(0, n).trim() + t.slice(s + 1))
    }
    return { defs: r, content: t }
  }
  function gbe(t, e) {
    return t ? '<defs>' + t + '</defs>' + e : e
  }
  function S$(t, e, r) {
    let n = mbe(t)
    return gbe(n.defs, e + n.content + r)
  }
  var C$ = N(() => {
    'use strict'
    o(mbe, 'splitSVGDefs')
    o(gbe, 'mergeDefsAndContent')
    o(S$, 'wrapSVGContent')
  })
  function QC(t, e) {
    let r = { ...qC, ...t },
      n = { ...p$, ...e },
      i = { left: r.left, top: r.top, width: r.width, height: r.height },
      a = r.body
    ;[r, n].forEach(y => {
      let v = [],
        x = y.hFlip,
        b = y.vFlip,
        T = y.rotate
      x
        ? b
          ? (T += 2)
          : (v.push('translate(' + (i.width + i.left).toString() + ' ' + (0 - i.top).toString() + ')'), v.push('scale(-1 1)'), (i.top = i.left = 0))
        : b && (v.push('translate(' + (0 - i.left).toString() + ' ' + (i.height + i.top).toString() + ')'), v.push('scale(1 -1)'), (i.top = i.left = 0))
      let S
      switch ((T < 0 && (T -= Math.floor(T / 4) * 4), (T = T % 4), T)) {
        case 1:
          ;(S = i.height / 2 + i.top), v.unshift('rotate(90 ' + S.toString() + ' ' + S.toString() + ')')
          break
        case 2:
          v.unshift('rotate(180 ' + (i.width / 2 + i.left).toString() + ' ' + (i.height / 2 + i.top).toString() + ')')
          break
        case 3:
          ;(S = i.width / 2 + i.left), v.unshift('rotate(-90 ' + S.toString() + ' ' + S.toString() + ')')
          break
      }
      T % 2 === 1 && (i.left !== i.top && ((S = i.left), (i.left = i.top), (i.top = S)), i.width !== i.height && ((S = i.width), (i.width = i.height), (i.height = S))),
        v.length && (a = S$(a, '<g transform="' + v.join(' ') + '">', '</g>'))
    })
    let s = n.width,
      l = n.height,
      u = i.width,
      h = i.height,
      f,
      d
    s === null ? ((d = l === null ? '1em' : l === 'auto' ? h : l), (f = KC(d, u / h))) : ((f = s === 'auto' ? u : s), (d = l === null ? KC(f, h / u) : l === 'auto' ? h : l))
    let p = {},
      m = o((y, v) => {
        ybe(v) || (p[y] = v.toString())
      }, 'setAttr')
    m('width', f), m('height', d)
    let g = [i.left, i.top, u, h]
    return (p.viewBox = g.join(' ')), { attributes: p, viewBox: g, body: a }
  }
  var ybe,
    A$ = N(() => {
      'use strict'
      H4()
      m$()
      E$()
      C$()
      ybe = o(t => t === 'unset' || t === 'undefined' || t === 'none', 'isUnsetKeyword')
      o(QC, 'iconToSVG')
    })
  function ZC(t, e = xbe) {
    let r = [],
      n
    for (; (n = vbe.exec(t)); ) r.push(n[1])
    if (!r.length) return t
    let i = 'suffix' + ((Math.random() * 16777216) | Date.now()).toString(16)
    return (
      r.forEach(a => {
        let s = typeof e == 'function' ? e(a) : e + (bbe++).toString(),
          l = a.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')
        t = t.replace(new RegExp('([#;"])(' + l + ')([")]|\\.[a-z])', 'g'), '$1' + s + i + '$3')
      }),
      (t = t.replace(new RegExp(i, 'g'), '')),
      t
    )
  }
  var vbe,
    xbe,
    bbe,
    _$ = N(() => {
      'use strict'
      ;(vbe = /\sid="(\S+)"/g), (xbe = 'IconifyId' + Date.now().toString(16) + ((Math.random() * 16777216) | 0).toString(16)), (bbe = 0)
      o(ZC, 'replaceIDs')
    })
  function JC(t, e) {
    let r = t.indexOf('xlink:') === -1 ? '' : ' xmlns:xlink="http://www.w3.org/1999/xlink"'
    for (let n in e) r += ' ' + n + '="' + e[n] + '"'
    return '<svg xmlns="http://www.w3.org/2000/svg"' + r + '>' + t + '</svg>'
  }
  var D$ = N(() => {
    'use strict'
    o(JC, 'iconToHTML')
  })
  var R$ = Pi((Iat, L$) => {
    'use strict'
    var h0 = 1e3,
      f0 = h0 * 60,
      d0 = f0 * 60,
      ed = d0 * 24,
      Tbe = ed * 7,
      wbe = ed * 365.25
    L$.exports = function (t, e) {
      e = e || {}
      var r = typeof t
      if (r === 'string' && t.length > 0) return kbe(t)
      if (r === 'number' && isFinite(t)) return e.long ? Sbe(t) : Ebe(t)
      throw new Error('val is not a non-empty string or a valid number. val=' + JSON.stringify(t))
    }
    function kbe(t) {
      if (((t = String(t)), !(t.length > 100))) {
        var e = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(t)
        if (e) {
          var r = parseFloat(e[1]),
            n = (e[2] || 'ms').toLowerCase()
          switch (n) {
            case 'years':
            case 'year':
            case 'yrs':
            case 'yr':
            case 'y':
              return r * wbe
            case 'weeks':
            case 'week':
            case 'w':
              return r * Tbe
            case 'days':
            case 'day':
            case 'd':
              return r * ed
            case 'hours':
            case 'hour':
            case 'hrs':
            case 'hr':
            case 'h':
              return r * d0
            case 'minutes':
            case 'minute':
            case 'mins':
            case 'min':
            case 'm':
              return r * f0
            case 'seconds':
            case 'second':
            case 'secs':
            case 'sec':
            case 's':
              return r * h0
            case 'milliseconds':
            case 'millisecond':
            case 'msecs':
            case 'msec':
            case 'ms':
              return r
            default:
              return
          }
        }
      }
    }
    o(kbe, 'parse')
    function Ebe(t) {
      var e = Math.abs(t)
      return e >= ed ? Math.round(t / ed) + 'd' : e >= d0 ? Math.round(t / d0) + 'h' : e >= f0 ? Math.round(t / f0) + 'm' : e >= h0 ? Math.round(t / h0) + 's' : t + 'ms'
    }
    o(Ebe, 'fmtShort')
    function Sbe(t) {
      var e = Math.abs(t)
      return e >= ed ? q4(t, e, ed, 'day') : e >= d0 ? q4(t, e, d0, 'hour') : e >= f0 ? q4(t, e, f0, 'minute') : e >= h0 ? q4(t, e, h0, 'second') : t + ' ms'
    }
    o(Sbe, 'fmtLong')
    function q4(t, e, r, n) {
      var i = e >= r * 1.5
      return Math.round(t / r) + ' ' + n + (i ? 's' : '')
    }
    o(q4, 'plural')
  })
  var M$ = Pi((Pat, N$) => {
    'use strict'
    function Cbe(t) {
      ;(r.debug = r),
        (r.default = r),
        (r.coerce = u),
        (r.disable = s),
        (r.enable = i),
        (r.enabled = l),
        (r.humanize = R$()),
        (r.destroy = h),
        Object.keys(t).forEach(f => {
          r[f] = t[f]
        }),
        (r.names = []),
        (r.skips = []),
        (r.formatters = {})
      function e(f) {
        let d = 0
        for (let p = 0; p < f.length; p++) (d = (d << 5) - d + f.charCodeAt(p)), (d |= 0)
        return r.colors[Math.abs(d) % r.colors.length]
      }
      o(e, 'selectColor'), (r.selectColor = e)
      function r(f) {
        let d,
          p = null,
          m,
          g
        function y(...v) {
          if (!y.enabled) return
          let x = y,
            b = Number(new Date()),
            T = b - (d || b)
          ;(x.diff = T), (x.prev = d), (x.curr = b), (d = b), (v[0] = r.coerce(v[0])), typeof v[0] != 'string' && v.unshift('%O')
          let S = 0
          ;(v[0] = v[0].replace(/%([a-zA-Z%])/g, (E, _) => {
            if (E === '%%') return '%'
            S++
            let C = r.formatters[_]
            if (typeof C == 'function') {
              let D = v[S]
              ;(E = C.call(x, D)), v.splice(S, 1), S--
            }
            return E
          })),
            r.formatArgs.call(x, v),
            (x.log || r.log).apply(x, v)
        }
        return (
          o(y, 'debug'),
          (y.namespace = f),
          (y.useColors = r.useColors()),
          (y.color = r.selectColor(f)),
          (y.extend = n),
          (y.destroy = r.destroy),
          Object.defineProperty(y, 'enabled', {
            enumerable: !0,
            configurable: !1,
            get: o(() => (p !== null ? p : (m !== r.namespaces && ((m = r.namespaces), (g = r.enabled(f))), g)), 'get'),
            set: o(v => {
              p = v
            }, 'set')
          }),
          typeof r.init == 'function' && r.init(y),
          y
        )
      }
      o(r, 'createDebug')
      function n(f, d) {
        let p = r(this.namespace + (typeof d > 'u' ? ':' : d) + f)
        return (p.log = this.log), p
      }
      o(n, 'extend')
      function i(f) {
        r.save(f), (r.namespaces = f), (r.names = []), (r.skips = [])
        let d = (typeof f == 'string' ? f : '').trim().replace(' ', ',').split(',').filter(Boolean)
        for (let p of d) p[0] === '-' ? r.skips.push(p.slice(1)) : r.names.push(p)
      }
      o(i, 'enable')
      function a(f, d) {
        let p = 0,
          m = 0,
          g = -1,
          y = 0
        for (; p < f.length; )
          if (m < d.length && (d[m] === f[p] || d[m] === '*')) d[m] === '*' ? ((g = m), (y = p), m++) : (p++, m++)
          else if (g !== -1) (m = g + 1), y++, (p = y)
          else return !1
        for (; m < d.length && d[m] === '*'; ) m++
        return m === d.length
      }
      o(a, 'matchesTemplate')
      function s() {
        let f = [...r.names, ...r.skips.map(d => '-' + d)].join(',')
        return r.enable(''), f
      }
      o(s, 'disable')
      function l(f) {
        for (let d of r.skips) if (a(f, d)) return !1
        for (let d of r.names) if (a(f, d)) return !0
        return !1
      }
      o(l, 'enabled')
      function u(f) {
        return f instanceof Error ? f.stack || f.message : f
      }
      o(u, 'coerce')
      function h() {
        console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.')
      }
      return o(h, 'destroy'), r.enable(r.load()), r
    }
    o(Cbe, 'setup')
    N$.exports = Cbe
  })
  var I$ = Pi((js, Y4) => {
    'use strict'
    js.formatArgs = _be
    js.save = Dbe
    js.load = Lbe
    js.useColors = Abe
    js.storage = Rbe()
    js.destroy = (() => {
      let t = !1
      return () => {
        t || ((t = !0), console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'))
      }
    })()
    js.colors = [
      '#0000CC',
      '#0000FF',
      '#0033CC',
      '#0033FF',
      '#0066CC',
      '#0066FF',
      '#0099CC',
      '#0099FF',
      '#00CC00',
      '#00CC33',
      '#00CC66',
      '#00CC99',
      '#00CCCC',
      '#00CCFF',
      '#3300CC',
      '#3300FF',
      '#3333CC',
      '#3333FF',
      '#3366CC',
      '#3366FF',
      '#3399CC',
      '#3399FF',
      '#33CC00',
      '#33CC33',
      '#33CC66',
      '#33CC99',
      '#33CCCC',
      '#33CCFF',
      '#6600CC',
      '#6600FF',
      '#6633CC',
      '#6633FF',
      '#66CC00',
      '#66CC33',
      '#9900CC',
      '#9900FF',
      '#9933CC',
      '#9933FF',
      '#99CC00',
      '#99CC33',
      '#CC0000',
      '#CC0033',
      '#CC0066',
      '#CC0099',
      '#CC00CC',
      '#CC00FF',
      '#CC3300',
      '#CC3333',
      '#CC3366',
      '#CC3399',
      '#CC33CC',
      '#CC33FF',
      '#CC6600',
      '#CC6633',
      '#CC9900',
      '#CC9933',
      '#CCCC00',
      '#CCCC33',
      '#FF0000',
      '#FF0033',
      '#FF0066',
      '#FF0099',
      '#FF00CC',
      '#FF00FF',
      '#FF3300',
      '#FF3333',
      '#FF3366',
      '#FF3399',
      '#FF33CC',
      '#FF33FF',
      '#FF6600',
      '#FF6633',
      '#FF9900',
      '#FF9933',
      '#FFCC00',
      '#FFCC33'
    ]
    function Abe() {
      if (typeof window < 'u' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) return !0
      if (typeof navigator < 'u' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) return !1
      let t
      return (
        (typeof document < 'u' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||
        (typeof window < 'u' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||
        (typeof navigator < 'u' && navigator.userAgent && (t = navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)) && parseInt(t[1], 10) >= 31) ||
        (typeof navigator < 'u' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))
      )
    }
    o(Abe, 'useColors')
    function _be(t) {
      if (
        ((t[0] = (this.useColors ? '%c' : '') + this.namespace + (this.useColors ? ' %c' : ' ') + t[0] + (this.useColors ? '%c ' : ' ') + '+' + Y4.exports.humanize(this.diff)),
        !this.useColors)
      )
        return
      let e = 'color: ' + this.color
      t.splice(1, 0, e, 'color: inherit')
      let r = 0,
        n = 0
      t[0].replace(/%[a-zA-Z%]/g, i => {
        i !== '%%' && (r++, i === '%c' && (n = r))
      }),
        t.splice(n, 0, e)
    }
    o(_be, 'formatArgs')
    js.log = console.debug || console.log || (() => {})
    function Dbe(t) {
      try {
        t ? js.storage.setItem('debug', t) : js.storage.removeItem('debug')
      } catch {}
    }
    o(Dbe, 'save')
    function Lbe() {
      let t
      try {
        t = js.storage.getItem('debug')
      } catch {}
      return !t && typeof process < 'u' && 'env' in process && (t = process.env.DEBUG), t
    }
    o(Lbe, 'load')
    function Rbe() {
      try {
        return localStorage
      } catch {}
    }
    o(Rbe, 'localstorage')
    Y4.exports = M$()(js)
    var { formatters: Nbe } = Y4.exports
    Nbe.j = function (t) {
      try {
        return JSON.stringify(t)
      } catch (e) {
        return '[UnexpectedJSONParseError]: ' + e.message
      }
    }
  })
  var zat,
    O$ = N(() => {
      'use strict'
      g$()
      k$()
      A$()
      _$()
      D$()
      zat = Aa(I$(), 1)
    })
  var t7,
    e7,
    P$,
    X4,
    B$,
    F$,
    Es,
    jl = N(() => {
      'use strict'
      yt()
      O$()
      ;(t7 = {
        body: '<g><rect width="80" height="80" style="fill: #087ebf; stroke-width: 0px;"/><text transform="translate(21.16 64.67)" style="fill: #fff; font-family: ArialMT, Arial; font-size: 67.75px;"><tspan x="0" y="0">?</tspan></text></g>',
        height: 80,
        width: 80
      }),
        (e7 = new Map()),
        (P$ = new Map()),
        (X4 = o(t => {
          for (let e of t) {
            if (!e.name) throw new Error('Invalid icon loader. Must have a "name" property with non-empty string value.')
            if ((X.debug('Registering icon pack:', e.name), 'loader' in e)) P$.set(e.name, e.loader)
            else if ('icons' in e) e7.set(e.name, e.icons)
            else throw (X.error('Invalid icon loader:', e), new Error('Invalid icon loader. Must have either "icons" or "loader" property.'))
          }
        }, 'registerIconPacks')),
        (B$ = o(async (t, e) => {
          let r = YC(t, !0, e !== void 0)
          if (!r) throw new Error(`Invalid icon name: ${t}`)
          let n = r.prefix || e
          if (!n) throw new Error(`Icon name must contain a prefix: ${t}`)
          let i = e7.get(n)
          if (!i) {
            let s = P$.get(n)
            if (!s) throw new Error(`Icon set not found: ${r.prefix}`)
            try {
              ;(i = { ...(await s()), prefix: n }), e7.set(n, i)
            } catch (l) {
              throw (X.error(l), new Error(`Failed to load icon set: ${r.prefix}`))
            }
          }
          let a = jC(i, r.name)
          if (!a) throw new Error(`Icon not found: ${t}`)
          return a
        }, 'getRegisteredIconData')),
        (F$ = o(async t => {
          try {
            return await B$(t), !0
          } catch {
            return !1
          }
        }, 'isIconAvailable')),
        (Es = o(async (t, e, r) => {
          let n
          try {
            n = await B$(t, e?.fallbackPrefix)
          } catch (s) {
            X.error(s), (n = t7)
          }
          let i = QC(n, e)
          return JC(ZC(i.body), { ...i.attributes, ...r })
        }, 'getIconSVG'))
    })
  function j4(t) {
    for (var e = [], r = 1; r < arguments.length; r++) e[r - 1] = arguments[r]
    var n = Array.from(typeof t == 'string' ? [t] : t)
    n[n.length - 1] = n[n.length - 1].replace(/\r?\n([\t ]*)$/, '')
    var i = n.reduce(function (l, u) {
      var h = u.match(/\n([\t ]+|(?!\s).)/g)
      return h
        ? l.concat(
            h.map(function (f) {
              var d, p
              return (p = (d = f.match(/[\t ]/g)) === null || d === void 0 ? void 0 : d.length) !== null && p !== void 0 ? p : 0
            })
          )
        : l
    }, [])
    if (i.length) {
      var a = new RegExp(
        `
[	 ]{` +
          Math.min.apply(Math, i) +
          '}',
        'g'
      )
      n = n.map(function (l) {
        return l.replace(
          a,
          `
`
        )
      })
    }
    n[0] = n[0].replace(/^\r?\n/, '')
    var s = n[0]
    return (
      e.forEach(function (l, u) {
        var h = s.match(/(?:^|\n)( *)$/),
          f = h ? h[1] : '',
          d = l
        typeof l == 'string' &&
          l.includes(`
`) &&
          (d = String(l)
            .split(
              `
`
            )
            .map(function (p, m) {
              return m === 0 ? p : '' + f + p
            }).join(`
`)),
          (s += d + n[u + 1])
      }),
      s
    )
  }
  var r7 = N(() => {
    'use strict'
    o(j4, 'dedent')
  })
  var K4,
    td,
    $$,
    Q4 = N(() => {
      'use strict'
      ;(K4 = /^-{3}\s*[\n\r](.*?)[\n\r]-{3}\s*[\n\r]+/s), (td = /%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi), ($$ = /\s*%%.*\n/gm)
    })
  var p0,
    n7 = N(() => {
      'use strict'
      p0 = class extends Error {
        static {
          o(this, 'UnknownDiagramError')
        }
        constructor(e) {
          super(e), (this.name = 'UnknownDiagramError')
        }
      }
    })
  var au,
    m0,
    Ly,
    i7,
    z$,
    rd = N(() => {
      'use strict'
      yt()
      Q4()
      n7()
      ;(au = {}),
        (m0 = o(function (t, e) {
          t = t
            .replace(K4, '')
            .replace(td, '')
            .replace(
              $$,
              `
`
            )
          for (let [r, { detector: n }] of Object.entries(au)) if (n(t, e)) return r
          throw new p0(`No diagram type detected matching given configuration for text: ${t}`)
        }, 'detectType')),
        (Ly = o((...t) => {
          for (let { id: e, detector: r, loader: n } of t) i7(e, r, n)
        }, 'registerLazyLoadedDiagrams')),
        (i7 = o((t, e, r) => {
          au[t] && X.warn(`Detector with key ${t} already exists. Overwriting.`),
            (au[t] = { detector: e, loader: r }),
            X.debug(`Detector with key ${t} added${r ? ' with loader' : ''}`)
        }, 'addDetector')),
        (z$ = o(t => au[t].loader, 'getDiagramLoader'))
    })
  var Ry,
    G$,
    a7 = N(() => {
      'use strict'
      Ry = (function () {
        var t = o(function (ze, Le, Ie, xe) {
            for (Ie = Ie || {}, xe = ze.length; xe--; Ie[ze[xe]] = Le);
            return Ie
          }, 'o'),
          e = [1, 24],
          r = [1, 25],
          n = [1, 26],
          i = [1, 27],
          a = [1, 28],
          s = [1, 63],
          l = [1, 64],
          u = [1, 65],
          h = [1, 66],
          f = [1, 67],
          d = [1, 68],
          p = [1, 69],
          m = [1, 29],
          g = [1, 30],
          y = [1, 31],
          v = [1, 32],
          x = [1, 33],
          b = [1, 34],
          T = [1, 35],
          S = [1, 36],
          w = [1, 37],
          E = [1, 38],
          _ = [1, 39],
          C = [1, 40],
          D = [1, 41],
          O = [1, 42],
          R = [1, 43],
          k = [1, 44],
          L = [1, 45],
          A = [1, 46],
          I = [1, 47],
          M = [1, 48],
          P = [1, 50],
          B = [1, 51],
          F = [1, 52],
          z = [1, 53],
          $ = [1, 54],
          U = [1, 55],
          K = [1, 56],
          ee = [1, 57],
          Y = [1, 58],
          ce = [1, 59],
          Z = [1, 60],
          ue = [14, 42],
          Q = [14, 34, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74],
          j = [12, 14, 34, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74],
          ne = [1, 82],
          te = [1, 83],
          he = [1, 84],
          le = [1, 85],
          J = [12, 14, 42],
          Se = [12, 14, 33, 42],
          se = [12, 14, 33, 42, 76, 77, 79, 80],
          ae = [12, 33],
          Oe = [34, 36, 37, 38, 39, 40, 41, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74],
          ye = {
            trace: o(function () {}, 'trace'),
            yy: {},
            symbols_: {
              error: 2,
              start: 3,
              mermaidDoc: 4,
              direction: 5,
              direction_tb: 6,
              direction_bt: 7,
              direction_rl: 8,
              direction_lr: 9,
              graphConfig: 10,
              C4_CONTEXT: 11,
              NEWLINE: 12,
              statements: 13,
              EOF: 14,
              C4_CONTAINER: 15,
              C4_COMPONENT: 16,
              C4_DYNAMIC: 17,
              C4_DEPLOYMENT: 18,
              otherStatements: 19,
              diagramStatements: 20,
              otherStatement: 21,
              title: 22,
              accDescription: 23,
              acc_title: 24,
              acc_title_value: 25,
              acc_descr: 26,
              acc_descr_value: 27,
              acc_descr_multiline_value: 28,
              boundaryStatement: 29,
              boundaryStartStatement: 30,
              boundaryStopStatement: 31,
              boundaryStart: 32,
              LBRACE: 33,
              ENTERPRISE_BOUNDARY: 34,
              attributes: 35,
              SYSTEM_BOUNDARY: 36,
              BOUNDARY: 37,
              CONTAINER_BOUNDARY: 38,
              NODE: 39,
              NODE_L: 40,
              NODE_R: 41,
              RBRACE: 42,
              diagramStatement: 43,
              PERSON: 44,
              PERSON_EXT: 45,
              SYSTEM: 46,
              SYSTEM_DB: 47,
              SYSTEM_QUEUE: 48,
              SYSTEM_EXT: 49,
              SYSTEM_EXT_DB: 50,
              SYSTEM_EXT_QUEUE: 51,
              CONTAINER: 52,
              CONTAINER_DB: 53,
              CONTAINER_QUEUE: 54,
              CONTAINER_EXT: 55,
              CONTAINER_EXT_DB: 56,
              CONTAINER_EXT_QUEUE: 57,
              COMPONENT: 58,
              COMPONENT_DB: 59,
              COMPONENT_QUEUE: 60,
              COMPONENT_EXT: 61,
              COMPONENT_EXT_DB: 62,
              COMPONENT_EXT_QUEUE: 63,
              REL: 64,
              BIREL: 65,
              REL_U: 66,
              REL_D: 67,
              REL_L: 68,
              REL_R: 69,
              REL_B: 70,
              REL_INDEX: 71,
              UPDATE_EL_STYLE: 72,
              UPDATE_REL_STYLE: 73,
              UPDATE_LAYOUT_CONFIG: 74,
              attribute: 75,
              STR: 76,
              STR_KEY: 77,
              STR_VALUE: 78,
              ATTRIBUTE: 79,
              ATTRIBUTE_EMPTY: 80,
              $accept: 0,
              $end: 1
            },
            terminals_: {
              2: 'error',
              6: 'direction_tb',
              7: 'direction_bt',
              8: 'direction_rl',
              9: 'direction_lr',
              11: 'C4_CONTEXT',
              12: 'NEWLINE',
              14: 'EOF',
              15: 'C4_CONTAINER',
              16: 'C4_COMPONENT',
              17: 'C4_DYNAMIC',
              18: 'C4_DEPLOYMENT',
              22: 'title',
              23: 'accDescription',
              24: 'acc_title',
              25: 'acc_title_value',
              26: 'acc_descr',
              27: 'acc_descr_value',
              28: 'acc_descr_multiline_value',
              33: 'LBRACE',
              34: 'ENTERPRISE_BOUNDARY',
              36: 'SYSTEM_BOUNDARY',
              37: 'BOUNDARY',
              38: 'CONTAINER_BOUNDARY',
              39: 'NODE',
              40: 'NODE_L',
              41: 'NODE_R',
              42: 'RBRACE',
              44: 'PERSON',
              45: 'PERSON_EXT',
              46: 'SYSTEM',
              47: 'SYSTEM_DB',
              48: 'SYSTEM_QUEUE',
              49: 'SYSTEM_EXT',
              50: 'SYSTEM_EXT_DB',
              51: 'SYSTEM_EXT_QUEUE',
              52: 'CONTAINER',
              53: 'CONTAINER_DB',
              54: 'CONTAINER_QUEUE',
              55: 'CONTAINER_EXT',
              56: 'CONTAINER_EXT_DB',
              57: 'CONTAINER_EXT_QUEUE',
              58: 'COMPONENT',
              59: 'COMPONENT_DB',
              60: 'COMPONENT_QUEUE',
              61: 'COMPONENT_EXT',
              62: 'COMPONENT_EXT_DB',
              63: 'COMPONENT_EXT_QUEUE',
              64: 'REL',
              65: 'BIREL',
              66: 'REL_U',
              67: 'REL_D',
              68: 'REL_L',
              69: 'REL_R',
              70: 'REL_B',
              71: 'REL_INDEX',
              72: 'UPDATE_EL_STYLE',
              73: 'UPDATE_REL_STYLE',
              74: 'UPDATE_LAYOUT_CONFIG',
              76: 'STR',
              77: 'STR_KEY',
              78: 'STR_VALUE',
              79: 'ATTRIBUTE',
              80: 'ATTRIBUTE_EMPTY'
            },
            productions_: [
              0,
              [3, 1],
              [3, 1],
              [5, 1],
              [5, 1],
              [5, 1],
              [5, 1],
              [4, 1],
              [10, 4],
              [10, 4],
              [10, 4],
              [10, 4],
              [10, 4],
              [13, 1],
              [13, 1],
              [13, 2],
              [19, 1],
              [19, 2],
              [19, 3],
              [21, 1],
              [21, 1],
              [21, 2],
              [21, 2],
              [21, 1],
              [29, 3],
              [30, 3],
              [30, 3],
              [30, 4],
              [32, 2],
              [32, 2],
              [32, 2],
              [32, 2],
              [32, 2],
              [32, 2],
              [32, 2],
              [31, 1],
              [20, 1],
              [20, 2],
              [20, 3],
              [43, 2],
              [43, 2],
              [43, 2],
              [43, 2],
              [43, 2],
              [43, 2],
              [43, 2],
              [43, 2],
              [43, 2],
              [43, 2],
              [43, 2],
              [43, 2],
              [43, 2],
              [43, 2],
              [43, 2],
              [43, 2],
              [43, 2],
              [43, 2],
              [43, 2],
              [43, 2],
              [43, 1],
              [43, 2],
              [43, 2],
              [43, 2],
              [43, 2],
              [43, 2],
              [43, 2],
              [43, 2],
              [43, 2],
              [43, 2],
              [43, 2],
              [43, 2],
              [35, 1],
              [35, 2],
              [75, 1],
              [75, 2],
              [75, 1],
              [75, 1]
            ],
            performAction: o(function (Le, Ie, xe, q, de, ie, oe) {
              var V = ie.length - 1
              switch (de) {
                case 3:
                  q.setDirection('TB')
                  break
                case 4:
                  q.setDirection('BT')
                  break
                case 5:
                  q.setDirection('RL')
                  break
                case 6:
                  q.setDirection('LR')
                  break
                case 8:
                case 9:
                case 10:
                case 11:
                case 12:
                  q.setC4Type(ie[V - 3])
                  break
                case 19:
                  q.setTitle(ie[V].substring(6)), (this.$ = ie[V].substring(6))
                  break
                case 20:
                  q.setAccDescription(ie[V].substring(15)), (this.$ = ie[V].substring(15))
                  break
                case 21:
                  ;(this.$ = ie[V].trim()), q.setTitle(this.$)
                  break
                case 22:
                case 23:
                  ;(this.$ = ie[V].trim()), q.setAccDescription(this.$)
                  break
                case 28:
                  ie[V].splice(2, 0, 'ENTERPRISE'), q.addPersonOrSystemBoundary(...ie[V]), (this.$ = ie[V])
                  break
                case 29:
                  ie[V].splice(2, 0, 'SYSTEM'), q.addPersonOrSystemBoundary(...ie[V]), (this.$ = ie[V])
                  break
                case 30:
                  q.addPersonOrSystemBoundary(...ie[V]), (this.$ = ie[V])
                  break
                case 31:
                  ie[V].splice(2, 0, 'CONTAINER'), q.addContainerBoundary(...ie[V]), (this.$ = ie[V])
                  break
                case 32:
                  q.addDeploymentNode('node', ...ie[V]), (this.$ = ie[V])
                  break
                case 33:
                  q.addDeploymentNode('nodeL', ...ie[V]), (this.$ = ie[V])
                  break
                case 34:
                  q.addDeploymentNode('nodeR', ...ie[V]), (this.$ = ie[V])
                  break
                case 35:
                  q.popBoundaryParseStack()
                  break
                case 39:
                  q.addPersonOrSystem('person', ...ie[V]), (this.$ = ie[V])
                  break
                case 40:
                  q.addPersonOrSystem('external_person', ...ie[V]), (this.$ = ie[V])
                  break
                case 41:
                  q.addPersonOrSystem('system', ...ie[V]), (this.$ = ie[V])
                  break
                case 42:
                  q.addPersonOrSystem('system_db', ...ie[V]), (this.$ = ie[V])
                  break
                case 43:
                  q.addPersonOrSystem('system_queue', ...ie[V]), (this.$ = ie[V])
                  break
                case 44:
                  q.addPersonOrSystem('external_system', ...ie[V]), (this.$ = ie[V])
                  break
                case 45:
                  q.addPersonOrSystem('external_system_db', ...ie[V]), (this.$ = ie[V])
                  break
                case 46:
                  q.addPersonOrSystem('external_system_queue', ...ie[V]), (this.$ = ie[V])
                  break
                case 47:
                  q.addContainer('container', ...ie[V]), (this.$ = ie[V])
                  break
                case 48:
                  q.addContainer('container_db', ...ie[V]), (this.$ = ie[V])
                  break
                case 49:
                  q.addContainer('container_queue', ...ie[V]), (this.$ = ie[V])
                  break
                case 50:
                  q.addContainer('external_container', ...ie[V]), (this.$ = ie[V])
                  break
                case 51:
                  q.addContainer('external_container_db', ...ie[V]), (this.$ = ie[V])
                  break
                case 52:
                  q.addContainer('external_container_queue', ...ie[V]), (this.$ = ie[V])
                  break
                case 53:
                  q.addComponent('component', ...ie[V]), (this.$ = ie[V])
                  break
                case 54:
                  q.addComponent('component_db', ...ie[V]), (this.$ = ie[V])
                  break
                case 55:
                  q.addComponent('component_queue', ...ie[V]), (this.$ = ie[V])
                  break
                case 56:
                  q.addComponent('external_component', ...ie[V]), (this.$ = ie[V])
                  break
                case 57:
                  q.addComponent('external_component_db', ...ie[V]), (this.$ = ie[V])
                  break
                case 58:
                  q.addComponent('external_component_queue', ...ie[V]), (this.$ = ie[V])
                  break
                case 60:
                  q.addRel('rel', ...ie[V]), (this.$ = ie[V])
                  break
                case 61:
                  q.addRel('birel', ...ie[V]), (this.$ = ie[V])
                  break
                case 62:
                  q.addRel('rel_u', ...ie[V]), (this.$ = ie[V])
                  break
                case 63:
                  q.addRel('rel_d', ...ie[V]), (this.$ = ie[V])
                  break
                case 64:
                  q.addRel('rel_l', ...ie[V]), (this.$ = ie[V])
                  break
                case 65:
                  q.addRel('rel_r', ...ie[V]), (this.$ = ie[V])
                  break
                case 66:
                  q.addRel('rel_b', ...ie[V]), (this.$ = ie[V])
                  break
                case 67:
                  ie[V].splice(0, 1), q.addRel('rel', ...ie[V]), (this.$ = ie[V])
                  break
                case 68:
                  q.updateElStyle('update_el_style', ...ie[V]), (this.$ = ie[V])
                  break
                case 69:
                  q.updateRelStyle('update_rel_style', ...ie[V]), (this.$ = ie[V])
                  break
                case 70:
                  q.updateLayoutConfig('update_layout_config', ...ie[V]), (this.$ = ie[V])
                  break
                case 71:
                  this.$ = [ie[V]]
                  break
                case 72:
                  ie[V].unshift(ie[V - 1]), (this.$ = ie[V])
                  break
                case 73:
                case 75:
                  this.$ = ie[V].trim()
                  break
                case 74:
                  let Te = {}
                  ;(Te[ie[V - 1].trim()] = ie[V].trim()), (this.$ = Te)
                  break
                case 76:
                  this.$ = ''
                  break
              }
            }, 'anonymous'),
            table: [
              { 3: 1, 4: 2, 5: 3, 6: [1, 5], 7: [1, 6], 8: [1, 7], 9: [1, 8], 10: 4, 11: [1, 9], 15: [1, 10], 16: [1, 11], 17: [1, 12], 18: [1, 13] },
              { 1: [3] },
              { 1: [2, 1] },
              { 1: [2, 2] },
              { 1: [2, 7] },
              { 1: [2, 3] },
              { 1: [2, 4] },
              { 1: [2, 5] },
              { 1: [2, 6] },
              { 12: [1, 14] },
              { 12: [1, 15] },
              { 12: [1, 16] },
              { 12: [1, 17] },
              { 12: [1, 18] },
              {
                13: 19,
                19: 20,
                20: 21,
                21: 22,
                22: e,
                23: r,
                24: n,
                26: i,
                28: a,
                29: 49,
                30: 61,
                32: 62,
                34: s,
                36: l,
                37: u,
                38: h,
                39: f,
                40: d,
                41: p,
                43: 23,
                44: m,
                45: g,
                46: y,
                47: v,
                48: x,
                49: b,
                50: T,
                51: S,
                52: w,
                53: E,
                54: _,
                55: C,
                56: D,
                57: O,
                58: R,
                59: k,
                60: L,
                61: A,
                62: I,
                63: M,
                64: P,
                65: B,
                66: F,
                67: z,
                68: $,
                69: U,
                70: K,
                71: ee,
                72: Y,
                73: ce,
                74: Z
              },
              {
                13: 70,
                19: 20,
                20: 21,
                21: 22,
                22: e,
                23: r,
                24: n,
                26: i,
                28: a,
                29: 49,
                30: 61,
                32: 62,
                34: s,
                36: l,
                37: u,
                38: h,
                39: f,
                40: d,
                41: p,
                43: 23,
                44: m,
                45: g,
                46: y,
                47: v,
                48: x,
                49: b,
                50: T,
                51: S,
                52: w,
                53: E,
                54: _,
                55: C,
                56: D,
                57: O,
                58: R,
                59: k,
                60: L,
                61: A,
                62: I,
                63: M,
                64: P,
                65: B,
                66: F,
                67: z,
                68: $,
                69: U,
                70: K,
                71: ee,
                72: Y,
                73: ce,
                74: Z
              },
              {
                13: 71,
                19: 20,
                20: 21,
                21: 22,
                22: e,
                23: r,
                24: n,
                26: i,
                28: a,
                29: 49,
                30: 61,
                32: 62,
                34: s,
                36: l,
                37: u,
                38: h,
                39: f,
                40: d,
                41: p,
                43: 23,
                44: m,
                45: g,
                46: y,
                47: v,
                48: x,
                49: b,
                50: T,
                51: S,
                52: w,
                53: E,
                54: _,
                55: C,
                56: D,
                57: O,
                58: R,
                59: k,
                60: L,
                61: A,
                62: I,
                63: M,
                64: P,
                65: B,
                66: F,
                67: z,
                68: $,
                69: U,
                70: K,
                71: ee,
                72: Y,
                73: ce,
                74: Z
              },
              {
                13: 72,
                19: 20,
                20: 21,
                21: 22,
                22: e,
                23: r,
                24: n,
                26: i,
                28: a,
                29: 49,
                30: 61,
                32: 62,
                34: s,
                36: l,
                37: u,
                38: h,
                39: f,
                40: d,
                41: p,
                43: 23,
                44: m,
                45: g,
                46: y,
                47: v,
                48: x,
                49: b,
                50: T,
                51: S,
                52: w,
                53: E,
                54: _,
                55: C,
                56: D,
                57: O,
                58: R,
                59: k,
                60: L,
                61: A,
                62: I,
                63: M,
                64: P,
                65: B,
                66: F,
                67: z,
                68: $,
                69: U,
                70: K,
                71: ee,
                72: Y,
                73: ce,
                74: Z
              },
              {
                13: 73,
                19: 20,
                20: 21,
                21: 22,
                22: e,
                23: r,
                24: n,
                26: i,
                28: a,
                29: 49,
                30: 61,
                32: 62,
                34: s,
                36: l,
                37: u,
                38: h,
                39: f,
                40: d,
                41: p,
                43: 23,
                44: m,
                45: g,
                46: y,
                47: v,
                48: x,
                49: b,
                50: T,
                51: S,
                52: w,
                53: E,
                54: _,
                55: C,
                56: D,
                57: O,
                58: R,
                59: k,
                60: L,
                61: A,
                62: I,
                63: M,
                64: P,
                65: B,
                66: F,
                67: z,
                68: $,
                69: U,
                70: K,
                71: ee,
                72: Y,
                73: ce,
                74: Z
              },
              { 14: [1, 74] },
              t(ue, [2, 13], {
                43: 23,
                29: 49,
                30: 61,
                32: 62,
                20: 75,
                34: s,
                36: l,
                37: u,
                38: h,
                39: f,
                40: d,
                41: p,
                44: m,
                45: g,
                46: y,
                47: v,
                48: x,
                49: b,
                50: T,
                51: S,
                52: w,
                53: E,
                54: _,
                55: C,
                56: D,
                57: O,
                58: R,
                59: k,
                60: L,
                61: A,
                62: I,
                63: M,
                64: P,
                65: B,
                66: F,
                67: z,
                68: $,
                69: U,
                70: K,
                71: ee,
                72: Y,
                73: ce,
                74: Z
              }),
              t(ue, [2, 14]),
              t(Q, [2, 16], { 12: [1, 76] }),
              t(ue, [2, 36], { 12: [1, 77] }),
              t(j, [2, 19]),
              t(j, [2, 20]),
              { 25: [1, 78] },
              { 27: [1, 79] },
              t(j, [2, 23]),
              { 35: 80, 75: 81, 76: ne, 77: te, 79: he, 80: le },
              { 35: 86, 75: 81, 76: ne, 77: te, 79: he, 80: le },
              { 35: 87, 75: 81, 76: ne, 77: te, 79: he, 80: le },
              { 35: 88, 75: 81, 76: ne, 77: te, 79: he, 80: le },
              { 35: 89, 75: 81, 76: ne, 77: te, 79: he, 80: le },
              { 35: 90, 75: 81, 76: ne, 77: te, 79: he, 80: le },
              { 35: 91, 75: 81, 76: ne, 77: te, 79: he, 80: le },
              { 35: 92, 75: 81, 76: ne, 77: te, 79: he, 80: le },
              { 35: 93, 75: 81, 76: ne, 77: te, 79: he, 80: le },
              { 35: 94, 75: 81, 76: ne, 77: te, 79: he, 80: le },
              { 35: 95, 75: 81, 76: ne, 77: te, 79: he, 80: le },
              { 35: 96, 75: 81, 76: ne, 77: te, 79: he, 80: le },
              { 35: 97, 75: 81, 76: ne, 77: te, 79: he, 80: le },
              { 35: 98, 75: 81, 76: ne, 77: te, 79: he, 80: le },
              { 35: 99, 75: 81, 76: ne, 77: te, 79: he, 80: le },
              { 35: 100, 75: 81, 76: ne, 77: te, 79: he, 80: le },
              { 35: 101, 75: 81, 76: ne, 77: te, 79: he, 80: le },
              { 35: 102, 75: 81, 76: ne, 77: te, 79: he, 80: le },
              { 35: 103, 75: 81, 76: ne, 77: te, 79: he, 80: le },
              { 35: 104, 75: 81, 76: ne, 77: te, 79: he, 80: le },
              t(J, [2, 59]),
              { 35: 105, 75: 81, 76: ne, 77: te, 79: he, 80: le },
              { 35: 106, 75: 81, 76: ne, 77: te, 79: he, 80: le },
              { 35: 107, 75: 81, 76: ne, 77: te, 79: he, 80: le },
              { 35: 108, 75: 81, 76: ne, 77: te, 79: he, 80: le },
              { 35: 109, 75: 81, 76: ne, 77: te, 79: he, 80: le },
              { 35: 110, 75: 81, 76: ne, 77: te, 79: he, 80: le },
              { 35: 111, 75: 81, 76: ne, 77: te, 79: he, 80: le },
              { 35: 112, 75: 81, 76: ne, 77: te, 79: he, 80: le },
              { 35: 113, 75: 81, 76: ne, 77: te, 79: he, 80: le },
              { 35: 114, 75: 81, 76: ne, 77: te, 79: he, 80: le },
              { 35: 115, 75: 81, 76: ne, 77: te, 79: he, 80: le },
              {
                20: 116,
                29: 49,
                30: 61,
                32: 62,
                34: s,
                36: l,
                37: u,
                38: h,
                39: f,
                40: d,
                41: p,
                43: 23,
                44: m,
                45: g,
                46: y,
                47: v,
                48: x,
                49: b,
                50: T,
                51: S,
                52: w,
                53: E,
                54: _,
                55: C,
                56: D,
                57: O,
                58: R,
                59: k,
                60: L,
                61: A,
                62: I,
                63: M,
                64: P,
                65: B,
                66: F,
                67: z,
                68: $,
                69: U,
                70: K,
                71: ee,
                72: Y,
                73: ce,
                74: Z
              },
              { 12: [1, 118], 33: [1, 117] },
              { 35: 119, 75: 81, 76: ne, 77: te, 79: he, 80: le },
              { 35: 120, 75: 81, 76: ne, 77: te, 79: he, 80: le },
              { 35: 121, 75: 81, 76: ne, 77: te, 79: he, 80: le },
              { 35: 122, 75: 81, 76: ne, 77: te, 79: he, 80: le },
              { 35: 123, 75: 81, 76: ne, 77: te, 79: he, 80: le },
              { 35: 124, 75: 81, 76: ne, 77: te, 79: he, 80: le },
              { 35: 125, 75: 81, 76: ne, 77: te, 79: he, 80: le },
              { 14: [1, 126] },
              { 14: [1, 127] },
              { 14: [1, 128] },
              { 14: [1, 129] },
              { 1: [2, 8] },
              t(ue, [2, 15]),
              t(Q, [2, 17], { 21: 22, 19: 130, 22: e, 23: r, 24: n, 26: i, 28: a }),
              t(ue, [2, 37], {
                19: 20,
                20: 21,
                21: 22,
                43: 23,
                29: 49,
                30: 61,
                32: 62,
                13: 131,
                22: e,
                23: r,
                24: n,
                26: i,
                28: a,
                34: s,
                36: l,
                37: u,
                38: h,
                39: f,
                40: d,
                41: p,
                44: m,
                45: g,
                46: y,
                47: v,
                48: x,
                49: b,
                50: T,
                51: S,
                52: w,
                53: E,
                54: _,
                55: C,
                56: D,
                57: O,
                58: R,
                59: k,
                60: L,
                61: A,
                62: I,
                63: M,
                64: P,
                65: B,
                66: F,
                67: z,
                68: $,
                69: U,
                70: K,
                71: ee,
                72: Y,
                73: ce,
                74: Z
              }),
              t(j, [2, 21]),
              t(j, [2, 22]),
              t(J, [2, 39]),
              t(Se, [2, 71], { 75: 81, 35: 132, 76: ne, 77: te, 79: he, 80: le }),
              t(se, [2, 73]),
              { 78: [1, 133] },
              t(se, [2, 75]),
              t(se, [2, 76]),
              t(J, [2, 40]),
              t(J, [2, 41]),
              t(J, [2, 42]),
              t(J, [2, 43]),
              t(J, [2, 44]),
              t(J, [2, 45]),
              t(J, [2, 46]),
              t(J, [2, 47]),
              t(J, [2, 48]),
              t(J, [2, 49]),
              t(J, [2, 50]),
              t(J, [2, 51]),
              t(J, [2, 52]),
              t(J, [2, 53]),
              t(J, [2, 54]),
              t(J, [2, 55]),
              t(J, [2, 56]),
              t(J, [2, 57]),
              t(J, [2, 58]),
              t(J, [2, 60]),
              t(J, [2, 61]),
              t(J, [2, 62]),
              t(J, [2, 63]),
              t(J, [2, 64]),
              t(J, [2, 65]),
              t(J, [2, 66]),
              t(J, [2, 67]),
              t(J, [2, 68]),
              t(J, [2, 69]),
              t(J, [2, 70]),
              { 31: 134, 42: [1, 135] },
              { 12: [1, 136] },
              { 33: [1, 137] },
              t(ae, [2, 28]),
              t(ae, [2, 29]),
              t(ae, [2, 30]),
              t(ae, [2, 31]),
              t(ae, [2, 32]),
              t(ae, [2, 33]),
              t(ae, [2, 34]),
              { 1: [2, 9] },
              { 1: [2, 10] },
              { 1: [2, 11] },
              { 1: [2, 12] },
              t(Q, [2, 18]),
              t(ue, [2, 38]),
              t(Se, [2, 72]),
              t(se, [2, 74]),
              t(J, [2, 24]),
              t(J, [2, 35]),
              t(Oe, [2, 25]),
              t(Oe, [2, 26], { 12: [1, 138] }),
              t(Oe, [2, 27])
            ],
            defaultActions: { 2: [2, 1], 3: [2, 2], 4: [2, 7], 5: [2, 3], 6: [2, 4], 7: [2, 5], 8: [2, 6], 74: [2, 8], 126: [2, 9], 127: [2, 10], 128: [2, 11], 129: [2, 12] },
            parseError: o(function (Le, Ie) {
              if (Ie.recoverable) this.trace(Le)
              else {
                var xe = new Error(Le)
                throw ((xe.hash = Ie), xe)
              }
            }, 'parseError'),
            parse: o(function (Le) {
              var Ie = this,
                xe = [0],
                q = [],
                de = [null],
                ie = [],
                oe = this.table,
                V = '',
                Te = 0,
                W = 0,
                pe = 0,
                ve = 2,
                Pe = 1,
                _e = ie.slice.call(arguments, 1),
                be = Object.create(this.lexer),
                Ve = { yy: {} }
              for (var De in this.yy) Object.prototype.hasOwnProperty.call(this.yy, De) && (Ve.yy[De] = this.yy[De])
              be.setInput(Le, Ve.yy), (Ve.yy.lexer = be), (Ve.yy.parser = this), typeof be.yylloc > 'u' && (be.yylloc = {})
              var qe = be.yylloc
              ie.push(qe)
              var at = be.options && be.options.ranges
              typeof Ve.yy.parseError == 'function' ? (this.parseError = Ve.yy.parseError) : (this.parseError = Object.getPrototypeOf(this).parseError)
              function Rt(nt) {
                ;(xe.length = xe.length - 2 * nt), (de.length = de.length - nt), (ie.length = ie.length - nt)
              }
              o(Rt, 'popStack')
              function st() {
                var nt
                return (nt = q.pop() || be.lex() || Pe), typeof nt != 'number' && (nt instanceof Array && ((q = nt), (nt = q.pop())), (nt = Ie.symbols_[nt] || nt)), nt
              }
              o(st, 'lex')
              for (var Ue, ct, We, ot, Yt, Tt, Mt = {}, bt, ut, St, ft; ; ) {
                if (
                  ((We = xe[xe.length - 1]),
                  this.defaultActions[We] ? (ot = this.defaultActions[We]) : ((Ue === null || typeof Ue > 'u') && (Ue = st()), (ot = oe[We] && oe[We][Ue])),
                  typeof ot > 'u' || !ot.length || !ot[0])
                ) {
                  var vt = ''
                  ft = []
                  for (bt in oe[We]) this.terminals_[bt] && bt > ve && ft.push("'" + this.terminals_[bt] + "'")
                  be.showPosition
                    ? (vt =
                        'Parse error on line ' +
                        (Te + 1) +
                        `:
` +
                        be.showPosition() +
                        `
Expecting ` +
                        ft.join(', ') +
                        ", got '" +
                        (this.terminals_[Ue] || Ue) +
                        "'")
                    : (vt = 'Parse error on line ' + (Te + 1) + ': Unexpected ' + (Ue == Pe ? 'end of input' : "'" + (this.terminals_[Ue] || Ue) + "'")),
                    this.parseError(vt, { text: be.match, token: this.terminals_[Ue] || Ue, line: be.yylineno, loc: qe, expected: ft })
                }
                if (ot[0] instanceof Array && ot.length > 1) throw new Error('Parse Error: multiple actions possible at state: ' + We + ', token: ' + Ue)
                switch (ot[0]) {
                  case 1:
                    xe.push(Ue),
                      de.push(be.yytext),
                      ie.push(be.yylloc),
                      xe.push(ot[1]),
                      (Ue = null),
                      ct ? ((Ue = ct), (ct = null)) : ((W = be.yyleng), (V = be.yytext), (Te = be.yylineno), (qe = be.yylloc), pe > 0 && pe--)
                    break
                  case 2:
                    if (
                      ((ut = this.productions_[ot[1]][1]),
                      (Mt.$ = de[de.length - ut]),
                      (Mt._$ = {
                        first_line: ie[ie.length - (ut || 1)].first_line,
                        last_line: ie[ie.length - 1].last_line,
                        first_column: ie[ie.length - (ut || 1)].first_column,
                        last_column: ie[ie.length - 1].last_column
                      }),
                      at && (Mt._$.range = [ie[ie.length - (ut || 1)].range[0], ie[ie.length - 1].range[1]]),
                      (Tt = this.performAction.apply(Mt, [V, W, Te, Ve.yy, ot[1], de, ie].concat(_e))),
                      typeof Tt < 'u')
                    )
                      return Tt
                    ut && ((xe = xe.slice(0, -1 * ut * 2)), (de = de.slice(0, -1 * ut)), (ie = ie.slice(0, -1 * ut))),
                      xe.push(this.productions_[ot[1]][0]),
                      de.push(Mt.$),
                      ie.push(Mt._$),
                      (St = oe[xe[xe.length - 2]][xe[xe.length - 1]]),
                      xe.push(St)
                    break
                  case 3:
                    return !0
                }
              }
              return !0
            }, 'parse')
          },
          Be = (function () {
            var ze = {
              EOF: 1,
              parseError: o(function (Ie, xe) {
                if (this.yy.parser) this.yy.parser.parseError(Ie, xe)
                else throw new Error(Ie)
              }, 'parseError'),
              setInput: o(function (Le, Ie) {
                return (
                  (this.yy = Ie || this.yy || {}),
                  (this._input = Le),
                  (this._more = this._backtrack = this.done = !1),
                  (this.yylineno = this.yyleng = 0),
                  (this.yytext = this.matched = this.match = ''),
                  (this.conditionStack = ['INITIAL']),
                  (this.yylloc = { first_line: 1, first_column: 0, last_line: 1, last_column: 0 }),
                  this.options.ranges && (this.yylloc.range = [0, 0]),
                  (this.offset = 0),
                  this
                )
              }, 'setInput'),
              input: o(function () {
                var Le = this._input[0]
                ;(this.yytext += Le), this.yyleng++, this.offset++, (this.match += Le), (this.matched += Le)
                var Ie = Le.match(/(?:\r\n?|\n).*/g)
                return (
                  Ie ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++,
                  this.options.ranges && this.yylloc.range[1]++,
                  (this._input = this._input.slice(1)),
                  Le
                )
              }, 'input'),
              unput: o(function (Le) {
                var Ie = Le.length,
                  xe = Le.split(/(?:\r\n?|\n)/g)
                ;(this._input = Le + this._input), (this.yytext = this.yytext.substr(0, this.yytext.length - Ie)), (this.offset -= Ie)
                var q = this.match.split(/(?:\r\n?|\n)/g)
                ;(this.match = this.match.substr(0, this.match.length - 1)),
                  (this.matched = this.matched.substr(0, this.matched.length - 1)),
                  xe.length - 1 && (this.yylineno -= xe.length - 1)
                var de = this.yylloc.range
                return (
                  (this.yylloc = {
                    first_line: this.yylloc.first_line,
                    last_line: this.yylineno + 1,
                    first_column: this.yylloc.first_column,
                    last_column: xe ? (xe.length === q.length ? this.yylloc.first_column : 0) + q[q.length - xe.length].length - xe[0].length : this.yylloc.first_column - Ie
                  }),
                  this.options.ranges && (this.yylloc.range = [de[0], de[0] + this.yyleng - Ie]),
                  (this.yyleng = this.yytext.length),
                  this
                )
              }, 'unput'),
              more: o(function () {
                return (this._more = !0), this
              }, 'more'),
              reject: o(function () {
                if (this.options.backtrack_lexer) this._backtrack = !0
                else
                  return this.parseError(
                    'Lexical error on line ' +
                      (this.yylineno + 1) +
                      `. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
` +
                      this.showPosition(),
                    { text: '', token: null, line: this.yylineno }
                  )
                return this
              }, 'reject'),
              less: o(function (Le) {
                this.unput(this.match.slice(Le))
              }, 'less'),
              pastInput: o(function () {
                var Le = this.matched.substr(0, this.matched.length - this.match.length)
                return (Le.length > 20 ? '...' : '') + Le.substr(-20).replace(/\n/g, '')
              }, 'pastInput'),
              upcomingInput: o(function () {
                var Le = this.match
                return Le.length < 20 && (Le += this._input.substr(0, 20 - Le.length)), (Le.substr(0, 20) + (Le.length > 20 ? '...' : '')).replace(/\n/g, '')
              }, 'upcomingInput'),
              showPosition: o(function () {
                var Le = this.pastInput(),
                  Ie = new Array(Le.length + 1).join('-')
                return (
                  Le +
                  this.upcomingInput() +
                  `
` +
                  Ie +
                  '^'
                )
              }, 'showPosition'),
              test_match: o(function (Le, Ie) {
                var xe, q, de
                if (
                  (this.options.backtrack_lexer &&
                    ((de = {
                      yylineno: this.yylineno,
                      yylloc: { first_line: this.yylloc.first_line, last_line: this.last_line, first_column: this.yylloc.first_column, last_column: this.yylloc.last_column },
                      yytext: this.yytext,
                      match: this.match,
                      matches: this.matches,
                      matched: this.matched,
                      yyleng: this.yyleng,
                      offset: this.offset,
                      _more: this._more,
                      _input: this._input,
                      yy: this.yy,
                      conditionStack: this.conditionStack.slice(0),
                      done: this.done
                    }),
                    this.options.ranges && (de.yylloc.range = this.yylloc.range.slice(0))),
                  (q = Le[0].match(/(?:\r\n?|\n).*/g)),
                  q && (this.yylineno += q.length),
                  (this.yylloc = {
                    first_line: this.yylloc.last_line,
                    last_line: this.yylineno + 1,
                    first_column: this.yylloc.last_column,
                    last_column: q ? q[q.length - 1].length - q[q.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + Le[0].length
                  }),
                  (this.yytext += Le[0]),
                  (this.match += Le[0]),
                  (this.matches = Le),
                  (this.yyleng = this.yytext.length),
                  this.options.ranges && (this.yylloc.range = [this.offset, (this.offset += this.yyleng)]),
                  (this._more = !1),
                  (this._backtrack = !1),
                  (this._input = this._input.slice(Le[0].length)),
                  (this.matched += Le[0]),
                  (xe = this.performAction.call(this, this.yy, this, Ie, this.conditionStack[this.conditionStack.length - 1])),
                  this.done && this._input && (this.done = !1),
                  xe)
                )
                  return xe
                if (this._backtrack) {
                  for (var ie in de) this[ie] = de[ie]
                  return !1
                }
                return !1
              }, 'test_match'),
              next: o(function () {
                if (this.done) return this.EOF
                this._input || (this.done = !0)
                var Le, Ie, xe, q
                this._more || ((this.yytext = ''), (this.match = ''))
                for (var de = this._currentRules(), ie = 0; ie < de.length; ie++)
                  if (((xe = this._input.match(this.rules[de[ie]])), xe && (!Ie || xe[0].length > Ie[0].length))) {
                    if (((Ie = xe), (q = ie), this.options.backtrack_lexer)) {
                      if (((Le = this.test_match(xe, de[ie])), Le !== !1)) return Le
                      if (this._backtrack) {
                        Ie = !1
                        continue
                      } else return !1
                    } else if (!this.options.flex) break
                  }
                return Ie
                  ? ((Le = this.test_match(Ie, de[q])), Le !== !1 ? Le : !1)
                  : this._input === ''
                    ? this.EOF
                    : this.parseError(
                        'Lexical error on line ' +
                          (this.yylineno + 1) +
                          `. Unrecognized text.
` +
                          this.showPosition(),
                        { text: '', token: null, line: this.yylineno }
                      )
              }, 'next'),
              lex: o(function () {
                var Ie = this.next()
                return Ie || this.lex()
              }, 'lex'),
              begin: o(function (Ie) {
                this.conditionStack.push(Ie)
              }, 'begin'),
              popState: o(function () {
                var Ie = this.conditionStack.length - 1
                return Ie > 0 ? this.conditionStack.pop() : this.conditionStack[0]
              }, 'popState'),
              _currentRules: o(function () {
                return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]
                  ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
                  : this.conditions.INITIAL.rules
              }, '_currentRules'),
              topState: o(function (Ie) {
                return (Ie = this.conditionStack.length - 1 - Math.abs(Ie || 0)), Ie >= 0 ? this.conditionStack[Ie] : 'INITIAL'
              }, 'topState'),
              pushState: o(function (Ie) {
                this.begin(Ie)
              }, 'pushState'),
              stateStackSize: o(function () {
                return this.conditionStack.length
              }, 'stateStackSize'),
              options: {},
              performAction: o(function (Ie, xe, q, de) {
                var ie = de
                switch (q) {
                  case 0:
                    return 6
                  case 1:
                    return 7
                  case 2:
                    return 8
                  case 3:
                    return 9
                  case 4:
                    return 22
                  case 5:
                    return 23
                  case 6:
                    return this.begin('acc_title'), 24
                    break
                  case 7:
                    return this.popState(), 'acc_title_value'
                    break
                  case 8:
                    return this.begin('acc_descr'), 26
                    break
                  case 9:
                    return this.popState(), 'acc_descr_value'
                    break
                  case 10:
                    this.begin('acc_descr_multiline')
                    break
                  case 11:
                    this.popState()
                    break
                  case 12:
                    return 'acc_descr_multiline_value'
                  case 13:
                    break
                  case 14:
                    c
                    break
                  case 15:
                    return 12
                  case 16:
                    break
                  case 17:
                    return 11
                  case 18:
                    return 15
                  case 19:
                    return 16
                  case 20:
                    return 17
                  case 21:
                    return 18
                  case 22:
                    return this.begin('person_ext'), 45
                    break
                  case 23:
                    return this.begin('person'), 44
                    break
                  case 24:
                    return this.begin('system_ext_queue'), 51
                    break
                  case 25:
                    return this.begin('system_ext_db'), 50
                    break
                  case 26:
                    return this.begin('system_ext'), 49
                    break
                  case 27:
                    return this.begin('system_queue'), 48
                    break
                  case 28:
                    return this.begin('system_db'), 47
                    break
                  case 29:
                    return this.begin('system'), 46
                    break
                  case 30:
                    return this.begin('boundary'), 37
                    break
                  case 31:
                    return this.begin('enterprise_boundary'), 34
                    break
                  case 32:
                    return this.begin('system_boundary'), 36
                    break
                  case 33:
                    return this.begin('container_ext_queue'), 57
                    break
                  case 34:
                    return this.begin('container_ext_db'), 56
                    break
                  case 35:
                    return this.begin('container_ext'), 55
                    break
                  case 36:
                    return this.begin('container_queue'), 54
                    break
                  case 37:
                    return this.begin('container_db'), 53
                    break
                  case 38:
                    return this.begin('container'), 52
                    break
                  case 39:
                    return this.begin('container_boundary'), 38
                    break
                  case 40:
                    return this.begin('component_ext_queue'), 63
                    break
                  case 41:
                    return this.begin('component_ext_db'), 62
                    break
                  case 42:
                    return this.begin('component_ext'), 61
                    break
                  case 43:
                    return this.begin('component_queue'), 60
                    break
                  case 44:
                    return this.begin('component_db'), 59
                    break
                  case 45:
                    return this.begin('component'), 58
                    break
                  case 46:
                    return this.begin('node'), 39
                    break
                  case 47:
                    return this.begin('node'), 39
                    break
                  case 48:
                    return this.begin('node_l'), 40
                    break
                  case 49:
                    return this.begin('node_r'), 41
                    break
                  case 50:
                    return this.begin('rel'), 64
                    break
                  case 51:
                    return this.begin('birel'), 65
                    break
                  case 52:
                    return this.begin('rel_u'), 66
                    break
                  case 53:
                    return this.begin('rel_u'), 66
                    break
                  case 54:
                    return this.begin('rel_d'), 67
                    break
                  case 55:
                    return this.begin('rel_d'), 67
                    break
                  case 56:
                    return this.begin('rel_l'), 68
                    break
                  case 57:
                    return this.begin('rel_l'), 68
                    break
                  case 58:
                    return this.begin('rel_r'), 69
                    break
                  case 59:
                    return this.begin('rel_r'), 69
                    break
                  case 60:
                    return this.begin('rel_b'), 70
                    break
                  case 61:
                    return this.begin('rel_index'), 71
                    break
                  case 62:
                    return this.begin('update_el_style'), 72
                    break
                  case 63:
                    return this.begin('update_rel_style'), 73
                    break
                  case 64:
                    return this.begin('update_layout_config'), 74
                    break
                  case 65:
                    return 'EOF_IN_STRUCT'
                  case 66:
                    return this.begin('attribute'), 'ATTRIBUTE_EMPTY'
                    break
                  case 67:
                    this.begin('attribute')
                    break
                  case 68:
                    this.popState(), this.popState()
                    break
                  case 69:
                    return 80
                  case 70:
                    break
                  case 71:
                    return 80
                  case 72:
                    this.begin('string')
                    break
                  case 73:
                    this.popState()
                    break
                  case 74:
                    return 'STR'
                  case 75:
                    this.begin('string_kv')
                    break
                  case 76:
                    return this.begin('string_kv_key'), 'STR_KEY'
                    break
                  case 77:
                    this.popState(), this.begin('string_kv_value')
                    break
                  case 78:
                    return 'STR_VALUE'
                  case 79:
                    this.popState(), this.popState()
                    break
                  case 80:
                    return 'STR'
                  case 81:
                    return 'LBRACE'
                  case 82:
                    return 'RBRACE'
                  case 83:
                    return 'SPACE'
                  case 84:
                    return 'EOL'
                  case 85:
                    return 14
                }
              }, 'anonymous'),
              rules: [
                /^(?:.*direction\s+TB[^\n]*)/,
                /^(?:.*direction\s+BT[^\n]*)/,
                /^(?:.*direction\s+RL[^\n]*)/,
                /^(?:.*direction\s+LR[^\n]*)/,
                /^(?:title\s[^#\n;]+)/,
                /^(?:accDescription\s[^#\n;]+)/,
                /^(?:accTitle\s*:\s*)/,
                /^(?:(?!\n||)*[^\n]*)/,
                /^(?:accDescr\s*:\s*)/,
                /^(?:(?!\n||)*[^\n]*)/,
                /^(?:accDescr\s*\{\s*)/,
                /^(?:[\}])/,
                /^(?:[^\}]*)/,
                /^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,
                /^(?:%%[^\n]*(\r?\n)*)/,
                /^(?:\s*(\r?\n)+)/,
                /^(?:\s+)/,
                /^(?:C4Context\b)/,
                /^(?:C4Container\b)/,
                /^(?:C4Component\b)/,
                /^(?:C4Dynamic\b)/,
                /^(?:C4Deployment\b)/,
                /^(?:Person_Ext\b)/,
                /^(?:Person\b)/,
                /^(?:SystemQueue_Ext\b)/,
                /^(?:SystemDb_Ext\b)/,
                /^(?:System_Ext\b)/,
                /^(?:SystemQueue\b)/,
                /^(?:SystemDb\b)/,
                /^(?:System\b)/,
                /^(?:Boundary\b)/,
                /^(?:Enterprise_Boundary\b)/,
                /^(?:System_Boundary\b)/,
                /^(?:ContainerQueue_Ext\b)/,
                /^(?:ContainerDb_Ext\b)/,
                /^(?:Container_Ext\b)/,
                /^(?:ContainerQueue\b)/,
                /^(?:ContainerDb\b)/,
                /^(?:Container\b)/,
                /^(?:Container_Boundary\b)/,
                /^(?:ComponentQueue_Ext\b)/,
                /^(?:ComponentDb_Ext\b)/,
                /^(?:Component_Ext\b)/,
                /^(?:ComponentQueue\b)/,
                /^(?:ComponentDb\b)/,
                /^(?:Component\b)/,
                /^(?:Deployment_Node\b)/,
                /^(?:Node\b)/,
                /^(?:Node_L\b)/,
                /^(?:Node_R\b)/,
                /^(?:Rel\b)/,
                /^(?:BiRel\b)/,
                /^(?:Rel_Up\b)/,
                /^(?:Rel_U\b)/,
                /^(?:Rel_Down\b)/,
                /^(?:Rel_D\b)/,
                /^(?:Rel_Left\b)/,
                /^(?:Rel_L\b)/,
                /^(?:Rel_Right\b)/,
                /^(?:Rel_R\b)/,
                /^(?:Rel_Back\b)/,
                /^(?:RelIndex\b)/,
                /^(?:UpdateElementStyle\b)/,
                /^(?:UpdateRelStyle\b)/,
                /^(?:UpdateLayoutConfig\b)/,
                /^(?:$)/,
                /^(?:[(][ ]*[,])/,
                /^(?:[(])/,
                /^(?:[)])/,
                /^(?:,,)/,
                /^(?:,)/,
                /^(?:[ ]*["]["])/,
                /^(?:[ ]*["])/,
                /^(?:["])/,
                /^(?:[^"]*)/,
                /^(?:[ ]*[\$])/,
                /^(?:[^=]*)/,
                /^(?:[=][ ]*["])/,
                /^(?:[^"]+)/,
                /^(?:["])/,
                /^(?:[^,]+)/,
                /^(?:\{)/,
                /^(?:\})/,
                /^(?:[\s]+)/,
                /^(?:[\n\r]+)/,
                /^(?:$)/
              ],
              conditions: {
                acc_descr_multiline: { rules: [11, 12], inclusive: !1 },
                acc_descr: { rules: [9], inclusive: !1 },
                acc_title: { rules: [7], inclusive: !1 },
                string_kv_value: { rules: [78, 79], inclusive: !1 },
                string_kv_key: { rules: [77], inclusive: !1 },
                string_kv: { rules: [76], inclusive: !1 },
                string: { rules: [73, 74], inclusive: !1 },
                attribute: { rules: [68, 69, 70, 71, 72, 75, 80], inclusive: !1 },
                update_layout_config: { rules: [65, 66, 67, 68], inclusive: !1 },
                update_rel_style: { rules: [65, 66, 67, 68], inclusive: !1 },
                update_el_style: { rules: [65, 66, 67, 68], inclusive: !1 },
                rel_b: { rules: [65, 66, 67, 68], inclusive: !1 },
                rel_r: { rules: [65, 66, 67, 68], inclusive: !1 },
                rel_l: { rules: [65, 66, 67, 68], inclusive: !1 },
                rel_d: { rules: [65, 66, 67, 68], inclusive: !1 },
                rel_u: { rules: [65, 66, 67, 68], inclusive: !1 },
                rel_bi: { rules: [], inclusive: !1 },
                rel: { rules: [65, 66, 67, 68], inclusive: !1 },
                node_r: { rules: [65, 66, 67, 68], inclusive: !1 },
                node_l: { rules: [65, 66, 67, 68], inclusive: !1 },
                node: { rules: [65, 66, 67, 68], inclusive: !1 },
                index: { rules: [], inclusive: !1 },
                rel_index: { rules: [65, 66, 67, 68], inclusive: !1 },
                component_ext_queue: { rules: [], inclusive: !1 },
                component_ext_db: { rules: [65, 66, 67, 68], inclusive: !1 },
                component_ext: { rules: [65, 66, 67, 68], inclusive: !1 },
                component_queue: { rules: [65, 66, 67, 68], inclusive: !1 },
                component_db: { rules: [65, 66, 67, 68], inclusive: !1 },
                component: { rules: [65, 66, 67, 68], inclusive: !1 },
                container_boundary: { rules: [65, 66, 67, 68], inclusive: !1 },
                container_ext_queue: { rules: [65, 66, 67, 68], inclusive: !1 },
                container_ext_db: { rules: [65, 66, 67, 68], inclusive: !1 },
                container_ext: { rules: [65, 66, 67, 68], inclusive: !1 },
                container_queue: { rules: [65, 66, 67, 68], inclusive: !1 },
                container_db: { rules: [65, 66, 67, 68], inclusive: !1 },
                container: { rules: [65, 66, 67, 68], inclusive: !1 },
                birel: { rules: [65, 66, 67, 68], inclusive: !1 },
                system_boundary: { rules: [65, 66, 67, 68], inclusive: !1 },
                enterprise_boundary: { rules: [65, 66, 67, 68], inclusive: !1 },
                boundary: { rules: [65, 66, 67, 68], inclusive: !1 },
                system_ext_queue: { rules: [65, 66, 67, 68], inclusive: !1 },
                system_ext_db: { rules: [65, 66, 67, 68], inclusive: !1 },
                system_ext: { rules: [65, 66, 67, 68], inclusive: !1 },
                system_queue: { rules: [65, 66, 67, 68], inclusive: !1 },
                system_db: { rules: [65, 66, 67, 68], inclusive: !1 },
                system: { rules: [65, 66, 67, 68], inclusive: !1 },
                person_ext: { rules: [65, 66, 67, 68], inclusive: !1 },
                person: { rules: [65, 66, 67, 68], inclusive: !1 },
                INITIAL: {
                  rules: [
                    0, 1, 2, 3, 4, 5, 6, 8, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
                    46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 81, 82, 83, 84, 85
                  ],
                  inclusive: !0
                }
              }
            }
            return ze
          })()
        ye.lexer = Be
        function He() {
          this.yy = {}
        }
        return o(He, 'Parser'), (He.prototype = ye), (ye.Parser = He), new He()
      })()
      Ry.parser = Ry
      G$ = Ry
    })
  var s7,
    Un,
    g0 = N(() => {
      'use strict'
      ;(s7 = o((t, e, { depth: r = 2, clobber: n = !1 } = {}) => {
        let i = { depth: r, clobber: n }
        return Array.isArray(e) && !Array.isArray(t)
          ? (e.forEach(a => s7(t, a, i)), t)
          : Array.isArray(e) && Array.isArray(t)
            ? (e.forEach(a => {
                t.includes(a) || t.push(a)
              }),
              t)
            : t === void 0 || r <= 0
              ? t != null && typeof t == 'object' && typeof e == 'object'
                ? Object.assign(t, e)
                : e
              : (e !== void 0 &&
                  typeof t == 'object' &&
                  typeof e == 'object' &&
                  Object.keys(e).forEach(a => {
                    typeof e[a] == 'object' && (t[a] === void 0 || typeof t[a] == 'object')
                      ? (t[a] === void 0 && (t[a] = Array.isArray(e[a]) ? [] : {}), (t[a] = s7(t[a], e[a], { depth: r - 1, clobber: n })))
                      : (n || (typeof t[a] != 'object' && typeof e[a] != 'object')) && (t[a] = e[a])
                  }),
                t)
      }, 'assignWithDepth')),
        (Un = s7)
    })
  var Z4,
    V$,
    U$ = N(() => {
      'use strict'
      ;(Z4 = {
        min: { r: 0, g: 0, b: 0, s: 0, l: 0, a: 0 },
        max: { r: 255, g: 255, b: 255, h: 360, s: 100, l: 100, a: 1 },
        clamp: {
          r: o(t => (t >= 255 ? 255 : t < 0 ? 0 : t), 'r'),
          g: o(t => (t >= 255 ? 255 : t < 0 ? 0 : t), 'g'),
          b: o(t => (t >= 255 ? 255 : t < 0 ? 0 : t), 'b'),
          h: o(t => t % 360, 'h'),
          s: o(t => (t >= 100 ? 100 : t < 0 ? 0 : t), 's'),
          l: o(t => (t >= 100 ? 100 : t < 0 ? 0 : t), 'l'),
          a: o(t => (t >= 1 ? 1 : t < 0 ? 0 : t), 'a')
        },
        toLinear: o(t => {
          let e = t / 255
          return t > 0.03928 ? Math.pow((e + 0.055) / 1.055, 2.4) : e / 12.92
        }, 'toLinear'),
        hue2rgb: o(
          (t, e, r) => (
            r < 0 && (r += 1),
            r > 1 && (r -= 1),
            r < 0.16666666666666666 ? t + (e - t) * 6 * r : r < 0.5 ? e : r < 0.6666666666666666 ? t + (e - t) * (0.6666666666666666 - r) * 6 : t
          ),
          'hue2rgb'
        ),
        hsl2rgb: o(({ h: t, s: e, l: r }, n) => {
          if (!e) return r * 2.55
          ;(t /= 360), (e /= 100), (r /= 100)
          let i = r < 0.5 ? r * (1 + e) : r + e - r * e,
            a = 2 * r - i
          switch (n) {
            case 'r':
              return Z4.hue2rgb(a, i, t + 0.3333333333333333) * 255
            case 'g':
              return Z4.hue2rgb(a, i, t) * 255
            case 'b':
              return Z4.hue2rgb(a, i, t - 0.3333333333333333) * 255
          }
        }, 'hsl2rgb'),
        rgb2hsl: o(({ r: t, g: e, b: r }, n) => {
          ;(t /= 255), (e /= 255), (r /= 255)
          let i = Math.max(t, e, r),
            a = Math.min(t, e, r),
            s = (i + a) / 2
          if (n === 'l') return s * 100
          if (i === a) return 0
          let l = i - a,
            u = s > 0.5 ? l / (2 - i - a) : l / (i + a)
          if (n === 's') return u * 100
          switch (i) {
            case t:
              return ((e - r) / l + (e < r ? 6 : 0)) * 60
            case e:
              return ((r - t) / l + 2) * 60
            case r:
              return ((t - e) / l + 4) * 60
            default:
              return -1
          }
        }, 'rgb2hsl')
      }),
        (V$ = Z4)
    })
  var Mbe,
    H$,
    W$ = N(() => {
      'use strict'
      ;(Mbe = { clamp: o((t, e, r) => (e > r ? Math.min(e, Math.max(r, t)) : Math.min(r, Math.max(e, t))), 'clamp'), round: o(t => Math.round(t * 1e10) / 1e10, 'round') }),
        (H$ = Mbe)
    })
  var Ibe,
    q$,
    Y$ = N(() => {
      'use strict'
      ;(Ibe = {
        dec2hex: o(t => {
          let e = Math.round(t).toString(16)
          return e.length > 1 ? e : `0${e}`
        }, 'dec2hex')
      }),
        (q$ = Ibe)
    })
  var Obe,
    jt,
    Kl = N(() => {
      'use strict'
      U$()
      W$()
      Y$()
      ;(Obe = { channel: V$, lang: H$, unit: q$ }), (jt = Obe)
    })
  var su,
    Bi,
    Ny = N(() => {
      'use strict'
      Kl()
      su = {}
      for (let t = 0; t <= 255; t++) su[t] = jt.unit.dec2hex(t)
      Bi = { ALL: 0, RGB: 1, HSL: 2 }
    })
  var o7,
    X$,
    j$ = N(() => {
      'use strict'
      Ny()
      ;(o7 = class {
        static {
          o(this, 'Type')
        }
        constructor() {
          this.type = Bi.ALL
        }
        get() {
          return this.type
        }
        set(e) {
          if (this.type && this.type !== e) throw new Error('Cannot change both RGB and HSL channels at the same time')
          this.type = e
        }
        reset() {
          this.type = Bi.ALL
        }
        is(e) {
          return this.type === e
        }
      }),
        (X$ = o7)
    })
  var l7,
    K$,
    Q$ = N(() => {
      'use strict'
      Kl()
      j$()
      Ny()
      ;(l7 = class {
        static {
          o(this, 'Channels')
        }
        constructor(e, r) {
          ;(this.color = r), (this.changed = !1), (this.data = e), (this.type = new X$())
        }
        set(e, r) {
          return (this.color = r), (this.changed = !1), (this.data = e), (this.type.type = Bi.ALL), this
        }
        _ensureHSL() {
          let e = this.data,
            { h: r, s: n, l: i } = e
          r === void 0 && (e.h = jt.channel.rgb2hsl(e, 'h')), n === void 0 && (e.s = jt.channel.rgb2hsl(e, 's')), i === void 0 && (e.l = jt.channel.rgb2hsl(e, 'l'))
        }
        _ensureRGB() {
          let e = this.data,
            { r, g: n, b: i } = e
          r === void 0 && (e.r = jt.channel.hsl2rgb(e, 'r')), n === void 0 && (e.g = jt.channel.hsl2rgb(e, 'g')), i === void 0 && (e.b = jt.channel.hsl2rgb(e, 'b'))
        }
        get r() {
          let e = this.data,
            r = e.r
          return !this.type.is(Bi.HSL) && r !== void 0 ? r : (this._ensureHSL(), jt.channel.hsl2rgb(e, 'r'))
        }
        get g() {
          let e = this.data,
            r = e.g
          return !this.type.is(Bi.HSL) && r !== void 0 ? r : (this._ensureHSL(), jt.channel.hsl2rgb(e, 'g'))
        }
        get b() {
          let e = this.data,
            r = e.b
          return !this.type.is(Bi.HSL) && r !== void 0 ? r : (this._ensureHSL(), jt.channel.hsl2rgb(e, 'b'))
        }
        get h() {
          let e = this.data,
            r = e.h
          return !this.type.is(Bi.RGB) && r !== void 0 ? r : (this._ensureRGB(), jt.channel.rgb2hsl(e, 'h'))
        }
        get s() {
          let e = this.data,
            r = e.s
          return !this.type.is(Bi.RGB) && r !== void 0 ? r : (this._ensureRGB(), jt.channel.rgb2hsl(e, 's'))
        }
        get l() {
          let e = this.data,
            r = e.l
          return !this.type.is(Bi.RGB) && r !== void 0 ? r : (this._ensureRGB(), jt.channel.rgb2hsl(e, 'l'))
        }
        get a() {
          return this.data.a
        }
        set r(e) {
          this.type.set(Bi.RGB), (this.changed = !0), (this.data.r = e)
        }
        set g(e) {
          this.type.set(Bi.RGB), (this.changed = !0), (this.data.g = e)
        }
        set b(e) {
          this.type.set(Bi.RGB), (this.changed = !0), (this.data.b = e)
        }
        set h(e) {
          this.type.set(Bi.HSL), (this.changed = !0), (this.data.h = e)
        }
        set s(e) {
          this.type.set(Bi.HSL), (this.changed = !0), (this.data.s = e)
        }
        set l(e) {
          this.type.set(Bi.HSL), (this.changed = !0), (this.data.l = e)
        }
        set a(e) {
          ;(this.changed = !0), (this.data.a = e)
        }
      }),
        (K$ = l7)
    })
  var Pbe,
    uh,
    My = N(() => {
      'use strict'
      Q$()
      ;(Pbe = new K$({ r: 0, g: 0, b: 0, a: 0 }, 'transparent')), (uh = Pbe)
    })
  var Z$,
    nd,
    c7 = N(() => {
      'use strict'
      My()
      Ny()
      ;(Z$ = {
        re: /^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,
        parse: o(t => {
          if (t.charCodeAt(0) !== 35) return
          let e = t.match(Z$.re)
          if (!e) return
          let r = e[1],
            n = parseInt(r, 16),
            i = r.length,
            a = i % 4 === 0,
            s = i > 4,
            l = s ? 1 : 17,
            u = s ? 8 : 4,
            h = a ? 0 : -1,
            f = s ? 255 : 15
          return uh.set({ r: ((n >> (u * (h + 3))) & f) * l, g: ((n >> (u * (h + 2))) & f) * l, b: ((n >> (u * (h + 1))) & f) * l, a: a ? ((n & f) * l) / 255 : 1 }, t)
        }, 'parse'),
        stringify: o(t => {
          let { r: e, g: r, b: n, a: i } = t
          return i < 1 ? `#${su[Math.round(e)]}${su[Math.round(r)]}${su[Math.round(n)]}${su[Math.round(i * 255)]}` : `#${su[Math.round(e)]}${su[Math.round(r)]}${su[Math.round(n)]}`
        }, 'stringify')
      }),
        (nd = Z$)
    })
  var J4,
    Iy,
    J$ = N(() => {
      'use strict'
      Kl()
      My()
      ;(J4 = {
        re: /^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,
        hueRe: /^(.+?)(deg|grad|rad|turn)$/i,
        _hue2deg: o(t => {
          let e = t.match(J4.hueRe)
          if (e) {
            let [, r, n] = e
            switch (n) {
              case 'grad':
                return jt.channel.clamp.h(parseFloat(r) * 0.9)
              case 'rad':
                return jt.channel.clamp.h((parseFloat(r) * 180) / Math.PI)
              case 'turn':
                return jt.channel.clamp.h(parseFloat(r) * 360)
            }
          }
          return jt.channel.clamp.h(parseFloat(t))
        }, '_hue2deg'),
        parse: o(t => {
          let e = t.charCodeAt(0)
          if (e !== 104 && e !== 72) return
          let r = t.match(J4.re)
          if (!r) return
          let [, n, i, a, s, l] = r
          return uh.set(
            {
              h: J4._hue2deg(n),
              s: jt.channel.clamp.s(parseFloat(i)),
              l: jt.channel.clamp.l(parseFloat(a)),
              a: s ? jt.channel.clamp.a(l ? parseFloat(s) / 100 : parseFloat(s)) : 1
            },
            t
          )
        }, 'parse'),
        stringify: o(t => {
          let { h: e, s: r, l: n, a: i } = t
          return i < 1 ? `hsla(${jt.lang.round(e)}, ${jt.lang.round(r)}%, ${jt.lang.round(n)}%, ${i})` : `hsl(${jt.lang.round(e)}, ${jt.lang.round(r)}%, ${jt.lang.round(n)}%)`
        }, 'stringify')
      }),
        (Iy = J4)
    })
  var e3,
    u7,
    ez = N(() => {
      'use strict'
      c7()
      ;(e3 = {
        colors: {
          aliceblue: '#f0f8ff',
          antiquewhite: '#faebd7',
          aqua: '#00ffff',
          aquamarine: '#7fffd4',
          azure: '#f0ffff',
          beige: '#f5f5dc',
          bisque: '#ffe4c4',
          black: '#000000',
          blanchedalmond: '#ffebcd',
          blue: '#0000ff',
          blueviolet: '#8a2be2',
          brown: '#a52a2a',
          burlywood: '#deb887',
          cadetblue: '#5f9ea0',
          chartreuse: '#7fff00',
          chocolate: '#d2691e',
          coral: '#ff7f50',
          cornflowerblue: '#6495ed',
          cornsilk: '#fff8dc',
          crimson: '#dc143c',
          cyanaqua: '#00ffff',
          darkblue: '#00008b',
          darkcyan: '#008b8b',
          darkgoldenrod: '#b8860b',
          darkgray: '#a9a9a9',
          darkgreen: '#006400',
          darkgrey: '#a9a9a9',
          darkkhaki: '#bdb76b',
          darkmagenta: '#8b008b',
          darkolivegreen: '#556b2f',
          darkorange: '#ff8c00',
          darkorchid: '#9932cc',
          darkred: '#8b0000',
          darksalmon: '#e9967a',
          darkseagreen: '#8fbc8f',
          darkslateblue: '#483d8b',
          darkslategray: '#2f4f4f',
          darkslategrey: '#2f4f4f',
          darkturquoise: '#00ced1',
          darkviolet: '#9400d3',
          deeppink: '#ff1493',
          deepskyblue: '#00bfff',
          dimgray: '#696969',
          dimgrey: '#696969',
          dodgerblue: '#1e90ff',
          firebrick: '#b22222',
          floralwhite: '#fffaf0',
          forestgreen: '#228b22',
          fuchsia: '#ff00ff',
          gainsboro: '#dcdcdc',
          ghostwhite: '#f8f8ff',
          gold: '#ffd700',
          goldenrod: '#daa520',
          gray: '#808080',
          green: '#008000',
          greenyellow: '#adff2f',
          grey: '#808080',
          honeydew: '#f0fff0',
          hotpink: '#ff69b4',
          indianred: '#cd5c5c',
          indigo: '#4b0082',
          ivory: '#fffff0',
          khaki: '#f0e68c',
          lavender: '#e6e6fa',
          lavenderblush: '#fff0f5',
          lawngreen: '#7cfc00',
          lemonchiffon: '#fffacd',
          lightblue: '#add8e6',
          lightcoral: '#f08080',
          lightcyan: '#e0ffff',
          lightgoldenrodyellow: '#fafad2',
          lightgray: '#d3d3d3',
          lightgreen: '#90ee90',
          lightgrey: '#d3d3d3',
          lightpink: '#ffb6c1',
          lightsalmon: '#ffa07a',
          lightseagreen: '#20b2aa',
          lightskyblue: '#87cefa',
          lightslategray: '#778899',
          lightslategrey: '#778899',
          lightsteelblue: '#b0c4de',
          lightyellow: '#ffffe0',
          lime: '#00ff00',
          limegreen: '#32cd32',
          linen: '#faf0e6',
          magenta: '#ff00ff',
          maroon: '#800000',
          mediumaquamarine: '#66cdaa',
          mediumblue: '#0000cd',
          mediumorchid: '#ba55d3',
          mediumpurple: '#9370db',
          mediumseagreen: '#3cb371',
          mediumslateblue: '#7b68ee',
          mediumspringgreen: '#00fa9a',
          mediumturquoise: '#48d1cc',
          mediumvioletred: '#c71585',
          midnightblue: '#191970',
          mintcream: '#f5fffa',
          mistyrose: '#ffe4e1',
          moccasin: '#ffe4b5',
          navajowhite: '#ffdead',
          navy: '#000080',
          oldlace: '#fdf5e6',
          olive: '#808000',
          olivedrab: '#6b8e23',
          orange: '#ffa500',
          orangered: '#ff4500',
          orchid: '#da70d6',
          palegoldenrod: '#eee8aa',
          palegreen: '#98fb98',
          paleturquoise: '#afeeee',
          palevioletred: '#db7093',
          papayawhip: '#ffefd5',
          peachpuff: '#ffdab9',
          peru: '#cd853f',
          pink: '#ffc0cb',
          plum: '#dda0dd',
          powderblue: '#b0e0e6',
          purple: '#800080',
          rebeccapurple: '#663399',
          red: '#ff0000',
          rosybrown: '#bc8f8f',
          royalblue: '#4169e1',
          saddlebrown: '#8b4513',
          salmon: '#fa8072',
          sandybrown: '#f4a460',
          seagreen: '#2e8b57',
          seashell: '#fff5ee',
          sienna: '#a0522d',
          silver: '#c0c0c0',
          skyblue: '#87ceeb',
          slateblue: '#6a5acd',
          slategray: '#708090',
          slategrey: '#708090',
          snow: '#fffafa',
          springgreen: '#00ff7f',
          tan: '#d2b48c',
          teal: '#008080',
          thistle: '#d8bfd8',
          transparent: '#00000000',
          turquoise: '#40e0d0',
          violet: '#ee82ee',
          wheat: '#f5deb3',
          white: '#ffffff',
          whitesmoke: '#f5f5f5',
          yellow: '#ffff00',
          yellowgreen: '#9acd32'
        },
        parse: o(t => {
          t = t.toLowerCase()
          let e = e3.colors[t]
          if (e) return nd.parse(e)
        }, 'parse'),
        stringify: o(t => {
          let e = nd.stringify(t)
          for (let r in e3.colors) if (e3.colors[r] === e) return r
        }, 'stringify')
      }),
        (u7 = e3)
    })
  var tz,
    Oy,
    rz = N(() => {
      'use strict'
      Kl()
      My()
      ;(tz = {
        re: /^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,
        parse: o(t => {
          let e = t.charCodeAt(0)
          if (e !== 114 && e !== 82) return
          let r = t.match(tz.re)
          if (!r) return
          let [, n, i, a, s, l, u, h, f] = r
          return uh.set(
            {
              r: jt.channel.clamp.r(i ? parseFloat(n) * 2.55 : parseFloat(n)),
              g: jt.channel.clamp.g(s ? parseFloat(a) * 2.55 : parseFloat(a)),
              b: jt.channel.clamp.b(u ? parseFloat(l) * 2.55 : parseFloat(l)),
              a: h ? jt.channel.clamp.a(f ? parseFloat(h) / 100 : parseFloat(h)) : 1
            },
            t
          )
        }, 'parse'),
        stringify: o(t => {
          let { r: e, g: r, b: n, a: i } = t
          return i < 1
            ? `rgba(${jt.lang.round(e)}, ${jt.lang.round(r)}, ${jt.lang.round(n)}, ${jt.lang.round(i)})`
            : `rgb(${jt.lang.round(e)}, ${jt.lang.round(r)}, ${jt.lang.round(n)})`
        }, 'stringify')
      }),
        (Oy = tz)
    })
  var Bbe,
    Fi,
    ou = N(() => {
      'use strict'
      c7()
      J$()
      ez()
      rz()
      Ny()
      ;(Bbe = {
        format: { keyword: u7, hex: nd, rgb: Oy, rgba: Oy, hsl: Iy, hsla: Iy },
        parse: o(t => {
          if (typeof t != 'string') return t
          let e = nd.parse(t) || Oy.parse(t) || Iy.parse(t) || u7.parse(t)
          if (e) return e
          throw new Error(`Unsupported color format: "${t}"`)
        }, 'parse'),
        stringify: o(
          t =>
            !t.changed && t.color
              ? t.color
              : t.type.is(Bi.HSL) || t.data.r === void 0
                ? Iy.stringify(t)
                : t.a < 1 || !Number.isInteger(t.r) || !Number.isInteger(t.g) || !Number.isInteger(t.b)
                  ? Oy.stringify(t)
                  : nd.stringify(t),
          'stringify'
        )
      }),
        (Fi = Bbe)
    })
  var Fbe,
    t3,
    h7 = N(() => {
      'use strict'
      Kl()
      ou()
      ;(Fbe = o((t, e) => {
        let r = Fi.parse(t)
        for (let n in e) r[n] = jt.channel.clamp[n](e[n])
        return Fi.stringify(r)
      }, 'change')),
        (t3 = Fbe)
    })
  var $be,
    Qa,
    f7 = N(() => {
      'use strict'
      Kl()
      My()
      ou()
      h7()
      ;($be = o((t, e, r = 0, n = 1) => {
        if (typeof t != 'number') return t3(t, { a: e })
        let i = uh.set({ r: jt.channel.clamp.r(t), g: jt.channel.clamp.g(e), b: jt.channel.clamp.b(r), a: jt.channel.clamp.a(n) })
        return Fi.stringify(i)
      }, 'rgba')),
        (Qa = $be)
    })
  var zbe,
    id,
    nz = N(() => {
      'use strict'
      Kl()
      ou()
      ;(zbe = o((t, e) => jt.lang.round(Fi.parse(t)[e]), 'channel')), (id = zbe)
    })
  var Gbe,
    iz,
    az = N(() => {
      'use strict'
      Kl()
      ou()
      ;(Gbe = o(t => {
        let { r: e, g: r, b: n } = Fi.parse(t),
          i = 0.2126 * jt.channel.toLinear(e) + 0.7152 * jt.channel.toLinear(r) + 0.0722 * jt.channel.toLinear(n)
        return jt.lang.round(i)
      }, 'luminance')),
        (iz = Gbe)
    })
  var Vbe,
    sz,
    oz = N(() => {
      'use strict'
      az()
      ;(Vbe = o(t => iz(t) >= 0.5, 'isLight')), (sz = Vbe)
    })
  var Ube,
    la,
    lz = N(() => {
      'use strict'
      oz()
      ;(Ube = o(t => !sz(t), 'isDark')), (la = Ube)
    })
  var Hbe,
    r3,
    d7 = N(() => {
      'use strict'
      Kl()
      ou()
      ;(Hbe = o((t, e, r) => {
        let n = Fi.parse(t),
          i = n[e],
          a = jt.channel.clamp[e](i + r)
        return i !== a && (n[e] = a), Fi.stringify(n)
      }, 'adjustChannel')),
        (r3 = Hbe)
    })
  var Wbe,
    Lt,
    cz = N(() => {
      'use strict'
      d7()
      ;(Wbe = o((t, e) => r3(t, 'l', e), 'lighten')), (Lt = Wbe)
    })
  var qbe,
    Ot,
    uz = N(() => {
      'use strict'
      d7()
      ;(qbe = o((t, e) => r3(t, 'l', -e), 'darken')), (Ot = qbe)
    })
  var Ybe,
    Me,
    hz = N(() => {
      'use strict'
      ou()
      h7()
      ;(Ybe = o((t, e) => {
        let r = Fi.parse(t),
          n = {}
        for (let i in e) e[i] && (n[i] = r[i] + e[i])
        return t3(t, n)
      }, 'adjust')),
        (Me = Ybe)
    })
  var Xbe,
    fz,
    dz = N(() => {
      'use strict'
      ou()
      f7()
      ;(Xbe = o((t, e, r = 50) => {
        let { r: n, g: i, b: a, a: s } = Fi.parse(t),
          { r: l, g: u, b: h, a: f } = Fi.parse(e),
          d = r / 100,
          p = d * 2 - 1,
          m = s - f,
          y = ((p * m === -1 ? p : (p + m) / (1 + p * m)) + 1) / 2,
          v = 1 - y,
          x = n * y + l * v,
          b = i * y + u * v,
          T = a * y + h * v,
          S = s * d + f * (1 - d)
        return Qa(x, b, T, S)
      }, 'mix')),
        (fz = Xbe)
    })
  var jbe,
    wt,
    pz = N(() => {
      'use strict'
      ou()
      dz()
      ;(jbe = o((t, e = 100) => {
        let r = Fi.parse(t)
        return (r.r = 255 - r.r), (r.g = 255 - r.g), (r.b = 255 - r.b), fz(r, t, e)
      }, 'invert')),
        (wt = jbe)
    })
  var mz = N(() => {
    'use strict'
    f7()
    nz()
    lz()
    cz()
    uz()
    hz()
    pz()
  })
  var Ks = N(() => {
    'use strict'
    mz()
  })
  var hh,
    fh,
    Py = N(() => {
      'use strict'
      ;(hh = '#ffffff'), (fh = '#f2f2f2')
    })
  var Si,
    y0 = N(() => {
      'use strict'
      Ks()
      Si = o((t, e) => (e ? Me(t, { s: -40, l: 10 }) : Me(t, { s: -40, l: -10 })), 'mkBorder')
    })
  var m7,
    gz,
    yz = N(() => {
      'use strict'
      Ks()
      Py()
      y0()
      ;(m7 = class {
        static {
          o(this, 'Theme')
        }
        constructor() {
          ;(this.background = '#f4f4f4'),
            (this.primaryColor = '#fff4dd'),
            (this.noteBkgColor = '#fff5ad'),
            (this.noteTextColor = '#333'),
            (this.THEME_COLOR_LIMIT = 12),
            (this.fontFamily = '"trebuchet ms", verdana, arial, sans-serif'),
            (this.fontSize = '16px')
        }
        updateColors() {
          if (
            ((this.primaryTextColor = this.primaryTextColor || (this.darkMode ? '#eee' : '#333')),
            (this.secondaryColor = this.secondaryColor || Me(this.primaryColor, { h: -120 })),
            (this.tertiaryColor = this.tertiaryColor || Me(this.primaryColor, { h: 180, l: 5 })),
            (this.primaryBorderColor = this.primaryBorderColor || Si(this.primaryColor, this.darkMode)),
            (this.secondaryBorderColor = this.secondaryBorderColor || Si(this.secondaryColor, this.darkMode)),
            (this.tertiaryBorderColor = this.tertiaryBorderColor || Si(this.tertiaryColor, this.darkMode)),
            (this.noteBorderColor = this.noteBorderColor || Si(this.noteBkgColor, this.darkMode)),
            (this.noteBkgColor = this.noteBkgColor || '#fff5ad'),
            (this.noteTextColor = this.noteTextColor || '#333'),
            (this.secondaryTextColor = this.secondaryTextColor || wt(this.secondaryColor)),
            (this.tertiaryTextColor = this.tertiaryTextColor || wt(this.tertiaryColor)),
            (this.lineColor = this.lineColor || wt(this.background)),
            (this.arrowheadColor = this.arrowheadColor || wt(this.background)),
            (this.textColor = this.textColor || this.primaryTextColor),
            (this.border2 = this.border2 || this.tertiaryBorderColor),
            (this.nodeBkg = this.nodeBkg || this.primaryColor),
            (this.mainBkg = this.mainBkg || this.primaryColor),
            (this.nodeBorder = this.nodeBorder || this.primaryBorderColor),
            (this.clusterBkg = this.clusterBkg || this.tertiaryColor),
            (this.clusterBorder = this.clusterBorder || this.tertiaryBorderColor),
            (this.defaultLinkColor = this.defaultLinkColor || this.lineColor),
            (this.titleColor = this.titleColor || this.tertiaryTextColor),
            (this.edgeLabelBackground = this.edgeLabelBackground || (this.darkMode ? Ot(this.secondaryColor, 30) : this.secondaryColor)),
            (this.nodeTextColor = this.nodeTextColor || this.primaryTextColor),
            (this.actorBorder = this.actorBorder || this.primaryBorderColor),
            (this.actorBkg = this.actorBkg || this.mainBkg),
            (this.actorTextColor = this.actorTextColor || this.primaryTextColor),
            (this.actorLineColor = this.actorLineColor || this.actorBorder),
            (this.labelBoxBkgColor = this.labelBoxBkgColor || this.actorBkg),
            (this.signalColor = this.signalColor || this.textColor),
            (this.signalTextColor = this.signalTextColor || this.textColor),
            (this.labelBoxBorderColor = this.labelBoxBorderColor || this.actorBorder),
            (this.labelTextColor = this.labelTextColor || this.actorTextColor),
            (this.loopTextColor = this.loopTextColor || this.actorTextColor),
            (this.activationBorderColor = this.activationBorderColor || Ot(this.secondaryColor, 10)),
            (this.activationBkgColor = this.activationBkgColor || this.secondaryColor),
            (this.sequenceNumberColor = this.sequenceNumberColor || wt(this.lineColor)),
            (this.sectionBkgColor = this.sectionBkgColor || this.tertiaryColor),
            (this.altSectionBkgColor = this.altSectionBkgColor || 'white'),
            (this.sectionBkgColor = this.sectionBkgColor || this.secondaryColor),
            (this.sectionBkgColor2 = this.sectionBkgColor2 || this.primaryColor),
            (this.excludeBkgColor = this.excludeBkgColor || '#eeeeee'),
            (this.taskBorderColor = this.taskBorderColor || this.primaryBorderColor),
            (this.taskBkgColor = this.taskBkgColor || this.primaryColor),
            (this.activeTaskBorderColor = this.activeTaskBorderColor || this.primaryColor),
            (this.activeTaskBkgColor = this.activeTaskBkgColor || Lt(this.primaryColor, 23)),
            (this.gridColor = this.gridColor || 'lightgrey'),
            (this.doneTaskBkgColor = this.doneTaskBkgColor || 'lightgrey'),
            (this.doneTaskBorderColor = this.doneTaskBorderColor || 'grey'),
            (this.critBorderColor = this.critBorderColor || '#ff8888'),
            (this.critBkgColor = this.critBkgColor || 'red'),
            (this.todayLineColor = this.todayLineColor || 'red'),
            (this.vertLineColor = this.vertLineColor || 'navy'),
            (this.taskTextColor = this.taskTextColor || this.textColor),
            (this.taskTextOutsideColor = this.taskTextOutsideColor || this.textColor),
            (this.taskTextLightColor = this.taskTextLightColor || this.textColor),
            (this.taskTextColor = this.taskTextColor || this.primaryTextColor),
            (this.taskTextDarkColor = this.taskTextDarkColor || this.textColor),
            (this.taskTextClickableColor = this.taskTextClickableColor || '#003163'),
            (this.personBorder = this.personBorder || this.primaryBorderColor),
            (this.personBkg = this.personBkg || this.mainBkg),
            this.darkMode
              ? ((this.rowOdd = this.rowOdd || Ot(this.mainBkg, 5) || '#ffffff'), (this.rowEven = this.rowEven || Ot(this.mainBkg, 10)))
              : ((this.rowOdd = this.rowOdd || Lt(this.mainBkg, 75) || '#ffffff'), (this.rowEven = this.rowEven || Lt(this.mainBkg, 5))),
            (this.transitionColor = this.transitionColor || this.lineColor),
            (this.transitionLabelColor = this.transitionLabelColor || this.textColor),
            (this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor),
            (this.stateBkg = this.stateBkg || this.mainBkg),
            (this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg),
            (this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor),
            (this.altBackground = this.altBackground || this.tertiaryColor),
            (this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg),
            (this.compositeBorder = this.compositeBorder || this.nodeBorder),
            (this.innerEndBackground = this.nodeBorder),
            (this.errorBkgColor = this.errorBkgColor || this.tertiaryColor),
            (this.errorTextColor = this.errorTextColor || this.tertiaryTextColor),
            (this.transitionColor = this.transitionColor || this.lineColor),
            (this.specialStateColor = this.lineColor),
            (this.cScale0 = this.cScale0 || this.primaryColor),
            (this.cScale1 = this.cScale1 || this.secondaryColor),
            (this.cScale2 = this.cScale2 || this.tertiaryColor),
            (this.cScale3 = this.cScale3 || Me(this.primaryColor, { h: 30 })),
            (this.cScale4 = this.cScale4 || Me(this.primaryColor, { h: 60 })),
            (this.cScale5 = this.cScale5 || Me(this.primaryColor, { h: 90 })),
            (this.cScale6 = this.cScale6 || Me(this.primaryColor, { h: 120 })),
            (this.cScale7 = this.cScale7 || Me(this.primaryColor, { h: 150 })),
            (this.cScale8 = this.cScale8 || Me(this.primaryColor, { h: 210, l: 150 })),
            (this.cScale9 = this.cScale9 || Me(this.primaryColor, { h: 270 })),
            (this.cScale10 = this.cScale10 || Me(this.primaryColor, { h: 300 })),
            (this.cScale11 = this.cScale11 || Me(this.primaryColor, { h: 330 })),
            this.darkMode)
          )
            for (let r = 0; r < this.THEME_COLOR_LIMIT; r++) this['cScale' + r] = Ot(this['cScale' + r], 75)
          else for (let r = 0; r < this.THEME_COLOR_LIMIT; r++) this['cScale' + r] = Ot(this['cScale' + r], 25)
          for (let r = 0; r < this.THEME_COLOR_LIMIT; r++) this['cScaleInv' + r] = this['cScaleInv' + r] || wt(this['cScale' + r])
          for (let r = 0; r < this.THEME_COLOR_LIMIT; r++)
            this.darkMode
              ? (this['cScalePeer' + r] = this['cScalePeer' + r] || Lt(this['cScale' + r], 10))
              : (this['cScalePeer' + r] = this['cScalePeer' + r] || Ot(this['cScale' + r], 10))
          this.scaleLabelColor = this.scaleLabelColor || this.labelTextColor
          for (let r = 0; r < this.THEME_COLOR_LIMIT; r++) this['cScaleLabel' + r] = this['cScaleLabel' + r] || this.scaleLabelColor
          let e = this.darkMode ? -4 : -1
          for (let r = 0; r < 5; r++)
            (this['surface' + r] = this['surface' + r] || Me(this.mainBkg, { h: 180, s: -15, l: e * (5 + r * 3) })),
              (this['surfacePeer' + r] = this['surfacePeer' + r] || Me(this.mainBkg, { h: 180, s: -15, l: e * (8 + r * 3) }))
          ;(this.classText = this.classText || this.textColor),
            (this.fillType0 = this.fillType0 || this.primaryColor),
            (this.fillType1 = this.fillType1 || this.secondaryColor),
            (this.fillType2 = this.fillType2 || Me(this.primaryColor, { h: 64 })),
            (this.fillType3 = this.fillType3 || Me(this.secondaryColor, { h: 64 })),
            (this.fillType4 = this.fillType4 || Me(this.primaryColor, { h: -64 })),
            (this.fillType5 = this.fillType5 || Me(this.secondaryColor, { h: -64 })),
            (this.fillType6 = this.fillType6 || Me(this.primaryColor, { h: 128 })),
            (this.fillType7 = this.fillType7 || Me(this.secondaryColor, { h: 128 })),
            (this.pie1 = this.pie1 || this.primaryColor),
            (this.pie2 = this.pie2 || this.secondaryColor),
            (this.pie3 = this.pie3 || this.tertiaryColor),
            (this.pie4 = this.pie4 || Me(this.primaryColor, { l: -10 })),
            (this.pie5 = this.pie5 || Me(this.secondaryColor, { l: -10 })),
            (this.pie6 = this.pie6 || Me(this.tertiaryColor, { l: -10 })),
            (this.pie7 = this.pie7 || Me(this.primaryColor, { h: 60, l: -10 })),
            (this.pie8 = this.pie8 || Me(this.primaryColor, { h: -60, l: -10 })),
            (this.pie9 = this.pie9 || Me(this.primaryColor, { h: 120, l: 0 })),
            (this.pie10 = this.pie10 || Me(this.primaryColor, { h: 60, l: -20 })),
            (this.pie11 = this.pie11 || Me(this.primaryColor, { h: -60, l: -20 })),
            (this.pie12 = this.pie12 || Me(this.primaryColor, { h: 120, l: -10 })),
            (this.pieTitleTextSize = this.pieTitleTextSize || '25px'),
            (this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor),
            (this.pieSectionTextSize = this.pieSectionTextSize || '17px'),
            (this.pieSectionTextColor = this.pieSectionTextColor || this.textColor),
            (this.pieLegendTextSize = this.pieLegendTextSize || '17px'),
            (this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor),
            (this.pieStrokeColor = this.pieStrokeColor || 'black'),
            (this.pieStrokeWidth = this.pieStrokeWidth || '2px'),
            (this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || '2px'),
            (this.pieOuterStrokeColor = this.pieOuterStrokeColor || 'black'),
            (this.pieOpacity = this.pieOpacity || '0.7'),
            (this.radar = {
              axisColor: this.radar?.axisColor || this.lineColor,
              axisStrokeWidth: this.radar?.axisStrokeWidth || 2,
              axisLabelFontSize: this.radar?.axisLabelFontSize || 12,
              curveOpacity: this.radar?.curveOpacity || 0.5,
              curveStrokeWidth: this.radar?.curveStrokeWidth || 2,
              graticuleColor: this.radar?.graticuleColor || '#DEDEDE',
              graticuleStrokeWidth: this.radar?.graticuleStrokeWidth || 1,
              graticuleOpacity: this.radar?.graticuleOpacity || 0.3,
              legendBoxSize: this.radar?.legendBoxSize || 12,
              legendFontSize: this.radar?.legendFontSize || 12
            }),
            (this.archEdgeColor = this.archEdgeColor || '#777'),
            (this.archEdgeArrowColor = this.archEdgeArrowColor || '#777'),
            (this.archEdgeWidth = this.archEdgeWidth || '3'),
            (this.archGroupBorderColor = this.archGroupBorderColor || '#000'),
            (this.archGroupBorderWidth = this.archGroupBorderWidth || '2px'),
            (this.quadrant1Fill = this.quadrant1Fill || this.primaryColor),
            (this.quadrant2Fill = this.quadrant2Fill || Me(this.primaryColor, { r: 5, g: 5, b: 5 })),
            (this.quadrant3Fill = this.quadrant3Fill || Me(this.primaryColor, { r: 10, g: 10, b: 10 })),
            (this.quadrant4Fill = this.quadrant4Fill || Me(this.primaryColor, { r: 15, g: 15, b: 15 })),
            (this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor),
            (this.quadrant2TextFill = this.quadrant2TextFill || Me(this.primaryTextColor, { r: -5, g: -5, b: -5 })),
            (this.quadrant3TextFill = this.quadrant3TextFill || Me(this.primaryTextColor, { r: -10, g: -10, b: -10 })),
            (this.quadrant4TextFill = this.quadrant4TextFill || Me(this.primaryTextColor, { r: -15, g: -15, b: -15 })),
            (this.quadrantPointFill = this.quadrantPointFill || la(this.quadrant1Fill) ? Lt(this.quadrant1Fill) : Ot(this.quadrant1Fill)),
            (this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor),
            (this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor),
            (this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor),
            (this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor),
            (this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor),
            (this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor),
            (this.xyChart = {
              backgroundColor: this.xyChart?.backgroundColor || this.background,
              titleColor: this.xyChart?.titleColor || this.primaryTextColor,
              xAxisTitleColor: this.xyChart?.xAxisTitleColor || this.primaryTextColor,
              xAxisLabelColor: this.xyChart?.xAxisLabelColor || this.primaryTextColor,
              xAxisTickColor: this.xyChart?.xAxisTickColor || this.primaryTextColor,
              xAxisLineColor: this.xyChart?.xAxisLineColor || this.primaryTextColor,
              yAxisTitleColor: this.xyChart?.yAxisTitleColor || this.primaryTextColor,
              yAxisLabelColor: this.xyChart?.yAxisLabelColor || this.primaryTextColor,
              yAxisTickColor: this.xyChart?.yAxisTickColor || this.primaryTextColor,
              yAxisLineColor: this.xyChart?.yAxisLineColor || this.primaryTextColor,
              plotColorPalette: this.xyChart?.plotColorPalette || '#FFF4DD,#FFD8B1,#FFA07A,#ECEFF1,#D6DBDF,#C3E0A8,#FFB6A4,#FFD74D,#738FA7,#FFFFF0'
            }),
            (this.requirementBackground = this.requirementBackground || this.primaryColor),
            (this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor),
            (this.requirementBorderSize = this.requirementBorderSize || '1'),
            (this.requirementTextColor = this.requirementTextColor || this.primaryTextColor),
            (this.relationColor = this.relationColor || this.lineColor),
            (this.relationLabelBackground = this.relationLabelBackground || (this.darkMode ? Ot(this.secondaryColor, 30) : this.secondaryColor)),
            (this.relationLabelColor = this.relationLabelColor || this.actorTextColor),
            (this.git0 = this.git0 || this.primaryColor),
            (this.git1 = this.git1 || this.secondaryColor),
            (this.git2 = this.git2 || this.tertiaryColor),
            (this.git3 = this.git3 || Me(this.primaryColor, { h: -30 })),
            (this.git4 = this.git4 || Me(this.primaryColor, { h: -60 })),
            (this.git5 = this.git5 || Me(this.primaryColor, { h: -90 })),
            (this.git6 = this.git6 || Me(this.primaryColor, { h: 60 })),
            (this.git7 = this.git7 || Me(this.primaryColor, { h: 120 })),
            this.darkMode
              ? ((this.git0 = Lt(this.git0, 25)),
                (this.git1 = Lt(this.git1, 25)),
                (this.git2 = Lt(this.git2, 25)),
                (this.git3 = Lt(this.git3, 25)),
                (this.git4 = Lt(this.git4, 25)),
                (this.git5 = Lt(this.git5, 25)),
                (this.git6 = Lt(this.git6, 25)),
                (this.git7 = Lt(this.git7, 25)))
              : ((this.git0 = Ot(this.git0, 25)),
                (this.git1 = Ot(this.git1, 25)),
                (this.git2 = Ot(this.git2, 25)),
                (this.git3 = Ot(this.git3, 25)),
                (this.git4 = Ot(this.git4, 25)),
                (this.git5 = Ot(this.git5, 25)),
                (this.git6 = Ot(this.git6, 25)),
                (this.git7 = Ot(this.git7, 25))),
            (this.gitInv0 = this.gitInv0 || wt(this.git0)),
            (this.gitInv1 = this.gitInv1 || wt(this.git1)),
            (this.gitInv2 = this.gitInv2 || wt(this.git2)),
            (this.gitInv3 = this.gitInv3 || wt(this.git3)),
            (this.gitInv4 = this.gitInv4 || wt(this.git4)),
            (this.gitInv5 = this.gitInv5 || wt(this.git5)),
            (this.gitInv6 = this.gitInv6 || wt(this.git6)),
            (this.gitInv7 = this.gitInv7 || wt(this.git7)),
            (this.branchLabelColor = this.branchLabelColor || (this.darkMode ? 'black' : this.labelTextColor)),
            (this.gitBranchLabel0 = this.gitBranchLabel0 || this.branchLabelColor),
            (this.gitBranchLabel1 = this.gitBranchLabel1 || this.branchLabelColor),
            (this.gitBranchLabel2 = this.gitBranchLabel2 || this.branchLabelColor),
            (this.gitBranchLabel3 = this.gitBranchLabel3 || this.branchLabelColor),
            (this.gitBranchLabel4 = this.gitBranchLabel4 || this.branchLabelColor),
            (this.gitBranchLabel5 = this.gitBranchLabel5 || this.branchLabelColor),
            (this.gitBranchLabel6 = this.gitBranchLabel6 || this.branchLabelColor),
            (this.gitBranchLabel7 = this.gitBranchLabel7 || this.branchLabelColor),
            (this.tagLabelColor = this.tagLabelColor || this.primaryTextColor),
            (this.tagLabelBackground = this.tagLabelBackground || this.primaryColor),
            (this.tagLabelBorder = this.tagBorder || this.primaryBorderColor),
            (this.tagLabelFontSize = this.tagLabelFontSize || '10px'),
            (this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor),
            (this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor),
            (this.commitLabelFontSize = this.commitLabelFontSize || '10px'),
            (this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || hh),
            (this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || fh)
        }
        calculate(e) {
          if (typeof e != 'object') {
            this.updateColors()
            return
          }
          let r = Object.keys(e)
          r.forEach(n => {
            this[n] = e[n]
          }),
            this.updateColors(),
            r.forEach(n => {
              this[n] = e[n]
            })
        }
      }),
        (gz = o(t => {
          let e = new m7()
          return e.calculate(t), e
        }, 'getThemeVariables'))
    })
  var g7,
    vz,
    xz = N(() => {
      'use strict'
      Ks()
      y0()
      ;(g7 = class {
        static {
          o(this, 'Theme')
        }
        constructor() {
          ;(this.background = '#333'),
            (this.primaryColor = '#1f2020'),
            (this.secondaryColor = Lt(this.primaryColor, 16)),
            (this.tertiaryColor = Me(this.primaryColor, { h: -160 })),
            (this.primaryBorderColor = wt(this.background)),
            (this.secondaryBorderColor = Si(this.secondaryColor, this.darkMode)),
            (this.tertiaryBorderColor = Si(this.tertiaryColor, this.darkMode)),
            (this.primaryTextColor = wt(this.primaryColor)),
            (this.secondaryTextColor = wt(this.secondaryColor)),
            (this.tertiaryTextColor = wt(this.tertiaryColor)),
            (this.lineColor = wt(this.background)),
            (this.textColor = wt(this.background)),
            (this.mainBkg = '#1f2020'),
            (this.secondBkg = 'calculated'),
            (this.mainContrastColor = 'lightgrey'),
            (this.darkTextColor = Lt(wt('#323D47'), 10)),
            (this.lineColor = 'calculated'),
            (this.border1 = '#ccc'),
            (this.border2 = Qa(255, 255, 255, 0.25)),
            (this.arrowheadColor = 'calculated'),
            (this.fontFamily = '"trebuchet ms", verdana, arial, sans-serif'),
            (this.fontSize = '16px'),
            (this.labelBackground = '#181818'),
            (this.textColor = '#ccc'),
            (this.THEME_COLOR_LIMIT = 12),
            (this.nodeBkg = 'calculated'),
            (this.nodeBorder = 'calculated'),
            (this.clusterBkg = 'calculated'),
            (this.clusterBorder = 'calculated'),
            (this.defaultLinkColor = 'calculated'),
            (this.titleColor = '#F9FFFE'),
            (this.edgeLabelBackground = 'calculated'),
            (this.actorBorder = 'calculated'),
            (this.actorBkg = 'calculated'),
            (this.actorTextColor = 'calculated'),
            (this.actorLineColor = 'calculated'),
            (this.signalColor = 'calculated'),
            (this.signalTextColor = 'calculated'),
            (this.labelBoxBkgColor = 'calculated'),
            (this.labelBoxBorderColor = 'calculated'),
            (this.labelTextColor = 'calculated'),
            (this.loopTextColor = 'calculated'),
            (this.noteBorderColor = 'calculated'),
            (this.noteBkgColor = '#fff5ad'),
            (this.noteTextColor = 'calculated'),
            (this.activationBorderColor = 'calculated'),
            (this.activationBkgColor = 'calculated'),
            (this.sequenceNumberColor = 'black'),
            (this.sectionBkgColor = Ot('#EAE8D9', 30)),
            (this.altSectionBkgColor = 'calculated'),
            (this.sectionBkgColor2 = '#EAE8D9'),
            (this.excludeBkgColor = Ot(this.sectionBkgColor, 10)),
            (this.taskBorderColor = Qa(255, 255, 255, 70)),
            (this.taskBkgColor = 'calculated'),
            (this.taskTextColor = 'calculated'),
            (this.taskTextLightColor = 'calculated'),
            (this.taskTextOutsideColor = 'calculated'),
            (this.taskTextClickableColor = '#003163'),
            (this.activeTaskBorderColor = Qa(255, 255, 255, 50)),
            (this.activeTaskBkgColor = '#81B1DB'),
            (this.gridColor = 'calculated'),
            (this.doneTaskBkgColor = 'calculated'),
            (this.doneTaskBorderColor = 'grey'),
            (this.critBorderColor = '#E83737'),
            (this.critBkgColor = '#E83737'),
            (this.taskTextDarkColor = 'calculated'),
            (this.todayLineColor = '#DB5757'),
            (this.vertLineColor = '#00BFFF'),
            (this.personBorder = this.primaryBorderColor),
            (this.personBkg = this.mainBkg),
            (this.archEdgeColor = 'calculated'),
            (this.archEdgeArrowColor = 'calculated'),
            (this.archEdgeWidth = '3'),
            (this.archGroupBorderColor = this.primaryBorderColor),
            (this.archGroupBorderWidth = '2px'),
            (this.rowOdd = this.rowOdd || Lt(this.mainBkg, 5) || '#ffffff'),
            (this.rowEven = this.rowEven || Ot(this.mainBkg, 10)),
            (this.labelColor = 'calculated'),
            (this.errorBkgColor = '#a44141'),
            (this.errorTextColor = '#ddd')
        }
        updateColors() {
          ;(this.secondBkg = Lt(this.mainBkg, 16)),
            (this.lineColor = this.mainContrastColor),
            (this.arrowheadColor = this.mainContrastColor),
            (this.nodeBkg = this.mainBkg),
            (this.nodeBorder = this.border1),
            (this.clusterBkg = this.secondBkg),
            (this.clusterBorder = this.border2),
            (this.defaultLinkColor = this.lineColor),
            (this.edgeLabelBackground = Lt(this.labelBackground, 25)),
            (this.actorBorder = this.border1),
            (this.actorBkg = this.mainBkg),
            (this.actorTextColor = this.mainContrastColor),
            (this.actorLineColor = this.actorBorder),
            (this.signalColor = this.mainContrastColor),
            (this.signalTextColor = this.mainContrastColor),
            (this.labelBoxBkgColor = this.actorBkg),
            (this.labelBoxBorderColor = this.actorBorder),
            (this.labelTextColor = this.mainContrastColor),
            (this.loopTextColor = this.mainContrastColor),
            (this.noteBorderColor = this.secondaryBorderColor),
            (this.noteBkgColor = this.secondBkg),
            (this.noteTextColor = this.secondaryTextColor),
            (this.activationBorderColor = this.border1),
            (this.activationBkgColor = this.secondBkg),
            (this.altSectionBkgColor = this.background),
            (this.taskBkgColor = Lt(this.mainBkg, 23)),
            (this.taskTextColor = this.darkTextColor),
            (this.taskTextLightColor = this.mainContrastColor),
            (this.taskTextOutsideColor = this.taskTextLightColor),
            (this.gridColor = this.mainContrastColor),
            (this.doneTaskBkgColor = this.mainContrastColor),
            (this.taskTextDarkColor = this.darkTextColor),
            (this.archEdgeColor = this.lineColor),
            (this.archEdgeArrowColor = this.lineColor),
            (this.transitionColor = this.transitionColor || this.lineColor),
            (this.transitionLabelColor = this.transitionLabelColor || this.textColor),
            (this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor),
            (this.stateBkg = this.stateBkg || this.mainBkg),
            (this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg),
            (this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor),
            (this.altBackground = this.altBackground || '#555'),
            (this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg),
            (this.compositeBorder = this.compositeBorder || this.nodeBorder),
            (this.innerEndBackground = this.primaryBorderColor),
            (this.specialStateColor = '#f4f4f4'),
            (this.errorBkgColor = this.errorBkgColor || this.tertiaryColor),
            (this.errorTextColor = this.errorTextColor || this.tertiaryTextColor),
            (this.fillType0 = this.primaryColor),
            (this.fillType1 = this.secondaryColor),
            (this.fillType2 = Me(this.primaryColor, { h: 64 })),
            (this.fillType3 = Me(this.secondaryColor, { h: 64 })),
            (this.fillType4 = Me(this.primaryColor, { h: -64 })),
            (this.fillType5 = Me(this.secondaryColor, { h: -64 })),
            (this.fillType6 = Me(this.primaryColor, { h: 128 })),
            (this.fillType7 = Me(this.secondaryColor, { h: 128 })),
            (this.cScale1 = this.cScale1 || '#0b0000'),
            (this.cScale2 = this.cScale2 || '#4d1037'),
            (this.cScale3 = this.cScale3 || '#3f5258'),
            (this.cScale4 = this.cScale4 || '#4f2f1b'),
            (this.cScale5 = this.cScale5 || '#6e0a0a'),
            (this.cScale6 = this.cScale6 || '#3b0048'),
            (this.cScale7 = this.cScale7 || '#995a01'),
            (this.cScale8 = this.cScale8 || '#154706'),
            (this.cScale9 = this.cScale9 || '#161722'),
            (this.cScale10 = this.cScale10 || '#00296f'),
            (this.cScale11 = this.cScale11 || '#01629c'),
            (this.cScale12 = this.cScale12 || '#010029'),
            (this.cScale0 = this.cScale0 || this.primaryColor),
            (this.cScale1 = this.cScale1 || this.secondaryColor),
            (this.cScale2 = this.cScale2 || this.tertiaryColor),
            (this.cScale3 = this.cScale3 || Me(this.primaryColor, { h: 30 })),
            (this.cScale4 = this.cScale4 || Me(this.primaryColor, { h: 60 })),
            (this.cScale5 = this.cScale5 || Me(this.primaryColor, { h: 90 })),
            (this.cScale6 = this.cScale6 || Me(this.primaryColor, { h: 120 })),
            (this.cScale7 = this.cScale7 || Me(this.primaryColor, { h: 150 })),
            (this.cScale8 = this.cScale8 || Me(this.primaryColor, { h: 210 })),
            (this.cScale9 = this.cScale9 || Me(this.primaryColor, { h: 270 })),
            (this.cScale10 = this.cScale10 || Me(this.primaryColor, { h: 300 })),
            (this.cScale11 = this.cScale11 || Me(this.primaryColor, { h: 330 }))
          for (let e = 0; e < this.THEME_COLOR_LIMIT; e++) this['cScaleInv' + e] = this['cScaleInv' + e] || wt(this['cScale' + e])
          for (let e = 0; e < this.THEME_COLOR_LIMIT; e++) this['cScalePeer' + e] = this['cScalePeer' + e] || Lt(this['cScale' + e], 10)
          for (let e = 0; e < 5; e++)
            (this['surface' + e] = this['surface' + e] || Me(this.mainBkg, { h: 30, s: -30, l: -(-10 + e * 4) })),
              (this['surfacePeer' + e] = this['surfacePeer' + e] || Me(this.mainBkg, { h: 30, s: -30, l: -(-7 + e * 4) }))
          this.scaleLabelColor = this.scaleLabelColor || (this.darkMode ? 'black' : this.labelTextColor)
          for (let e = 0; e < this.THEME_COLOR_LIMIT; e++) this['cScaleLabel' + e] = this['cScaleLabel' + e] || this.scaleLabelColor
          for (let e = 0; e < this.THEME_COLOR_LIMIT; e++) this['pie' + e] = this['cScale' + e]
          ;(this.pieTitleTextSize = this.pieTitleTextSize || '25px'),
            (this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor),
            (this.pieSectionTextSize = this.pieSectionTextSize || '17px'),
            (this.pieSectionTextColor = this.pieSectionTextColor || this.textColor),
            (this.pieLegendTextSize = this.pieLegendTextSize || '17px'),
            (this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor),
            (this.pieStrokeColor = this.pieStrokeColor || 'black'),
            (this.pieStrokeWidth = this.pieStrokeWidth || '2px'),
            (this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || '2px'),
            (this.pieOuterStrokeColor = this.pieOuterStrokeColor || 'black'),
            (this.pieOpacity = this.pieOpacity || '0.7'),
            (this.quadrant1Fill = this.quadrant1Fill || this.primaryColor),
            (this.quadrant2Fill = this.quadrant2Fill || Me(this.primaryColor, { r: 5, g: 5, b: 5 })),
            (this.quadrant3Fill = this.quadrant3Fill || Me(this.primaryColor, { r: 10, g: 10, b: 10 })),
            (this.quadrant4Fill = this.quadrant4Fill || Me(this.primaryColor, { r: 15, g: 15, b: 15 })),
            (this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor),
            (this.quadrant2TextFill = this.quadrant2TextFill || Me(this.primaryTextColor, { r: -5, g: -5, b: -5 })),
            (this.quadrant3TextFill = this.quadrant3TextFill || Me(this.primaryTextColor, { r: -10, g: -10, b: -10 })),
            (this.quadrant4TextFill = this.quadrant4TextFill || Me(this.primaryTextColor, { r: -15, g: -15, b: -15 })),
            (this.quadrantPointFill = this.quadrantPointFill || la(this.quadrant1Fill) ? Lt(this.quadrant1Fill) : Ot(this.quadrant1Fill)),
            (this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor),
            (this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor),
            (this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor),
            (this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor),
            (this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor),
            (this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor),
            (this.xyChart = {
              backgroundColor: this.xyChart?.backgroundColor || this.background,
              titleColor: this.xyChart?.titleColor || this.primaryTextColor,
              xAxisTitleColor: this.xyChart?.xAxisTitleColor || this.primaryTextColor,
              xAxisLabelColor: this.xyChart?.xAxisLabelColor || this.primaryTextColor,
              xAxisTickColor: this.xyChart?.xAxisTickColor || this.primaryTextColor,
              xAxisLineColor: this.xyChart?.xAxisLineColor || this.primaryTextColor,
              yAxisTitleColor: this.xyChart?.yAxisTitleColor || this.primaryTextColor,
              yAxisLabelColor: this.xyChart?.yAxisLabelColor || this.primaryTextColor,
              yAxisTickColor: this.xyChart?.yAxisTickColor || this.primaryTextColor,
              yAxisLineColor: this.xyChart?.yAxisLineColor || this.primaryTextColor,
              plotColorPalette: this.xyChart?.plotColorPalette || '#3498db,#2ecc71,#e74c3c,#f1c40f,#bdc3c7,#ffffff,#34495e,#9b59b6,#1abc9c,#e67e22'
            }),
            (this.packet = {
              startByteColor: this.primaryTextColor,
              endByteColor: this.primaryTextColor,
              labelColor: this.primaryTextColor,
              titleColor: this.primaryTextColor,
              blockStrokeColor: this.primaryTextColor,
              blockFillColor: this.background
            }),
            (this.radar = {
              axisColor: this.radar?.axisColor || this.lineColor,
              axisStrokeWidth: this.radar?.axisStrokeWidth || 2,
              axisLabelFontSize: this.radar?.axisLabelFontSize || 12,
              curveOpacity: this.radar?.curveOpacity || 0.5,
              curveStrokeWidth: this.radar?.curveStrokeWidth || 2,
              graticuleColor: this.radar?.graticuleColor || '#DEDEDE',
              graticuleStrokeWidth: this.radar?.graticuleStrokeWidth || 1,
              graticuleOpacity: this.radar?.graticuleOpacity || 0.3,
              legendBoxSize: this.radar?.legendBoxSize || 12,
              legendFontSize: this.radar?.legendFontSize || 12
            }),
            (this.classText = this.primaryTextColor),
            (this.requirementBackground = this.requirementBackground || this.primaryColor),
            (this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor),
            (this.requirementBorderSize = this.requirementBorderSize || '1'),
            (this.requirementTextColor = this.requirementTextColor || this.primaryTextColor),
            (this.relationColor = this.relationColor || this.lineColor),
            (this.relationLabelBackground = this.relationLabelBackground || (this.darkMode ? Ot(this.secondaryColor, 30) : this.secondaryColor)),
            (this.relationLabelColor = this.relationLabelColor || this.actorTextColor),
            (this.git0 = Lt(this.secondaryColor, 20)),
            (this.git1 = Lt(this.pie2 || this.secondaryColor, 20)),
            (this.git2 = Lt(this.pie3 || this.tertiaryColor, 20)),
            (this.git3 = Lt(this.pie4 || Me(this.primaryColor, { h: -30 }), 20)),
            (this.git4 = Lt(this.pie5 || Me(this.primaryColor, { h: -60 }), 20)),
            (this.git5 = Lt(this.pie6 || Me(this.primaryColor, { h: -90 }), 10)),
            (this.git6 = Lt(this.pie7 || Me(this.primaryColor, { h: 60 }), 10)),
            (this.git7 = Lt(this.pie8 || Me(this.primaryColor, { h: 120 }), 20)),
            (this.gitInv0 = this.gitInv0 || wt(this.git0)),
            (this.gitInv1 = this.gitInv1 || wt(this.git1)),
            (this.gitInv2 = this.gitInv2 || wt(this.git2)),
            (this.gitInv3 = this.gitInv3 || wt(this.git3)),
            (this.gitInv4 = this.gitInv4 || wt(this.git4)),
            (this.gitInv5 = this.gitInv5 || wt(this.git5)),
            (this.gitInv6 = this.gitInv6 || wt(this.git6)),
            (this.gitInv7 = this.gitInv7 || wt(this.git7)),
            (this.gitBranchLabel0 = this.gitBranchLabel0 || wt(this.labelTextColor)),
            (this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor),
            (this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor),
            (this.gitBranchLabel3 = this.gitBranchLabel3 || wt(this.labelTextColor)),
            (this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor),
            (this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor),
            (this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor),
            (this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor),
            (this.tagLabelColor = this.tagLabelColor || this.primaryTextColor),
            (this.tagLabelBackground = this.tagLabelBackground || this.primaryColor),
            (this.tagLabelBorder = this.tagBorder || this.primaryBorderColor),
            (this.tagLabelFontSize = this.tagLabelFontSize || '10px'),
            (this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor),
            (this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor),
            (this.commitLabelFontSize = this.commitLabelFontSize || '10px'),
            (this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || Lt(this.background, 12)),
            (this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || Lt(this.background, 2)),
            (this.nodeBorder = this.nodeBorder || '#999')
        }
        calculate(e) {
          if (typeof e != 'object') {
            this.updateColors()
            return
          }
          let r = Object.keys(e)
          r.forEach(n => {
            this[n] = e[n]
          }),
            this.updateColors(),
            r.forEach(n => {
              this[n] = e[n]
            })
        }
      }),
        (vz = o(t => {
          let e = new g7()
          return e.calculate(t), e
        }, 'getThemeVariables'))
    })
  var y7,
    dh,
    By = N(() => {
      'use strict'
      Ks()
      y0()
      Py()
      ;(y7 = class {
        static {
          o(this, 'Theme')
        }
        constructor() {
          ;(this.background = '#f4f4f4'),
            (this.primaryColor = '#ECECFF'),
            (this.secondaryColor = Me(this.primaryColor, { h: 120 })),
            (this.secondaryColor = '#ffffde'),
            (this.tertiaryColor = Me(this.primaryColor, { h: -160 })),
            (this.primaryBorderColor = Si(this.primaryColor, this.darkMode)),
            (this.secondaryBorderColor = Si(this.secondaryColor, this.darkMode)),
            (this.tertiaryBorderColor = Si(this.tertiaryColor, this.darkMode)),
            (this.primaryTextColor = wt(this.primaryColor)),
            (this.secondaryTextColor = wt(this.secondaryColor)),
            (this.tertiaryTextColor = wt(this.tertiaryColor)),
            (this.lineColor = wt(this.background)),
            (this.textColor = wt(this.background)),
            (this.background = 'white'),
            (this.mainBkg = '#ECECFF'),
            (this.secondBkg = '#ffffde'),
            (this.lineColor = '#333333'),
            (this.border1 = '#9370DB'),
            (this.border2 = '#aaaa33'),
            (this.arrowheadColor = '#333333'),
            (this.fontFamily = '"trebuchet ms", verdana, arial, sans-serif'),
            (this.fontSize = '16px'),
            (this.labelBackground = 'rgba(232,232,232, 0.8)'),
            (this.textColor = '#333'),
            (this.THEME_COLOR_LIMIT = 12),
            (this.nodeBkg = 'calculated'),
            (this.nodeBorder = 'calculated'),
            (this.clusterBkg = 'calculated'),
            (this.clusterBorder = 'calculated'),
            (this.defaultLinkColor = 'calculated'),
            (this.titleColor = 'calculated'),
            (this.edgeLabelBackground = 'calculated'),
            (this.actorBorder = 'calculated'),
            (this.actorBkg = 'calculated'),
            (this.actorTextColor = 'black'),
            (this.actorLineColor = 'calculated'),
            (this.signalColor = 'calculated'),
            (this.signalTextColor = 'calculated'),
            (this.labelBoxBkgColor = 'calculated'),
            (this.labelBoxBorderColor = 'calculated'),
            (this.labelTextColor = 'calculated'),
            (this.loopTextColor = 'calculated'),
            (this.noteBorderColor = 'calculated'),
            (this.noteBkgColor = '#fff5ad'),
            (this.noteTextColor = 'calculated'),
            (this.activationBorderColor = '#666'),
            (this.activationBkgColor = '#f4f4f4'),
            (this.sequenceNumberColor = 'white'),
            (this.sectionBkgColor = 'calculated'),
            (this.altSectionBkgColor = 'calculated'),
            (this.sectionBkgColor2 = 'calculated'),
            (this.excludeBkgColor = '#eeeeee'),
            (this.taskBorderColor = 'calculated'),
            (this.taskBkgColor = 'calculated'),
            (this.taskTextLightColor = 'calculated'),
            (this.taskTextColor = this.taskTextLightColor),
            (this.taskTextDarkColor = 'calculated'),
            (this.taskTextOutsideColor = this.taskTextDarkColor),
            (this.taskTextClickableColor = 'calculated'),
            (this.activeTaskBorderColor = 'calculated'),
            (this.activeTaskBkgColor = 'calculated'),
            (this.gridColor = 'calculated'),
            (this.doneTaskBkgColor = 'calculated'),
            (this.doneTaskBorderColor = 'calculated'),
            (this.critBorderColor = 'calculated'),
            (this.critBkgColor = 'calculated'),
            (this.todayLineColor = 'calculated'),
            (this.vertLineColor = 'calculated'),
            (this.sectionBkgColor = Qa(102, 102, 255, 0.49)),
            (this.altSectionBkgColor = 'white'),
            (this.sectionBkgColor2 = '#fff400'),
            (this.taskBorderColor = '#534fbc'),
            (this.taskBkgColor = '#8a90dd'),
            (this.taskTextLightColor = 'white'),
            (this.taskTextColor = 'calculated'),
            (this.taskTextDarkColor = 'black'),
            (this.taskTextOutsideColor = 'calculated'),
            (this.taskTextClickableColor = '#003163'),
            (this.activeTaskBorderColor = '#534fbc'),
            (this.activeTaskBkgColor = '#bfc7ff'),
            (this.gridColor = 'lightgrey'),
            (this.doneTaskBkgColor = 'lightgrey'),
            (this.doneTaskBorderColor = 'grey'),
            (this.critBorderColor = '#ff8888'),
            (this.critBkgColor = 'red'),
            (this.todayLineColor = 'red'),
            (this.vertLineColor = 'navy'),
            (this.personBorder = this.primaryBorderColor),
            (this.personBkg = this.mainBkg),
            (this.archEdgeColor = 'calculated'),
            (this.archEdgeArrowColor = 'calculated'),
            (this.archEdgeWidth = '3'),
            (this.archGroupBorderColor = this.primaryBorderColor),
            (this.archGroupBorderWidth = '2px'),
            (this.rowOdd = 'calculated'),
            (this.rowEven = 'calculated'),
            (this.labelColor = 'black'),
            (this.errorBkgColor = '#552222'),
            (this.errorTextColor = '#552222'),
            this.updateColors()
        }
        updateColors() {
          ;(this.cScale0 = this.cScale0 || this.primaryColor),
            (this.cScale1 = this.cScale1 || this.secondaryColor),
            (this.cScale2 = this.cScale2 || this.tertiaryColor),
            (this.cScale3 = this.cScale3 || Me(this.primaryColor, { h: 30 })),
            (this.cScale4 = this.cScale4 || Me(this.primaryColor, { h: 60 })),
            (this.cScale5 = this.cScale5 || Me(this.primaryColor, { h: 90 })),
            (this.cScale6 = this.cScale6 || Me(this.primaryColor, { h: 120 })),
            (this.cScale7 = this.cScale7 || Me(this.primaryColor, { h: 150 })),
            (this.cScale8 = this.cScale8 || Me(this.primaryColor, { h: 210 })),
            (this.cScale9 = this.cScale9 || Me(this.primaryColor, { h: 270 })),
            (this.cScale10 = this.cScale10 || Me(this.primaryColor, { h: 300 })),
            (this.cScale11 = this.cScale11 || Me(this.primaryColor, { h: 330 })),
            (this.cScalePeer1 = this.cScalePeer1 || Ot(this.secondaryColor, 45)),
            (this.cScalePeer2 = this.cScalePeer2 || Ot(this.tertiaryColor, 40))
          for (let e = 0; e < this.THEME_COLOR_LIMIT; e++)
            (this['cScale' + e] = Ot(this['cScale' + e], 10)), (this['cScalePeer' + e] = this['cScalePeer' + e] || Ot(this['cScale' + e], 25))
          for (let e = 0; e < this.THEME_COLOR_LIMIT; e++) this['cScaleInv' + e] = this['cScaleInv' + e] || Me(this['cScale' + e], { h: 180 })
          for (let e = 0; e < 5; e++)
            (this['surface' + e] = this['surface' + e] || Me(this.mainBkg, { h: 30, l: -(5 + e * 5) })),
              (this['surfacePeer' + e] = this['surfacePeer' + e] || Me(this.mainBkg, { h: 30, l: -(7 + e * 5) }))
          if (
            ((this.scaleLabelColor = this.scaleLabelColor !== 'calculated' && this.scaleLabelColor ? this.scaleLabelColor : this.labelTextColor),
            this.labelTextColor !== 'calculated')
          ) {
            ;(this.cScaleLabel0 = this.cScaleLabel0 || wt(this.labelTextColor)), (this.cScaleLabel3 = this.cScaleLabel3 || wt(this.labelTextColor))
            for (let e = 0; e < this.THEME_COLOR_LIMIT; e++) this['cScaleLabel' + e] = this['cScaleLabel' + e] || this.labelTextColor
          }
          ;(this.nodeBkg = this.mainBkg),
            (this.nodeBorder = this.border1),
            (this.clusterBkg = this.secondBkg),
            (this.clusterBorder = this.border2),
            (this.defaultLinkColor = this.lineColor),
            (this.titleColor = this.textColor),
            (this.edgeLabelBackground = this.labelBackground),
            (this.actorBorder = Lt(this.border1, 23)),
            (this.actorBkg = this.mainBkg),
            (this.labelBoxBkgColor = this.actorBkg),
            (this.signalColor = this.textColor),
            (this.signalTextColor = this.textColor),
            (this.labelBoxBorderColor = this.actorBorder),
            (this.labelTextColor = this.actorTextColor),
            (this.loopTextColor = this.actorTextColor),
            (this.noteBorderColor = this.border2),
            (this.noteTextColor = this.actorTextColor),
            (this.actorLineColor = this.actorBorder),
            (this.taskTextColor = this.taskTextLightColor),
            (this.taskTextOutsideColor = this.taskTextDarkColor),
            (this.archEdgeColor = this.lineColor),
            (this.archEdgeArrowColor = this.lineColor),
            (this.rowOdd = this.rowOdd || Lt(this.primaryColor, 75) || '#ffffff'),
            (this.rowEven = this.rowEven || Lt(this.primaryColor, 1)),
            (this.transitionColor = this.transitionColor || this.lineColor),
            (this.transitionLabelColor = this.transitionLabelColor || this.textColor),
            (this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor),
            (this.stateBkg = this.stateBkg || this.mainBkg),
            (this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg),
            (this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor),
            (this.altBackground = this.altBackground || '#f0f0f0'),
            (this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg),
            (this.compositeBorder = this.compositeBorder || this.nodeBorder),
            (this.innerEndBackground = this.nodeBorder),
            (this.specialStateColor = this.lineColor),
            (this.errorBkgColor = this.errorBkgColor || this.tertiaryColor),
            (this.errorTextColor = this.errorTextColor || this.tertiaryTextColor),
            (this.transitionColor = this.transitionColor || this.lineColor),
            (this.classText = this.primaryTextColor),
            (this.fillType0 = this.primaryColor),
            (this.fillType1 = this.secondaryColor),
            (this.fillType2 = Me(this.primaryColor, { h: 64 })),
            (this.fillType3 = Me(this.secondaryColor, { h: 64 })),
            (this.fillType4 = Me(this.primaryColor, { h: -64 })),
            (this.fillType5 = Me(this.secondaryColor, { h: -64 })),
            (this.fillType6 = Me(this.primaryColor, { h: 128 })),
            (this.fillType7 = Me(this.secondaryColor, { h: 128 })),
            (this.pie1 = this.pie1 || this.primaryColor),
            (this.pie2 = this.pie2 || this.secondaryColor),
            (this.pie3 = this.pie3 || Me(this.tertiaryColor, { l: -40 })),
            (this.pie4 = this.pie4 || Me(this.primaryColor, { l: -10 })),
            (this.pie5 = this.pie5 || Me(this.secondaryColor, { l: -30 })),
            (this.pie6 = this.pie6 || Me(this.tertiaryColor, { l: -20 })),
            (this.pie7 = this.pie7 || Me(this.primaryColor, { h: 60, l: -20 })),
            (this.pie8 = this.pie8 || Me(this.primaryColor, { h: -60, l: -40 })),
            (this.pie9 = this.pie9 || Me(this.primaryColor, { h: 120, l: -40 })),
            (this.pie10 = this.pie10 || Me(this.primaryColor, { h: 60, l: -40 })),
            (this.pie11 = this.pie11 || Me(this.primaryColor, { h: -90, l: -40 })),
            (this.pie12 = this.pie12 || Me(this.primaryColor, { h: 120, l: -30 })),
            (this.pieTitleTextSize = this.pieTitleTextSize || '25px'),
            (this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor),
            (this.pieSectionTextSize = this.pieSectionTextSize || '17px'),
            (this.pieSectionTextColor = this.pieSectionTextColor || this.textColor),
            (this.pieLegendTextSize = this.pieLegendTextSize || '17px'),
            (this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor),
            (this.pieStrokeColor = this.pieStrokeColor || 'black'),
            (this.pieStrokeWidth = this.pieStrokeWidth || '2px'),
            (this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || '2px'),
            (this.pieOuterStrokeColor = this.pieOuterStrokeColor || 'black'),
            (this.pieOpacity = this.pieOpacity || '0.7'),
            (this.quadrant1Fill = this.quadrant1Fill || this.primaryColor),
            (this.quadrant2Fill = this.quadrant2Fill || Me(this.primaryColor, { r: 5, g: 5, b: 5 })),
            (this.quadrant3Fill = this.quadrant3Fill || Me(this.primaryColor, { r: 10, g: 10, b: 10 })),
            (this.quadrant4Fill = this.quadrant4Fill || Me(this.primaryColor, { r: 15, g: 15, b: 15 })),
            (this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor),
            (this.quadrant2TextFill = this.quadrant2TextFill || Me(this.primaryTextColor, { r: -5, g: -5, b: -5 })),
            (this.quadrant3TextFill = this.quadrant3TextFill || Me(this.primaryTextColor, { r: -10, g: -10, b: -10 })),
            (this.quadrant4TextFill = this.quadrant4TextFill || Me(this.primaryTextColor, { r: -15, g: -15, b: -15 })),
            (this.quadrantPointFill = this.quadrantPointFill || la(this.quadrant1Fill) ? Lt(this.quadrant1Fill) : Ot(this.quadrant1Fill)),
            (this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor),
            (this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor),
            (this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor),
            (this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor),
            (this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor),
            (this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor),
            (this.radar = {
              axisColor: this.radar?.axisColor || this.lineColor,
              axisStrokeWidth: this.radar?.axisStrokeWidth || 2,
              axisLabelFontSize: this.radar?.axisLabelFontSize || 12,
              curveOpacity: this.radar?.curveOpacity || 0.5,
              curveStrokeWidth: this.radar?.curveStrokeWidth || 2,
              graticuleColor: this.radar?.graticuleColor || '#DEDEDE',
              graticuleStrokeWidth: this.radar?.graticuleStrokeWidth || 1,
              graticuleOpacity: this.radar?.graticuleOpacity || 0.3,
              legendBoxSize: this.radar?.legendBoxSize || 12,
              legendFontSize: this.radar?.legendFontSize || 12
            }),
            (this.xyChart = {
              backgroundColor: this.xyChart?.backgroundColor || this.background,
              titleColor: this.xyChart?.titleColor || this.primaryTextColor,
              xAxisTitleColor: this.xyChart?.xAxisTitleColor || this.primaryTextColor,
              xAxisLabelColor: this.xyChart?.xAxisLabelColor || this.primaryTextColor,
              xAxisTickColor: this.xyChart?.xAxisTickColor || this.primaryTextColor,
              xAxisLineColor: this.xyChart?.xAxisLineColor || this.primaryTextColor,
              yAxisTitleColor: this.xyChart?.yAxisTitleColor || this.primaryTextColor,
              yAxisLabelColor: this.xyChart?.yAxisLabelColor || this.primaryTextColor,
              yAxisTickColor: this.xyChart?.yAxisTickColor || this.primaryTextColor,
              yAxisLineColor: this.xyChart?.yAxisLineColor || this.primaryTextColor,
              plotColorPalette: this.xyChart?.plotColorPalette || '#ECECFF,#8493A6,#FFC3A0,#DCDDE1,#B8E994,#D1A36F,#C3CDE6,#FFB6C1,#496078,#F8F3E3'
            }),
            (this.requirementBackground = this.requirementBackground || this.primaryColor),
            (this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor),
            (this.requirementBorderSize = this.requirementBorderSize || '1'),
            (this.requirementTextColor = this.requirementTextColor || this.primaryTextColor),
            (this.relationColor = this.relationColor || this.lineColor),
            (this.relationLabelBackground = this.relationLabelBackground || this.labelBackground),
            (this.relationLabelColor = this.relationLabelColor || this.actorTextColor),
            (this.git0 = this.git0 || this.primaryColor),
            (this.git1 = this.git1 || this.secondaryColor),
            (this.git2 = this.git2 || this.tertiaryColor),
            (this.git3 = this.git3 || Me(this.primaryColor, { h: -30 })),
            (this.git4 = this.git4 || Me(this.primaryColor, { h: -60 })),
            (this.git5 = this.git5 || Me(this.primaryColor, { h: -90 })),
            (this.git6 = this.git6 || Me(this.primaryColor, { h: 60 })),
            (this.git7 = this.git7 || Me(this.primaryColor, { h: 120 })),
            this.darkMode
              ? ((this.git0 = Lt(this.git0, 25)),
                (this.git1 = Lt(this.git1, 25)),
                (this.git2 = Lt(this.git2, 25)),
                (this.git3 = Lt(this.git3, 25)),
                (this.git4 = Lt(this.git4, 25)),
                (this.git5 = Lt(this.git5, 25)),
                (this.git6 = Lt(this.git6, 25)),
                (this.git7 = Lt(this.git7, 25)))
              : ((this.git0 = Ot(this.git0, 25)),
                (this.git1 = Ot(this.git1, 25)),
                (this.git2 = Ot(this.git2, 25)),
                (this.git3 = Ot(this.git3, 25)),
                (this.git4 = Ot(this.git4, 25)),
                (this.git5 = Ot(this.git5, 25)),
                (this.git6 = Ot(this.git6, 25)),
                (this.git7 = Ot(this.git7, 25))),
            (this.gitInv0 = this.gitInv0 || Ot(wt(this.git0), 25)),
            (this.gitInv1 = this.gitInv1 || wt(this.git1)),
            (this.gitInv2 = this.gitInv2 || wt(this.git2)),
            (this.gitInv3 = this.gitInv3 || wt(this.git3)),
            (this.gitInv4 = this.gitInv4 || wt(this.git4)),
            (this.gitInv5 = this.gitInv5 || wt(this.git5)),
            (this.gitInv6 = this.gitInv6 || wt(this.git6)),
            (this.gitInv7 = this.gitInv7 || wt(this.git7)),
            (this.gitBranchLabel0 = this.gitBranchLabel0 || wt(this.labelTextColor)),
            (this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor),
            (this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor),
            (this.gitBranchLabel3 = this.gitBranchLabel3 || wt(this.labelTextColor)),
            (this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor),
            (this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor),
            (this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor),
            (this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor),
            (this.tagLabelColor = this.tagLabelColor || this.primaryTextColor),
            (this.tagLabelBackground = this.tagLabelBackground || this.primaryColor),
            (this.tagLabelBorder = this.tagBorder || this.primaryBorderColor),
            (this.tagLabelFontSize = this.tagLabelFontSize || '10px'),
            (this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor),
            (this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor),
            (this.commitLabelFontSize = this.commitLabelFontSize || '10px'),
            (this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || hh),
            (this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || fh)
        }
        calculate(e) {
          if (
            (Object.keys(this).forEach(n => {
              this[n] === 'calculated' && (this[n] = void 0)
            }),
            typeof e != 'object')
          ) {
            this.updateColors()
            return
          }
          let r = Object.keys(e)
          r.forEach(n => {
            this[n] = e[n]
          }),
            this.updateColors(),
            r.forEach(n => {
              this[n] = e[n]
            })
        }
      }),
        (dh = o(t => {
          let e = new y7()
          return e.calculate(t), e
        }, 'getThemeVariables'))
    })
  var v7,
    bz,
    Tz = N(() => {
      'use strict'
      Ks()
      Py()
      y0()
      ;(v7 = class {
        static {
          o(this, 'Theme')
        }
        constructor() {
          ;(this.background = '#f4f4f4'),
            (this.primaryColor = '#cde498'),
            (this.secondaryColor = '#cdffb2'),
            (this.background = 'white'),
            (this.mainBkg = '#cde498'),
            (this.secondBkg = '#cdffb2'),
            (this.lineColor = 'green'),
            (this.border1 = '#13540c'),
            (this.border2 = '#6eaa49'),
            (this.arrowheadColor = 'green'),
            (this.fontFamily = '"trebuchet ms", verdana, arial, sans-serif'),
            (this.fontSize = '16px'),
            (this.tertiaryColor = Lt('#cde498', 10)),
            (this.primaryBorderColor = Si(this.primaryColor, this.darkMode)),
            (this.secondaryBorderColor = Si(this.secondaryColor, this.darkMode)),
            (this.tertiaryBorderColor = Si(this.tertiaryColor, this.darkMode)),
            (this.primaryTextColor = wt(this.primaryColor)),
            (this.secondaryTextColor = wt(this.secondaryColor)),
            (this.tertiaryTextColor = wt(this.primaryColor)),
            (this.lineColor = wt(this.background)),
            (this.textColor = wt(this.background)),
            (this.THEME_COLOR_LIMIT = 12),
            (this.nodeBkg = 'calculated'),
            (this.nodeBorder = 'calculated'),
            (this.clusterBkg = 'calculated'),
            (this.clusterBorder = 'calculated'),
            (this.defaultLinkColor = 'calculated'),
            (this.titleColor = '#333'),
            (this.edgeLabelBackground = '#e8e8e8'),
            (this.actorBorder = 'calculated'),
            (this.actorBkg = 'calculated'),
            (this.actorTextColor = 'black'),
            (this.actorLineColor = 'calculated'),
            (this.signalColor = '#333'),
            (this.signalTextColor = '#333'),
            (this.labelBoxBkgColor = 'calculated'),
            (this.labelBoxBorderColor = '#326932'),
            (this.labelTextColor = 'calculated'),
            (this.loopTextColor = 'calculated'),
            (this.noteBorderColor = 'calculated'),
            (this.noteBkgColor = '#fff5ad'),
            (this.noteTextColor = 'calculated'),
            (this.activationBorderColor = '#666'),
            (this.activationBkgColor = '#f4f4f4'),
            (this.sequenceNumberColor = 'white'),
            (this.sectionBkgColor = '#6eaa49'),
            (this.altSectionBkgColor = 'white'),
            (this.sectionBkgColor2 = '#6eaa49'),
            (this.excludeBkgColor = '#eeeeee'),
            (this.taskBorderColor = 'calculated'),
            (this.taskBkgColor = '#487e3a'),
            (this.taskTextLightColor = 'white'),
            (this.taskTextColor = 'calculated'),
            (this.taskTextDarkColor = 'black'),
            (this.taskTextOutsideColor = 'calculated'),
            (this.taskTextClickableColor = '#003163'),
            (this.activeTaskBorderColor = 'calculated'),
            (this.activeTaskBkgColor = 'calculated'),
            (this.gridColor = 'lightgrey'),
            (this.doneTaskBkgColor = 'lightgrey'),
            (this.doneTaskBorderColor = 'grey'),
            (this.critBorderColor = '#ff8888'),
            (this.critBkgColor = 'red'),
            (this.todayLineColor = 'red'),
            (this.vertLineColor = '#00BFFF'),
            (this.personBorder = this.primaryBorderColor),
            (this.personBkg = this.mainBkg),
            (this.archEdgeColor = 'calculated'),
            (this.archEdgeArrowColor = 'calculated'),
            (this.archEdgeWidth = '3'),
            (this.archGroupBorderColor = this.primaryBorderColor),
            (this.archGroupBorderWidth = '2px'),
            (this.labelColor = 'black'),
            (this.errorBkgColor = '#552222'),
            (this.errorTextColor = '#552222')
        }
        updateColors() {
          ;(this.actorBorder = Ot(this.mainBkg, 20)),
            (this.actorBkg = this.mainBkg),
            (this.labelBoxBkgColor = this.actorBkg),
            (this.labelTextColor = this.actorTextColor),
            (this.loopTextColor = this.actorTextColor),
            (this.noteBorderColor = this.border2),
            (this.noteTextColor = this.actorTextColor),
            (this.actorLineColor = this.actorBorder),
            (this.cScale0 = this.cScale0 || this.primaryColor),
            (this.cScale1 = this.cScale1 || this.secondaryColor),
            (this.cScale2 = this.cScale2 || this.tertiaryColor),
            (this.cScale3 = this.cScale3 || Me(this.primaryColor, { h: 30 })),
            (this.cScale4 = this.cScale4 || Me(this.primaryColor, { h: 60 })),
            (this.cScale5 = this.cScale5 || Me(this.primaryColor, { h: 90 })),
            (this.cScale6 = this.cScale6 || Me(this.primaryColor, { h: 120 })),
            (this.cScale7 = this.cScale7 || Me(this.primaryColor, { h: 150 })),
            (this.cScale8 = this.cScale8 || Me(this.primaryColor, { h: 210 })),
            (this.cScale9 = this.cScale9 || Me(this.primaryColor, { h: 270 })),
            (this.cScale10 = this.cScale10 || Me(this.primaryColor, { h: 300 })),
            (this.cScale11 = this.cScale11 || Me(this.primaryColor, { h: 330 })),
            (this.cScalePeer1 = this.cScalePeer1 || Ot(this.secondaryColor, 45)),
            (this.cScalePeer2 = this.cScalePeer2 || Ot(this.tertiaryColor, 40))
          for (let e = 0; e < this.THEME_COLOR_LIMIT; e++)
            (this['cScale' + e] = Ot(this['cScale' + e], 10)), (this['cScalePeer' + e] = this['cScalePeer' + e] || Ot(this['cScale' + e], 25))
          for (let e = 0; e < this.THEME_COLOR_LIMIT; e++) this['cScaleInv' + e] = this['cScaleInv' + e] || Me(this['cScale' + e], { h: 180 })
          this.scaleLabelColor = this.scaleLabelColor !== 'calculated' && this.scaleLabelColor ? this.scaleLabelColor : this.labelTextColor
          for (let e = 0; e < this.THEME_COLOR_LIMIT; e++) this['cScaleLabel' + e] = this['cScaleLabel' + e] || this.scaleLabelColor
          for (let e = 0; e < 5; e++)
            (this['surface' + e] = this['surface' + e] || Me(this.mainBkg, { h: 30, s: -30, l: -(5 + e * 5) })),
              (this['surfacePeer' + e] = this['surfacePeer' + e] || Me(this.mainBkg, { h: 30, s: -30, l: -(8 + e * 5) }))
          ;(this.nodeBkg = this.mainBkg),
            (this.nodeBorder = this.border1),
            (this.clusterBkg = this.secondBkg),
            (this.clusterBorder = this.border2),
            (this.defaultLinkColor = this.lineColor),
            (this.taskBorderColor = this.border1),
            (this.taskTextColor = this.taskTextLightColor),
            (this.taskTextOutsideColor = this.taskTextDarkColor),
            (this.activeTaskBorderColor = this.taskBorderColor),
            (this.activeTaskBkgColor = this.mainBkg),
            (this.archEdgeColor = this.lineColor),
            (this.archEdgeArrowColor = this.lineColor),
            (this.rowOdd = this.rowOdd || Lt(this.mainBkg, 75) || '#ffffff'),
            (this.rowEven = this.rowEven || Lt(this.mainBkg, 20)),
            (this.transitionColor = this.transitionColor || this.lineColor),
            (this.transitionLabelColor = this.transitionLabelColor || this.textColor),
            (this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor),
            (this.stateBkg = this.stateBkg || this.mainBkg),
            (this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg),
            (this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor),
            (this.altBackground = this.altBackground || '#f0f0f0'),
            (this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg),
            (this.compositeBorder = this.compositeBorder || this.nodeBorder),
            (this.innerEndBackground = this.primaryBorderColor),
            (this.specialStateColor = this.lineColor),
            (this.errorBkgColor = this.errorBkgColor || this.tertiaryColor),
            (this.errorTextColor = this.errorTextColor || this.tertiaryTextColor),
            (this.transitionColor = this.transitionColor || this.lineColor),
            (this.classText = this.primaryTextColor),
            (this.fillType0 = this.primaryColor),
            (this.fillType1 = this.secondaryColor),
            (this.fillType2 = Me(this.primaryColor, { h: 64 })),
            (this.fillType3 = Me(this.secondaryColor, { h: 64 })),
            (this.fillType4 = Me(this.primaryColor, { h: -64 })),
            (this.fillType5 = Me(this.secondaryColor, { h: -64 })),
            (this.fillType6 = Me(this.primaryColor, { h: 128 })),
            (this.fillType7 = Me(this.secondaryColor, { h: 128 })),
            (this.pie1 = this.pie1 || this.primaryColor),
            (this.pie2 = this.pie2 || this.secondaryColor),
            (this.pie3 = this.pie3 || this.tertiaryColor),
            (this.pie4 = this.pie4 || Me(this.primaryColor, { l: -30 })),
            (this.pie5 = this.pie5 || Me(this.secondaryColor, { l: -30 })),
            (this.pie6 = this.pie6 || Me(this.tertiaryColor, { h: 40, l: -40 })),
            (this.pie7 = this.pie7 || Me(this.primaryColor, { h: 60, l: -10 })),
            (this.pie8 = this.pie8 || Me(this.primaryColor, { h: -60, l: -10 })),
            (this.pie9 = this.pie9 || Me(this.primaryColor, { h: 120, l: 0 })),
            (this.pie10 = this.pie10 || Me(this.primaryColor, { h: 60, l: -50 })),
            (this.pie11 = this.pie11 || Me(this.primaryColor, { h: -60, l: -50 })),
            (this.pie12 = this.pie12 || Me(this.primaryColor, { h: 120, l: -50 })),
            (this.pieTitleTextSize = this.pieTitleTextSize || '25px'),
            (this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor),
            (this.pieSectionTextSize = this.pieSectionTextSize || '17px'),
            (this.pieSectionTextColor = this.pieSectionTextColor || this.textColor),
            (this.pieLegendTextSize = this.pieLegendTextSize || '17px'),
            (this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor),
            (this.pieStrokeColor = this.pieStrokeColor || 'black'),
            (this.pieStrokeWidth = this.pieStrokeWidth || '2px'),
            (this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || '2px'),
            (this.pieOuterStrokeColor = this.pieOuterStrokeColor || 'black'),
            (this.pieOpacity = this.pieOpacity || '0.7'),
            (this.quadrant1Fill = this.quadrant1Fill || this.primaryColor),
            (this.quadrant2Fill = this.quadrant2Fill || Me(this.primaryColor, { r: 5, g: 5, b: 5 })),
            (this.quadrant3Fill = this.quadrant3Fill || Me(this.primaryColor, { r: 10, g: 10, b: 10 })),
            (this.quadrant4Fill = this.quadrant4Fill || Me(this.primaryColor, { r: 15, g: 15, b: 15 })),
            (this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor),
            (this.quadrant2TextFill = this.quadrant2TextFill || Me(this.primaryTextColor, { r: -5, g: -5, b: -5 })),
            (this.quadrant3TextFill = this.quadrant3TextFill || Me(this.primaryTextColor, { r: -10, g: -10, b: -10 })),
            (this.quadrant4TextFill = this.quadrant4TextFill || Me(this.primaryTextColor, { r: -15, g: -15, b: -15 })),
            (this.quadrantPointFill = this.quadrantPointFill || la(this.quadrant1Fill) ? Lt(this.quadrant1Fill) : Ot(this.quadrant1Fill)),
            (this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor),
            (this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor),
            (this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor),
            (this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor),
            (this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor),
            (this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor),
            (this.packet = {
              startByteColor: this.primaryTextColor,
              endByteColor: this.primaryTextColor,
              labelColor: this.primaryTextColor,
              titleColor: this.primaryTextColor,
              blockStrokeColor: this.primaryTextColor,
              blockFillColor: this.mainBkg
            }),
            (this.radar = {
              axisColor: this.radar?.axisColor || this.lineColor,
              axisStrokeWidth: this.radar?.axisStrokeWidth || 2,
              axisLabelFontSize: this.radar?.axisLabelFontSize || 12,
              curveOpacity: this.radar?.curveOpacity || 0.5,
              curveStrokeWidth: this.radar?.curveStrokeWidth || 2,
              graticuleColor: this.radar?.graticuleColor || '#DEDEDE',
              graticuleStrokeWidth: this.radar?.graticuleStrokeWidth || 1,
              graticuleOpacity: this.radar?.graticuleOpacity || 0.3,
              legendBoxSize: this.radar?.legendBoxSize || 12,
              legendFontSize: this.radar?.legendFontSize || 12
            }),
            (this.xyChart = {
              backgroundColor: this.xyChart?.backgroundColor || this.background,
              titleColor: this.xyChart?.titleColor || this.primaryTextColor,
              xAxisTitleColor: this.xyChart?.xAxisTitleColor || this.primaryTextColor,
              xAxisLabelColor: this.xyChart?.xAxisLabelColor || this.primaryTextColor,
              xAxisTickColor: this.xyChart?.xAxisTickColor || this.primaryTextColor,
              xAxisLineColor: this.xyChart?.xAxisLineColor || this.primaryTextColor,
              yAxisTitleColor: this.xyChart?.yAxisTitleColor || this.primaryTextColor,
              yAxisLabelColor: this.xyChart?.yAxisLabelColor || this.primaryTextColor,
              yAxisTickColor: this.xyChart?.yAxisTickColor || this.primaryTextColor,
              yAxisLineColor: this.xyChart?.yAxisLineColor || this.primaryTextColor,
              plotColorPalette: this.xyChart?.plotColorPalette || '#CDE498,#FF6B6B,#A0D2DB,#D7BDE2,#F0F0F0,#FFC3A0,#7FD8BE,#FF9A8B,#FAF3E0,#FFF176'
            }),
            (this.requirementBackground = this.requirementBackground || this.primaryColor),
            (this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor),
            (this.requirementBorderSize = this.requirementBorderSize || '1'),
            (this.requirementTextColor = this.requirementTextColor || this.primaryTextColor),
            (this.relationColor = this.relationColor || this.lineColor),
            (this.relationLabelBackground = this.relationLabelBackground || this.edgeLabelBackground),
            (this.relationLabelColor = this.relationLabelColor || this.actorTextColor),
            (this.git0 = this.git0 || this.primaryColor),
            (this.git1 = this.git1 || this.secondaryColor),
            (this.git2 = this.git2 || this.tertiaryColor),
            (this.git3 = this.git3 || Me(this.primaryColor, { h: -30 })),
            (this.git4 = this.git4 || Me(this.primaryColor, { h: -60 })),
            (this.git5 = this.git5 || Me(this.primaryColor, { h: -90 })),
            (this.git6 = this.git6 || Me(this.primaryColor, { h: 60 })),
            (this.git7 = this.git7 || Me(this.primaryColor, { h: 120 })),
            this.darkMode
              ? ((this.git0 = Lt(this.git0, 25)),
                (this.git1 = Lt(this.git1, 25)),
                (this.git2 = Lt(this.git2, 25)),
                (this.git3 = Lt(this.git3, 25)),
                (this.git4 = Lt(this.git4, 25)),
                (this.git5 = Lt(this.git5, 25)),
                (this.git6 = Lt(this.git6, 25)),
                (this.git7 = Lt(this.git7, 25)))
              : ((this.git0 = Ot(this.git0, 25)),
                (this.git1 = Ot(this.git1, 25)),
                (this.git2 = Ot(this.git2, 25)),
                (this.git3 = Ot(this.git3, 25)),
                (this.git4 = Ot(this.git4, 25)),
                (this.git5 = Ot(this.git5, 25)),
                (this.git6 = Ot(this.git6, 25)),
                (this.git7 = Ot(this.git7, 25))),
            (this.gitInv0 = this.gitInv0 || wt(this.git0)),
            (this.gitInv1 = this.gitInv1 || wt(this.git1)),
            (this.gitInv2 = this.gitInv2 || wt(this.git2)),
            (this.gitInv3 = this.gitInv3 || wt(this.git3)),
            (this.gitInv4 = this.gitInv4 || wt(this.git4)),
            (this.gitInv5 = this.gitInv5 || wt(this.git5)),
            (this.gitInv6 = this.gitInv6 || wt(this.git6)),
            (this.gitInv7 = this.gitInv7 || wt(this.git7)),
            (this.gitBranchLabel0 = this.gitBranchLabel0 || wt(this.labelTextColor)),
            (this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor),
            (this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor),
            (this.gitBranchLabel3 = this.gitBranchLabel3 || wt(this.labelTextColor)),
            (this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor),
            (this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor),
            (this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor),
            (this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor),
            (this.tagLabelColor = this.tagLabelColor || this.primaryTextColor),
            (this.tagLabelBackground = this.tagLabelBackground || this.primaryColor),
            (this.tagLabelBorder = this.tagBorder || this.primaryBorderColor),
            (this.tagLabelFontSize = this.tagLabelFontSize || '10px'),
            (this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor),
            (this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor),
            (this.commitLabelFontSize = this.commitLabelFontSize || '10px'),
            (this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || hh),
            (this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || fh)
        }
        calculate(e) {
          if (typeof e != 'object') {
            this.updateColors()
            return
          }
          let r = Object.keys(e)
          r.forEach(n => {
            this[n] = e[n]
          }),
            this.updateColors(),
            r.forEach(n => {
              this[n] = e[n]
            })
        }
      }),
        (bz = o(t => {
          let e = new v7()
          return e.calculate(t), e
        }, 'getThemeVariables'))
    })
  var x7,
    wz,
    kz = N(() => {
      'use strict'
      Ks()
      y0()
      Py()
      ;(x7 = class {
        static {
          o(this, 'Theme')
        }
        constructor() {
          ;(this.primaryColor = '#eee'),
            (this.contrast = '#707070'),
            (this.secondaryColor = Lt(this.contrast, 55)),
            (this.background = '#ffffff'),
            (this.tertiaryColor = Me(this.primaryColor, { h: -160 })),
            (this.primaryBorderColor = Si(this.primaryColor, this.darkMode)),
            (this.secondaryBorderColor = Si(this.secondaryColor, this.darkMode)),
            (this.tertiaryBorderColor = Si(this.tertiaryColor, this.darkMode)),
            (this.primaryTextColor = wt(this.primaryColor)),
            (this.secondaryTextColor = wt(this.secondaryColor)),
            (this.tertiaryTextColor = wt(this.tertiaryColor)),
            (this.lineColor = wt(this.background)),
            (this.textColor = wt(this.background)),
            (this.mainBkg = '#eee'),
            (this.secondBkg = 'calculated'),
            (this.lineColor = '#666'),
            (this.border1 = '#999'),
            (this.border2 = 'calculated'),
            (this.note = '#ffa'),
            (this.text = '#333'),
            (this.critical = '#d42'),
            (this.done = '#bbb'),
            (this.arrowheadColor = '#333333'),
            (this.fontFamily = '"trebuchet ms", verdana, arial, sans-serif'),
            (this.fontSize = '16px'),
            (this.THEME_COLOR_LIMIT = 12),
            (this.nodeBkg = 'calculated'),
            (this.nodeBorder = 'calculated'),
            (this.clusterBkg = 'calculated'),
            (this.clusterBorder = 'calculated'),
            (this.defaultLinkColor = 'calculated'),
            (this.titleColor = 'calculated'),
            (this.edgeLabelBackground = 'white'),
            (this.actorBorder = 'calculated'),
            (this.actorBkg = 'calculated'),
            (this.actorTextColor = 'calculated'),
            (this.actorLineColor = this.actorBorder),
            (this.signalColor = 'calculated'),
            (this.signalTextColor = 'calculated'),
            (this.labelBoxBkgColor = 'calculated'),
            (this.labelBoxBorderColor = 'calculated'),
            (this.labelTextColor = 'calculated'),
            (this.loopTextColor = 'calculated'),
            (this.noteBorderColor = 'calculated'),
            (this.noteBkgColor = 'calculated'),
            (this.noteTextColor = 'calculated'),
            (this.activationBorderColor = '#666'),
            (this.activationBkgColor = '#f4f4f4'),
            (this.sequenceNumberColor = 'white'),
            (this.sectionBkgColor = 'calculated'),
            (this.altSectionBkgColor = 'white'),
            (this.sectionBkgColor2 = 'calculated'),
            (this.excludeBkgColor = '#eeeeee'),
            (this.taskBorderColor = 'calculated'),
            (this.taskBkgColor = 'calculated'),
            (this.taskTextLightColor = 'white'),
            (this.taskTextColor = 'calculated'),
            (this.taskTextDarkColor = 'calculated'),
            (this.taskTextOutsideColor = 'calculated'),
            (this.taskTextClickableColor = '#003163'),
            (this.activeTaskBorderColor = 'calculated'),
            (this.activeTaskBkgColor = 'calculated'),
            (this.gridColor = 'calculated'),
            (this.doneTaskBkgColor = 'calculated'),
            (this.doneTaskBorderColor = 'calculated'),
            (this.critBkgColor = 'calculated'),
            (this.critBorderColor = 'calculated'),
            (this.todayLineColor = 'calculated'),
            (this.vertLineColor = 'calculated'),
            (this.personBorder = this.primaryBorderColor),
            (this.personBkg = this.mainBkg),
            (this.archEdgeColor = 'calculated'),
            (this.archEdgeArrowColor = 'calculated'),
            (this.archEdgeWidth = '3'),
            (this.archGroupBorderColor = this.primaryBorderColor),
            (this.archGroupBorderWidth = '2px'),
            (this.rowOdd = this.rowOdd || Lt(this.mainBkg, 75) || '#ffffff'),
            (this.rowEven = this.rowEven || '#f4f4f4'),
            (this.labelColor = 'black'),
            (this.errorBkgColor = '#552222'),
            (this.errorTextColor = '#552222')
        }
        updateColors() {
          ;(this.secondBkg = Lt(this.contrast, 55)),
            (this.border2 = this.contrast),
            (this.actorBorder = Lt(this.border1, 23)),
            (this.actorBkg = this.mainBkg),
            (this.actorTextColor = this.text),
            (this.actorLineColor = this.actorBorder),
            (this.signalColor = this.text),
            (this.signalTextColor = this.text),
            (this.labelBoxBkgColor = this.actorBkg),
            (this.labelBoxBorderColor = this.actorBorder),
            (this.labelTextColor = this.text),
            (this.loopTextColor = this.text),
            (this.noteBorderColor = '#999'),
            (this.noteBkgColor = '#666'),
            (this.noteTextColor = '#fff'),
            (this.cScale0 = this.cScale0 || '#555'),
            (this.cScale1 = this.cScale1 || '#F4F4F4'),
            (this.cScale2 = this.cScale2 || '#555'),
            (this.cScale3 = this.cScale3 || '#BBB'),
            (this.cScale4 = this.cScale4 || '#777'),
            (this.cScale5 = this.cScale5 || '#999'),
            (this.cScale6 = this.cScale6 || '#DDD'),
            (this.cScale7 = this.cScale7 || '#FFF'),
            (this.cScale8 = this.cScale8 || '#DDD'),
            (this.cScale9 = this.cScale9 || '#BBB'),
            (this.cScale10 = this.cScale10 || '#999'),
            (this.cScale11 = this.cScale11 || '#777')
          for (let e = 0; e < this.THEME_COLOR_LIMIT; e++) this['cScaleInv' + e] = this['cScaleInv' + e] || wt(this['cScale' + e])
          for (let e = 0; e < this.THEME_COLOR_LIMIT; e++)
            this.darkMode
              ? (this['cScalePeer' + e] = this['cScalePeer' + e] || Lt(this['cScale' + e], 10))
              : (this['cScalePeer' + e] = this['cScalePeer' + e] || Ot(this['cScale' + e], 10))
          ;(this.scaleLabelColor = this.scaleLabelColor || (this.darkMode ? 'black' : this.labelTextColor)),
            (this.cScaleLabel0 = this.cScaleLabel0 || this.cScale1),
            (this.cScaleLabel2 = this.cScaleLabel2 || this.cScale1)
          for (let e = 0; e < this.THEME_COLOR_LIMIT; e++) this['cScaleLabel' + e] = this['cScaleLabel' + e] || this.scaleLabelColor
          for (let e = 0; e < 5; e++)
            (this['surface' + e] = this['surface' + e] || Me(this.mainBkg, { l: -(5 + e * 5) })),
              (this['surfacePeer' + e] = this['surfacePeer' + e] || Me(this.mainBkg, { l: -(8 + e * 5) }))
          ;(this.nodeBkg = this.mainBkg),
            (this.nodeBorder = this.border1),
            (this.clusterBkg = this.secondBkg),
            (this.clusterBorder = this.border2),
            (this.defaultLinkColor = this.lineColor),
            (this.titleColor = this.text),
            (this.sectionBkgColor = Lt(this.contrast, 30)),
            (this.sectionBkgColor2 = Lt(this.contrast, 30)),
            (this.taskBorderColor = Ot(this.contrast, 10)),
            (this.taskBkgColor = this.contrast),
            (this.taskTextColor = this.taskTextLightColor),
            (this.taskTextDarkColor = this.text),
            (this.taskTextOutsideColor = this.taskTextDarkColor),
            (this.activeTaskBorderColor = this.taskBorderColor),
            (this.activeTaskBkgColor = this.mainBkg),
            (this.gridColor = Lt(this.border1, 30)),
            (this.doneTaskBkgColor = this.done),
            (this.doneTaskBorderColor = this.lineColor),
            (this.critBkgColor = this.critical),
            (this.critBorderColor = Ot(this.critBkgColor, 10)),
            (this.todayLineColor = this.critBkgColor),
            (this.vertLineColor = this.critBkgColor),
            (this.archEdgeColor = this.lineColor),
            (this.archEdgeArrowColor = this.lineColor),
            (this.transitionColor = this.transitionColor || '#000'),
            (this.transitionLabelColor = this.transitionLabelColor || this.textColor),
            (this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor),
            (this.stateBkg = this.stateBkg || this.mainBkg),
            (this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg),
            (this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor),
            (this.altBackground = this.altBackground || '#f4f4f4'),
            (this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg),
            (this.stateBorder = this.stateBorder || '#000'),
            (this.innerEndBackground = this.primaryBorderColor),
            (this.specialStateColor = '#222'),
            (this.errorBkgColor = this.errorBkgColor || this.tertiaryColor),
            (this.errorTextColor = this.errorTextColor || this.tertiaryTextColor),
            (this.classText = this.primaryTextColor),
            (this.fillType0 = this.primaryColor),
            (this.fillType1 = this.secondaryColor),
            (this.fillType2 = Me(this.primaryColor, { h: 64 })),
            (this.fillType3 = Me(this.secondaryColor, { h: 64 })),
            (this.fillType4 = Me(this.primaryColor, { h: -64 })),
            (this.fillType5 = Me(this.secondaryColor, { h: -64 })),
            (this.fillType6 = Me(this.primaryColor, { h: 128 })),
            (this.fillType7 = Me(this.secondaryColor, { h: 128 }))
          for (let e = 0; e < this.THEME_COLOR_LIMIT; e++) this['pie' + e] = this['cScale' + e]
          ;(this.pie12 = this.pie0),
            (this.pieTitleTextSize = this.pieTitleTextSize || '25px'),
            (this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor),
            (this.pieSectionTextSize = this.pieSectionTextSize || '17px'),
            (this.pieSectionTextColor = this.pieSectionTextColor || this.textColor),
            (this.pieLegendTextSize = this.pieLegendTextSize || '17px'),
            (this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor),
            (this.pieStrokeColor = this.pieStrokeColor || 'black'),
            (this.pieStrokeWidth = this.pieStrokeWidth || '2px'),
            (this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || '2px'),
            (this.pieOuterStrokeColor = this.pieOuterStrokeColor || 'black'),
            (this.pieOpacity = this.pieOpacity || '0.7'),
            (this.quadrant1Fill = this.quadrant1Fill || this.primaryColor),
            (this.quadrant2Fill = this.quadrant2Fill || Me(this.primaryColor, { r: 5, g: 5, b: 5 })),
            (this.quadrant3Fill = this.quadrant3Fill || Me(this.primaryColor, { r: 10, g: 10, b: 10 })),
            (this.quadrant4Fill = this.quadrant4Fill || Me(this.primaryColor, { r: 15, g: 15, b: 15 })),
            (this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor),
            (this.quadrant2TextFill = this.quadrant2TextFill || Me(this.primaryTextColor, { r: -5, g: -5, b: -5 })),
            (this.quadrant3TextFill = this.quadrant3TextFill || Me(this.primaryTextColor, { r: -10, g: -10, b: -10 })),
            (this.quadrant4TextFill = this.quadrant4TextFill || Me(this.primaryTextColor, { r: -15, g: -15, b: -15 })),
            (this.quadrantPointFill = this.quadrantPointFill || la(this.quadrant1Fill) ? Lt(this.quadrant1Fill) : Ot(this.quadrant1Fill)),
            (this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor),
            (this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor),
            (this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor),
            (this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor),
            (this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor),
            (this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor),
            (this.xyChart = {
              backgroundColor: this.xyChart?.backgroundColor || this.background,
              titleColor: this.xyChart?.titleColor || this.primaryTextColor,
              xAxisTitleColor: this.xyChart?.xAxisTitleColor || this.primaryTextColor,
              xAxisLabelColor: this.xyChart?.xAxisLabelColor || this.primaryTextColor,
              xAxisTickColor: this.xyChart?.xAxisTickColor || this.primaryTextColor,
              xAxisLineColor: this.xyChart?.xAxisLineColor || this.primaryTextColor,
              yAxisTitleColor: this.xyChart?.yAxisTitleColor || this.primaryTextColor,
              yAxisLabelColor: this.xyChart?.yAxisLabelColor || this.primaryTextColor,
              yAxisTickColor: this.xyChart?.yAxisTickColor || this.primaryTextColor,
              yAxisLineColor: this.xyChart?.yAxisLineColor || this.primaryTextColor,
              plotColorPalette: this.xyChart?.plotColorPalette || '#EEE,#6BB8E4,#8ACB88,#C7ACD6,#E8DCC2,#FFB2A8,#FFF380,#7E8D91,#FFD8B1,#FAF3E0'
            }),
            (this.radar = {
              axisColor: this.radar?.axisColor || this.lineColor,
              axisStrokeWidth: this.radar?.axisStrokeWidth || 2,
              axisLabelFontSize: this.radar?.axisLabelFontSize || 12,
              curveOpacity: this.radar?.curveOpacity || 0.5,
              curveStrokeWidth: this.radar?.curveStrokeWidth || 2,
              graticuleColor: this.radar?.graticuleColor || '#DEDEDE',
              graticuleStrokeWidth: this.radar?.graticuleStrokeWidth || 1,
              graticuleOpacity: this.radar?.graticuleOpacity || 0.3,
              legendBoxSize: this.radar?.legendBoxSize || 12,
              legendFontSize: this.radar?.legendFontSize || 12
            }),
            (this.requirementBackground = this.requirementBackground || this.primaryColor),
            (this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor),
            (this.requirementBorderSize = this.requirementBorderSize || '1'),
            (this.requirementTextColor = this.requirementTextColor || this.primaryTextColor),
            (this.relationColor = this.relationColor || this.lineColor),
            (this.relationLabelBackground = this.relationLabelBackground || this.edgeLabelBackground),
            (this.relationLabelColor = this.relationLabelColor || this.actorTextColor),
            (this.git0 = Ot(this.pie1, 25) || this.primaryColor),
            (this.git1 = this.pie2 || this.secondaryColor),
            (this.git2 = this.pie3 || this.tertiaryColor),
            (this.git3 = this.pie4 || Me(this.primaryColor, { h: -30 })),
            (this.git4 = this.pie5 || Me(this.primaryColor, { h: -60 })),
            (this.git5 = this.pie6 || Me(this.primaryColor, { h: -90 })),
            (this.git6 = this.pie7 || Me(this.primaryColor, { h: 60 })),
            (this.git7 = this.pie8 || Me(this.primaryColor, { h: 120 })),
            (this.gitInv0 = this.gitInv0 || wt(this.git0)),
            (this.gitInv1 = this.gitInv1 || wt(this.git1)),
            (this.gitInv2 = this.gitInv2 || wt(this.git2)),
            (this.gitInv3 = this.gitInv3 || wt(this.git3)),
            (this.gitInv4 = this.gitInv4 || wt(this.git4)),
            (this.gitInv5 = this.gitInv5 || wt(this.git5)),
            (this.gitInv6 = this.gitInv6 || wt(this.git6)),
            (this.gitInv7 = this.gitInv7 || wt(this.git7)),
            (this.branchLabelColor = this.branchLabelColor || this.labelTextColor),
            (this.gitBranchLabel0 = this.branchLabelColor),
            (this.gitBranchLabel1 = 'white'),
            (this.gitBranchLabel2 = this.branchLabelColor),
            (this.gitBranchLabel3 = 'white'),
            (this.gitBranchLabel4 = this.branchLabelColor),
            (this.gitBranchLabel5 = this.branchLabelColor),
            (this.gitBranchLabel6 = this.branchLabelColor),
            (this.gitBranchLabel7 = this.branchLabelColor),
            (this.tagLabelColor = this.tagLabelColor || this.primaryTextColor),
            (this.tagLabelBackground = this.tagLabelBackground || this.primaryColor),
            (this.tagLabelBorder = this.tagBorder || this.primaryBorderColor),
            (this.tagLabelFontSize = this.tagLabelFontSize || '10px'),
            (this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor),
            (this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor),
            (this.commitLabelFontSize = this.commitLabelFontSize || '10px'),
            (this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || hh),
            (this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || fh)
        }
        calculate(e) {
          if (typeof e != 'object') {
            this.updateColors()
            return
          }
          let r = Object.keys(e)
          r.forEach(n => {
            this[n] = e[n]
          }),
            this.updateColors(),
            r.forEach(n => {
              this[n] = e[n]
            })
        }
      }),
        (wz = o(t => {
          let e = new x7()
          return e.calculate(t), e
        }, 'getThemeVariables'))
    })
  var Eo,
    n3 = N(() => {
      'use strict'
      yz()
      xz()
      By()
      Tz()
      kz()
      Eo = {
        base: { getThemeVariables: gz },
        dark: { getThemeVariables: vz },
        default: { getThemeVariables: dh },
        forest: { getThemeVariables: bz },
        neutral: { getThemeVariables: wz }
      }
    })
  var ul,
    Ez = N(() => {
      'use strict'
      ul = {
        flowchart: {
          useMaxWidth: !0,
          titleTopMargin: 25,
          subGraphTitleMargin: { top: 0, bottom: 0 },
          diagramPadding: 8,
          htmlLabels: !0,
          nodeSpacing: 50,
          rankSpacing: 50,
          curve: 'basis',
          padding: 15,
          defaultRenderer: 'dagre-wrapper',
          wrappingWidth: 200,
          inheritDir: !1
        },
        sequence: {
          useMaxWidth: !0,
          hideUnusedParticipants: !1,
          activationWidth: 10,
          diagramMarginX: 50,
          diagramMarginY: 10,
          actorMargin: 50,
          width: 150,
          height: 65,
          boxMargin: 10,
          boxTextMargin: 5,
          noteMargin: 10,
          messageMargin: 35,
          messageAlign: 'center',
          mirrorActors: !0,
          forceMenus: !1,
          bottomMarginAdj: 1,
          rightAngles: !1,
          showSequenceNumbers: !1,
          actorFontSize: 14,
          actorFontFamily: '"Open Sans", sans-serif',
          actorFontWeight: 400,
          noteFontSize: 14,
          noteFontFamily: '"trebuchet ms", verdana, arial, sans-serif',
          noteFontWeight: 400,
          noteAlign: 'center',
          messageFontSize: 16,
          messageFontFamily: '"trebuchet ms", verdana, arial, sans-serif',
          messageFontWeight: 400,
          wrap: !1,
          wrapPadding: 10,
          labelBoxWidth: 50,
          labelBoxHeight: 20
        },
        gantt: {
          useMaxWidth: !0,
          titleTopMargin: 25,
          barHeight: 20,
          barGap: 4,
          topPadding: 50,
          rightPadding: 75,
          leftPadding: 75,
          gridLineStartPadding: 35,
          fontSize: 11,
          sectionFontSize: 11,
          numberSectionStyles: 4,
          axisFormat: '%Y-%m-%d',
          topAxis: !1,
          displayMode: '',
          weekday: 'sunday'
        },
        journey: {
          useMaxWidth: !0,
          diagramMarginX: 50,
          diagramMarginY: 10,
          leftMargin: 150,
          maxLabelWidth: 360,
          width: 150,
          height: 50,
          boxMargin: 10,
          boxTextMargin: 5,
          noteMargin: 10,
          messageMargin: 35,
          messageAlign: 'center',
          bottomMarginAdj: 1,
          rightAngles: !1,
          taskFontSize: 14,
          taskFontFamily: '"Open Sans", sans-serif',
          taskMargin: 50,
          activationWidth: 10,
          textPlacement: 'fo',
          actorColours: ['#8FBC8F', '#7CFC00', '#00FFFF', '#20B2AA', '#B0E0E6', '#FFFFE0'],
          sectionFills: ['#191970', '#8B008B', '#4B0082', '#2F4F4F', '#800000', '#8B4513', '#00008B'],
          sectionColours: ['#fff'],
          titleColor: '',
          titleFontFamily: '"trebuchet ms", verdana, arial, sans-serif',
          titleFontSize: '4ex'
        },
        class: {
          useMaxWidth: !0,
          titleTopMargin: 25,
          arrowMarkerAbsolute: !1,
          dividerMargin: 10,
          padding: 5,
          textHeight: 10,
          defaultRenderer: 'dagre-wrapper',
          htmlLabels: !1,
          hideEmptyMembersBox: !1
        },
        state: {
          useMaxWidth: !0,
          titleTopMargin: 25,
          dividerMargin: 10,
          sizeUnit: 5,
          padding: 8,
          textHeight: 10,
          titleShift: -15,
          noteMargin: 10,
          forkWidth: 70,
          forkHeight: 7,
          miniPadding: 2,
          fontSizeFactor: 5.02,
          fontSize: 24,
          labelHeight: 16,
          edgeLengthFactor: '20',
          compositTitleSize: 35,
          radius: 5,
          defaultRenderer: 'dagre-wrapper'
        },
        er: {
          useMaxWidth: !0,
          titleTopMargin: 25,
          diagramPadding: 20,
          layoutDirection: 'TB',
          minEntityWidth: 100,
          minEntityHeight: 75,
          entityPadding: 15,
          nodeSpacing: 140,
          rankSpacing: 80,
          stroke: 'gray',
          fill: 'honeydew',
          fontSize: 12
        },
        pie: { useMaxWidth: !0, textPosition: 0.75 },
        quadrantChart: {
          useMaxWidth: !0,
          chartWidth: 500,
          chartHeight: 500,
          titleFontSize: 20,
          titlePadding: 10,
          quadrantPadding: 5,
          xAxisLabelPadding: 5,
          yAxisLabelPadding: 5,
          xAxisLabelFontSize: 16,
          yAxisLabelFontSize: 16,
          quadrantLabelFontSize: 16,
          quadrantTextTopPadding: 5,
          pointTextPadding: 5,
          pointLabelFontSize: 12,
          pointRadius: 5,
          xAxisPosition: 'top',
          yAxisPosition: 'left',
          quadrantInternalBorderStrokeWidth: 1,
          quadrantExternalBorderStrokeWidth: 2
        },
        xyChart: {
          useMaxWidth: !0,
          width: 700,
          height: 500,
          titleFontSize: 20,
          titlePadding: 10,
          showDataLabel: !1,
          showTitle: !0,
          xAxis: {
            $ref: '#/$defs/XYChartAxisConfig',
            showLabel: !0,
            labelFontSize: 14,
            labelPadding: 5,
            showTitle: !0,
            titleFontSize: 16,
            titlePadding: 5,
            showTick: !0,
            tickLength: 5,
            tickWidth: 2,
            showAxisLine: !0,
            axisLineWidth: 2
          },
          yAxis: {
            $ref: '#/$defs/XYChartAxisConfig',
            showLabel: !0,
            labelFontSize: 14,
            labelPadding: 5,
            showTitle: !0,
            titleFontSize: 16,
            titlePadding: 5,
            showTick: !0,
            tickLength: 5,
            tickWidth: 2,
            showAxisLine: !0,
            axisLineWidth: 2
          },
          chartOrientation: 'vertical',
          plotReservedSpacePercent: 50
        },
        requirement: {
          useMaxWidth: !0,
          rect_fill: '#f9f9f9',
          text_color: '#333',
          rect_border_size: '0.5px',
          rect_border_color: '#bbb',
          rect_min_width: 200,
          rect_min_height: 200,
          fontSize: 14,
          rect_padding: 10,
          line_height: 20
        },
        mindmap: { useMaxWidth: !0, padding: 10, maxNodeWidth: 200 },
        kanban: { useMaxWidth: !0, padding: 8, sectionWidth: 200, ticketBaseUrl: '' },
        timeline: {
          useMaxWidth: !0,
          diagramMarginX: 50,
          diagramMarginY: 10,
          leftMargin: 150,
          width: 150,
          height: 50,
          boxMargin: 10,
          boxTextMargin: 5,
          noteMargin: 10,
          messageMargin: 35,
          messageAlign: 'center',
          bottomMarginAdj: 1,
          rightAngles: !1,
          taskFontSize: 14,
          taskFontFamily: '"Open Sans", sans-serif',
          taskMargin: 50,
          activationWidth: 10,
          textPlacement: 'fo',
          actorColours: ['#8FBC8F', '#7CFC00', '#00FFFF', '#20B2AA', '#B0E0E6', '#FFFFE0'],
          sectionFills: ['#191970', '#8B008B', '#4B0082', '#2F4F4F', '#800000', '#8B4513', '#00008B'],
          sectionColours: ['#fff'],
          disableMulticolor: !1
        },
        gitGraph: {
          useMaxWidth: !0,
          titleTopMargin: 25,
          diagramPadding: 8,
          nodeLabel: { width: 75, height: 100, x: -25, y: 0 },
          mainBranchName: 'main',
          mainBranchOrder: 0,
          showCommitLabel: !0,
          showBranches: !0,
          rotateCommitLabel: !0,
          parallelCommits: !1,
          arrowMarkerAbsolute: !1
        },
        c4: {
          useMaxWidth: !0,
          diagramMarginX: 50,
          diagramMarginY: 10,
          c4ShapeMargin: 50,
          c4ShapePadding: 20,
          width: 216,
          height: 60,
          boxMargin: 10,
          c4ShapeInRow: 4,
          nextLinePaddingX: 0,
          c4BoundaryInRow: 2,
          personFontSize: 14,
          personFontFamily: '"Open Sans", sans-serif',
          personFontWeight: 'normal',
          external_personFontSize: 14,
          external_personFontFamily: '"Open Sans", sans-serif',
          external_personFontWeight: 'normal',
          systemFontSize: 14,
          systemFontFamily: '"Open Sans", sans-serif',
          systemFontWeight: 'normal',
          external_systemFontSize: 14,
          external_systemFontFamily: '"Open Sans", sans-serif',
          external_systemFontWeight: 'normal',
          system_dbFontSize: 14,
          system_dbFontFamily: '"Open Sans", sans-serif',
          system_dbFontWeight: 'normal',
          external_system_dbFontSize: 14,
          external_system_dbFontFamily: '"Open Sans", sans-serif',
          external_system_dbFontWeight: 'normal',
          system_queueFontSize: 14,
          system_queueFontFamily: '"Open Sans", sans-serif',
          system_queueFontWeight: 'normal',
          external_system_queueFontSize: 14,
          external_system_queueFontFamily: '"Open Sans", sans-serif',
          external_system_queueFontWeight: 'normal',
          boundaryFontSize: 14,
          boundaryFontFamily: '"Open Sans", sans-serif',
          boundaryFontWeight: 'normal',
          messageFontSize: 12,
          messageFontFamily: '"Open Sans", sans-serif',
          messageFontWeight: 'normal',
          containerFontSize: 14,
          containerFontFamily: '"Open Sans", sans-serif',
          containerFontWeight: 'normal',
          external_containerFontSize: 14,
          external_containerFontFamily: '"Open Sans", sans-serif',
          external_containerFontWeight: 'normal',
          container_dbFontSize: 14,
          container_dbFontFamily: '"Open Sans", sans-serif',
          container_dbFontWeight: 'normal',
          external_container_dbFontSize: 14,
          external_container_dbFontFamily: '"Open Sans", sans-serif',
          external_container_dbFontWeight: 'normal',
          container_queueFontSize: 14,
          container_queueFontFamily: '"Open Sans", sans-serif',
          container_queueFontWeight: 'normal',
          external_container_queueFontSize: 14,
          external_container_queueFontFamily: '"Open Sans", sans-serif',
          external_container_queueFontWeight: 'normal',
          componentFontSize: 14,
          componentFontFamily: '"Open Sans", sans-serif',
          componentFontWeight: 'normal',
          external_componentFontSize: 14,
          external_componentFontFamily: '"Open Sans", sans-serif',
          external_componentFontWeight: 'normal',
          component_dbFontSize: 14,
          component_dbFontFamily: '"Open Sans", sans-serif',
          component_dbFontWeight: 'normal',
          external_component_dbFontSize: 14,
          external_component_dbFontFamily: '"Open Sans", sans-serif',
          external_component_dbFontWeight: 'normal',
          component_queueFontSize: 14,
          component_queueFontFamily: '"Open Sans", sans-serif',
          component_queueFontWeight: 'normal',
          external_component_queueFontSize: 14,
          external_component_queueFontFamily: '"Open Sans", sans-serif',
          external_component_queueFontWeight: 'normal',
          wrap: !0,
          wrapPadding: 10,
          person_bg_color: '#08427B',
          person_border_color: '#073B6F',
          external_person_bg_color: '#686868',
          external_person_border_color: '#8A8A8A',
          system_bg_color: '#1168BD',
          system_border_color: '#3C7FC0',
          system_db_bg_color: '#1168BD',
          system_db_border_color: '#3C7FC0',
          system_queue_bg_color: '#1168BD',
          system_queue_border_color: '#3C7FC0',
          external_system_bg_color: '#999999',
          external_system_border_color: '#8A8A8A',
          external_system_db_bg_color: '#999999',
          external_system_db_border_color: '#8A8A8A',
          external_system_queue_bg_color: '#999999',
          external_system_queue_border_color: '#8A8A8A',
          container_bg_color: '#438DD5',
          container_border_color: '#3C7FC0',
          container_db_bg_color: '#438DD5',
          container_db_border_color: '#3C7FC0',
          container_queue_bg_color: '#438DD5',
          container_queue_border_color: '#3C7FC0',
          external_container_bg_color: '#B3B3B3',
          external_container_border_color: '#A6A6A6',
          external_container_db_bg_color: '#B3B3B3',
          external_container_db_border_color: '#A6A6A6',
          external_container_queue_bg_color: '#B3B3B3',
          external_container_queue_border_color: '#A6A6A6',
          component_bg_color: '#85BBF0',
          component_border_color: '#78A8D8',
          component_db_bg_color: '#85BBF0',
          component_db_border_color: '#78A8D8',
          component_queue_bg_color: '#85BBF0',
          component_queue_border_color: '#78A8D8',
          external_component_bg_color: '#CCCCCC',
          external_component_border_color: '#BFBFBF',
          external_component_db_bg_color: '#CCCCCC',
          external_component_db_border_color: '#BFBFBF',
          external_component_queue_bg_color: '#CCCCCC',
          external_component_queue_border_color: '#BFBFBF'
        },
        sankey: { useMaxWidth: !0, width: 600, height: 400, linkColor: 'gradient', nodeAlignment: 'justify', showValues: !0, prefix: '', suffix: '' },
        block: { useMaxWidth: !0, padding: 8 },
        packet: { useMaxWidth: !0, rowHeight: 32, bitWidth: 32, bitsPerRow: 32, showBits: !0, paddingX: 5, paddingY: 5 },
        architecture: { useMaxWidth: !0, padding: 40, iconSize: 80, fontSize: 16 },
        radar: {
          useMaxWidth: !0,
          width: 600,
          height: 600,
          marginTop: 50,
          marginRight: 50,
          marginBottom: 50,
          marginLeft: 50,
          axisScaleFactor: 1,
          axisLabelFactor: 1.05,
          curveTension: 0.17
        },
        theme: 'default',
        look: 'classic',
        handDrawnSeed: 0,
        layout: 'dagre',
        maxTextSize: 5e4,
        maxEdges: 500,
        darkMode: !1,
        fontFamily: '"trebuchet ms", verdana, arial, sans-serif;',
        logLevel: 5,
        securityLevel: 'strict',
        startOnLoad: !0,
        arrowMarkerAbsolute: !1,
        secure: ['secure', 'securityLevel', 'startOnLoad', 'maxTextSize', 'suppressErrorRendering', 'maxEdges'],
        legacyMathML: !1,
        forceLegacyMathML: !1,
        deterministicIds: !1,
        fontSize: 16,
        markdownAutoWrap: !0,
        suppressErrorRendering: !1
      }
    })
  var Sz,
    Cz,
    Az,
    or,
    _a = N(() => {
      'use strict'
      n3()
      Ez()
      ;(Sz = {
        ...ul,
        deterministicIDSeed: void 0,
        elk: { mergeEdges: !1, nodePlacementStrategy: 'BRANDES_KOEPF' },
        themeCSS: void 0,
        themeVariables: Eo.default.getThemeVariables(),
        sequence: {
          ...ul.sequence,
          messageFont: o(function () {
            return { fontFamily: this.messageFontFamily, fontSize: this.messageFontSize, fontWeight: this.messageFontWeight }
          }, 'messageFont'),
          noteFont: o(function () {
            return { fontFamily: this.noteFontFamily, fontSize: this.noteFontSize, fontWeight: this.noteFontWeight }
          }, 'noteFont'),
          actorFont: o(function () {
            return { fontFamily: this.actorFontFamily, fontSize: this.actorFontSize, fontWeight: this.actorFontWeight }
          }, 'actorFont')
        },
        class: { hideEmptyMembersBox: !1 },
        gantt: { ...ul.gantt, tickInterval: void 0, useWidth: void 0 },
        c4: {
          ...ul.c4,
          useWidth: void 0,
          personFont: o(function () {
            return { fontFamily: this.personFontFamily, fontSize: this.personFontSize, fontWeight: this.personFontWeight }
          }, 'personFont'),
          flowchart: { ...ul.flowchart, inheritDir: !1 },
          external_personFont: o(function () {
            return { fontFamily: this.external_personFontFamily, fontSize: this.external_personFontSize, fontWeight: this.external_personFontWeight }
          }, 'external_personFont'),
          systemFont: o(function () {
            return { fontFamily: this.systemFontFamily, fontSize: this.systemFontSize, fontWeight: this.systemFontWeight }
          }, 'systemFont'),
          external_systemFont: o(function () {
            return { fontFamily: this.external_systemFontFamily, fontSize: this.external_systemFontSize, fontWeight: this.external_systemFontWeight }
          }, 'external_systemFont'),
          system_dbFont: o(function () {
            return { fontFamily: this.system_dbFontFamily, fontSize: this.system_dbFontSize, fontWeight: this.system_dbFontWeight }
          }, 'system_dbFont'),
          external_system_dbFont: o(function () {
            return { fontFamily: this.external_system_dbFontFamily, fontSize: this.external_system_dbFontSize, fontWeight: this.external_system_dbFontWeight }
          }, 'external_system_dbFont'),
          system_queueFont: o(function () {
            return { fontFamily: this.system_queueFontFamily, fontSize: this.system_queueFontSize, fontWeight: this.system_queueFontWeight }
          }, 'system_queueFont'),
          external_system_queueFont: o(function () {
            return { fontFamily: this.external_system_queueFontFamily, fontSize: this.external_system_queueFontSize, fontWeight: this.external_system_queueFontWeight }
          }, 'external_system_queueFont'),
          containerFont: o(function () {
            return { fontFamily: this.containerFontFamily, fontSize: this.containerFontSize, fontWeight: this.containerFontWeight }
          }, 'containerFont'),
          external_containerFont: o(function () {
            return { fontFamily: this.external_containerFontFamily, fontSize: this.external_containerFontSize, fontWeight: this.external_containerFontWeight }
          }, 'external_containerFont'),
          container_dbFont: o(function () {
            return { fontFamily: this.container_dbFontFamily, fontSize: this.container_dbFontSize, fontWeight: this.container_dbFontWeight }
          }, 'container_dbFont'),
          external_container_dbFont: o(function () {
            return { fontFamily: this.external_container_dbFontFamily, fontSize: this.external_container_dbFontSize, fontWeight: this.external_container_dbFontWeight }
          }, 'external_container_dbFont'),
          container_queueFont: o(function () {
            return { fontFamily: this.container_queueFontFamily, fontSize: this.container_queueFontSize, fontWeight: this.container_queueFontWeight }
          }, 'container_queueFont'),
          external_container_queueFont: o(function () {
            return { fontFamily: this.external_container_queueFontFamily, fontSize: this.external_container_queueFontSize, fontWeight: this.external_container_queueFontWeight }
          }, 'external_container_queueFont'),
          componentFont: o(function () {
            return { fontFamily: this.componentFontFamily, fontSize: this.componentFontSize, fontWeight: this.componentFontWeight }
          }, 'componentFont'),
          external_componentFont: o(function () {
            return { fontFamily: this.external_componentFontFamily, fontSize: this.external_componentFontSize, fontWeight: this.external_componentFontWeight }
          }, 'external_componentFont'),
          component_dbFont: o(function () {
            return { fontFamily: this.component_dbFontFamily, fontSize: this.component_dbFontSize, fontWeight: this.component_dbFontWeight }
          }, 'component_dbFont'),
          external_component_dbFont: o(function () {
            return { fontFamily: this.external_component_dbFontFamily, fontSize: this.external_component_dbFontSize, fontWeight: this.external_component_dbFontWeight }
          }, 'external_component_dbFont'),
          component_queueFont: o(function () {
            return { fontFamily: this.component_queueFontFamily, fontSize: this.component_queueFontSize, fontWeight: this.component_queueFontWeight }
          }, 'component_queueFont'),
          external_component_queueFont: o(function () {
            return { fontFamily: this.external_component_queueFontFamily, fontSize: this.external_component_queueFontSize, fontWeight: this.external_component_queueFontWeight }
          }, 'external_component_queueFont'),
          boundaryFont: o(function () {
            return { fontFamily: this.boundaryFontFamily, fontSize: this.boundaryFontSize, fontWeight: this.boundaryFontWeight }
          }, 'boundaryFont'),
          messageFont: o(function () {
            return { fontFamily: this.messageFontFamily, fontSize: this.messageFontSize, fontWeight: this.messageFontWeight }
          }, 'messageFont')
        },
        pie: { ...ul.pie, useWidth: 984 },
        xyChart: { ...ul.xyChart, useWidth: void 0 },
        requirement: { ...ul.requirement, useWidth: void 0 },
        packet: { ...ul.packet },
        radar: { ...ul.radar },
        treemap: {
          useMaxWidth: !0,
          padding: 10,
          diagramPadding: 8,
          showValues: !0,
          nodeWidth: 100,
          nodeHeight: 40,
          borderWidth: 1,
          valueFontSize: 12,
          labelFontSize: 14,
          valueFormat: ','
        }
      }),
        (Cz = o(
          (t, e = '') => Object.keys(t).reduce((r, n) => (Array.isArray(t[n]) ? r : typeof t[n] == 'object' && t[n] !== null ? [...r, e + n, ...Cz(t[n], '')] : [...r, e + n]), []),
          'keyify'
        )),
        (Az = new Set(Cz(Sz, ''))),
        (or = Sz)
    })
  var v0,
    Kbe,
    b7 = N(() => {
      'use strict'
      _a()
      yt()
      ;(v0 = o(t => {
        if ((X.debug('sanitizeDirective called with', t), !(typeof t != 'object' || t == null))) {
          if (Array.isArray(t)) {
            t.forEach(e => v0(e))
            return
          }
          for (let e of Object.keys(t)) {
            if ((X.debug('Checking key', e), e.startsWith('__') || e.includes('proto') || e.includes('constr') || !Az.has(e) || t[e] == null)) {
              X.debug('sanitize deleting key: ', e), delete t[e]
              continue
            }
            if (typeof t[e] == 'object') {
              X.debug('sanitizing object', e), v0(t[e])
              continue
            }
            let r = ['themeCSS', 'fontFamily', 'altFontFamily']
            for (let n of r) e.includes(n) && (X.debug('sanitizing css option', e), (t[e] = Kbe(t[e])))
          }
          if (t.themeVariables)
            for (let e of Object.keys(t.themeVariables)) {
              let r = t.themeVariables[e]
              r?.match && !r.match(/^[\d "#%(),.;A-Za-z]+$/) && (t.themeVariables[e] = '')
            }
          X.debug('After sanitization', t)
        }
      }, 'sanitizeDirective')),
        (Kbe = o(t => {
          let e = 0,
            r = 0
          for (let n of t) {
            if (e < r) return '{ /* ERROR: Unbalanced CSS */ }'
            n === '{' ? e++ : n === '}' && r++
          }
          return e !== r ? '{ /* ERROR: Unbalanced CSS */ }' : t
        }, 'sanitizeCss'))
    })
  var ph,
    Ss,
    Dz,
    x0,
    Fy,
    i3,
    T7,
    Lz,
    Rz,
    w7,
    a3,
    tr,
    Nz,
    Mz,
    $y,
    Qbe,
    _z,
    Zbe,
    Iz,
    mi = N(() => {
      'use strict'
      g0()
      yt()
      n3()
      _a()
      b7()
      ;(ph = Object.freeze(or)),
        (Ss = Un({}, ph)),
        (x0 = []),
        (Fy = Un({}, ph)),
        (i3 = o((t, e) => {
          let r = Un({}, t),
            n = {}
          for (let i of e) Nz(i), (n = Un(n, i))
          if (((r = Un(r, n)), n.theme && n.theme in Eo)) {
            let i = Un({}, Dz),
              a = Un(i.themeVariables || {}, n.themeVariables)
            r.theme && r.theme in Eo && (r.themeVariables = Eo[r.theme].getThemeVariables(a))
          }
          return (Fy = r), Iz(Fy), Fy
        }, 'updateCurrentConfig')),
        (T7 = o(
          t => ((Ss = Un({}, ph)), (Ss = Un(Ss, t)), t.theme && Eo[t.theme] && (Ss.themeVariables = Eo[t.theme].getThemeVariables(t.themeVariables)), i3(Ss, x0), Ss),
          'setSiteConfig'
        )),
        (Lz = o(t => {
          Dz = Un({}, t)
        }, 'saveConfigFromInitialize')),
        (Rz = o(t => ((Ss = Un(Ss, t)), i3(Ss, x0), Ss), 'updateSiteConfig')),
        (w7 = o(() => Un({}, Ss), 'getSiteConfig')),
        (a3 = o(t => (Iz(t), Un(Fy, t), tr()), 'setConfig')),
        (tr = o(() => Un({}, Fy), 'getConfig')),
        (Nz = o(t => {
          t &&
            (['secure', ...(Ss.secure ?? [])].forEach(e => {
              Object.hasOwn(t, e) && (X.debug(`Denied attempt to modify a secure key ${e}`, t[e]), delete t[e])
            }),
            Object.keys(t).forEach(e => {
              e.startsWith('__') && delete t[e]
            }),
            Object.keys(t).forEach(e => {
              typeof t[e] == 'string' && (t[e].includes('<') || t[e].includes('>') || t[e].includes('url(data:')) && delete t[e], typeof t[e] == 'object' && Nz(t[e])
            }))
        }, 'sanitize')),
        (Mz = o(t => {
          v0(t), t.fontFamily && !t.themeVariables?.fontFamily && (t.themeVariables = { ...t.themeVariables, fontFamily: t.fontFamily }), x0.push(t), i3(Ss, x0)
        }, 'addDirective')),
        ($y = o((t = Ss) => {
          ;(x0 = []), i3(t, x0)
        }, 'reset')),
        (Qbe = {
          LAZY_LOAD_DEPRECATED: 'The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead.'
        }),
        (_z = {}),
        (Zbe = o(t => {
          _z[t] || (X.warn(Qbe[t]), (_z[t] = !0))
        }, 'issueWarning')),
        (Iz = o(t => {
          t && (t.lazyLoadedDiagrams || t.loadExternalDiagramsAtStartup) && Zbe('LAZY_LOAD_DEPRECATED')
        }, 'checkConfig'))
    })
  function es(t) {
    return function (e) {
      e instanceof RegExp && (e.lastIndex = 0)
      for (var r = arguments.length, n = new Array(r > 1 ? r - 1 : 0), i = 1; i < r; i++) n[i - 1] = arguments[i]
      return _7(t, e, n)
    }
  }
  function s4e(t) {
    return function () {
      for (var e = arguments.length, r = new Array(e), n = 0; n < e; n++) r[n] = arguments[n]
      return D7(t, r)
    }
  }
  function _r(t, e) {
    let r = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : l3
    Oz && Oz(t, null)
    let n = e.length
    for (; n--; ) {
      let i = e[n]
      if (typeof i == 'string') {
        let a = r(i)
        a !== i && (Jbe(e) || (e[n] = a), (i = a))
      }
      t[i] = !0
    }
    return t
  }
  function o4e(t) {
    for (let e = 0; e < t.length; e++) hl(t, e) || (t[e] = null)
    return t
  }
  function ad(t) {
    let e = Wz(null)
    for (let [r, n] of Hz(t)) hl(t, r) && (Array.isArray(n) ? (e[r] = o4e(n)) : n && typeof n == 'object' && n.constructor === Object ? (e[r] = ad(n)) : (e[r] = n))
    return e
  }
  function Uy(t, e) {
    for (; t !== null; ) {
      let n = t4e(t, e)
      if (n) {
        if (n.get) return es(n.get)
        if (typeof n.value == 'function') return es(n.value)
      }
      t = e4e(t)
    }
    function r() {
      return null
    }
    return o(r, 'fallbackValue'), r
  }
  function Xz() {
    let t = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : v4e(),
      e = o(Dt => Xz(Dt), 'DOMPurify')
    if (((e.version = '3.2.5'), (e.removed = []), !t || !t.document || t.document.nodeType !== Hy.document || !t.Element)) return (e.isSupported = !1), e
    let { document: r } = t,
      n = r,
      i = n.currentScript,
      {
        DocumentFragment: a,
        HTMLTemplateElement: s,
        Node: l,
        Element: u,
        NodeFilter: h,
        NamedNodeMap: f = t.NamedNodeMap || t.MozNamedAttrMap,
        HTMLFormElement: d,
        DOMParser: p,
        trustedTypes: m
      } = t,
      g = u.prototype,
      y = Uy(g, 'cloneNode'),
      v = Uy(g, 'remove'),
      x = Uy(g, 'nextSibling'),
      b = Uy(g, 'childNodes'),
      T = Uy(g, 'parentNode')
    if (typeof s == 'function') {
      let Dt = r.createElement('template')
      Dt.content && Dt.content.ownerDocument && (r = Dt.content.ownerDocument)
    }
    let S,
      w = '',
      { implementation: E, createNodeIterator: _, createDocumentFragment: C, getElementsByTagName: D } = r,
      { importNode: O } = n,
      R = Uz()
    e.isSupported = typeof Hz == 'function' && typeof T == 'function' && E && E.createHTMLDocument !== void 0
    let { MUSTACHE_EXPR: k, ERB_EXPR: L, TMPLIT_EXPR: A, DATA_ATTR: I, ARIA_ATTR: M, IS_SCRIPT_OR_DATA: P, ATTR_WHITESPACE: B, CUSTOM_ELEMENT: F } = Vz,
      { IS_ALLOWED_URI: z } = Vz,
      $ = null,
      U = _r({}, [...Fz, ...E7, ...S7, ...C7, ...$z]),
      K = null,
      ee = _r({}, [...zz, ...A7, ...Gz, ...o3]),
      Y = Object.seal(
        Wz(null, {
          tagNameCheck: { writable: !0, configurable: !1, enumerable: !0, value: null },
          attributeNameCheck: { writable: !0, configurable: !1, enumerable: !0, value: null },
          allowCustomizedBuiltInElements: { writable: !0, configurable: !1, enumerable: !0, value: !1 }
        })
      ),
      ce = null,
      Z = null,
      ue = !0,
      Q = !0,
      j = !1,
      ne = !0,
      te = !1,
      he = !0,
      le = !1,
      J = !1,
      Se = !1,
      se = !1,
      ae = !1,
      Oe = !1,
      ye = !0,
      Be = !1,
      He = 'user-content-',
      ze = !0,
      Le = !1,
      Ie = {},
      xe = null,
      q = _r({}, [
        'annotation-xml',
        'audio',
        'colgroup',
        'desc',
        'foreignobject',
        'head',
        'iframe',
        'math',
        'mi',
        'mn',
        'mo',
        'ms',
        'mtext',
        'noembed',
        'noframes',
        'noscript',
        'plaintext',
        'script',
        'style',
        'svg',
        'template',
        'thead',
        'title',
        'video',
        'xmp'
      ]),
      de = null,
      ie = _r({}, ['audio', 'video', 'img', 'source', 'image', 'track']),
      oe = null,
      V = _r({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']),
      Te = 'http://www.w3.org/1998/Math/MathML',
      W = 'http://www.w3.org/2000/svg',
      pe = 'http://www.w3.org/1999/xhtml',
      ve = pe,
      Pe = !1,
      _e = null,
      be = _r({}, [Te, W, pe], k7),
      Ve = _r({}, ['mi', 'mo', 'mn', 'ms', 'mtext']),
      De = _r({}, ['annotation-xml']),
      qe = _r({}, ['title', 'style', 'font', 'a', 'script']),
      at = null,
      Rt = ['application/xhtml+xml', 'text/html'],
      st = 'text/html',
      Ue = null,
      ct = null,
      We = r.createElement('form'),
      ot = o(function (Ce) {
        return Ce instanceof RegExp || Ce instanceof Function
      }, 'isRegexOrFunction'),
      Yt = o(function () {
        let Ce = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}
        if (!(ct && ct === Ce)) {
          if (
            ((!Ce || typeof Ce != 'object') && (Ce = {}),
            (Ce = ad(Ce)),
            (at = Rt.indexOf(Ce.PARSER_MEDIA_TYPE) === -1 ? st : Ce.PARSER_MEDIA_TYPE),
            (Ue = at === 'application/xhtml+xml' ? k7 : l3),
            ($ = hl(Ce, 'ALLOWED_TAGS') ? _r({}, Ce.ALLOWED_TAGS, Ue) : U),
            (K = hl(Ce, 'ALLOWED_ATTR') ? _r({}, Ce.ALLOWED_ATTR, Ue) : ee),
            (_e = hl(Ce, 'ALLOWED_NAMESPACES') ? _r({}, Ce.ALLOWED_NAMESPACES, k7) : be),
            (oe = hl(Ce, 'ADD_URI_SAFE_ATTR') ? _r(ad(V), Ce.ADD_URI_SAFE_ATTR, Ue) : V),
            (de = hl(Ce, 'ADD_DATA_URI_TAGS') ? _r(ad(ie), Ce.ADD_DATA_URI_TAGS, Ue) : ie),
            (xe = hl(Ce, 'FORBID_CONTENTS') ? _r({}, Ce.FORBID_CONTENTS, Ue) : q),
            (ce = hl(Ce, 'FORBID_TAGS') ? _r({}, Ce.FORBID_TAGS, Ue) : {}),
            (Z = hl(Ce, 'FORBID_ATTR') ? _r({}, Ce.FORBID_ATTR, Ue) : {}),
            (Ie = hl(Ce, 'USE_PROFILES') ? Ce.USE_PROFILES : !1),
            (ue = Ce.ALLOW_ARIA_ATTR !== !1),
            (Q = Ce.ALLOW_DATA_ATTR !== !1),
            (j = Ce.ALLOW_UNKNOWN_PROTOCOLS || !1),
            (ne = Ce.ALLOW_SELF_CLOSE_IN_ATTR !== !1),
            (te = Ce.SAFE_FOR_TEMPLATES || !1),
            (he = Ce.SAFE_FOR_XML !== !1),
            (le = Ce.WHOLE_DOCUMENT || !1),
            (se = Ce.RETURN_DOM || !1),
            (ae = Ce.RETURN_DOM_FRAGMENT || !1),
            (Oe = Ce.RETURN_TRUSTED_TYPE || !1),
            (Se = Ce.FORCE_BODY || !1),
            (ye = Ce.SANITIZE_DOM !== !1),
            (Be = Ce.SANITIZE_NAMED_PROPS || !1),
            (ze = Ce.KEEP_CONTENT !== !1),
            (Le = Ce.IN_PLACE || !1),
            (z = Ce.ALLOWED_URI_REGEXP || qz),
            (ve = Ce.NAMESPACE || pe),
            (Ve = Ce.MATHML_TEXT_INTEGRATION_POINTS || Ve),
            (De = Ce.HTML_INTEGRATION_POINTS || De),
            (Y = Ce.CUSTOM_ELEMENT_HANDLING || {}),
            Ce.CUSTOM_ELEMENT_HANDLING && ot(Ce.CUSTOM_ELEMENT_HANDLING.tagNameCheck) && (Y.tagNameCheck = Ce.CUSTOM_ELEMENT_HANDLING.tagNameCheck),
            Ce.CUSTOM_ELEMENT_HANDLING && ot(Ce.CUSTOM_ELEMENT_HANDLING.attributeNameCheck) && (Y.attributeNameCheck = Ce.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),
            Ce.CUSTOM_ELEMENT_HANDLING &&
              typeof Ce.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements == 'boolean' &&
              (Y.allowCustomizedBuiltInElements = Ce.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),
            te && (Q = !1),
            ae && (se = !0),
            Ie &&
              (($ = _r({}, $z)),
              (K = []),
              Ie.html === !0 && (_r($, Fz), _r(K, zz)),
              Ie.svg === !0 && (_r($, E7), _r(K, A7), _r(K, o3)),
              Ie.svgFilters === !0 && (_r($, S7), _r(K, A7), _r(K, o3)),
              Ie.mathMl === !0 && (_r($, C7), _r(K, Gz), _r(K, o3))),
            Ce.ADD_TAGS && ($ === U && ($ = ad($)), _r($, Ce.ADD_TAGS, Ue)),
            Ce.ADD_ATTR && (K === ee && (K = ad(K)), _r(K, Ce.ADD_ATTR, Ue)),
            Ce.ADD_URI_SAFE_ATTR && _r(oe, Ce.ADD_URI_SAFE_ATTR, Ue),
            Ce.FORBID_CONTENTS && (xe === q && (xe = ad(xe)), _r(xe, Ce.FORBID_CONTENTS, Ue)),
            ze && ($['#text'] = !0),
            le && _r($, ['html', 'head', 'body']),
            $.table && (_r($, ['tbody']), delete ce.tbody),
            Ce.TRUSTED_TYPES_POLICY)
          ) {
            if (typeof Ce.TRUSTED_TYPES_POLICY.createHTML != 'function') throw Vy('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.')
            if (typeof Ce.TRUSTED_TYPES_POLICY.createScriptURL != 'function') throw Vy('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.')
            ;(S = Ce.TRUSTED_TYPES_POLICY), (w = S.createHTML(''))
          } else S === void 0 && (S = x4e(m, i)), S !== null && typeof w == 'string' && (w = S.createHTML(''))
          Ja && Ja(Ce), (ct = Ce)
        }
      }, '_parseConfig'),
      Tt = _r({}, [...E7, ...S7, ...l4e]),
      Mt = _r({}, [...C7, ...c4e]),
      bt = o(function (Ce) {
        let tt = T(Ce)
        ;(!tt || !tt.tagName) && (tt = { namespaceURI: ve, tagName: 'template' })
        let Ct = l3(Ce.tagName),
          gr = l3(tt.tagName)
        return _e[Ce.namespaceURI]
          ? Ce.namespaceURI === W
            ? tt.namespaceURI === pe
              ? Ct === 'svg'
              : tt.namespaceURI === Te
                ? Ct === 'svg' && (gr === 'annotation-xml' || Ve[gr])
                : !!Tt[Ct]
            : Ce.namespaceURI === Te
              ? tt.namespaceURI === pe
                ? Ct === 'math'
                : tt.namespaceURI === W
                  ? Ct === 'math' && De[gr]
                  : !!Mt[Ct]
              : Ce.namespaceURI === pe
                ? (tt.namespaceURI === W && !De[gr]) || (tt.namespaceURI === Te && !Ve[gr])
                  ? !1
                  : !Mt[Ct] && (qe[Ct] || !Tt[Ct])
                : !!(at === 'application/xhtml+xml' && _e[Ce.namespaceURI])
          : !1
      }, '_checkValidNamespace'),
      ut = o(function (Ce) {
        zy(e.removed, { element: Ce })
        try {
          T(Ce).removeChild(Ce)
        } catch {
          v(Ce)
        }
      }, '_forceRemove'),
      St = o(function (Ce, tt) {
        try {
          zy(e.removed, { attribute: tt.getAttributeNode(Ce), from: tt })
        } catch {
          zy(e.removed, { attribute: null, from: tt })
        }
        if ((tt.removeAttribute(Ce), Ce === 'is'))
          if (se || ae)
            try {
              ut(tt)
            } catch {}
          else
            try {
              tt.setAttribute(Ce, '')
            } catch {}
      }, '_removeAttribute'),
      ft = o(function (Ce) {
        let tt = null,
          Ct = null
        if (Se) Ce = '<remove></remove>' + Ce
        else {
          let yn = Bz(Ce, /^[\r\n\t ]+/)
          Ct = yn && yn[0]
        }
        at === 'application/xhtml+xml' && ve === pe && (Ce = '<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>' + Ce + '</body></html>')
        let gr = S ? S.createHTML(Ce) : Ce
        if (ve === pe)
          try {
            tt = new p().parseFromString(gr, at)
          } catch {}
        if (!tt || !tt.documentElement) {
          tt = E.createDocument(ve, 'template', null)
          try {
            tt.documentElement.innerHTML = Pe ? w : gr
          } catch {}
        }
        let rn = tt.body || tt.documentElement
        return Ce && Ct && rn.insertBefore(r.createTextNode(Ct), rn.childNodes[0] || null), ve === pe ? D.call(tt, le ? 'html' : 'body')[0] : le ? tt.documentElement : rn
      }, '_initDocument'),
      vt = o(function (Ce) {
        return _.call(Ce.ownerDocument || Ce, Ce, h.SHOW_ELEMENT | h.SHOW_COMMENT | h.SHOW_TEXT | h.SHOW_PROCESSING_INSTRUCTION | h.SHOW_CDATA_SECTION, null)
      }, '_createNodeIterator'),
      nt = o(function (Ce) {
        return (
          Ce instanceof d &&
          (typeof Ce.nodeName != 'string' ||
            typeof Ce.textContent != 'string' ||
            typeof Ce.removeChild != 'function' ||
            !(Ce.attributes instanceof f) ||
            typeof Ce.removeAttribute != 'function' ||
            typeof Ce.setAttribute != 'function' ||
            typeof Ce.namespaceURI != 'string' ||
            typeof Ce.insertBefore != 'function' ||
            typeof Ce.hasChildNodes != 'function')
        )
      }, '_isClobbered'),
      pn = o(function (Ce) {
        return typeof l == 'function' && Ce instanceof l
      }, '_isNode')
    function kt(Dt, Ce, tt) {
      s3(Dt, Ct => {
        Ct.call(e, Ce, tt, ct)
      })
    }
    o(kt, '_executeHooks')
    let On = o(function (Ce) {
        let tt = null
        if ((kt(R.beforeSanitizeElements, Ce, null), nt(Ce))) return ut(Ce), !0
        let Ct = Ue(Ce.nodeName)
        if (
          (kt(R.uponSanitizeElement, Ce, { tagName: Ct, allowedTags: $ }),
          (Ce.hasChildNodes() && !pn(Ce.firstElementChild) && Za(/<[/\w!]/g, Ce.innerHTML) && Za(/<[/\w!]/g, Ce.textContent)) ||
            Ce.nodeType === Hy.progressingInstruction ||
            (he && Ce.nodeType === Hy.comment && Za(/<[/\w]/g, Ce.data)))
        )
          return ut(Ce), !0
        if (!$[Ct] || ce[Ct]) {
          if (!ce[Ct] && Mr(Ct) && ((Y.tagNameCheck instanceof RegExp && Za(Y.tagNameCheck, Ct)) || (Y.tagNameCheck instanceof Function && Y.tagNameCheck(Ct)))) return !1
          if (ze && !xe[Ct]) {
            let gr = T(Ce) || Ce.parentNode,
              rn = b(Ce) || Ce.childNodes
            if (rn && gr) {
              let yn = rn.length
              for (let Zr = yn - 1; Zr >= 0; --Zr) {
                let Oi = y(rn[Zr], !0)
                ;(Oi.__removalCount = (Ce.__removalCount || 0) + 1), gr.insertBefore(Oi, x(Ce))
              }
            }
          }
          return ut(Ce), !0
        }
        return (Ce instanceof u && !bt(Ce)) || ((Ct === 'noscript' || Ct === 'noembed' || Ct === 'noframes') && Za(/<\/no(script|embed|frames)/i, Ce.innerHTML))
          ? (ut(Ce), !0)
          : (te &&
              Ce.nodeType === Hy.text &&
              ((tt = Ce.textContent),
              s3([k, L, A], gr => {
                tt = Gy(tt, gr, ' ')
              }),
              Ce.textContent !== tt && (zy(e.removed, { element: Ce.cloneNode() }), (Ce.textContent = tt))),
            kt(R.afterSanitizeElements, Ce, null),
            !1)
      }, '_sanitizeElements'),
      tn = o(function (Ce, tt, Ct) {
        if (ye && (tt === 'id' || tt === 'name') && (Ct in r || Ct in We)) return !1
        if (!(Q && !Z[tt] && Za(I, tt))) {
          if (!(ue && Za(M, tt))) {
            if (!K[tt] || Z[tt]) {
              if (
                !(
                  (Mr(Ce) &&
                    ((Y.tagNameCheck instanceof RegExp && Za(Y.tagNameCheck, Ce)) || (Y.tagNameCheck instanceof Function && Y.tagNameCheck(Ce))) &&
                    ((Y.attributeNameCheck instanceof RegExp && Za(Y.attributeNameCheck, tt)) || (Y.attributeNameCheck instanceof Function && Y.attributeNameCheck(tt)))) ||
                  (tt === 'is' &&
                    Y.allowCustomizedBuiltInElements &&
                    ((Y.tagNameCheck instanceof RegExp && Za(Y.tagNameCheck, Ct)) || (Y.tagNameCheck instanceof Function && Y.tagNameCheck(Ct))))
                )
              )
                return !1
            } else if (!oe[tt]) {
              if (!Za(z, Gy(Ct, B, ''))) {
                if (!((tt === 'src' || tt === 'xlink:href' || tt === 'href') && Ce !== 'script' && i4e(Ct, 'data:') === 0 && de[Ce])) {
                  if (!(j && !Za(P, Gy(Ct, B, '')))) {
                    if (Ct) return !1
                  }
                }
              }
            }
          }
        }
        return !0
      }, '_isValidAttribute'),
      Mr = o(function (Ce) {
        return Ce !== 'annotation-xml' && Bz(Ce, F)
      }, '_isBasicCustomElement'),
      Ir = o(function (Ce) {
        kt(R.beforeSanitizeAttributes, Ce, null)
        let { attributes: tt } = Ce
        if (!tt || nt(Ce)) return
        let Ct = { attrName: '', attrValue: '', keepAttr: !0, allowedAttributes: K, forceKeepAttr: void 0 },
          gr = tt.length
        for (; gr--; ) {
          let rn = tt[gr],
            { name: yn, namespaceURI: Zr, value: Oi } = rn,
            ei = Ue(yn),
            Sn = yn === 'value' ? Oi : a4e(Oi)
          if (
            ((Ct.attrName = ei),
            (Ct.attrValue = Sn),
            (Ct.keepAttr = !0),
            (Ct.forceKeepAttr = void 0),
            kt(R.uponSanitizeAttribute, Ce, Ct),
            (Sn = Ct.attrValue),
            Be && (ei === 'id' || ei === 'name') && (St(yn, Ce), (Sn = He + Sn)),
            he && Za(/((--!?|])>)|<\/(style|title)/i, Sn))
          ) {
            St(yn, Ce)
            continue
          }
          if (Ct.forceKeepAttr || (St(yn, Ce), !Ct.keepAttr)) continue
          if (!ne && Za(/\/>/i, Sn)) {
            St(yn, Ce)
            continue
          }
          te &&
            s3([k, L, A], et => {
              Sn = Gy(Sn, et, ' ')
            })
          let Hr = Ue(Ce.nodeName)
          if (tn(Hr, ei, Sn)) {
            if (S && typeof m == 'object' && typeof m.getAttributeType == 'function' && !Zr)
              switch (m.getAttributeType(Hr, ei)) {
                case 'TrustedHTML': {
                  Sn = S.createHTML(Sn)
                  break
                }
                case 'TrustedScriptURL': {
                  Sn = S.createScriptURL(Sn)
                  break
                }
              }
            try {
              Zr ? Ce.setAttributeNS(Zr, yn, Sn) : Ce.setAttribute(yn, Sn), nt(Ce) ? ut(Ce) : Pz(e.removed)
            } catch {}
          }
        }
        kt(R.afterSanitizeAttributes, Ce, null)
      }, '_sanitizeAttributes'),
      Pn = o(function Dt(Ce) {
        let tt = null,
          Ct = vt(Ce)
        for (kt(R.beforeSanitizeShadowDOM, Ce, null); (tt = Ct.nextNode()); ) kt(R.uponSanitizeShadowNode, tt, null), On(tt), Ir(tt), tt.content instanceof a && Dt(tt.content)
        kt(R.afterSanitizeShadowDOM, Ce, null)
      }, '_sanitizeShadowDOM')
    return (
      (e.sanitize = function (Dt) {
        let Ce = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {},
          tt = null,
          Ct = null,
          gr = null,
          rn = null
        if (((Pe = !Dt), Pe && (Dt = '<!-->'), typeof Dt != 'string' && !pn(Dt)))
          if (typeof Dt.toString == 'function') {
            if (((Dt = Dt.toString()), typeof Dt != 'string')) throw Vy('dirty is not a string, aborting')
          } else throw Vy('toString is not a function')
        if (!e.isSupported) return Dt
        if ((J || Yt(Ce), (e.removed = []), typeof Dt == 'string' && (Le = !1), Le)) {
          if (Dt.nodeName) {
            let Oi = Ue(Dt.nodeName)
            if (!$[Oi] || ce[Oi]) throw Vy('root node is forbidden and cannot be sanitized in-place')
          }
        } else if (Dt instanceof l)
          (tt = ft('<!---->')),
            (Ct = tt.ownerDocument.importNode(Dt, !0)),
            (Ct.nodeType === Hy.element && Ct.nodeName === 'BODY') || Ct.nodeName === 'HTML' ? (tt = Ct) : tt.appendChild(Ct)
        else {
          if (!se && !te && !le && Dt.indexOf('<') === -1) return S && Oe ? S.createHTML(Dt) : Dt
          if (((tt = ft(Dt)), !tt)) return se ? null : Oe ? w : ''
        }
        tt && Se && ut(tt.firstChild)
        let yn = vt(Le ? Dt : tt)
        for (; (gr = yn.nextNode()); ) On(gr), Ir(gr), gr.content instanceof a && Pn(gr.content)
        if (Le) return Dt
        if (se) {
          if (ae) for (rn = C.call(tt.ownerDocument); tt.firstChild; ) rn.appendChild(tt.firstChild)
          else rn = tt
          return (K.shadowroot || K.shadowrootmode) && (rn = O.call(n, rn, !0)), rn
        }
        let Zr = le ? tt.outerHTML : tt.innerHTML
        return (
          le &&
            $['!doctype'] &&
            tt.ownerDocument &&
            tt.ownerDocument.doctype &&
            tt.ownerDocument.doctype.name &&
            Za(Yz, tt.ownerDocument.doctype.name) &&
            (Zr =
              '<!DOCTYPE ' +
              tt.ownerDocument.doctype.name +
              `>
` +
              Zr),
          te &&
            s3([k, L, A], Oi => {
              Zr = Gy(Zr, Oi, ' ')
            }),
          S && Oe ? S.createHTML(Zr) : Zr
        )
      }),
      (e.setConfig = function () {
        let Dt = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}
        Yt(Dt), (J = !0)
      }),
      (e.clearConfig = function () {
        ;(ct = null), (J = !1)
      }),
      (e.isValidAttribute = function (Dt, Ce, tt) {
        ct || Yt({})
        let Ct = Ue(Dt),
          gr = Ue(Ce)
        return tn(Ct, gr, tt)
      }),
      (e.addHook = function (Dt, Ce) {
        typeof Ce == 'function' && zy(R[Dt], Ce)
      }),
      (e.removeHook = function (Dt, Ce) {
        if (Ce !== void 0) {
          let tt = r4e(R[Dt], Ce)
          return tt === -1 ? void 0 : n4e(R[Dt], tt, 1)[0]
        }
        return Pz(R[Dt])
      }),
      (e.removeHooks = function (Dt) {
        R[Dt] = []
      }),
      (e.removeAllHooks = function () {
        R = Uz()
      }),
      e
    )
  }
  var Hz,
    Oz,
    Jbe,
    e4e,
    t4e,
    Ja,
    So,
    Wz,
    _7,
    D7,
    s3,
    r4e,
    Pz,
    zy,
    n4e,
    l3,
    k7,
    Bz,
    Gy,
    i4e,
    a4e,
    hl,
    Za,
    Vy,
    Fz,
    E7,
    S7,
    l4e,
    C7,
    c4e,
    $z,
    zz,
    A7,
    Gz,
    o3,
    u4e,
    h4e,
    f4e,
    d4e,
    p4e,
    qz,
    m4e,
    g4e,
    Yz,
    y4e,
    Vz,
    Hy,
    v4e,
    x4e,
    Uz,
    mh,
    L7 = N(() => {
      'use strict'
      ;({ entries: Hz, setPrototypeOf: Oz, isFrozen: Jbe, getPrototypeOf: e4e, getOwnPropertyDescriptor: t4e } = Object),
        ({ freeze: Ja, seal: So, create: Wz } = Object),
        ({ apply: _7, construct: D7 } = typeof Reflect < 'u' && Reflect)
      Ja ||
        (Ja = o(function (e) {
          return e
        }, 'freeze'))
      So ||
        (So = o(function (e) {
          return e
        }, 'seal'))
      _7 ||
        (_7 = o(function (e, r, n) {
          return e.apply(r, n)
        }, 'apply'))
      D7 ||
        (D7 = o(function (e, r) {
          return new e(...r)
        }, 'construct'))
      ;(s3 = es(Array.prototype.forEach)),
        (r4e = es(Array.prototype.lastIndexOf)),
        (Pz = es(Array.prototype.pop)),
        (zy = es(Array.prototype.push)),
        (n4e = es(Array.prototype.splice)),
        (l3 = es(String.prototype.toLowerCase)),
        (k7 = es(String.prototype.toString)),
        (Bz = es(String.prototype.match)),
        (Gy = es(String.prototype.replace)),
        (i4e = es(String.prototype.indexOf)),
        (a4e = es(String.prototype.trim)),
        (hl = es(Object.prototype.hasOwnProperty)),
        (Za = es(RegExp.prototype.test)),
        (Vy = s4e(TypeError))
      o(es, 'unapply')
      o(s4e, 'unconstruct')
      o(_r, 'addToSet')
      o(o4e, 'cleanArray')
      o(ad, 'clone')
      o(Uy, 'lookupGetter')
      ;(Fz = Ja([
        'a',
        'abbr',
        'acronym',
        'address',
        'area',
        'article',
        'aside',
        'audio',
        'b',
        'bdi',
        'bdo',
        'big',
        'blink',
        'blockquote',
        'body',
        'br',
        'button',
        'canvas',
        'caption',
        'center',
        'cite',
        'code',
        'col',
        'colgroup',
        'content',
        'data',
        'datalist',
        'dd',
        'decorator',
        'del',
        'details',
        'dfn',
        'dialog',
        'dir',
        'div',
        'dl',
        'dt',
        'element',
        'em',
        'fieldset',
        'figcaption',
        'figure',
        'font',
        'footer',
        'form',
        'h1',
        'h2',
        'h3',
        'h4',
        'h5',
        'h6',
        'head',
        'header',
        'hgroup',
        'hr',
        'html',
        'i',
        'img',
        'input',
        'ins',
        'kbd',
        'label',
        'legend',
        'li',
        'main',
        'map',
        'mark',
        'marquee',
        'menu',
        'menuitem',
        'meter',
        'nav',
        'nobr',
        'ol',
        'optgroup',
        'option',
        'output',
        'p',
        'picture',
        'pre',
        'progress',
        'q',
        'rp',
        'rt',
        'ruby',
        's',
        'samp',
        'section',
        'select',
        'shadow',
        'small',
        'source',
        'spacer',
        'span',
        'strike',
        'strong',
        'style',
        'sub',
        'summary',
        'sup',
        'table',
        'tbody',
        'td',
        'template',
        'textarea',
        'tfoot',
        'th',
        'thead',
        'time',
        'tr',
        'track',
        'tt',
        'u',
        'ul',
        'var',
        'video',
        'wbr'
      ])),
        (E7 = Ja([
          'svg',
          'a',
          'altglyph',
          'altglyphdef',
          'altglyphitem',
          'animatecolor',
          'animatemotion',
          'animatetransform',
          'circle',
          'clippath',
          'defs',
          'desc',
          'ellipse',
          'filter',
          'font',
          'g',
          'glyph',
          'glyphref',
          'hkern',
          'image',
          'line',
          'lineargradient',
          'marker',
          'mask',
          'metadata',
          'mpath',
          'path',
          'pattern',
          'polygon',
          'polyline',
          'radialgradient',
          'rect',
          'stop',
          'style',
          'switch',
          'symbol',
          'text',
          'textpath',
          'title',
          'tref',
          'tspan',
          'view',
          'vkern'
        ])),
        (S7 = Ja([
          'feBlend',
          'feColorMatrix',
          'feComponentTransfer',
          'feComposite',
          'feConvolveMatrix',
          'feDiffuseLighting',
          'feDisplacementMap',
          'feDistantLight',
          'feDropShadow',
          'feFlood',
          'feFuncA',
          'feFuncB',
          'feFuncG',
          'feFuncR',
          'feGaussianBlur',
          'feImage',
          'feMerge',
          'feMergeNode',
          'feMorphology',
          'feOffset',
          'fePointLight',
          'feSpecularLighting',
          'feSpotLight',
          'feTile',
          'feTurbulence'
        ])),
        (l4e = Ja([
          'animate',
          'color-profile',
          'cursor',
          'discard',
          'font-face',
          'font-face-format',
          'font-face-name',
          'font-face-src',
          'font-face-uri',
          'foreignobject',
          'hatch',
          'hatchpath',
          'mesh',
          'meshgradient',
          'meshpatch',
          'meshrow',
          'missing-glyph',
          'script',
          'set',
          'solidcolor',
          'unknown',
          'use'
        ])),
        (C7 = Ja([
          'math',
          'menclose',
          'merror',
          'mfenced',
          'mfrac',
          'mglyph',
          'mi',
          'mlabeledtr',
          'mmultiscripts',
          'mn',
          'mo',
          'mover',
          'mpadded',
          'mphantom',
          'mroot',
          'mrow',
          'ms',
          'mspace',
          'msqrt',
          'mstyle',
          'msub',
          'msup',
          'msubsup',
          'mtable',
          'mtd',
          'mtext',
          'mtr',
          'munder',
          'munderover',
          'mprescripts'
        ])),
        (c4e = Ja([
          'maction',
          'maligngroup',
          'malignmark',
          'mlongdiv',
          'mscarries',
          'mscarry',
          'msgroup',
          'mstack',
          'msline',
          'msrow',
          'semantics',
          'annotation',
          'annotation-xml',
          'mprescripts',
          'none'
        ])),
        ($z = Ja(['#text'])),
        (zz = Ja([
          'accept',
          'action',
          'align',
          'alt',
          'autocapitalize',
          'autocomplete',
          'autopictureinpicture',
          'autoplay',
          'background',
          'bgcolor',
          'border',
          'capture',
          'cellpadding',
          'cellspacing',
          'checked',
          'cite',
          'class',
          'clear',
          'color',
          'cols',
          'colspan',
          'controls',
          'controlslist',
          'coords',
          'crossorigin',
          'datetime',
          'decoding',
          'default',
          'dir',
          'disabled',
          'disablepictureinpicture',
          'disableremoteplayback',
          'download',
          'draggable',
          'enctype',
          'enterkeyhint',
          'face',
          'for',
          'headers',
          'height',
          'hidden',
          'high',
          'href',
          'hreflang',
          'id',
          'inputmode',
          'integrity',
          'ismap',
          'kind',
          'label',
          'lang',
          'list',
          'loading',
          'loop',
          'low',
          'max',
          'maxlength',
          'media',
          'method',
          'min',
          'minlength',
          'multiple',
          'muted',
          'name',
          'nonce',
          'noshade',
          'novalidate',
          'nowrap',
          'open',
          'optimum',
          'pattern',
          'placeholder',
          'playsinline',
          'popover',
          'popovertarget',
          'popovertargetaction',
          'poster',
          'preload',
          'pubdate',
          'radiogroup',
          'readonly',
          'rel',
          'required',
          'rev',
          'reversed',
          'role',
          'rows',
          'rowspan',
          'spellcheck',
          'scope',
          'selected',
          'shape',
          'size',
          'sizes',
          'span',
          'srclang',
          'start',
          'src',
          'srcset',
          'step',
          'style',
          'summary',
          'tabindex',
          'title',
          'translate',
          'type',
          'usemap',
          'valign',
          'value',
          'width',
          'wrap',
          'xmlns',
          'slot'
        ])),
        (A7 = Ja([
          'accent-height',
          'accumulate',
          'additive',
          'alignment-baseline',
          'amplitude',
          'ascent',
          'attributename',
          'attributetype',
          'azimuth',
          'basefrequency',
          'baseline-shift',
          'begin',
          'bias',
          'by',
          'class',
          'clip',
          'clippathunits',
          'clip-path',
          'clip-rule',
          'color',
          'color-interpolation',
          'color-interpolation-filters',
          'color-profile',
          'color-rendering',
          'cx',
          'cy',
          'd',
          'dx',
          'dy',
          'diffuseconstant',
          'direction',
          'display',
          'divisor',
          'dur',
          'edgemode',
          'elevation',
          'end',
          'exponent',
          'fill',
          'fill-opacity',
          'fill-rule',
          'filter',
          'filterunits',
          'flood-color',
          'flood-opacity',
          'font-family',
          'font-size',
          'font-size-adjust',
          'font-stretch',
          'font-style',
          'font-variant',
          'font-weight',
          'fx',
          'fy',
          'g1',
          'g2',
          'glyph-name',
          'glyphref',
          'gradientunits',
          'gradienttransform',
          'height',
          'href',
          'id',
          'image-rendering',
          'in',
          'in2',
          'intercept',
          'k',
          'k1',
          'k2',
          'k3',
          'k4',
          'kerning',
          'keypoints',
          'keysplines',
          'keytimes',
          'lang',
          'lengthadjust',
          'letter-spacing',
          'kernelmatrix',
          'kernelunitlength',
          'lighting-color',
          'local',
          'marker-end',
          'marker-mid',
          'marker-start',
          'markerheight',
          'markerunits',
          'markerwidth',
          'maskcontentunits',
          'maskunits',
          'max',
          'mask',
          'media',
          'method',
          'mode',
          'min',
          'name',
          'numoctaves',
          'offset',
          'operator',
          'opacity',
          'order',
          'orient',
          'orientation',
          'origin',
          'overflow',
          'paint-order',
          'path',
          'pathlength',
          'patterncontentunits',
          'patterntransform',
          'patternunits',
          'points',
          'preservealpha',
          'preserveaspectratio',
          'primitiveunits',
          'r',
          'rx',
          'ry',
          'radius',
          'refx',
          'refy',
          'repeatcount',
          'repeatdur',
          'restart',
          'result',
          'rotate',
          'scale',
          'seed',
          'shape-rendering',
          'slope',
          'specularconstant',
          'specularexponent',
          'spreadmethod',
          'startoffset',
          'stddeviation',
          'stitchtiles',
          'stop-color',
          'stop-opacity',
          'stroke-dasharray',
          'stroke-dashoffset',
          'stroke-linecap',
          'stroke-linejoin',
          'stroke-miterlimit',
          'stroke-opacity',
          'stroke',
          'stroke-width',
          'style',
          'surfacescale',
          'systemlanguage',
          'tabindex',
          'tablevalues',
          'targetx',
          'targety',
          'transform',
          'transform-origin',
          'text-anchor',
          'text-decoration',
          'text-rendering',
          'textlength',
          'type',
          'u1',
          'u2',
          'unicode',
          'values',
          'viewbox',
          'visibility',
          'version',
          'vert-adv-y',
          'vert-origin-x',
          'vert-origin-y',
          'width',
          'word-spacing',
          'wrap',
          'writing-mode',
          'xchannelselector',
          'ychannelselector',
          'x',
          'x1',
          'x2',
          'xmlns',
          'y',
          'y1',
          'y2',
          'z',
          'zoomandpan'
        ])),
        (Gz = Ja([
          'accent',
          'accentunder',
          'align',
          'bevelled',
          'close',
          'columnsalign',
          'columnlines',
          'columnspan',
          'denomalign',
          'depth',
          'dir',
          'display',
          'displaystyle',
          'encoding',
          'fence',
          'frame',
          'height',
          'href',
          'id',
          'largeop',
          'length',
          'linethickness',
          'lspace',
          'lquote',
          'mathbackground',
          'mathcolor',
          'mathsize',
          'mathvariant',
          'maxsize',
          'minsize',
          'movablelimits',
          'notation',
          'numalign',
          'open',
          'rowalign',
          'rowlines',
          'rowspacing',
          'rowspan',
          'rspace',
          'rquote',
          'scriptlevel',
          'scriptminsize',
          'scriptsizemultiplier',
          'selection',
          'separator',
          'separators',
          'stretchy',
          'subscriptshift',
          'supscriptshift',
          'symmetric',
          'voffset',
          'width',
          'xmlns'
        ])),
        (o3 = Ja(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink'])),
        (u4e = So(/\{\{[\w\W]*|[\w\W]*\}\}/gm)),
        (h4e = So(/<%[\w\W]*|[\w\W]*%>/gm)),
        (f4e = So(/\$\{[\w\W]*/gm)),
        (d4e = So(/^data-[\-\w.\u00B7-\uFFFF]+$/)),
        (p4e = So(/^aria-[\-\w]+$/)),
        (qz = So(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i)),
        (m4e = So(/^(?:\w+script|data):/i)),
        (g4e = So(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g)),
        (Yz = So(/^html$/i)),
        (y4e = So(/^[a-z][.\w]*(-[.\w]+)+$/i)),
        (Vz = Object.freeze({
          __proto__: null,
          ARIA_ATTR: p4e,
          ATTR_WHITESPACE: g4e,
          CUSTOM_ELEMENT: y4e,
          DATA_ATTR: d4e,
          DOCTYPE_NAME: Yz,
          ERB_EXPR: h4e,
          IS_ALLOWED_URI: qz,
          IS_SCRIPT_OR_DATA: m4e,
          MUSTACHE_EXPR: u4e,
          TMPLIT_EXPR: f4e
        })),
        (Hy = {
          element: 1,
          attribute: 2,
          text: 3,
          cdataSection: 4,
          entityReference: 5,
          entityNode: 6,
          progressingInstruction: 7,
          comment: 8,
          document: 9,
          documentType: 10,
          documentFragment: 11,
          notation: 12
        }),
        (v4e = o(function () {
          return typeof window > 'u' ? null : window
        }, 'getGlobal')),
        (x4e = o(function (e, r) {
          if (typeof e != 'object' || typeof e.createPolicy != 'function') return null
          let n = null,
            i = 'data-tt-policy-suffix'
          r && r.hasAttribute(i) && (n = r.getAttribute(i))
          let a = 'dompurify' + (n ? '#' + n : '')
          try {
            return e.createPolicy(a, {
              createHTML(s) {
                return s
              },
              createScriptURL(s) {
                return s
              }
            })
          } catch {
            return console.warn('TrustedTypes policy ' + a + ' could not be created.'), null
          }
        }, '_createTrustedTypesPolicy')),
        (Uz = o(function () {
          return {
            afterSanitizeAttributes: [],
            afterSanitizeElements: [],
            afterSanitizeShadowDOM: [],
            beforeSanitizeAttributes: [],
            beforeSanitizeElements: [],
            beforeSanitizeShadowDOM: [],
            uponSanitizeAttribute: [],
            uponSanitizeElement: [],
            uponSanitizeShadowNode: []
          }
        }, '_createHooksMap'))
      o(Xz, 'createDOMPurify')
      mh = Xz()
    })
  var CV = {}
  ur(CV, {
    ParseError: () => pt,
    SETTINGS_SCHEMA: () => Xy,
    __defineFunction: () => Nt,
    __defineMacro: () => fe,
    __defineSymbol: () => G,
    __domTree: () => SV,
    __parse: () => TV,
    __renderToDomTree: () => O3,
    __renderToHTMLTree: () => kV,
    __setFontMetrics: () => _G,
    default: () => u5e,
    render: () => xA,
    renderToString: () => bV,
    version: () => EV
  })
  function C4e(t) {
    return String(t).replace(S4e, e => E4e[e])
  }
  function L4e(t) {
    if (t.default) return t.default
    var e = t.type,
      r = Array.isArray(e) ? e[0] : e
    if (typeof r != 'string') return r.enum[0]
    switch (r) {
      case 'boolean':
        return !1
      case 'string':
        return ''
      case 'number':
        return 0
      case 'object':
        return {}
    }
  }
  function B4e(t) {
    for (var e = 0; e < H7.length; e++)
      for (var r = H7[e], n = 0; n < r.blocks.length; n++) {
        var i = r.blocks[n]
        if (t >= i[0] && t <= i[1]) return r.name
      }
    return null
  }
  function AG(t) {
    for (var e = 0; e < b3.length; e += 2) if (t >= b3[e] && t <= b3[e + 1]) return !0
    return !1
  }
  function _G(t, e) {
    Jl[t] = e
  }
  function nA(t, e, r) {
    if (!Jl[e]) throw new Error('Font metrics not found for font: ' + e + '.')
    var n = t.charCodeAt(0),
      i = Jl[e][n]
    if ((!i && t[0] in Kz && ((n = Kz[t[0]].charCodeAt(0)), (i = Jl[e][n])), !i && r === 'text' && AG(n) && (i = Jl[e][77]), i))
      return { depth: i[0], height: i[1], italic: i[2], skew: i[3], width: i[4] }
  }
  function X4e(t) {
    var e
    if ((t >= 5 ? (e = 0) : t >= 3 ? (e = 1) : (e = 2), !R7[e])) {
      var r = (R7[e] = { cssEmPerMu: c3.quad[e] / 18 })
      for (var n in c3) c3.hasOwnProperty(n) && (r[n] = c3[n][e])
    }
    return R7[e]
  }
  function Jz(t) {
    if (t instanceof As) return t
    throw new Error('Expected symbolNode but got ' + String(t) + '.')
  }
  function J4e(t) {
    if (t instanceof ld) return t
    throw new Error('Expected span<HtmlDomNode> but got ' + String(t) + '.')
  }
  function G(t, e, r, n, i, a) {
    ;(An[t][i] = { font: e, group: r, replace: n }), a && n && (An[t][n] = An[t][i])
  }
  function Nt(t) {
    for (
      var { type: e, names: r, props: n, handler: i, htmlBuilder: a, mathmlBuilder: s } = t,
        l = {
          type: e,
          numArgs: n.numArgs,
          argTypes: n.argTypes,
          allowedInArgument: !!n.allowedInArgument,
          allowedInText: !!n.allowedInText,
          allowedInMath: n.allowedInMath === void 0 ? !0 : n.allowedInMath,
          numOptionalArgs: n.numOptionalArgs || 0,
          infix: !!n.infix,
          primitive: !!n.primitive,
          handler: i
        },
        u = 0;
      u < r.length;
      ++u
    )
      FG[r[u]] = l
    e && (a && (E3[e] = a), s && (S3[e] = s))
  }
  function cd(t) {
    var { type: e, htmlBuilder: r, mathmlBuilder: n } = t
    Nt({
      type: e,
      names: [],
      props: { numArgs: 0 },
      handler() {
        throw new Error('Should never be called.')
      },
      htmlBuilder: r,
      mathmlBuilder: n
    })
  }
  function g3(t, e) {
    var r = fu(['base'], t, e),
      n = fu(['strut'])
    return (n.style.height = Et(r.height + r.depth)), r.depth && (n.style.verticalAlign = Et(-r.depth)), r.children.unshift(n), r
  }
  function j7(t, e) {
    var r = null
    t.length === 1 && t[0].type === 'tag' && ((r = t[0].tag), (t = t[0].body))
    var n = $i(t, e, 'root'),
      i
    n.length === 2 && n[1].hasClass('tag') && (i = n.pop())
    for (var a = [], s = [], l = 0; l < n.length; l++)
      if ((s.push(n[l]), n[l].hasClass('mbin') || n[l].hasClass('mrel') || n[l].hasClass('allowbreak'))) {
        for (var u = !1; l < n.length - 1 && n[l + 1].hasClass('mspace') && !n[l + 1].hasClass('newline'); ) l++, s.push(n[l]), n[l].hasClass('nobreak') && (u = !0)
        u || (a.push(g3(s, e)), (s = []))
      } else n[l].hasClass('newline') && (s.pop(), s.length > 0 && (a.push(g3(s, e)), (s = [])), a.push(n[l]))
    s.length > 0 && a.push(g3(s, e))
    var h
    r ? ((h = g3($i(r, e, !0))), (h.classes = ['tag']), a.push(h)) : i && a.push(i)
    var f = fu(['katex-html'], a)
    if ((f.setAttribute('aria-hidden', 'true'), h)) {
      var d = h.children[0]
      ;(d.style.height = Et(f.height + f.depth)), f.depth && (d.style.verticalAlign = Et(-f.depth))
    }
    return f
  }
  function zG(t) {
    return new od(t)
  }
  function I7(t) {
    if (!t) return !1
    if (t.type === 'mi' && t.children.length === 1) {
      var e = t.children[0]
      return e instanceof Ao && e.text === '.'
    } else if (t.type === 'mo' && t.children.length === 1 && t.getAttribute('separator') === 'true' && t.getAttribute('lspace') === '0em' && t.getAttribute('rspace') === '0em') {
      var r = t.children[0]
      return r instanceof Ao && r.text === ','
    } else return !1
  }
  function iG(t, e, r, n, i) {
    var a = _s(t, r),
      s
    a.length === 1 && a[0] instanceof ts && Jt.contains(['mrow', 'mtable'], a[0].type) ? (s = a[0]) : (s = new dt.MathNode('mrow', a))
    var l = new dt.MathNode('annotation', [new dt.TextNode(e)])
    l.setAttribute('encoding', 'application/x-tex')
    var u = new dt.MathNode('semantics', [s, l]),
      h = new dt.MathNode('math', [u])
    h.setAttribute('xmlns', 'http://www.w3.org/1998/Math/MathML'), n && h.setAttribute('display', 'block')
    var f = i ? 'katex' : 'katex-mathml'
    return Fe.makeSpan([f], [h])
  }
  function xr(t, e) {
    if (!t || t.type !== e) throw new Error('Expected node of type ' + e + ', but got ' + (t ? 'node of type ' + t.type : String(t)))
    return t
  }
  function oA(t) {
    var e = R3(t)
    if (!e) throw new Error('Expected node of symbol group type, but got ' + (t ? 'node of type ' + t.type : String(t)))
    return e
  }
  function R3(t) {
    return t && (t.type === 'atom' || t3e.hasOwnProperty(t.type)) ? t : null
  }
  function HG(t, e) {
    var r = $i(t.body, e, !0)
    return R3e([t.mclass], r, e)
  }
  function WG(t, e) {
    var r,
      n = _s(t.body, e)
    return (
      t.mclass === 'minner'
        ? (r = new dt.MathNode('mpadded', n))
        : t.mclass === 'mord'
          ? t.isCharacterBox
            ? ((r = n[0]), (r.type = 'mi'))
            : (r = new dt.MathNode('mi', n))
          : (t.isCharacterBox ? ((r = n[0]), (r.type = 'mo')) : (r = new dt.MathNode('mo', n)),
            t.mclass === 'mbin'
              ? ((r.attributes.lspace = '0.22em'), (r.attributes.rspace = '0.22em'))
              : t.mclass === 'mpunct'
                ? ((r.attributes.lspace = '0em'), (r.attributes.rspace = '0.17em'))
                : t.mclass === 'mopen' || t.mclass === 'mclose'
                  ? ((r.attributes.lspace = '0em'), (r.attributes.rspace = '0em'))
                  : t.mclass === 'minner' && ((r.attributes.lspace = '0.0556em'), (r.attributes.width = '+0.1111em'))),
      r
    )
  }
  function I3e(t, e, r) {
    var n = N3e[t]
    switch (n) {
      case '\\\\cdrightarrow':
      case '\\\\cdleftarrow':
        return r.callFunction(n, [e[0]], [e[1]])
      case '\\uparrow':
      case '\\downarrow': {
        var i = r.callFunction('\\\\cdleft', [e[0]], []),
          a = { type: 'atom', text: n, mode: 'math', family: 'rel' },
          s = r.callFunction('\\Big', [a], []),
          l = r.callFunction('\\\\cdright', [e[1]], []),
          u = { type: 'ordgroup', mode: 'math', body: [i, s, l] }
        return r.callFunction('\\\\cdparent', [u], [])
      }
      case '\\\\cdlongequal':
        return r.callFunction('\\\\cdlongequal', [], [])
      case '\\Vert': {
        var h = { type: 'textord', text: '\\Vert', mode: 'math' }
        return r.callFunction('\\Big', [h], [])
      }
      default:
        return { type: 'textord', text: ' ', mode: 'math' }
    }
  }
  function O3e(t) {
    var e = []
    for (t.gullet.beginGroup(), t.gullet.macros.set('\\cr', '\\\\\\relax'), t.gullet.beginGroup(); ; ) {
      e.push(t.parseExpression(!1, '\\\\')), t.gullet.endGroup(), t.gullet.beginGroup()
      var r = t.fetch().text
      if (r === '&' || r === '\\\\') t.consume()
      else if (r === '\\end') {
        e[e.length - 1].length === 0 && e.pop()
        break
      } else throw new pt('Expected \\\\ or \\cr or \\end', t.nextToken)
    }
    for (var n = [], i = [n], a = 0; a < e.length; a++) {
      for (var s = e[a], l = aG(), u = 0; u < s.length; u++)
        if (!sG(s[u])) l.body.push(s[u])
        else {
          n.push(l), (u += 1)
          var h = oA(s[u]).text,
            f = new Array(2)
          if (((f[0] = { type: 'ordgroup', mode: 'math', body: [] }), (f[1] = { type: 'ordgroup', mode: 'math', body: [] }), !('=|.'.indexOf(h) > -1)))
            if ('<>AV'.indexOf(h) > -1)
              for (var d = 0; d < 2; d++) {
                for (var p = !0, m = u + 1; m < s.length; m++) {
                  if (M3e(s[m], h)) {
                    ;(p = !1), (u = m)
                    break
                  }
                  if (sG(s[m])) throw new pt('Missing a ' + h + ' character to complete a CD arrow.', s[m])
                  f[d].body.push(s[m])
                }
                if (p) throw new pt('Missing a ' + h + ' character to complete a CD arrow.', s[u])
              }
            else throw new pt('Expected one of "<>AV=|." after @', s[u])
          var g = I3e(h, f, t),
            y = { type: 'styling', body: [g], mode: 'math', style: 'display' }
          n.push(y), (l = aG())
        }
      a % 2 === 0 ? n.push(l) : n.shift(), (n = []), i.push(n)
    }
    t.gullet.endGroup(), t.gullet.endGroup()
    var v = new Array(i[0].length).fill({ type: 'align', align: 'c', pregap: 0.25, postgap: 0.25 })
    return {
      type: 'array',
      mode: 'math',
      body: i,
      arraystretch: 1,
      addJot: !0,
      rowGaps: [null],
      cols: v,
      colSeparationType: 'CD',
      hLinesBeforeRow: new Array(i.length + 1).fill([])
    }
  }
  function M3(t, e) {
    var r = R3(t)
    if (r && Jt.contains(X3e, r.text)) return r
    throw r ? new pt("Invalid delimiter '" + r.text + "' after '" + e.funcName + "'", t) : new pt("Invalid delimiter type '" + t.type + "'", t)
  }
  function lG(t) {
    if (!t.body) throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")
  }
  function tc(t) {
    for (
      var { type: e, names: r, props: n, handler: i, htmlBuilder: a, mathmlBuilder: s } = t,
        l = { type: e, numArgs: n.numArgs || 0, allowedInText: !1, numOptionalArgs: 0, handler: i },
        u = 0;
      u < r.length;
      ++u
    )
      iV[r[u]] = l
    a && (E3[e] = a), s && (S3[e] = s)
  }
  function fe(t, e) {
    aV[t] = e
  }
  function cG(t) {
    var e = []
    t.consumeSpaces()
    var r = t.fetch().text
    for (r === '\\relax' && (t.consume(), t.consumeSpaces(), (r = t.fetch().text)); r === '\\hline' || r === '\\hdashline'; )
      t.consume(), e.push(r === '\\hdashline'), t.consumeSpaces(), (r = t.fetch().text)
    return e
  }
  function fA(t) {
    if (t.indexOf('ed') === -1) return t.indexOf('*') === -1
  }
  function bh(t, e, r) {
    var { hskipBeforeAndAfter: n, addJot: i, cols: a, arraystretch: s, colSeparationType: l, autoTag: u, singleRow: h, emptySingleRow: f, maxNumCols: d, leqno: p } = e
    if ((t.gullet.beginGroup(), h || t.gullet.macros.set('\\cr', '\\\\\\relax'), !s)) {
      var m = t.gullet.expandMacroAsText('\\arraystretch')
      if (m == null) s = 1
      else if (((s = parseFloat(m)), !s || s < 0)) throw new pt('Invalid \\arraystretch: ' + m)
    }
    t.gullet.beginGroup()
    var g = [],
      y = [g],
      v = [],
      x = [],
      b = u != null ? [] : void 0
    function T() {
      u && t.gullet.macros.set('\\@eqnsw', '1', !0)
    }
    o(T, 'beginRow')
    function S() {
      b &&
        (t.gullet.macros.get('\\df@tag')
          ? (b.push(t.subparse([new _o('\\df@tag')])), t.gullet.macros.set('\\df@tag', void 0, !0))
          : b.push(!!u && t.gullet.macros.get('\\@eqnsw') === '1'))
    }
    for (o(S, 'endRow'), T(), x.push(cG(t)); ; ) {
      var w = t.parseExpression(!1, h ? '\\end' : '\\\\')
      t.gullet.endGroup(), t.gullet.beginGroup(), (w = { type: 'ordgroup', mode: t.mode, body: w }), r && (w = { type: 'styling', mode: t.mode, style: r, body: [w] }), g.push(w)
      var E = t.fetch().text
      if (E === '&') {
        if (d && g.length === d) {
          if (h || l) throw new pt('Too many tab characters: &', t.nextToken)
          t.settings.reportNonstrict('textEnv', 'Too few columns specified in the {array} column argument.')
        }
        t.consume()
      } else if (E === '\\end') {
        S(), g.length === 1 && w.type === 'styling' && w.body[0].body.length === 0 && (y.length > 1 || !f) && y.pop(), x.length < y.length + 1 && x.push([])
        break
      } else if (E === '\\\\') {
        t.consume()
        var _ = void 0
        t.gullet.future().text !== ' ' && (_ = t.parseSizeGroup(!0)), v.push(_ ? _.value : null), S(), x.push(cG(t)), (g = []), y.push(g), T()
      } else throw new pt('Expected & or \\\\ or \\cr or \\end', t.nextToken)
    }
    return (
      t.gullet.endGroup(),
      t.gullet.endGroup(),
      { type: 'array', mode: t.mode, addJot: i, arraystretch: s, body: y, cols: a, rowGaps: v, hskipBeforeAndAfter: n, hLinesBeforeRow: x, colSeparationType: l, tags: b, leqno: p }
    )
  }
  function dA(t) {
    return t.slice(0, 1) === 'd' ? 'display' : 'text'
  }
  function pV(t, e, r) {
    for (var n = $i(t, e, !1), i = e.sizeMultiplier / r.sizeMultiplier, a = 0; a < n.length; a++) {
      var s = n[a].classes.indexOf('sizing')
      s < 0 ? Array.prototype.push.apply(n[a].classes, e.sizingClasses(r)) : n[a].classes[s + 1] === 'reset-size' + e.size && (n[a].classes[s + 1] = 'reset-size' + r.size),
        (n[a].height *= i),
        (n[a].depth *= i)
    }
    return Fe.makeFragment(n)
  }
  var Qs,
    _o,
    pt,
    b4e,
    T4e,
    w4e,
    k4e,
    E4e,
    S4e,
    CG,
    A4e,
    _4e,
    D4e,
    Jt,
    Xy,
    Ky,
    Ql,
    rA,
    T3,
    w0,
    uu,
    Qy,
    Co,
    k0,
    rs,
    Zl,
    R4e,
    N4e,
    M4e,
    I4e,
    O4e,
    P4e,
    nr,
    H7,
    b3,
    T0,
    F4e,
    $4e,
    z4e,
    G4e,
    V4e,
    U4e,
    H4e,
    W4e,
    q4e,
    jz,
    Y4e,
    od,
    Jl,
    c3,
    Kz,
    R7,
    j4e,
    Qz,
    Zz,
    w3,
    W7,
    K4e,
    DG,
    ni,
    Et,
    vh,
    LG,
    RG,
    Q4e,
    NG,
    ld,
    Zy,
    q7,
    Z4e,
    As,
    dl,
    ec,
    Jy,
    e3e,
    t3e,
    An,
    H,
    it,
    re,
    ke,
    Hn,
    It,
    ns,
    E0,
    rr,
    Ci,
    Zs,
    D3,
    Ee,
    pu,
    Re,
    MG,
    eG,
    N7,
    u3,
    tG,
    M7,
    h3,
    k3,
    Wy,
    f3,
    lr,
    ti,
    Da,
    lu,
    gh,
    Y7,
    qy,
    d3,
    p3,
    rG,
    r3e,
    L3,
    fl,
    n3e,
    i3e,
    a3e,
    s3e,
    o3e,
    iA,
    Cs,
    IG,
    l3e,
    c3e,
    OG,
    u3e,
    h3e,
    f3e,
    d3e,
    m3,
    PG,
    BG,
    p3e,
    Fe,
    ri,
    sd,
    cu,
    m3e,
    g3e,
    FG,
    E3,
    S3,
    C3,
    gi,
    fu,
    y3e,
    v3e,
    x3e,
    b3e,
    $i,
    nG,
    $G,
    T3e,
    X7,
    ev,
    $r,
    ts,
    Ao,
    K7,
    dt,
    Do,
    aA,
    sA,
    _s,
    xh,
    vn,
    GG,
    VG,
    w3e,
    k3e,
    E3e,
    S3e,
    C3e,
    A3e,
    _3e,
    D3e,
    du,
    lA,
    UG,
    L3e,
    y3,
    R3e,
    N3,
    N3e,
    aG,
    sG,
    M3e,
    qG,
    YG,
    Q7,
    XG,
    P3e,
    jG,
    Yy,
    cA,
    KG,
    B3e,
    F3e,
    QG,
    O7,
    P7,
    Z7,
    v3,
    $3e,
    z3e,
    ZG,
    B7,
    F7,
    $7,
    G3e,
    JG,
    V3e,
    eV,
    jy,
    U3e,
    H3e,
    W3e,
    tV,
    q3e,
    rV,
    nV,
    Y3e,
    hu,
    oG,
    X3e,
    uA,
    hA,
    iV,
    aV,
    I3,
    rc,
    j3e,
    nc,
    sV,
    uG,
    oV,
    lV,
    hG,
    cV,
    pA,
    mA,
    fG,
    dG,
    uV,
    K3e,
    z7,
    pG,
    hV,
    fV,
    S0,
    tv,
    Q3e,
    Z3e,
    dV,
    J3e,
    mG,
    e5e,
    gG,
    t5e,
    mV,
    G7,
    V7,
    yG,
    vG,
    xG,
    r5e,
    bG,
    TG,
    yh,
    gV,
    n5e,
    i5e,
    a5e,
    s5e,
    J7,
    o5e,
    l5e,
    A3,
    eA,
    c5e,
    wG,
    gA,
    kG,
    yA,
    yV,
    vV,
    xV,
    tA,
    EG,
    x3,
    U7,
    SG,
    _3,
    vA,
    xA,
    bV,
    TV,
    wV,
    O3,
    kV,
    EV,
    SV,
    u5e,
    AV = N(() => {
      'use strict'
      ;(Qs = class t {
        static {
          o(this, 'SourceLocation')
        }
        constructor(e, r, n) {
          ;(this.lexer = void 0), (this.start = void 0), (this.end = void 0), (this.lexer = e), (this.start = r), (this.end = n)
        }
        static range(e, r) {
          return r ? (!e || !e.loc || !r.loc || e.loc.lexer !== r.loc.lexer ? null : new t(e.loc.lexer, e.loc.start, r.loc.end)) : e && e.loc
        }
      }),
        (_o = class t {
          static {
            o(this, 'Token')
          }
          constructor(e, r) {
            ;(this.text = void 0), (this.loc = void 0), (this.noexpand = void 0), (this.treatAsRelax = void 0), (this.text = e), (this.loc = r)
          }
          range(e, r) {
            return new t(r, Qs.range(this, e))
          }
        }),
        (pt = class t {
          static {
            o(this, 'ParseError')
          }
          constructor(e, r) {
            ;(this.name = void 0), (this.position = void 0), (this.length = void 0), (this.rawMessage = void 0)
            var n = 'KaTeX parse error: ' + e,
              i,
              a,
              s = r && r.loc
            if (s && s.start <= s.end) {
              var l = s.lexer.input
              ;(i = s.start), (a = s.end), i === l.length ? (n += ' at end of input: ') : (n += ' at position ' + (i + 1) + ': ')
              var u = l.slice(i, a).replace(/[^]/g, '$&\u0332'),
                h
              i > 15 ? (h = '\u2026' + l.slice(i - 15, i)) : (h = l.slice(0, i))
              var f
              a + 15 < l.length ? (f = l.slice(a, a + 15) + '\u2026') : (f = l.slice(a)), (n += h + u + f)
            }
            var d = new Error(n)
            return (d.name = 'ParseError'), (d.__proto__ = t.prototype), (d.position = i), i != null && a != null && (d.length = a - i), (d.rawMessage = e), d
          }
        })
      pt.prototype.__proto__ = Error.prototype
      ;(b4e = o(function (e, r) {
        return e.indexOf(r) !== -1
      }, 'contains')),
        (T4e = o(function (e, r) {
          return e === void 0 ? r : e
        }, 'deflt')),
        (w4e = /([A-Z])/g),
        (k4e = o(function (e) {
          return e.replace(w4e, '-$1').toLowerCase()
        }, 'hyphenate')),
        (E4e = { '&': '&amp;', '>': '&gt;', '<': '&lt;', '"': '&quot;', "'": '&#x27;' }),
        (S4e = /[&><"']/g)
      o(C4e, 'escape')
      ;(CG = o(function t(e) {
        return e.type === 'ordgroup' || e.type === 'color' ? (e.body.length === 1 ? t(e.body[0]) : e) : e.type === 'font' ? t(e.body) : e
      }, 'getBaseElem')),
        (A4e = o(function (e) {
          var r = CG(e)
          return r.type === 'mathord' || r.type === 'textord' || r.type === 'atom'
        }, 'isCharacterBox')),
        (_4e = o(function (e) {
          if (!e) throw new Error('Expected non-null, but got ' + String(e))
          return e
        }, 'assert')),
        (D4e = o(function (e) {
          var r = /^[\x00-\x20]*([^\\/#?]*?)(:|&#0*58|&#x0*3a|&colon)/i.exec(e)
          return r ? (r[2] !== ':' || !/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(r[1]) ? null : r[1].toLowerCase()) : '_relative'
        }, 'protocolFromUrl')),
        (Jt = { contains: b4e, deflt: T4e, escape: C4e, hyphenate: k4e, getBaseElem: CG, isCharacterBox: A4e, protocolFromUrl: D4e }),
        (Xy = {
          displayMode: {
            type: 'boolean',
            description:
              'Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.',
            cli: '-d, --display-mode'
          },
          output: { type: { enum: ['htmlAndMathml', 'html', 'mathml'] }, description: 'Determines the markup language of the output.', cli: '-F, --format <type>' },
          leqno: { type: 'boolean', description: 'Render display math in leqno style (left-justified tags).' },
          fleqn: { type: 'boolean', description: 'Render display math flush left.' },
          throwOnError: {
            type: 'boolean',
            default: !0,
            cli: '-t, --no-throw-on-error',
            cliDescription: 'Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error.'
          },
          errorColor: {
            type: 'string',
            default: '#cc0000',
            cli: '-c, --error-color <color>',
            cliDescription: "A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",
            cliProcessor: o(t => '#' + t, 'cliProcessor')
          },
          macros: {
            type: 'object',
            cli: '-m, --macro <def>',
            cliDescription: "Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",
            cliDefault: [],
            cliProcessor: o((t, e) => (e.push(t), e), 'cliProcessor')
          },
          minRuleThickness: {
            type: 'number',
            description:
              'Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.',
            processor: o(t => Math.max(0, t), 'processor'),
            cli: '--min-rule-thickness <size>',
            cliProcessor: parseFloat
          },
          colorIsTextColor: {
            type: 'boolean',
            description: "Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",
            cli: '-b, --color-is-text-color'
          },
          strict: {
            type: [{ enum: ['warn', 'ignore', 'error'] }, 'boolean', 'function'],
            description: 'Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.',
            cli: '-S, --strict',
            cliDefault: !1
          },
          trust: { type: ['boolean', 'function'], description: 'Trust the input, enabling all HTML features such as \\url.', cli: '-T, --trust' },
          maxSize: {
            type: 'number',
            default: 1 / 0,
            description:
              'If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large',
            processor: o(t => Math.max(0, t), 'processor'),
            cli: '-s, --max-size <n>',
            cliProcessor: parseInt
          },
          maxExpand: {
            type: 'number',
            default: 1e3,
            description:
              'Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.',
            processor: o(t => Math.max(0, t), 'processor'),
            cli: '-e, --max-expand <n>',
            cliProcessor: o(t => (t === 'Infinity' ? 1 / 0 : parseInt(t)), 'cliProcessor')
          },
          globalGroup: { type: 'boolean', cli: !1 }
        })
      o(L4e, 'getDefaultValue')
      ;(Ky = class {
        static {
          o(this, 'Settings')
        }
        constructor(e) {
          ;(this.displayMode = void 0),
            (this.output = void 0),
            (this.leqno = void 0),
            (this.fleqn = void 0),
            (this.throwOnError = void 0),
            (this.errorColor = void 0),
            (this.macros = void 0),
            (this.minRuleThickness = void 0),
            (this.colorIsTextColor = void 0),
            (this.strict = void 0),
            (this.trust = void 0),
            (this.maxSize = void 0),
            (this.maxExpand = void 0),
            (this.globalGroup = void 0),
            (e = e || {})
          for (var r in Xy)
            if (Xy.hasOwnProperty(r)) {
              var n = Xy[r]
              this[r] = e[r] !== void 0 ? (n.processor ? n.processor(e[r]) : e[r]) : L4e(n)
            }
        }
        reportNonstrict(e, r, n) {
          var i = this.strict
          if ((typeof i == 'function' && (i = i(e, r, n)), !(!i || i === 'ignore'))) {
            if (i === !0 || i === 'error') throw new pt("LaTeX-incompatible input and strict mode is set to 'error': " + (r + ' [' + e + ']'), n)
            i === 'warn'
              ? typeof console < 'u' && console.warn("LaTeX-incompatible input and strict mode is set to 'warn': " + (r + ' [' + e + ']'))
              : typeof console < 'u' && console.warn('LaTeX-incompatible input and strict mode is set to ' + ("unrecognized '" + i + "': " + r + ' [' + e + ']'))
          }
        }
        useStrictBehavior(e, r, n) {
          var i = this.strict
          if (typeof i == 'function')
            try {
              i = i(e, r, n)
            } catch {
              i = 'error'
            }
          return !i || i === 'ignore'
            ? !1
            : i === !0 || i === 'error'
              ? !0
              : i === 'warn'
                ? (typeof console < 'u' && console.warn("LaTeX-incompatible input and strict mode is set to 'warn': " + (r + ' [' + e + ']')), !1)
                : (typeof console < 'u' && console.warn('LaTeX-incompatible input and strict mode is set to ' + ("unrecognized '" + i + "': " + r + ' [' + e + ']')), !1)
        }
        isTrusted(e) {
          if (e.url && !e.protocol) {
            var r = Jt.protocolFromUrl(e.url)
            if (r == null) return !1
            e.protocol = r
          }
          var n = typeof this.trust == 'function' ? this.trust(e) : this.trust
          return !!n
        }
      }),
        (Ql = class {
          static {
            o(this, 'Style')
          }
          constructor(e, r, n) {
            ;(this.id = void 0), (this.size = void 0), (this.cramped = void 0), (this.id = e), (this.size = r), (this.cramped = n)
          }
          sup() {
            return Zl[R4e[this.id]]
          }
          sub() {
            return Zl[N4e[this.id]]
          }
          fracNum() {
            return Zl[M4e[this.id]]
          }
          fracDen() {
            return Zl[I4e[this.id]]
          }
          cramp() {
            return Zl[O4e[this.id]]
          }
          text() {
            return Zl[P4e[this.id]]
          }
          isTight() {
            return this.size >= 2
          }
        }),
        (rA = 0),
        (T3 = 1),
        (w0 = 2),
        (uu = 3),
        (Qy = 4),
        (Co = 5),
        (k0 = 6),
        (rs = 7),
        (Zl = [new Ql(rA, 0, !1), new Ql(T3, 0, !0), new Ql(w0, 1, !1), new Ql(uu, 1, !0), new Ql(Qy, 2, !1), new Ql(Co, 2, !0), new Ql(k0, 3, !1), new Ql(rs, 3, !0)]),
        (R4e = [Qy, Co, Qy, Co, k0, rs, k0, rs]),
        (N4e = [Co, Co, Co, Co, rs, rs, rs, rs]),
        (M4e = [w0, uu, Qy, Co, k0, rs, k0, rs]),
        (I4e = [uu, uu, Co, Co, rs, rs, rs, rs]),
        (O4e = [T3, T3, uu, uu, Co, Co, rs, rs]),
        (P4e = [rA, T3, w0, uu, w0, uu, w0, uu]),
        (nr = { DISPLAY: Zl[rA], TEXT: Zl[w0], SCRIPT: Zl[Qy], SCRIPTSCRIPT: Zl[k0] }),
        (H7 = [
          {
            name: 'latin',
            blocks: [
              [256, 591],
              [768, 879]
            ]
          },
          { name: 'cyrillic', blocks: [[1024, 1279]] },
          { name: 'armenian', blocks: [[1328, 1423]] },
          { name: 'brahmic', blocks: [[2304, 4255]] },
          { name: 'georgian', blocks: [[4256, 4351]] },
          {
            name: 'cjk',
            blocks: [
              [12288, 12543],
              [19968, 40879],
              [65280, 65376]
            ]
          },
          { name: 'hangul', blocks: [[44032, 55215]] }
        ])
      o(B4e, 'scriptFromCodepoint')
      b3 = []
      H7.forEach(t => t.blocks.forEach(e => b3.push(...e)))
      o(AG, 'supportedCodepoint')
      ;(T0 = 80),
        (F4e = o(function (e, r) {
          return (
            'M95,' +
            (622 + e + r) +
            `
c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14
c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54
c44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10
s173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429
c69,-144,104.5,-217.7,106.5,-221
l` +
            e / 2.075 +
            ' -' +
            e +
            `
c5.3,-9.3,12,-14,20,-14
H400000v` +
            (40 + e) +
            `H845.2724
s-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7
c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z
M` +
            (834 + e) +
            ' ' +
            r +
            'h400000v' +
            (40 + e) +
            'h-400000z'
          )
        }, 'sqrtMain')),
        ($4e = o(function (e, r) {
          return (
            'M263,' +
            (601 + e + r) +
            `c0.7,0,18,39.7,52,119
c34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120
c340,-704.7,510.7,-1060.3,512,-1067
l` +
            e / 2.084 +
            ' -' +
            e +
            `
c4.7,-7.3,11,-11,19,-11
H40000v` +
            (40 + e) +
            `H1012.3
s-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232
c-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1
s-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26
c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z
M` +
            (1001 + e) +
            ' ' +
            r +
            'h400000v' +
            (40 + e) +
            'h-400000z'
          )
        }, 'sqrtSize1')),
        (z4e = o(function (e, r) {
          return (
            'M983 ' +
            (10 + e + r) +
            `
l` +
            e / 3.13 +
            ' -' +
            e +
            `
c4,-6.7,10,-10,18,-10 H400000v` +
            (40 + e) +
            `
H1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7
s-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744
c-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30
c26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722
c56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5
c53.7,-170.3,84.5,-266.8,92.5,-289.5z
M` +
            (1001 + e) +
            ' ' +
            r +
            'h400000v' +
            (40 + e) +
            'h-400000z'
          )
        }, 'sqrtSize2')),
        (G4e = o(function (e, r) {
          return (
            'M424,' +
            (2398 + e + r) +
            `
c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514
c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20
s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121
s209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081
l` +
            e / 4.223 +
            ' -' +
            e +
            `c4,-6.7,10,-10,18,-10 H400000
v` +
            (40 + e) +
            `H1014.6
s-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185
c-2,6,-10,9,-24,9
c-8,0,-12,-0.7,-12,-2z M` +
            (1001 + e) +
            ' ' +
            r +
            `
h400000v` +
            (40 + e) +
            'h-400000z'
          )
        }, 'sqrtSize3')),
        (V4e = o(function (e, r) {
          return (
            'M473,' +
            (2713 + e + r) +
            `
c339.3,-1799.3,509.3,-2700,510,-2702 l` +
            e / 5.298 +
            ' -' +
            e +
            `
c3.3,-7.3,9.3,-11,18,-11 H400000v` +
            (40 + e) +
            `H1017.7
s-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9
c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200
c0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26
s76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104,
606zM` +
            (1001 + e) +
            ' ' +
            r +
            'h400000v' +
            (40 + e) +
            'H1017.7z'
          )
        }, 'sqrtSize4')),
        (U4e = o(function (e) {
          var r = e / 2
          return 'M400000 ' + e + ' H0 L' + r + ' 0 l65 45 L145 ' + (e - 80) + ' H400000z'
        }, 'phasePath')),
        (H4e = o(function (e, r, n) {
          var i = n - 54 - r - e
          return (
            'M702 ' +
            (e + r) +
            'H400000' +
            (40 + e) +
            `
H742v` +
            i +
            `l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1
h-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170
c-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667
219 661 l218 661zM702 ` +
            r +
            'H400000v' +
            (40 + e) +
            'H742z'
          )
        }, 'sqrtTall')),
        (W4e = o(function (e, r, n) {
          r = 1e3 * r
          var i = ''
          switch (e) {
            case 'sqrtMain':
              i = F4e(r, T0)
              break
            case 'sqrtSize1':
              i = $4e(r, T0)
              break
            case 'sqrtSize2':
              i = z4e(r, T0)
              break
            case 'sqrtSize3':
              i = G4e(r, T0)
              break
            case 'sqrtSize4':
              i = V4e(r, T0)
              break
            case 'sqrtTall':
              i = H4e(r, T0, n)
          }
          return i
        }, 'sqrtPath')),
        (q4e = o(function (e, r) {
          switch (e) {
            case '\u239C':
              return 'M291 0 H417 V' + r + ' H291z M291 0 H417 V' + r + ' H291z'
            case '\u2223':
              return 'M145 0 H188 V' + r + ' H145z M145 0 H188 V' + r + ' H145z'
            case '\u2225':
              return 'M145 0 H188 V' + r + ' H145z M145 0 H188 V' + r + ' H145z' + ('M367 0 H410 V' + r + ' H367z M367 0 H410 V' + r + ' H367z')
            case '\u239F':
              return 'M457 0 H583 V' + r + ' H457z M457 0 H583 V' + r + ' H457z'
            case '\u23A2':
              return 'M319 0 H403 V' + r + ' H319z M319 0 H403 V' + r + ' H319z'
            case '\u23A5':
              return 'M263 0 H347 V' + r + ' H263z M263 0 H347 V' + r + ' H263z'
            case '\u23AA':
              return 'M384 0 H504 V' + r + ' H384z M384 0 H504 V' + r + ' H384z'
            case '\u23D0':
              return 'M312 0 H355 V' + r + ' H312z M312 0 H355 V' + r + ' H312z'
            case '\u2016':
              return 'M257 0 H300 V' + r + ' H257z M257 0 H300 V' + r + ' H257z' + ('M478 0 H521 V' + r + ' H478z M478 0 H521 V' + r + ' H478z')
            default:
              return ''
          }
        }, 'innerPath')),
        (jz = {
          doubleleftarrow: `M262 157
l10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3
 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28
 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5
c2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5
 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87
-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7
-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z
m8 0v40h399730v-40zm0 194v40h399730v-40z`,
          doublerightarrow: `M399738 392l
-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5
 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88
-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68
-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18
-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782
c-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3
-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z`,
          leftarrow: `M400000 241H110l3-3c68.7-52.7 113.7-120
 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8
-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247
c-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208
 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3
 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202
 l-3-3h399890zM100 241v40h399900v-40z`,
          leftbrace: `M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117
-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7
 5-6 9-10 13-.7 1-7.3 1-20 1H6z`,
          leftbraceunder: `M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13
 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688
 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7
-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z`,
          leftgroup: `M400000 80
H435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0
 435 0h399565z`,
          leftgroupunder: `M400000 262
H435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219
 435 219h399565z`,
          leftharpoon: `M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3
-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5
-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7
-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z`,
          leftharpoonplus: `M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5
 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3
-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7
-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z
m0 0v40h400000v-40z`,
          leftharpoondown: `M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333
 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5
 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667
-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z`,
          leftharpoondownplus: `M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12
 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7
-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0
v40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z`,
          lefthook: `M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5
-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3
-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21
 71.5 23h399859zM103 281v-40h399897v40z`,
          leftlinesegment: `M40 281 V428 H0 V94 H40 V241 H400000 v40z
M40 281 V428 H0 V94 H40 V241 H400000 v40z`,
          leftmapsto: `M40 281 V448H0V74H40V241H400000v40z
M40 281 V448H0V74H40V241H400000v40z`,
          leftToFrom: `M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23
-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8
c28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3
 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z`,
          longequal: `M0 50 h400000 v40H0z m0 194h40000v40H0z
M0 50 h400000 v40H0z m0 194h40000v40H0z`,
          midbrace: `M200428 334
c-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14
-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7
 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11
 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z`,
          midbraceunder: `M199572 214
c100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14
 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3
 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0
-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z`,
          oiintSize1: `M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6
-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z
m368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8
60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z`,
          oiintSize2: `M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8
-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z
m502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2
c0 110 84 276 504 276s502.4-166 502.4-276z`,
          oiiintSize1: `M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6
-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z
m525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0
85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z`,
          oiiintSize2: `M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8
-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z
m770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1
c0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z`,
          rightarrow: `M0 241v40h399891c-47.3 35.3-84 78-110 128
-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20
 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7
 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85
-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5
-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67
 151.7 139 205zm0 0v40h399900v-40z`,
          rightbrace: `M400000 542l
-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5
s-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1
c124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z`,
          rightbraceunder: `M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3
 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237
-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z`,
          rightgroup: `M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0
 3-1 3-3v-38c-76-158-257-219-435-219H0z`,
          rightgroupunder: `M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18
 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z`,
          rightharpoon: `M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3
-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2
-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58
 69.2 92 94.5zm0 0v40h399900v-40z`,
          rightharpoonplus: `M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11
-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7
 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z
m0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z`,
          rightharpoondown: `M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8
 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5
-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95
-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z`,
          rightharpoondownplus: `M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8
 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3
 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3
-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z
m0-194v40h400000v-40zm0 0v40h400000v-40z`,
          righthook: `M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3
 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0
-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21
 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z`,
          rightlinesegment: `M399960 241 V94 h40 V428 h-40 V281 H0 v-40z
M399960 241 V94 h40 V428 h-40 V281 H0 v-40z`,
          rightToFrom: `M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23
 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32
-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142
-167z M100 147v40h399900v-40zM0 341v40h399900v-40z`,
          twoheadleftarrow: `M0 167c68 40
 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69
-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3
-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19
-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101
 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z`,
          twoheadrightarrow: `M400000 167
c-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3
 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42
 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333
-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70
 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z`,
          tilde1: `M200 55.538c-77 0-168 73.953-177 73.953-3 0-7
-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0
 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0
 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128
-68.267.847-113-73.952-191-73.952z`,
          tilde2: `M344 55.266c-142 0-300.638 81.316-311.5 86.418
-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9
 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114
c1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751
 181.476 676 181.476c-149 0-189-126.21-332-126.21z`,
          tilde3: `M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457
-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0
 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697
 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696
 -338 0-409-156.573-744-156.573z`,
          tilde4: `M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345
-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409
 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9
 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409
 -175.236-744-175.236z`,
          vec: `M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5
3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11
10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63
-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1
-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59
H213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359
c-16-25.333-24-45-24-59z`,
          widehat1: `M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22
c-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z`,
          widehat2: `M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10
-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,
          widehat3: `M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10
-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,
          widehat4: `M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10
-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,
          widecheck1: `M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1,
-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z`,
          widecheck2: `M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,
-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,
          widecheck3: `M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,
-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,
          widecheck4: `M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,
-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,
          baraboveleftarrow: `M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202
c4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5
c-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130
s-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47
121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6
s2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11
c0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z
M100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z`,
          rightarrowabovebar: `M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32
-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0
13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39
-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5
-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5
-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67
151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z`,
          baraboveshortleftharpoon: `M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11
c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17
c2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21
c-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40
c-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z
M0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z`,
          rightharpoonaboveshortbar: `M0,241 l0,40c399126,0,399993,0,399993,0
c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,
-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6
c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z
M0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z`,
          shortbaraboveleftharpoon: `M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11
c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9,
1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7,
-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z
M93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z`,
          shortrightharpoonabovebar: `M53,241l0,40c398570,0,399437,0,399437,0
c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,
-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6
c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z
M500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z`
        }),
        (Y4e = o(function (e, r) {
          switch (e) {
            case 'lbrack':
              return (
                'M403 1759 V84 H666 V0 H319 V1759 v' +
                r +
                ` v1759 h347 v-84
H403z M403 1759 V0 H319 V1759 v` +
                r +
                ' v1759 h84z'
              )
            case 'rbrack':
              return (
                'M347 1759 V0 H0 V84 H263 V1759 v' +
                r +
                ` v1759 H0 v84 H347z
M347 1759 V0 H263 V1759 v` +
                r +
                ' v1759 h84z'
              )
            case 'vert':
              return (
                'M145 15 v585 v' +
                r +
                ` v585 c2.667,10,9.667,15,21,15
c10,0,16.667,-5,20,-15 v-585 v` +
                -r +
                ` v-585 c-2.667,-10,-9.667,-15,-21,-15
c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v` +
                r +
                ' v585 h43z'
              )
            case 'doublevert':
              return (
                'M145 15 v585 v' +
                r +
                ` v585 c2.667,10,9.667,15,21,15
c10,0,16.667,-5,20,-15 v-585 v` +
                -r +
                ` v-585 c-2.667,-10,-9.667,-15,-21,-15
c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v` +
                r +
                ` v585 h43z
M367 15 v585 v` +
                r +
                ` v585 c2.667,10,9.667,15,21,15
c10,0,16.667,-5,20,-15 v-585 v` +
                -r +
                ` v-585 c-2.667,-10,-9.667,-15,-21,-15
c-10,0,-16.667,5,-20,15z M410 15 H367 v585 v` +
                r +
                ' v585 h43z'
              )
            case 'lfloor':
              return (
                'M319 602 V0 H403 V602 v' +
                r +
                ` v1715 h263 v84 H319z
MM319 602 V0 H403 V602 v` +
                r +
                ' v1715 H319z'
              )
            case 'rfloor':
              return (
                'M319 602 V0 H403 V602 v' +
                r +
                ` v1799 H0 v-84 H319z
MM319 602 V0 H403 V602 v` +
                r +
                ' v1715 H319z'
              )
            case 'lceil':
              return (
                'M403 1759 V84 H666 V0 H319 V1759 v' +
                r +
                ` v602 h84z
M403 1759 V0 H319 V1759 v` +
                r +
                ' v602 h84z'
              )
            case 'rceil':
              return (
                'M347 1759 V0 H0 V84 H263 V1759 v' +
                r +
                ` v602 h84z
M347 1759 V0 h-84 V1759 v` +
                r +
                ' v602 h84z'
              )
            case 'lparen':
              return (
                `M863,9c0,-2,-2,-5,-6,-9c0,0,-17,0,-17,0c-12.7,0,-19.3,0.3,-20,1
c-5.3,5.3,-10.3,11,-15,17c-242.7,294.7,-395.3,682,-458,1162c-21.3,163.3,-33.3,349,
-36,557 l0,` +
                (r + 84) +
                `c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210,
949.7,470,1265c4.7,6,9.7,11.7,15,17c0.7,0.7,7,1,19,1c0,0,18,0,18,0c4,-4,6,-7,6,-9
c0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5,
-544.7,-112.5,-882c-2,-104,-3,-167,-3,-189
l0,-` +
                (r + 92) +
                `c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3,
-210,155.3,-396.3,270,-559c6.7,-9.3,10,-15.3,10,-18z`
              )
            case 'rparen':
              return (
                `M76,0c-16.7,0,-25,3,-25,9c0,2,2,6.3,6,13c21.3,28.7,42.3,60.3,
63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5
c11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0,` +
                (r + 9) +
                `
c-3,4,-3.3,16.7,-3.3,38c0,162,-5.7,313.7,-17,455c-18.7,248,-55.8,469.3,-111.5,664
c-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6,11
c0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17
c242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558
l0,-` +
                (r + 144) +
                `c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7,
-470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z`
              )
            default:
              throw new Error('Unknown stretchy delimiter.')
          }
        }, 'tallDelim')),
        (od = class {
          static {
            o(this, 'DocumentFragment')
          }
          constructor(e) {
            ;(this.children = void 0),
              (this.classes = void 0),
              (this.height = void 0),
              (this.depth = void 0),
              (this.maxFontSize = void 0),
              (this.style = void 0),
              (this.children = e),
              (this.classes = []),
              (this.height = 0),
              (this.depth = 0),
              (this.maxFontSize = 0),
              (this.style = {})
          }
          hasClass(e) {
            return Jt.contains(this.classes, e)
          }
          toNode() {
            for (var e = document.createDocumentFragment(), r = 0; r < this.children.length; r++) e.appendChild(this.children[r].toNode())
            return e
          }
          toMarkup() {
            for (var e = '', r = 0; r < this.children.length; r++) e += this.children[r].toMarkup()
            return e
          }
          toText() {
            var e = o(r => r.toText(), 'toText')
            return this.children.map(e).join('')
          }
        }),
        (Jl = {
          'AMS-Regular': {
            32: [0, 0, 0, 0, 0.25],
            65: [0, 0.68889, 0, 0, 0.72222],
            66: [0, 0.68889, 0, 0, 0.66667],
            67: [0, 0.68889, 0, 0, 0.72222],
            68: [0, 0.68889, 0, 0, 0.72222],
            69: [0, 0.68889, 0, 0, 0.66667],
            70: [0, 0.68889, 0, 0, 0.61111],
            71: [0, 0.68889, 0, 0, 0.77778],
            72: [0, 0.68889, 0, 0, 0.77778],
            73: [0, 0.68889, 0, 0, 0.38889],
            74: [0.16667, 0.68889, 0, 0, 0.5],
            75: [0, 0.68889, 0, 0, 0.77778],
            76: [0, 0.68889, 0, 0, 0.66667],
            77: [0, 0.68889, 0, 0, 0.94445],
            78: [0, 0.68889, 0, 0, 0.72222],
            79: [0.16667, 0.68889, 0, 0, 0.77778],
            80: [0, 0.68889, 0, 0, 0.61111],
            81: [0.16667, 0.68889, 0, 0, 0.77778],
            82: [0, 0.68889, 0, 0, 0.72222],
            83: [0, 0.68889, 0, 0, 0.55556],
            84: [0, 0.68889, 0, 0, 0.66667],
            85: [0, 0.68889, 0, 0, 0.72222],
            86: [0, 0.68889, 0, 0, 0.72222],
            87: [0, 0.68889, 0, 0, 1],
            88: [0, 0.68889, 0, 0, 0.72222],
            89: [0, 0.68889, 0, 0, 0.72222],
            90: [0, 0.68889, 0, 0, 0.66667],
            107: [0, 0.68889, 0, 0, 0.55556],
            160: [0, 0, 0, 0, 0.25],
            165: [0, 0.675, 0.025, 0, 0.75],
            174: [0.15559, 0.69224, 0, 0, 0.94666],
            240: [0, 0.68889, 0, 0, 0.55556],
            295: [0, 0.68889, 0, 0, 0.54028],
            710: [0, 0.825, 0, 0, 2.33334],
            732: [0, 0.9, 0, 0, 2.33334],
            770: [0, 0.825, 0, 0, 2.33334],
            771: [0, 0.9, 0, 0, 2.33334],
            989: [0.08167, 0.58167, 0, 0, 0.77778],
            1008: [0, 0.43056, 0.04028, 0, 0.66667],
            8245: [0, 0.54986, 0, 0, 0.275],
            8463: [0, 0.68889, 0, 0, 0.54028],
            8487: [0, 0.68889, 0, 0, 0.72222],
            8498: [0, 0.68889, 0, 0, 0.55556],
            8502: [0, 0.68889, 0, 0, 0.66667],
            8503: [0, 0.68889, 0, 0, 0.44445],
            8504: [0, 0.68889, 0, 0, 0.66667],
            8513: [0, 0.68889, 0, 0, 0.63889],
            8592: [-0.03598, 0.46402, 0, 0, 0.5],
            8594: [-0.03598, 0.46402, 0, 0, 0.5],
            8602: [-0.13313, 0.36687, 0, 0, 1],
            8603: [-0.13313, 0.36687, 0, 0, 1],
            8606: [0.01354, 0.52239, 0, 0, 1],
            8608: [0.01354, 0.52239, 0, 0, 1],
            8610: [0.01354, 0.52239, 0, 0, 1.11111],
            8611: [0.01354, 0.52239, 0, 0, 1.11111],
            8619: [0, 0.54986, 0, 0, 1],
            8620: [0, 0.54986, 0, 0, 1],
            8621: [-0.13313, 0.37788, 0, 0, 1.38889],
            8622: [-0.13313, 0.36687, 0, 0, 1],
            8624: [0, 0.69224, 0, 0, 0.5],
            8625: [0, 0.69224, 0, 0, 0.5],
            8630: [0, 0.43056, 0, 0, 1],
            8631: [0, 0.43056, 0, 0, 1],
            8634: [0.08198, 0.58198, 0, 0, 0.77778],
            8635: [0.08198, 0.58198, 0, 0, 0.77778],
            8638: [0.19444, 0.69224, 0, 0, 0.41667],
            8639: [0.19444, 0.69224, 0, 0, 0.41667],
            8642: [0.19444, 0.69224, 0, 0, 0.41667],
            8643: [0.19444, 0.69224, 0, 0, 0.41667],
            8644: [0.1808, 0.675, 0, 0, 1],
            8646: [0.1808, 0.675, 0, 0, 1],
            8647: [0.1808, 0.675, 0, 0, 1],
            8648: [0.19444, 0.69224, 0, 0, 0.83334],
            8649: [0.1808, 0.675, 0, 0, 1],
            8650: [0.19444, 0.69224, 0, 0, 0.83334],
            8651: [0.01354, 0.52239, 0, 0, 1],
            8652: [0.01354, 0.52239, 0, 0, 1],
            8653: [-0.13313, 0.36687, 0, 0, 1],
            8654: [-0.13313, 0.36687, 0, 0, 1],
            8655: [-0.13313, 0.36687, 0, 0, 1],
            8666: [0.13667, 0.63667, 0, 0, 1],
            8667: [0.13667, 0.63667, 0, 0, 1],
            8669: [-0.13313, 0.37788, 0, 0, 1],
            8672: [-0.064, 0.437, 0, 0, 1.334],
            8674: [-0.064, 0.437, 0, 0, 1.334],
            8705: [0, 0.825, 0, 0, 0.5],
            8708: [0, 0.68889, 0, 0, 0.55556],
            8709: [0.08167, 0.58167, 0, 0, 0.77778],
            8717: [0, 0.43056, 0, 0, 0.42917],
            8722: [-0.03598, 0.46402, 0, 0, 0.5],
            8724: [0.08198, 0.69224, 0, 0, 0.77778],
            8726: [0.08167, 0.58167, 0, 0, 0.77778],
            8733: [0, 0.69224, 0, 0, 0.77778],
            8736: [0, 0.69224, 0, 0, 0.72222],
            8737: [0, 0.69224, 0, 0, 0.72222],
            8738: [0.03517, 0.52239, 0, 0, 0.72222],
            8739: [0.08167, 0.58167, 0, 0, 0.22222],
            8740: [0.25142, 0.74111, 0, 0, 0.27778],
            8741: [0.08167, 0.58167, 0, 0, 0.38889],
            8742: [0.25142, 0.74111, 0, 0, 0.5],
            8756: [0, 0.69224, 0, 0, 0.66667],
            8757: [0, 0.69224, 0, 0, 0.66667],
            8764: [-0.13313, 0.36687, 0, 0, 0.77778],
            8765: [-0.13313, 0.37788, 0, 0, 0.77778],
            8769: [-0.13313, 0.36687, 0, 0, 0.77778],
            8770: [-0.03625, 0.46375, 0, 0, 0.77778],
            8774: [0.30274, 0.79383, 0, 0, 0.77778],
            8776: [-0.01688, 0.48312, 0, 0, 0.77778],
            8778: [0.08167, 0.58167, 0, 0, 0.77778],
            8782: [0.06062, 0.54986, 0, 0, 0.77778],
            8783: [0.06062, 0.54986, 0, 0, 0.77778],
            8785: [0.08198, 0.58198, 0, 0, 0.77778],
            8786: [0.08198, 0.58198, 0, 0, 0.77778],
            8787: [0.08198, 0.58198, 0, 0, 0.77778],
            8790: [0, 0.69224, 0, 0, 0.77778],
            8791: [0.22958, 0.72958, 0, 0, 0.77778],
            8796: [0.08198, 0.91667, 0, 0, 0.77778],
            8806: [0.25583, 0.75583, 0, 0, 0.77778],
            8807: [0.25583, 0.75583, 0, 0, 0.77778],
            8808: [0.25142, 0.75726, 0, 0, 0.77778],
            8809: [0.25142, 0.75726, 0, 0, 0.77778],
            8812: [0.25583, 0.75583, 0, 0, 0.5],
            8814: [0.20576, 0.70576, 0, 0, 0.77778],
            8815: [0.20576, 0.70576, 0, 0, 0.77778],
            8816: [0.30274, 0.79383, 0, 0, 0.77778],
            8817: [0.30274, 0.79383, 0, 0, 0.77778],
            8818: [0.22958, 0.72958, 0, 0, 0.77778],
            8819: [0.22958, 0.72958, 0, 0, 0.77778],
            8822: [0.1808, 0.675, 0, 0, 0.77778],
            8823: [0.1808, 0.675, 0, 0, 0.77778],
            8828: [0.13667, 0.63667, 0, 0, 0.77778],
            8829: [0.13667, 0.63667, 0, 0, 0.77778],
            8830: [0.22958, 0.72958, 0, 0, 0.77778],
            8831: [0.22958, 0.72958, 0, 0, 0.77778],
            8832: [0.20576, 0.70576, 0, 0, 0.77778],
            8833: [0.20576, 0.70576, 0, 0, 0.77778],
            8840: [0.30274, 0.79383, 0, 0, 0.77778],
            8841: [0.30274, 0.79383, 0, 0, 0.77778],
            8842: [0.13597, 0.63597, 0, 0, 0.77778],
            8843: [0.13597, 0.63597, 0, 0, 0.77778],
            8847: [0.03517, 0.54986, 0, 0, 0.77778],
            8848: [0.03517, 0.54986, 0, 0, 0.77778],
            8858: [0.08198, 0.58198, 0, 0, 0.77778],
            8859: [0.08198, 0.58198, 0, 0, 0.77778],
            8861: [0.08198, 0.58198, 0, 0, 0.77778],
            8862: [0, 0.675, 0, 0, 0.77778],
            8863: [0, 0.675, 0, 0, 0.77778],
            8864: [0, 0.675, 0, 0, 0.77778],
            8865: [0, 0.675, 0, 0, 0.77778],
            8872: [0, 0.69224, 0, 0, 0.61111],
            8873: [0, 0.69224, 0, 0, 0.72222],
            8874: [0, 0.69224, 0, 0, 0.88889],
            8876: [0, 0.68889, 0, 0, 0.61111],
            8877: [0, 0.68889, 0, 0, 0.61111],
            8878: [0, 0.68889, 0, 0, 0.72222],
            8879: [0, 0.68889, 0, 0, 0.72222],
            8882: [0.03517, 0.54986, 0, 0, 0.77778],
            8883: [0.03517, 0.54986, 0, 0, 0.77778],
            8884: [0.13667, 0.63667, 0, 0, 0.77778],
            8885: [0.13667, 0.63667, 0, 0, 0.77778],
            8888: [0, 0.54986, 0, 0, 1.11111],
            8890: [0.19444, 0.43056, 0, 0, 0.55556],
            8891: [0.19444, 0.69224, 0, 0, 0.61111],
            8892: [0.19444, 0.69224, 0, 0, 0.61111],
            8901: [0, 0.54986, 0, 0, 0.27778],
            8903: [0.08167, 0.58167, 0, 0, 0.77778],
            8905: [0.08167, 0.58167, 0, 0, 0.77778],
            8906: [0.08167, 0.58167, 0, 0, 0.77778],
            8907: [0, 0.69224, 0, 0, 0.77778],
            8908: [0, 0.69224, 0, 0, 0.77778],
            8909: [-0.03598, 0.46402, 0, 0, 0.77778],
            8910: [0, 0.54986, 0, 0, 0.76042],
            8911: [0, 0.54986, 0, 0, 0.76042],
            8912: [0.03517, 0.54986, 0, 0, 0.77778],
            8913: [0.03517, 0.54986, 0, 0, 0.77778],
            8914: [0, 0.54986, 0, 0, 0.66667],
            8915: [0, 0.54986, 0, 0, 0.66667],
            8916: [0, 0.69224, 0, 0, 0.66667],
            8918: [0.0391, 0.5391, 0, 0, 0.77778],
            8919: [0.0391, 0.5391, 0, 0, 0.77778],
            8920: [0.03517, 0.54986, 0, 0, 1.33334],
            8921: [0.03517, 0.54986, 0, 0, 1.33334],
            8922: [0.38569, 0.88569, 0, 0, 0.77778],
            8923: [0.38569, 0.88569, 0, 0, 0.77778],
            8926: [0.13667, 0.63667, 0, 0, 0.77778],
            8927: [0.13667, 0.63667, 0, 0, 0.77778],
            8928: [0.30274, 0.79383, 0, 0, 0.77778],
            8929: [0.30274, 0.79383, 0, 0, 0.77778],
            8934: [0.23222, 0.74111, 0, 0, 0.77778],
            8935: [0.23222, 0.74111, 0, 0, 0.77778],
            8936: [0.23222, 0.74111, 0, 0, 0.77778],
            8937: [0.23222, 0.74111, 0, 0, 0.77778],
            8938: [0.20576, 0.70576, 0, 0, 0.77778],
            8939: [0.20576, 0.70576, 0, 0, 0.77778],
            8940: [0.30274, 0.79383, 0, 0, 0.77778],
            8941: [0.30274, 0.79383, 0, 0, 0.77778],
            8994: [0.19444, 0.69224, 0, 0, 0.77778],
            8995: [0.19444, 0.69224, 0, 0, 0.77778],
            9416: [0.15559, 0.69224, 0, 0, 0.90222],
            9484: [0, 0.69224, 0, 0, 0.5],
            9488: [0, 0.69224, 0, 0, 0.5],
            9492: [0, 0.37788, 0, 0, 0.5],
            9496: [0, 0.37788, 0, 0, 0.5],
            9585: [0.19444, 0.68889, 0, 0, 0.88889],
            9586: [0.19444, 0.74111, 0, 0, 0.88889],
            9632: [0, 0.675, 0, 0, 0.77778],
            9633: [0, 0.675, 0, 0, 0.77778],
            9650: [0, 0.54986, 0, 0, 0.72222],
            9651: [0, 0.54986, 0, 0, 0.72222],
            9654: [0.03517, 0.54986, 0, 0, 0.77778],
            9660: [0, 0.54986, 0, 0, 0.72222],
            9661: [0, 0.54986, 0, 0, 0.72222],
            9664: [0.03517, 0.54986, 0, 0, 0.77778],
            9674: [0.11111, 0.69224, 0, 0, 0.66667],
            9733: [0.19444, 0.69224, 0, 0, 0.94445],
            10003: [0, 0.69224, 0, 0, 0.83334],
            10016: [0, 0.69224, 0, 0, 0.83334],
            10731: [0.11111, 0.69224, 0, 0, 0.66667],
            10846: [0.19444, 0.75583, 0, 0, 0.61111],
            10877: [0.13667, 0.63667, 0, 0, 0.77778],
            10878: [0.13667, 0.63667, 0, 0, 0.77778],
            10885: [0.25583, 0.75583, 0, 0, 0.77778],
            10886: [0.25583, 0.75583, 0, 0, 0.77778],
            10887: [0.13597, 0.63597, 0, 0, 0.77778],
            10888: [0.13597, 0.63597, 0, 0, 0.77778],
            10889: [0.26167, 0.75726, 0, 0, 0.77778],
            10890: [0.26167, 0.75726, 0, 0, 0.77778],
            10891: [0.48256, 0.98256, 0, 0, 0.77778],
            10892: [0.48256, 0.98256, 0, 0, 0.77778],
            10901: [0.13667, 0.63667, 0, 0, 0.77778],
            10902: [0.13667, 0.63667, 0, 0, 0.77778],
            10933: [0.25142, 0.75726, 0, 0, 0.77778],
            10934: [0.25142, 0.75726, 0, 0, 0.77778],
            10935: [0.26167, 0.75726, 0, 0, 0.77778],
            10936: [0.26167, 0.75726, 0, 0, 0.77778],
            10937: [0.26167, 0.75726, 0, 0, 0.77778],
            10938: [0.26167, 0.75726, 0, 0, 0.77778],
            10949: [0.25583, 0.75583, 0, 0, 0.77778],
            10950: [0.25583, 0.75583, 0, 0, 0.77778],
            10955: [0.28481, 0.79383, 0, 0, 0.77778],
            10956: [0.28481, 0.79383, 0, 0, 0.77778],
            57350: [0.08167, 0.58167, 0, 0, 0.22222],
            57351: [0.08167, 0.58167, 0, 0, 0.38889],
            57352: [0.08167, 0.58167, 0, 0, 0.77778],
            57353: [0, 0.43056, 0.04028, 0, 0.66667],
            57356: [0.25142, 0.75726, 0, 0, 0.77778],
            57357: [0.25142, 0.75726, 0, 0, 0.77778],
            57358: [0.41951, 0.91951, 0, 0, 0.77778],
            57359: [0.30274, 0.79383, 0, 0, 0.77778],
            57360: [0.30274, 0.79383, 0, 0, 0.77778],
            57361: [0.41951, 0.91951, 0, 0, 0.77778],
            57366: [0.25142, 0.75726, 0, 0, 0.77778],
            57367: [0.25142, 0.75726, 0, 0, 0.77778],
            57368: [0.25142, 0.75726, 0, 0, 0.77778],
            57369: [0.25142, 0.75726, 0, 0, 0.77778],
            57370: [0.13597, 0.63597, 0, 0, 0.77778],
            57371: [0.13597, 0.63597, 0, 0, 0.77778]
          },
          'Caligraphic-Regular': {
            32: [0, 0, 0, 0, 0.25],
            65: [0, 0.68333, 0, 0.19445, 0.79847],
            66: [0, 0.68333, 0.03041, 0.13889, 0.65681],
            67: [0, 0.68333, 0.05834, 0.13889, 0.52653],
            68: [0, 0.68333, 0.02778, 0.08334, 0.77139],
            69: [0, 0.68333, 0.08944, 0.11111, 0.52778],
            70: [0, 0.68333, 0.09931, 0.11111, 0.71875],
            71: [0.09722, 0.68333, 0.0593, 0.11111, 0.59487],
            72: [0, 0.68333, 0.00965, 0.11111, 0.84452],
            73: [0, 0.68333, 0.07382, 0, 0.54452],
            74: [0.09722, 0.68333, 0.18472, 0.16667, 0.67778],
            75: [0, 0.68333, 0.01445, 0.05556, 0.76195],
            76: [0, 0.68333, 0, 0.13889, 0.68972],
            77: [0, 0.68333, 0, 0.13889, 1.2009],
            78: [0, 0.68333, 0.14736, 0.08334, 0.82049],
            79: [0, 0.68333, 0.02778, 0.11111, 0.79611],
            80: [0, 0.68333, 0.08222, 0.08334, 0.69556],
            81: [0.09722, 0.68333, 0, 0.11111, 0.81667],
            82: [0, 0.68333, 0, 0.08334, 0.8475],
            83: [0, 0.68333, 0.075, 0.13889, 0.60556],
            84: [0, 0.68333, 0.25417, 0, 0.54464],
            85: [0, 0.68333, 0.09931, 0.08334, 0.62583],
            86: [0, 0.68333, 0.08222, 0, 0.61278],
            87: [0, 0.68333, 0.08222, 0.08334, 0.98778],
            88: [0, 0.68333, 0.14643, 0.13889, 0.7133],
            89: [0.09722, 0.68333, 0.08222, 0.08334, 0.66834],
            90: [0, 0.68333, 0.07944, 0.13889, 0.72473],
            160: [0, 0, 0, 0, 0.25]
          },
          'Fraktur-Regular': {
            32: [0, 0, 0, 0, 0.25],
            33: [0, 0.69141, 0, 0, 0.29574],
            34: [0, 0.69141, 0, 0, 0.21471],
            38: [0, 0.69141, 0, 0, 0.73786],
            39: [0, 0.69141, 0, 0, 0.21201],
            40: [0.24982, 0.74947, 0, 0, 0.38865],
            41: [0.24982, 0.74947, 0, 0, 0.38865],
            42: [0, 0.62119, 0, 0, 0.27764],
            43: [0.08319, 0.58283, 0, 0, 0.75623],
            44: [0, 0.10803, 0, 0, 0.27764],
            45: [0.08319, 0.58283, 0, 0, 0.75623],
            46: [0, 0.10803, 0, 0, 0.27764],
            47: [0.24982, 0.74947, 0, 0, 0.50181],
            48: [0, 0.47534, 0, 0, 0.50181],
            49: [0, 0.47534, 0, 0, 0.50181],
            50: [0, 0.47534, 0, 0, 0.50181],
            51: [0.18906, 0.47534, 0, 0, 0.50181],
            52: [0.18906, 0.47534, 0, 0, 0.50181],
            53: [0.18906, 0.47534, 0, 0, 0.50181],
            54: [0, 0.69141, 0, 0, 0.50181],
            55: [0.18906, 0.47534, 0, 0, 0.50181],
            56: [0, 0.69141, 0, 0, 0.50181],
            57: [0.18906, 0.47534, 0, 0, 0.50181],
            58: [0, 0.47534, 0, 0, 0.21606],
            59: [0.12604, 0.47534, 0, 0, 0.21606],
            61: [-0.13099, 0.36866, 0, 0, 0.75623],
            63: [0, 0.69141, 0, 0, 0.36245],
            65: [0, 0.69141, 0, 0, 0.7176],
            66: [0, 0.69141, 0, 0, 0.88397],
            67: [0, 0.69141, 0, 0, 0.61254],
            68: [0, 0.69141, 0, 0, 0.83158],
            69: [0, 0.69141, 0, 0, 0.66278],
            70: [0.12604, 0.69141, 0, 0, 0.61119],
            71: [0, 0.69141, 0, 0, 0.78539],
            72: [0.06302, 0.69141, 0, 0, 0.7203],
            73: [0, 0.69141, 0, 0, 0.55448],
            74: [0.12604, 0.69141, 0, 0, 0.55231],
            75: [0, 0.69141, 0, 0, 0.66845],
            76: [0, 0.69141, 0, 0, 0.66602],
            77: [0, 0.69141, 0, 0, 1.04953],
            78: [0, 0.69141, 0, 0, 0.83212],
            79: [0, 0.69141, 0, 0, 0.82699],
            80: [0.18906, 0.69141, 0, 0, 0.82753],
            81: [0.03781, 0.69141, 0, 0, 0.82699],
            82: [0, 0.69141, 0, 0, 0.82807],
            83: [0, 0.69141, 0, 0, 0.82861],
            84: [0, 0.69141, 0, 0, 0.66899],
            85: [0, 0.69141, 0, 0, 0.64576],
            86: [0, 0.69141, 0, 0, 0.83131],
            87: [0, 0.69141, 0, 0, 1.04602],
            88: [0, 0.69141, 0, 0, 0.71922],
            89: [0.18906, 0.69141, 0, 0, 0.83293],
            90: [0.12604, 0.69141, 0, 0, 0.60201],
            91: [0.24982, 0.74947, 0, 0, 0.27764],
            93: [0.24982, 0.74947, 0, 0, 0.27764],
            94: [0, 0.69141, 0, 0, 0.49965],
            97: [0, 0.47534, 0, 0, 0.50046],
            98: [0, 0.69141, 0, 0, 0.51315],
            99: [0, 0.47534, 0, 0, 0.38946],
            100: [0, 0.62119, 0, 0, 0.49857],
            101: [0, 0.47534, 0, 0, 0.40053],
            102: [0.18906, 0.69141, 0, 0, 0.32626],
            103: [0.18906, 0.47534, 0, 0, 0.5037],
            104: [0.18906, 0.69141, 0, 0, 0.52126],
            105: [0, 0.69141, 0, 0, 0.27899],
            106: [0, 0.69141, 0, 0, 0.28088],
            107: [0, 0.69141, 0, 0, 0.38946],
            108: [0, 0.69141, 0, 0, 0.27953],
            109: [0, 0.47534, 0, 0, 0.76676],
            110: [0, 0.47534, 0, 0, 0.52666],
            111: [0, 0.47534, 0, 0, 0.48885],
            112: [0.18906, 0.52396, 0, 0, 0.50046],
            113: [0.18906, 0.47534, 0, 0, 0.48912],
            114: [0, 0.47534, 0, 0, 0.38919],
            115: [0, 0.47534, 0, 0, 0.44266],
            116: [0, 0.62119, 0, 0, 0.33301],
            117: [0, 0.47534, 0, 0, 0.5172],
            118: [0, 0.52396, 0, 0, 0.5118],
            119: [0, 0.52396, 0, 0, 0.77351],
            120: [0.18906, 0.47534, 0, 0, 0.38865],
            121: [0.18906, 0.47534, 0, 0, 0.49884],
            122: [0.18906, 0.47534, 0, 0, 0.39054],
            160: [0, 0, 0, 0, 0.25],
            8216: [0, 0.69141, 0, 0, 0.21471],
            8217: [0, 0.69141, 0, 0, 0.21471],
            58112: [0, 0.62119, 0, 0, 0.49749],
            58113: [0, 0.62119, 0, 0, 0.4983],
            58114: [0.18906, 0.69141, 0, 0, 0.33328],
            58115: [0.18906, 0.69141, 0, 0, 0.32923],
            58116: [0.18906, 0.47534, 0, 0, 0.50343],
            58117: [0, 0.69141, 0, 0, 0.33301],
            58118: [0, 0.62119, 0, 0, 0.33409],
            58119: [0, 0.47534, 0, 0, 0.50073]
          },
          'Main-Bold': {
            32: [0, 0, 0, 0, 0.25],
            33: [0, 0.69444, 0, 0, 0.35],
            34: [0, 0.69444, 0, 0, 0.60278],
            35: [0.19444, 0.69444, 0, 0, 0.95833],
            36: [0.05556, 0.75, 0, 0, 0.575],
            37: [0.05556, 0.75, 0, 0, 0.95833],
            38: [0, 0.69444, 0, 0, 0.89444],
            39: [0, 0.69444, 0, 0, 0.31944],
            40: [0.25, 0.75, 0, 0, 0.44722],
            41: [0.25, 0.75, 0, 0, 0.44722],
            42: [0, 0.75, 0, 0, 0.575],
            43: [0.13333, 0.63333, 0, 0, 0.89444],
            44: [0.19444, 0.15556, 0, 0, 0.31944],
            45: [0, 0.44444, 0, 0, 0.38333],
            46: [0, 0.15556, 0, 0, 0.31944],
            47: [0.25, 0.75, 0, 0, 0.575],
            48: [0, 0.64444, 0, 0, 0.575],
            49: [0, 0.64444, 0, 0, 0.575],
            50: [0, 0.64444, 0, 0, 0.575],
            51: [0, 0.64444, 0, 0, 0.575],
            52: [0, 0.64444, 0, 0, 0.575],
            53: [0, 0.64444, 0, 0, 0.575],
            54: [0, 0.64444, 0, 0, 0.575],
            55: [0, 0.64444, 0, 0, 0.575],
            56: [0, 0.64444, 0, 0, 0.575],
            57: [0, 0.64444, 0, 0, 0.575],
            58: [0, 0.44444, 0, 0, 0.31944],
            59: [0.19444, 0.44444, 0, 0, 0.31944],
            60: [0.08556, 0.58556, 0, 0, 0.89444],
            61: [-0.10889, 0.39111, 0, 0, 0.89444],
            62: [0.08556, 0.58556, 0, 0, 0.89444],
            63: [0, 0.69444, 0, 0, 0.54305],
            64: [0, 0.69444, 0, 0, 0.89444],
            65: [0, 0.68611, 0, 0, 0.86944],
            66: [0, 0.68611, 0, 0, 0.81805],
            67: [0, 0.68611, 0, 0, 0.83055],
            68: [0, 0.68611, 0, 0, 0.88194],
            69: [0, 0.68611, 0, 0, 0.75555],
            70: [0, 0.68611, 0, 0, 0.72361],
            71: [0, 0.68611, 0, 0, 0.90416],
            72: [0, 0.68611, 0, 0, 0.9],
            73: [0, 0.68611, 0, 0, 0.43611],
            74: [0, 0.68611, 0, 0, 0.59444],
            75: [0, 0.68611, 0, 0, 0.90138],
            76: [0, 0.68611, 0, 0, 0.69166],
            77: [0, 0.68611, 0, 0, 1.09166],
            78: [0, 0.68611, 0, 0, 0.9],
            79: [0, 0.68611, 0, 0, 0.86388],
            80: [0, 0.68611, 0, 0, 0.78611],
            81: [0.19444, 0.68611, 0, 0, 0.86388],
            82: [0, 0.68611, 0, 0, 0.8625],
            83: [0, 0.68611, 0, 0, 0.63889],
            84: [0, 0.68611, 0, 0, 0.8],
            85: [0, 0.68611, 0, 0, 0.88472],
            86: [0, 0.68611, 0.01597, 0, 0.86944],
            87: [0, 0.68611, 0.01597, 0, 1.18888],
            88: [0, 0.68611, 0, 0, 0.86944],
            89: [0, 0.68611, 0.02875, 0, 0.86944],
            90: [0, 0.68611, 0, 0, 0.70277],
            91: [0.25, 0.75, 0, 0, 0.31944],
            92: [0.25, 0.75, 0, 0, 0.575],
            93: [0.25, 0.75, 0, 0, 0.31944],
            94: [0, 0.69444, 0, 0, 0.575],
            95: [0.31, 0.13444, 0.03194, 0, 0.575],
            97: [0, 0.44444, 0, 0, 0.55902],
            98: [0, 0.69444, 0, 0, 0.63889],
            99: [0, 0.44444, 0, 0, 0.51111],
            100: [0, 0.69444, 0, 0, 0.63889],
            101: [0, 0.44444, 0, 0, 0.52708],
            102: [0, 0.69444, 0.10903, 0, 0.35139],
            103: [0.19444, 0.44444, 0.01597, 0, 0.575],
            104: [0, 0.69444, 0, 0, 0.63889],
            105: [0, 0.69444, 0, 0, 0.31944],
            106: [0.19444, 0.69444, 0, 0, 0.35139],
            107: [0, 0.69444, 0, 0, 0.60694],
            108: [0, 0.69444, 0, 0, 0.31944],
            109: [0, 0.44444, 0, 0, 0.95833],
            110: [0, 0.44444, 0, 0, 0.63889],
            111: [0, 0.44444, 0, 0, 0.575],
            112: [0.19444, 0.44444, 0, 0, 0.63889],
            113: [0.19444, 0.44444, 0, 0, 0.60694],
            114: [0, 0.44444, 0, 0, 0.47361],
            115: [0, 0.44444, 0, 0, 0.45361],
            116: [0, 0.63492, 0, 0, 0.44722],
            117: [0, 0.44444, 0, 0, 0.63889],
            118: [0, 0.44444, 0.01597, 0, 0.60694],
            119: [0, 0.44444, 0.01597, 0, 0.83055],
            120: [0, 0.44444, 0, 0, 0.60694],
            121: [0.19444, 0.44444, 0.01597, 0, 0.60694],
            122: [0, 0.44444, 0, 0, 0.51111],
            123: [0.25, 0.75, 0, 0, 0.575],
            124: [0.25, 0.75, 0, 0, 0.31944],
            125: [0.25, 0.75, 0, 0, 0.575],
            126: [0.35, 0.34444, 0, 0, 0.575],
            160: [0, 0, 0, 0, 0.25],
            163: [0, 0.69444, 0, 0, 0.86853],
            168: [0, 0.69444, 0, 0, 0.575],
            172: [0, 0.44444, 0, 0, 0.76666],
            176: [0, 0.69444, 0, 0, 0.86944],
            177: [0.13333, 0.63333, 0, 0, 0.89444],
            184: [0.17014, 0, 0, 0, 0.51111],
            198: [0, 0.68611, 0, 0, 1.04166],
            215: [0.13333, 0.63333, 0, 0, 0.89444],
            216: [0.04861, 0.73472, 0, 0, 0.89444],
            223: [0, 0.69444, 0, 0, 0.59722],
            230: [0, 0.44444, 0, 0, 0.83055],
            247: [0.13333, 0.63333, 0, 0, 0.89444],
            248: [0.09722, 0.54167, 0, 0, 0.575],
            305: [0, 0.44444, 0, 0, 0.31944],
            338: [0, 0.68611, 0, 0, 1.16944],
            339: [0, 0.44444, 0, 0, 0.89444],
            567: [0.19444, 0.44444, 0, 0, 0.35139],
            710: [0, 0.69444, 0, 0, 0.575],
            711: [0, 0.63194, 0, 0, 0.575],
            713: [0, 0.59611, 0, 0, 0.575],
            714: [0, 0.69444, 0, 0, 0.575],
            715: [0, 0.69444, 0, 0, 0.575],
            728: [0, 0.69444, 0, 0, 0.575],
            729: [0, 0.69444, 0, 0, 0.31944],
            730: [0, 0.69444, 0, 0, 0.86944],
            732: [0, 0.69444, 0, 0, 0.575],
            733: [0, 0.69444, 0, 0, 0.575],
            915: [0, 0.68611, 0, 0, 0.69166],
            916: [0, 0.68611, 0, 0, 0.95833],
            920: [0, 0.68611, 0, 0, 0.89444],
            923: [0, 0.68611, 0, 0, 0.80555],
            926: [0, 0.68611, 0, 0, 0.76666],
            928: [0, 0.68611, 0, 0, 0.9],
            931: [0, 0.68611, 0, 0, 0.83055],
            933: [0, 0.68611, 0, 0, 0.89444],
            934: [0, 0.68611, 0, 0, 0.83055],
            936: [0, 0.68611, 0, 0, 0.89444],
            937: [0, 0.68611, 0, 0, 0.83055],
            8211: [0, 0.44444, 0.03194, 0, 0.575],
            8212: [0, 0.44444, 0.03194, 0, 1.14999],
            8216: [0, 0.69444, 0, 0, 0.31944],
            8217: [0, 0.69444, 0, 0, 0.31944],
            8220: [0, 0.69444, 0, 0, 0.60278],
            8221: [0, 0.69444, 0, 0, 0.60278],
            8224: [0.19444, 0.69444, 0, 0, 0.51111],
            8225: [0.19444, 0.69444, 0, 0, 0.51111],
            8242: [0, 0.55556, 0, 0, 0.34444],
            8407: [0, 0.72444, 0.15486, 0, 0.575],
            8463: [0, 0.69444, 0, 0, 0.66759],
            8465: [0, 0.69444, 0, 0, 0.83055],
            8467: [0, 0.69444, 0, 0, 0.47361],
            8472: [0.19444, 0.44444, 0, 0, 0.74027],
            8476: [0, 0.69444, 0, 0, 0.83055],
            8501: [0, 0.69444, 0, 0, 0.70277],
            8592: [-0.10889, 0.39111, 0, 0, 1.14999],
            8593: [0.19444, 0.69444, 0, 0, 0.575],
            8594: [-0.10889, 0.39111, 0, 0, 1.14999],
            8595: [0.19444, 0.69444, 0, 0, 0.575],
            8596: [-0.10889, 0.39111, 0, 0, 1.14999],
            8597: [0.25, 0.75, 0, 0, 0.575],
            8598: [0.19444, 0.69444, 0, 0, 1.14999],
            8599: [0.19444, 0.69444, 0, 0, 1.14999],
            8600: [0.19444, 0.69444, 0, 0, 1.14999],
            8601: [0.19444, 0.69444, 0, 0, 1.14999],
            8636: [-0.10889, 0.39111, 0, 0, 1.14999],
            8637: [-0.10889, 0.39111, 0, 0, 1.14999],
            8640: [-0.10889, 0.39111, 0, 0, 1.14999],
            8641: [-0.10889, 0.39111, 0, 0, 1.14999],
            8656: [-0.10889, 0.39111, 0, 0, 1.14999],
            8657: [0.19444, 0.69444, 0, 0, 0.70277],
            8658: [-0.10889, 0.39111, 0, 0, 1.14999],
            8659: [0.19444, 0.69444, 0, 0, 0.70277],
            8660: [-0.10889, 0.39111, 0, 0, 1.14999],
            8661: [0.25, 0.75, 0, 0, 0.70277],
            8704: [0, 0.69444, 0, 0, 0.63889],
            8706: [0, 0.69444, 0.06389, 0, 0.62847],
            8707: [0, 0.69444, 0, 0, 0.63889],
            8709: [0.05556, 0.75, 0, 0, 0.575],
            8711: [0, 0.68611, 0, 0, 0.95833],
            8712: [0.08556, 0.58556, 0, 0, 0.76666],
            8715: [0.08556, 0.58556, 0, 0, 0.76666],
            8722: [0.13333, 0.63333, 0, 0, 0.89444],
            8723: [0.13333, 0.63333, 0, 0, 0.89444],
            8725: [0.25, 0.75, 0, 0, 0.575],
            8726: [0.25, 0.75, 0, 0, 0.575],
            8727: [-0.02778, 0.47222, 0, 0, 0.575],
            8728: [-0.02639, 0.47361, 0, 0, 0.575],
            8729: [-0.02639, 0.47361, 0, 0, 0.575],
            8730: [0.18, 0.82, 0, 0, 0.95833],
            8733: [0, 0.44444, 0, 0, 0.89444],
            8734: [0, 0.44444, 0, 0, 1.14999],
            8736: [0, 0.69224, 0, 0, 0.72222],
            8739: [0.25, 0.75, 0, 0, 0.31944],
            8741: [0.25, 0.75, 0, 0, 0.575],
            8743: [0, 0.55556, 0, 0, 0.76666],
            8744: [0, 0.55556, 0, 0, 0.76666],
            8745: [0, 0.55556, 0, 0, 0.76666],
            8746: [0, 0.55556, 0, 0, 0.76666],
            8747: [0.19444, 0.69444, 0.12778, 0, 0.56875],
            8764: [-0.10889, 0.39111, 0, 0, 0.89444],
            8768: [0.19444, 0.69444, 0, 0, 0.31944],
            8771: [0.00222, 0.50222, 0, 0, 0.89444],
            8773: [0.027, 0.638, 0, 0, 0.894],
            8776: [0.02444, 0.52444, 0, 0, 0.89444],
            8781: [0.00222, 0.50222, 0, 0, 0.89444],
            8801: [0.00222, 0.50222, 0, 0, 0.89444],
            8804: [0.19667, 0.69667, 0, 0, 0.89444],
            8805: [0.19667, 0.69667, 0, 0, 0.89444],
            8810: [0.08556, 0.58556, 0, 0, 1.14999],
            8811: [0.08556, 0.58556, 0, 0, 1.14999],
            8826: [0.08556, 0.58556, 0, 0, 0.89444],
            8827: [0.08556, 0.58556, 0, 0, 0.89444],
            8834: [0.08556, 0.58556, 0, 0, 0.89444],
            8835: [0.08556, 0.58556, 0, 0, 0.89444],
            8838: [0.19667, 0.69667, 0, 0, 0.89444],
            8839: [0.19667, 0.69667, 0, 0, 0.89444],
            8846: [0, 0.55556, 0, 0, 0.76666],
            8849: [0.19667, 0.69667, 0, 0, 0.89444],
            8850: [0.19667, 0.69667, 0, 0, 0.89444],
            8851: [0, 0.55556, 0, 0, 0.76666],
            8852: [0, 0.55556, 0, 0, 0.76666],
            8853: [0.13333, 0.63333, 0, 0, 0.89444],
            8854: [0.13333, 0.63333, 0, 0, 0.89444],
            8855: [0.13333, 0.63333, 0, 0, 0.89444],
            8856: [0.13333, 0.63333, 0, 0, 0.89444],
            8857: [0.13333, 0.63333, 0, 0, 0.89444],
            8866: [0, 0.69444, 0, 0, 0.70277],
            8867: [0, 0.69444, 0, 0, 0.70277],
            8868: [0, 0.69444, 0, 0, 0.89444],
            8869: [0, 0.69444, 0, 0, 0.89444],
            8900: [-0.02639, 0.47361, 0, 0, 0.575],
            8901: [-0.02639, 0.47361, 0, 0, 0.31944],
            8902: [-0.02778, 0.47222, 0, 0, 0.575],
            8968: [0.25, 0.75, 0, 0, 0.51111],
            8969: [0.25, 0.75, 0, 0, 0.51111],
            8970: [0.25, 0.75, 0, 0, 0.51111],
            8971: [0.25, 0.75, 0, 0, 0.51111],
            8994: [-0.13889, 0.36111, 0, 0, 1.14999],
            8995: [-0.13889, 0.36111, 0, 0, 1.14999],
            9651: [0.19444, 0.69444, 0, 0, 1.02222],
            9657: [-0.02778, 0.47222, 0, 0, 0.575],
            9661: [0.19444, 0.69444, 0, 0, 1.02222],
            9667: [-0.02778, 0.47222, 0, 0, 0.575],
            9711: [0.19444, 0.69444, 0, 0, 1.14999],
            9824: [0.12963, 0.69444, 0, 0, 0.89444],
            9825: [0.12963, 0.69444, 0, 0, 0.89444],
            9826: [0.12963, 0.69444, 0, 0, 0.89444],
            9827: [0.12963, 0.69444, 0, 0, 0.89444],
            9837: [0, 0.75, 0, 0, 0.44722],
            9838: [0.19444, 0.69444, 0, 0, 0.44722],
            9839: [0.19444, 0.69444, 0, 0, 0.44722],
            10216: [0.25, 0.75, 0, 0, 0.44722],
            10217: [0.25, 0.75, 0, 0, 0.44722],
            10815: [0, 0.68611, 0, 0, 0.9],
            10927: [0.19667, 0.69667, 0, 0, 0.89444],
            10928: [0.19667, 0.69667, 0, 0, 0.89444],
            57376: [0.19444, 0.69444, 0, 0, 0]
          },
          'Main-BoldItalic': {
            32: [0, 0, 0, 0, 0.25],
            33: [0, 0.69444, 0.11417, 0, 0.38611],
            34: [0, 0.69444, 0.07939, 0, 0.62055],
            35: [0.19444, 0.69444, 0.06833, 0, 0.94444],
            37: [0.05556, 0.75, 0.12861, 0, 0.94444],
            38: [0, 0.69444, 0.08528, 0, 0.88555],
            39: [0, 0.69444, 0.12945, 0, 0.35555],
            40: [0.25, 0.75, 0.15806, 0, 0.47333],
            41: [0.25, 0.75, 0.03306, 0, 0.47333],
            42: [0, 0.75, 0.14333, 0, 0.59111],
            43: [0.10333, 0.60333, 0.03306, 0, 0.88555],
            44: [0.19444, 0.14722, 0, 0, 0.35555],
            45: [0, 0.44444, 0.02611, 0, 0.41444],
            46: [0, 0.14722, 0, 0, 0.35555],
            47: [0.25, 0.75, 0.15806, 0, 0.59111],
            48: [0, 0.64444, 0.13167, 0, 0.59111],
            49: [0, 0.64444, 0.13167, 0, 0.59111],
            50: [0, 0.64444, 0.13167, 0, 0.59111],
            51: [0, 0.64444, 0.13167, 0, 0.59111],
            52: [0.19444, 0.64444, 0.13167, 0, 0.59111],
            53: [0, 0.64444, 0.13167, 0, 0.59111],
            54: [0, 0.64444, 0.13167, 0, 0.59111],
            55: [0.19444, 0.64444, 0.13167, 0, 0.59111],
            56: [0, 0.64444, 0.13167, 0, 0.59111],
            57: [0, 0.64444, 0.13167, 0, 0.59111],
            58: [0, 0.44444, 0.06695, 0, 0.35555],
            59: [0.19444, 0.44444, 0.06695, 0, 0.35555],
            61: [-0.10889, 0.39111, 0.06833, 0, 0.88555],
            63: [0, 0.69444, 0.11472, 0, 0.59111],
            64: [0, 0.69444, 0.09208, 0, 0.88555],
            65: [0, 0.68611, 0, 0, 0.86555],
            66: [0, 0.68611, 0.0992, 0, 0.81666],
            67: [0, 0.68611, 0.14208, 0, 0.82666],
            68: [0, 0.68611, 0.09062, 0, 0.87555],
            69: [0, 0.68611, 0.11431, 0, 0.75666],
            70: [0, 0.68611, 0.12903, 0, 0.72722],
            71: [0, 0.68611, 0.07347, 0, 0.89527],
            72: [0, 0.68611, 0.17208, 0, 0.8961],
            73: [0, 0.68611, 0.15681, 0, 0.47166],
            74: [0, 0.68611, 0.145, 0, 0.61055],
            75: [0, 0.68611, 0.14208, 0, 0.89499],
            76: [0, 0.68611, 0, 0, 0.69777],
            77: [0, 0.68611, 0.17208, 0, 1.07277],
            78: [0, 0.68611, 0.17208, 0, 0.8961],
            79: [0, 0.68611, 0.09062, 0, 0.85499],
            80: [0, 0.68611, 0.0992, 0, 0.78721],
            81: [0.19444, 0.68611, 0.09062, 0, 0.85499],
            82: [0, 0.68611, 0.02559, 0, 0.85944],
            83: [0, 0.68611, 0.11264, 0, 0.64999],
            84: [0, 0.68611, 0.12903, 0, 0.7961],
            85: [0, 0.68611, 0.17208, 0, 0.88083],
            86: [0, 0.68611, 0.18625, 0, 0.86555],
            87: [0, 0.68611, 0.18625, 0, 1.15999],
            88: [0, 0.68611, 0.15681, 0, 0.86555],
            89: [0, 0.68611, 0.19803, 0, 0.86555],
            90: [0, 0.68611, 0.14208, 0, 0.70888],
            91: [0.25, 0.75, 0.1875, 0, 0.35611],
            93: [0.25, 0.75, 0.09972, 0, 0.35611],
            94: [0, 0.69444, 0.06709, 0, 0.59111],
            95: [0.31, 0.13444, 0.09811, 0, 0.59111],
            97: [0, 0.44444, 0.09426, 0, 0.59111],
            98: [0, 0.69444, 0.07861, 0, 0.53222],
            99: [0, 0.44444, 0.05222, 0, 0.53222],
            100: [0, 0.69444, 0.10861, 0, 0.59111],
            101: [0, 0.44444, 0.085, 0, 0.53222],
            102: [0.19444, 0.69444, 0.21778, 0, 0.4],
            103: [0.19444, 0.44444, 0.105, 0, 0.53222],
            104: [0, 0.69444, 0.09426, 0, 0.59111],
            105: [0, 0.69326, 0.11387, 0, 0.35555],
            106: [0.19444, 0.69326, 0.1672, 0, 0.35555],
            107: [0, 0.69444, 0.11111, 0, 0.53222],
            108: [0, 0.69444, 0.10861, 0, 0.29666],
            109: [0, 0.44444, 0.09426, 0, 0.94444],
            110: [0, 0.44444, 0.09426, 0, 0.64999],
            111: [0, 0.44444, 0.07861, 0, 0.59111],
            112: [0.19444, 0.44444, 0.07861, 0, 0.59111],
            113: [0.19444, 0.44444, 0.105, 0, 0.53222],
            114: [0, 0.44444, 0.11111, 0, 0.50167],
            115: [0, 0.44444, 0.08167, 0, 0.48694],
            116: [0, 0.63492, 0.09639, 0, 0.385],
            117: [0, 0.44444, 0.09426, 0, 0.62055],
            118: [0, 0.44444, 0.11111, 0, 0.53222],
            119: [0, 0.44444, 0.11111, 0, 0.76777],
            120: [0, 0.44444, 0.12583, 0, 0.56055],
            121: [0.19444, 0.44444, 0.105, 0, 0.56166],
            122: [0, 0.44444, 0.13889, 0, 0.49055],
            126: [0.35, 0.34444, 0.11472, 0, 0.59111],
            160: [0, 0, 0, 0, 0.25],
            168: [0, 0.69444, 0.11473, 0, 0.59111],
            176: [0, 0.69444, 0, 0, 0.94888],
            184: [0.17014, 0, 0, 0, 0.53222],
            198: [0, 0.68611, 0.11431, 0, 1.02277],
            216: [0.04861, 0.73472, 0.09062, 0, 0.88555],
            223: [0.19444, 0.69444, 0.09736, 0, 0.665],
            230: [0, 0.44444, 0.085, 0, 0.82666],
            248: [0.09722, 0.54167, 0.09458, 0, 0.59111],
            305: [0, 0.44444, 0.09426, 0, 0.35555],
            338: [0, 0.68611, 0.11431, 0, 1.14054],
            339: [0, 0.44444, 0.085, 0, 0.82666],
            567: [0.19444, 0.44444, 0.04611, 0, 0.385],
            710: [0, 0.69444, 0.06709, 0, 0.59111],
            711: [0, 0.63194, 0.08271, 0, 0.59111],
            713: [0, 0.59444, 0.10444, 0, 0.59111],
            714: [0, 0.69444, 0.08528, 0, 0.59111],
            715: [0, 0.69444, 0, 0, 0.59111],
            728: [0, 0.69444, 0.10333, 0, 0.59111],
            729: [0, 0.69444, 0.12945, 0, 0.35555],
            730: [0, 0.69444, 0, 0, 0.94888],
            732: [0, 0.69444, 0.11472, 0, 0.59111],
            733: [0, 0.69444, 0.11472, 0, 0.59111],
            915: [0, 0.68611, 0.12903, 0, 0.69777],
            916: [0, 0.68611, 0, 0, 0.94444],
            920: [0, 0.68611, 0.09062, 0, 0.88555],
            923: [0, 0.68611, 0, 0, 0.80666],
            926: [0, 0.68611, 0.15092, 0, 0.76777],
            928: [0, 0.68611, 0.17208, 0, 0.8961],
            931: [0, 0.68611, 0.11431, 0, 0.82666],
            933: [0, 0.68611, 0.10778, 0, 0.88555],
            934: [0, 0.68611, 0.05632, 0, 0.82666],
            936: [0, 0.68611, 0.10778, 0, 0.88555],
            937: [0, 0.68611, 0.0992, 0, 0.82666],
            8211: [0, 0.44444, 0.09811, 0, 0.59111],
            8212: [0, 0.44444, 0.09811, 0, 1.18221],
            8216: [0, 0.69444, 0.12945, 0, 0.35555],
            8217: [0, 0.69444, 0.12945, 0, 0.35555],
            8220: [0, 0.69444, 0.16772, 0, 0.62055],
            8221: [0, 0.69444, 0.07939, 0, 0.62055]
          },
          'Main-Italic': {
            32: [0, 0, 0, 0, 0.25],
            33: [0, 0.69444, 0.12417, 0, 0.30667],
            34: [0, 0.69444, 0.06961, 0, 0.51444],
            35: [0.19444, 0.69444, 0.06616, 0, 0.81777],
            37: [0.05556, 0.75, 0.13639, 0, 0.81777],
            38: [0, 0.69444, 0.09694, 0, 0.76666],
            39: [0, 0.69444, 0.12417, 0, 0.30667],
            40: [0.25, 0.75, 0.16194, 0, 0.40889],
            41: [0.25, 0.75, 0.03694, 0, 0.40889],
            42: [0, 0.75, 0.14917, 0, 0.51111],
            43: [0.05667, 0.56167, 0.03694, 0, 0.76666],
            44: [0.19444, 0.10556, 0, 0, 0.30667],
            45: [0, 0.43056, 0.02826, 0, 0.35778],
            46: [0, 0.10556, 0, 0, 0.30667],
            47: [0.25, 0.75, 0.16194, 0, 0.51111],
            48: [0, 0.64444, 0.13556, 0, 0.51111],
            49: [0, 0.64444, 0.13556, 0, 0.51111],
            50: [0, 0.64444, 0.13556, 0, 0.51111],
            51: [0, 0.64444, 0.13556, 0, 0.51111],
            52: [0.19444, 0.64444, 0.13556, 0, 0.51111],
            53: [0, 0.64444, 0.13556, 0, 0.51111],
            54: [0, 0.64444, 0.13556, 0, 0.51111],
            55: [0.19444, 0.64444, 0.13556, 0, 0.51111],
            56: [0, 0.64444, 0.13556, 0, 0.51111],
            57: [0, 0.64444, 0.13556, 0, 0.51111],
            58: [0, 0.43056, 0.0582, 0, 0.30667],
            59: [0.19444, 0.43056, 0.0582, 0, 0.30667],
            61: [-0.13313, 0.36687, 0.06616, 0, 0.76666],
            63: [0, 0.69444, 0.1225, 0, 0.51111],
            64: [0, 0.69444, 0.09597, 0, 0.76666],
            65: [0, 0.68333, 0, 0, 0.74333],
            66: [0, 0.68333, 0.10257, 0, 0.70389],
            67: [0, 0.68333, 0.14528, 0, 0.71555],
            68: [0, 0.68333, 0.09403, 0, 0.755],
            69: [0, 0.68333, 0.12028, 0, 0.67833],
            70: [0, 0.68333, 0.13305, 0, 0.65277],
            71: [0, 0.68333, 0.08722, 0, 0.77361],
            72: [0, 0.68333, 0.16389, 0, 0.74333],
            73: [0, 0.68333, 0.15806, 0, 0.38555],
            74: [0, 0.68333, 0.14028, 0, 0.525],
            75: [0, 0.68333, 0.14528, 0, 0.76888],
            76: [0, 0.68333, 0, 0, 0.62722],
            77: [0, 0.68333, 0.16389, 0, 0.89666],
            78: [0, 0.68333, 0.16389, 0, 0.74333],
            79: [0, 0.68333, 0.09403, 0, 0.76666],
            80: [0, 0.68333, 0.10257, 0, 0.67833],
            81: [0.19444, 0.68333, 0.09403, 0, 0.76666],
            82: [0, 0.68333, 0.03868, 0, 0.72944],
            83: [0, 0.68333, 0.11972, 0, 0.56222],
            84: [0, 0.68333, 0.13305, 0, 0.71555],
            85: [0, 0.68333, 0.16389, 0, 0.74333],
            86: [0, 0.68333, 0.18361, 0, 0.74333],
            87: [0, 0.68333, 0.18361, 0, 0.99888],
            88: [0, 0.68333, 0.15806, 0, 0.74333],
            89: [0, 0.68333, 0.19383, 0, 0.74333],
            90: [0, 0.68333, 0.14528, 0, 0.61333],
            91: [0.25, 0.75, 0.1875, 0, 0.30667],
            93: [0.25, 0.75, 0.10528, 0, 0.30667],
            94: [0, 0.69444, 0.06646, 0, 0.51111],
            95: [0.31, 0.12056, 0.09208, 0, 0.51111],
            97: [0, 0.43056, 0.07671, 0, 0.51111],
            98: [0, 0.69444, 0.06312, 0, 0.46],
            99: [0, 0.43056, 0.05653, 0, 0.46],
            100: [0, 0.69444, 0.10333, 0, 0.51111],
            101: [0, 0.43056, 0.07514, 0, 0.46],
            102: [0.19444, 0.69444, 0.21194, 0, 0.30667],
            103: [0.19444, 0.43056, 0.08847, 0, 0.46],
            104: [0, 0.69444, 0.07671, 0, 0.51111],
            105: [0, 0.65536, 0.1019, 0, 0.30667],
            106: [0.19444, 0.65536, 0.14467, 0, 0.30667],
            107: [0, 0.69444, 0.10764, 0, 0.46],
            108: [0, 0.69444, 0.10333, 0, 0.25555],
            109: [0, 0.43056, 0.07671, 0, 0.81777],
            110: [0, 0.43056, 0.07671, 0, 0.56222],
            111: [0, 0.43056, 0.06312, 0, 0.51111],
            112: [0.19444, 0.43056, 0.06312, 0, 0.51111],
            113: [0.19444, 0.43056, 0.08847, 0, 0.46],
            114: [0, 0.43056, 0.10764, 0, 0.42166],
            115: [0, 0.43056, 0.08208, 0, 0.40889],
            116: [0, 0.61508, 0.09486, 0, 0.33222],
            117: [0, 0.43056, 0.07671, 0, 0.53666],
            118: [0, 0.43056, 0.10764, 0, 0.46],
            119: [0, 0.43056, 0.10764, 0, 0.66444],
            120: [0, 0.43056, 0.12042, 0, 0.46389],
            121: [0.19444, 0.43056, 0.08847, 0, 0.48555],
            122: [0, 0.43056, 0.12292, 0, 0.40889],
            126: [0.35, 0.31786, 0.11585, 0, 0.51111],
            160: [0, 0, 0, 0, 0.25],
            168: [0, 0.66786, 0.10474, 0, 0.51111],
            176: [0, 0.69444, 0, 0, 0.83129],
            184: [0.17014, 0, 0, 0, 0.46],
            198: [0, 0.68333, 0.12028, 0, 0.88277],
            216: [0.04861, 0.73194, 0.09403, 0, 0.76666],
            223: [0.19444, 0.69444, 0.10514, 0, 0.53666],
            230: [0, 0.43056, 0.07514, 0, 0.71555],
            248: [0.09722, 0.52778, 0.09194, 0, 0.51111],
            338: [0, 0.68333, 0.12028, 0, 0.98499],
            339: [0, 0.43056, 0.07514, 0, 0.71555],
            710: [0, 0.69444, 0.06646, 0, 0.51111],
            711: [0, 0.62847, 0.08295, 0, 0.51111],
            713: [0, 0.56167, 0.10333, 0, 0.51111],
            714: [0, 0.69444, 0.09694, 0, 0.51111],
            715: [0, 0.69444, 0, 0, 0.51111],
            728: [0, 0.69444, 0.10806, 0, 0.51111],
            729: [0, 0.66786, 0.11752, 0, 0.30667],
            730: [0, 0.69444, 0, 0, 0.83129],
            732: [0, 0.66786, 0.11585, 0, 0.51111],
            733: [0, 0.69444, 0.1225, 0, 0.51111],
            915: [0, 0.68333, 0.13305, 0, 0.62722],
            916: [0, 0.68333, 0, 0, 0.81777],
            920: [0, 0.68333, 0.09403, 0, 0.76666],
            923: [0, 0.68333, 0, 0, 0.69222],
            926: [0, 0.68333, 0.15294, 0, 0.66444],
            928: [0, 0.68333, 0.16389, 0, 0.74333],
            931: [0, 0.68333, 0.12028, 0, 0.71555],
            933: [0, 0.68333, 0.11111, 0, 0.76666],
            934: [0, 0.68333, 0.05986, 0, 0.71555],
            936: [0, 0.68333, 0.11111, 0, 0.76666],
            937: [0, 0.68333, 0.10257, 0, 0.71555],
            8211: [0, 0.43056, 0.09208, 0, 0.51111],
            8212: [0, 0.43056, 0.09208, 0, 1.02222],
            8216: [0, 0.69444, 0.12417, 0, 0.30667],
            8217: [0, 0.69444, 0.12417, 0, 0.30667],
            8220: [0, 0.69444, 0.1685, 0, 0.51444],
            8221: [0, 0.69444, 0.06961, 0, 0.51444],
            8463: [0, 0.68889, 0, 0, 0.54028]
          },
          'Main-Regular': {
            32: [0, 0, 0, 0, 0.25],
            33: [0, 0.69444, 0, 0, 0.27778],
            34: [0, 0.69444, 0, 0, 0.5],
            35: [0.19444, 0.69444, 0, 0, 0.83334],
            36: [0.05556, 0.75, 0, 0, 0.5],
            37: [0.05556, 0.75, 0, 0, 0.83334],
            38: [0, 0.69444, 0, 0, 0.77778],
            39: [0, 0.69444, 0, 0, 0.27778],
            40: [0.25, 0.75, 0, 0, 0.38889],
            41: [0.25, 0.75, 0, 0, 0.38889],
            42: [0, 0.75, 0, 0, 0.5],
            43: [0.08333, 0.58333, 0, 0, 0.77778],
            44: [0.19444, 0.10556, 0, 0, 0.27778],
            45: [0, 0.43056, 0, 0, 0.33333],
            46: [0, 0.10556, 0, 0, 0.27778],
            47: [0.25, 0.75, 0, 0, 0.5],
            48: [0, 0.64444, 0, 0, 0.5],
            49: [0, 0.64444, 0, 0, 0.5],
            50: [0, 0.64444, 0, 0, 0.5],
            51: [0, 0.64444, 0, 0, 0.5],
            52: [0, 0.64444, 0, 0, 0.5],
            53: [0, 0.64444, 0, 0, 0.5],
            54: [0, 0.64444, 0, 0, 0.5],
            55: [0, 0.64444, 0, 0, 0.5],
            56: [0, 0.64444, 0, 0, 0.5],
            57: [0, 0.64444, 0, 0, 0.5],
            58: [0, 0.43056, 0, 0, 0.27778],
            59: [0.19444, 0.43056, 0, 0, 0.27778],
            60: [0.0391, 0.5391, 0, 0, 0.77778],
            61: [-0.13313, 0.36687, 0, 0, 0.77778],
            62: [0.0391, 0.5391, 0, 0, 0.77778],
            63: [0, 0.69444, 0, 0, 0.47222],
            64: [0, 0.69444, 0, 0, 0.77778],
            65: [0, 0.68333, 0, 0, 0.75],
            66: [0, 0.68333, 0, 0, 0.70834],
            67: [0, 0.68333, 0, 0, 0.72222],
            68: [0, 0.68333, 0, 0, 0.76389],
            69: [0, 0.68333, 0, 0, 0.68056],
            70: [0, 0.68333, 0, 0, 0.65278],
            71: [0, 0.68333, 0, 0, 0.78472],
            72: [0, 0.68333, 0, 0, 0.75],
            73: [0, 0.68333, 0, 0, 0.36111],
            74: [0, 0.68333, 0, 0, 0.51389],
            75: [0, 0.68333, 0, 0, 0.77778],
            76: [0, 0.68333, 0, 0, 0.625],
            77: [0, 0.68333, 0, 0, 0.91667],
            78: [0, 0.68333, 0, 0, 0.75],
            79: [0, 0.68333, 0, 0, 0.77778],
            80: [0, 0.68333, 0, 0, 0.68056],
            81: [0.19444, 0.68333, 0, 0, 0.77778],
            82: [0, 0.68333, 0, 0, 0.73611],
            83: [0, 0.68333, 0, 0, 0.55556],
            84: [0, 0.68333, 0, 0, 0.72222],
            85: [0, 0.68333, 0, 0, 0.75],
            86: [0, 0.68333, 0.01389, 0, 0.75],
            87: [0, 0.68333, 0.01389, 0, 1.02778],
            88: [0, 0.68333, 0, 0, 0.75],
            89: [0, 0.68333, 0.025, 0, 0.75],
            90: [0, 0.68333, 0, 0, 0.61111],
            91: [0.25, 0.75, 0, 0, 0.27778],
            92: [0.25, 0.75, 0, 0, 0.5],
            93: [0.25, 0.75, 0, 0, 0.27778],
            94: [0, 0.69444, 0, 0, 0.5],
            95: [0.31, 0.12056, 0.02778, 0, 0.5],
            97: [0, 0.43056, 0, 0, 0.5],
            98: [0, 0.69444, 0, 0, 0.55556],
            99: [0, 0.43056, 0, 0, 0.44445],
            100: [0, 0.69444, 0, 0, 0.55556],
            101: [0, 0.43056, 0, 0, 0.44445],
            102: [0, 0.69444, 0.07778, 0, 0.30556],
            103: [0.19444, 0.43056, 0.01389, 0, 0.5],
            104: [0, 0.69444, 0, 0, 0.55556],
            105: [0, 0.66786, 0, 0, 0.27778],
            106: [0.19444, 0.66786, 0, 0, 0.30556],
            107: [0, 0.69444, 0, 0, 0.52778],
            108: [0, 0.69444, 0, 0, 0.27778],
            109: [0, 0.43056, 0, 0, 0.83334],
            110: [0, 0.43056, 0, 0, 0.55556],
            111: [0, 0.43056, 0, 0, 0.5],
            112: [0.19444, 0.43056, 0, 0, 0.55556],
            113: [0.19444, 0.43056, 0, 0, 0.52778],
            114: [0, 0.43056, 0, 0, 0.39167],
            115: [0, 0.43056, 0, 0, 0.39445],
            116: [0, 0.61508, 0, 0, 0.38889],
            117: [0, 0.43056, 0, 0, 0.55556],
            118: [0, 0.43056, 0.01389, 0, 0.52778],
            119: [0, 0.43056, 0.01389, 0, 0.72222],
            120: [0, 0.43056, 0, 0, 0.52778],
            121: [0.19444, 0.43056, 0.01389, 0, 0.52778],
            122: [0, 0.43056, 0, 0, 0.44445],
            123: [0.25, 0.75, 0, 0, 0.5],
            124: [0.25, 0.75, 0, 0, 0.27778],
            125: [0.25, 0.75, 0, 0, 0.5],
            126: [0.35, 0.31786, 0, 0, 0.5],
            160: [0, 0, 0, 0, 0.25],
            163: [0, 0.69444, 0, 0, 0.76909],
            167: [0.19444, 0.69444, 0, 0, 0.44445],
            168: [0, 0.66786, 0, 0, 0.5],
            172: [0, 0.43056, 0, 0, 0.66667],
            176: [0, 0.69444, 0, 0, 0.75],
            177: [0.08333, 0.58333, 0, 0, 0.77778],
            182: [0.19444, 0.69444, 0, 0, 0.61111],
            184: [0.17014, 0, 0, 0, 0.44445],
            198: [0, 0.68333, 0, 0, 0.90278],
            215: [0.08333, 0.58333, 0, 0, 0.77778],
            216: [0.04861, 0.73194, 0, 0, 0.77778],
            223: [0, 0.69444, 0, 0, 0.5],
            230: [0, 0.43056, 0, 0, 0.72222],
            247: [0.08333, 0.58333, 0, 0, 0.77778],
            248: [0.09722, 0.52778, 0, 0, 0.5],
            305: [0, 0.43056, 0, 0, 0.27778],
            338: [0, 0.68333, 0, 0, 1.01389],
            339: [0, 0.43056, 0, 0, 0.77778],
            567: [0.19444, 0.43056, 0, 0, 0.30556],
            710: [0, 0.69444, 0, 0, 0.5],
            711: [0, 0.62847, 0, 0, 0.5],
            713: [0, 0.56778, 0, 0, 0.5],
            714: [0, 0.69444, 0, 0, 0.5],
            715: [0, 0.69444, 0, 0, 0.5],
            728: [0, 0.69444, 0, 0, 0.5],
            729: [0, 0.66786, 0, 0, 0.27778],
            730: [0, 0.69444, 0, 0, 0.75],
            732: [0, 0.66786, 0, 0, 0.5],
            733: [0, 0.69444, 0, 0, 0.5],
            915: [0, 0.68333, 0, 0, 0.625],
            916: [0, 0.68333, 0, 0, 0.83334],
            920: [0, 0.68333, 0, 0, 0.77778],
            923: [0, 0.68333, 0, 0, 0.69445],
            926: [0, 0.68333, 0, 0, 0.66667],
            928: [0, 0.68333, 0, 0, 0.75],
            931: [0, 0.68333, 0, 0, 0.72222],
            933: [0, 0.68333, 0, 0, 0.77778],
            934: [0, 0.68333, 0, 0, 0.72222],
            936: [0, 0.68333, 0, 0, 0.77778],
            937: [0, 0.68333, 0, 0, 0.72222],
            8211: [0, 0.43056, 0.02778, 0, 0.5],
            8212: [0, 0.43056, 0.02778, 0, 1],
            8216: [0, 0.69444, 0, 0, 0.27778],
            8217: [0, 0.69444, 0, 0, 0.27778],
            8220: [0, 0.69444, 0, 0, 0.5],
            8221: [0, 0.69444, 0, 0, 0.5],
            8224: [0.19444, 0.69444, 0, 0, 0.44445],
            8225: [0.19444, 0.69444, 0, 0, 0.44445],
            8230: [0, 0.123, 0, 0, 1.172],
            8242: [0, 0.55556, 0, 0, 0.275],
            8407: [0, 0.71444, 0.15382, 0, 0.5],
            8463: [0, 0.68889, 0, 0, 0.54028],
            8465: [0, 0.69444, 0, 0, 0.72222],
            8467: [0, 0.69444, 0, 0.11111, 0.41667],
            8472: [0.19444, 0.43056, 0, 0.11111, 0.63646],
            8476: [0, 0.69444, 0, 0, 0.72222],
            8501: [0, 0.69444, 0, 0, 0.61111],
            8592: [-0.13313, 0.36687, 0, 0, 1],
            8593: [0.19444, 0.69444, 0, 0, 0.5],
            8594: [-0.13313, 0.36687, 0, 0, 1],
            8595: [0.19444, 0.69444, 0, 0, 0.5],
            8596: [-0.13313, 0.36687, 0, 0, 1],
            8597: [0.25, 0.75, 0, 0, 0.5],
            8598: [0.19444, 0.69444, 0, 0, 1],
            8599: [0.19444, 0.69444, 0, 0, 1],
            8600: [0.19444, 0.69444, 0, 0, 1],
            8601: [0.19444, 0.69444, 0, 0, 1],
            8614: [0.011, 0.511, 0, 0, 1],
            8617: [0.011, 0.511, 0, 0, 1.126],
            8618: [0.011, 0.511, 0, 0, 1.126],
            8636: [-0.13313, 0.36687, 0, 0, 1],
            8637: [-0.13313, 0.36687, 0, 0, 1],
            8640: [-0.13313, 0.36687, 0, 0, 1],
            8641: [-0.13313, 0.36687, 0, 0, 1],
            8652: [0.011, 0.671, 0, 0, 1],
            8656: [-0.13313, 0.36687, 0, 0, 1],
            8657: [0.19444, 0.69444, 0, 0, 0.61111],
            8658: [-0.13313, 0.36687, 0, 0, 1],
            8659: [0.19444, 0.69444, 0, 0, 0.61111],
            8660: [-0.13313, 0.36687, 0, 0, 1],
            8661: [0.25, 0.75, 0, 0, 0.61111],
            8704: [0, 0.69444, 0, 0, 0.55556],
            8706: [0, 0.69444, 0.05556, 0.08334, 0.5309],
            8707: [0, 0.69444, 0, 0, 0.55556],
            8709: [0.05556, 0.75, 0, 0, 0.5],
            8711: [0, 0.68333, 0, 0, 0.83334],
            8712: [0.0391, 0.5391, 0, 0, 0.66667],
            8715: [0.0391, 0.5391, 0, 0, 0.66667],
            8722: [0.08333, 0.58333, 0, 0, 0.77778],
            8723: [0.08333, 0.58333, 0, 0, 0.77778],
            8725: [0.25, 0.75, 0, 0, 0.5],
            8726: [0.25, 0.75, 0, 0, 0.5],
            8727: [-0.03472, 0.46528, 0, 0, 0.5],
            8728: [-0.05555, 0.44445, 0, 0, 0.5],
            8729: [-0.05555, 0.44445, 0, 0, 0.5],
            8730: [0.2, 0.8, 0, 0, 0.83334],
            8733: [0, 0.43056, 0, 0, 0.77778],
            8734: [0, 0.43056, 0, 0, 1],
            8736: [0, 0.69224, 0, 0, 0.72222],
            8739: [0.25, 0.75, 0, 0, 0.27778],
            8741: [0.25, 0.75, 0, 0, 0.5],
            8743: [0, 0.55556, 0, 0, 0.66667],
            8744: [0, 0.55556, 0, 0, 0.66667],
            8745: [0, 0.55556, 0, 0, 0.66667],
            8746: [0, 0.55556, 0, 0, 0.66667],
            8747: [0.19444, 0.69444, 0.11111, 0, 0.41667],
            8764: [-0.13313, 0.36687, 0, 0, 0.77778],
            8768: [0.19444, 0.69444, 0, 0, 0.27778],
            8771: [-0.03625, 0.46375, 0, 0, 0.77778],
            8773: [-0.022, 0.589, 0, 0, 0.778],
            8776: [-0.01688, 0.48312, 0, 0, 0.77778],
            8781: [-0.03625, 0.46375, 0, 0, 0.77778],
            8784: [-0.133, 0.673, 0, 0, 0.778],
            8801: [-0.03625, 0.46375, 0, 0, 0.77778],
            8804: [0.13597, 0.63597, 0, 0, 0.77778],
            8805: [0.13597, 0.63597, 0, 0, 0.77778],
            8810: [0.0391, 0.5391, 0, 0, 1],
            8811: [0.0391, 0.5391, 0, 0, 1],
            8826: [0.0391, 0.5391, 0, 0, 0.77778],
            8827: [0.0391, 0.5391, 0, 0, 0.77778],
            8834: [0.0391, 0.5391, 0, 0, 0.77778],
            8835: [0.0391, 0.5391, 0, 0, 0.77778],
            8838: [0.13597, 0.63597, 0, 0, 0.77778],
            8839: [0.13597, 0.63597, 0, 0, 0.77778],
            8846: [0, 0.55556, 0, 0, 0.66667],
            8849: [0.13597, 0.63597, 0, 0, 0.77778],
            8850: [0.13597, 0.63597, 0, 0, 0.77778],
            8851: [0, 0.55556, 0, 0, 0.66667],
            8852: [0, 0.55556, 0, 0, 0.66667],
            8853: [0.08333, 0.58333, 0, 0, 0.77778],
            8854: [0.08333, 0.58333, 0, 0, 0.77778],
            8855: [0.08333, 0.58333, 0, 0, 0.77778],
            8856: [0.08333, 0.58333, 0, 0, 0.77778],
            8857: [0.08333, 0.58333, 0, 0, 0.77778],
            8866: [0, 0.69444, 0, 0, 0.61111],
            8867: [0, 0.69444, 0, 0, 0.61111],
            8868: [0, 0.69444, 0, 0, 0.77778],
            8869: [0, 0.69444, 0, 0, 0.77778],
            8872: [0.249, 0.75, 0, 0, 0.867],
            8900: [-0.05555, 0.44445, 0, 0, 0.5],
            8901: [-0.05555, 0.44445, 0, 0, 0.27778],
            8902: [-0.03472, 0.46528, 0, 0, 0.5],
            8904: [0.005, 0.505, 0, 0, 0.9],
            8942: [0.03, 0.903, 0, 0, 0.278],
            8943: [-0.19, 0.313, 0, 0, 1.172],
            8945: [-0.1, 0.823, 0, 0, 1.282],
            8968: [0.25, 0.75, 0, 0, 0.44445],
            8969: [0.25, 0.75, 0, 0, 0.44445],
            8970: [0.25, 0.75, 0, 0, 0.44445],
            8971: [0.25, 0.75, 0, 0, 0.44445],
            8994: [-0.14236, 0.35764, 0, 0, 1],
            8995: [-0.14236, 0.35764, 0, 0, 1],
            9136: [0.244, 0.744, 0, 0, 0.412],
            9137: [0.244, 0.745, 0, 0, 0.412],
            9651: [0.19444, 0.69444, 0, 0, 0.88889],
            9657: [-0.03472, 0.46528, 0, 0, 0.5],
            9661: [0.19444, 0.69444, 0, 0, 0.88889],
            9667: [-0.03472, 0.46528, 0, 0, 0.5],
            9711: [0.19444, 0.69444, 0, 0, 1],
            9824: [0.12963, 0.69444, 0, 0, 0.77778],
            9825: [0.12963, 0.69444, 0, 0, 0.77778],
            9826: [0.12963, 0.69444, 0, 0, 0.77778],
            9827: [0.12963, 0.69444, 0, 0, 0.77778],
            9837: [0, 0.75, 0, 0, 0.38889],
            9838: [0.19444, 0.69444, 0, 0, 0.38889],
            9839: [0.19444, 0.69444, 0, 0, 0.38889],
            10216: [0.25, 0.75, 0, 0, 0.38889],
            10217: [0.25, 0.75, 0, 0, 0.38889],
            10222: [0.244, 0.744, 0, 0, 0.412],
            10223: [0.244, 0.745, 0, 0, 0.412],
            10229: [0.011, 0.511, 0, 0, 1.609],
            10230: [0.011, 0.511, 0, 0, 1.638],
            10231: [0.011, 0.511, 0, 0, 1.859],
            10232: [0.024, 0.525, 0, 0, 1.609],
            10233: [0.024, 0.525, 0, 0, 1.638],
            10234: [0.024, 0.525, 0, 0, 1.858],
            10236: [0.011, 0.511, 0, 0, 1.638],
            10815: [0, 0.68333, 0, 0, 0.75],
            10927: [0.13597, 0.63597, 0, 0, 0.77778],
            10928: [0.13597, 0.63597, 0, 0, 0.77778],
            57376: [0.19444, 0.69444, 0, 0, 0]
          },
          'Math-BoldItalic': {
            32: [0, 0, 0, 0, 0.25],
            48: [0, 0.44444, 0, 0, 0.575],
            49: [0, 0.44444, 0, 0, 0.575],
            50: [0, 0.44444, 0, 0, 0.575],
            51: [0.19444, 0.44444, 0, 0, 0.575],
            52: [0.19444, 0.44444, 0, 0, 0.575],
            53: [0.19444, 0.44444, 0, 0, 0.575],
            54: [0, 0.64444, 0, 0, 0.575],
            55: [0.19444, 0.44444, 0, 0, 0.575],
            56: [0, 0.64444, 0, 0, 0.575],
            57: [0.19444, 0.44444, 0, 0, 0.575],
            65: [0, 0.68611, 0, 0, 0.86944],
            66: [0, 0.68611, 0.04835, 0, 0.8664],
            67: [0, 0.68611, 0.06979, 0, 0.81694],
            68: [0, 0.68611, 0.03194, 0, 0.93812],
            69: [0, 0.68611, 0.05451, 0, 0.81007],
            70: [0, 0.68611, 0.15972, 0, 0.68889],
            71: [0, 0.68611, 0, 0, 0.88673],
            72: [0, 0.68611, 0.08229, 0, 0.98229],
            73: [0, 0.68611, 0.07778, 0, 0.51111],
            74: [0, 0.68611, 0.10069, 0, 0.63125],
            75: [0, 0.68611, 0.06979, 0, 0.97118],
            76: [0, 0.68611, 0, 0, 0.75555],
            77: [0, 0.68611, 0.11424, 0, 1.14201],
            78: [0, 0.68611, 0.11424, 0, 0.95034],
            79: [0, 0.68611, 0.03194, 0, 0.83666],
            80: [0, 0.68611, 0.15972, 0, 0.72309],
            81: [0.19444, 0.68611, 0, 0, 0.86861],
            82: [0, 0.68611, 0.00421, 0, 0.87235],
            83: [0, 0.68611, 0.05382, 0, 0.69271],
            84: [0, 0.68611, 0.15972, 0, 0.63663],
            85: [0, 0.68611, 0.11424, 0, 0.80027],
            86: [0, 0.68611, 0.25555, 0, 0.67778],
            87: [0, 0.68611, 0.15972, 0, 1.09305],
            88: [0, 0.68611, 0.07778, 0, 0.94722],
            89: [0, 0.68611, 0.25555, 0, 0.67458],
            90: [0, 0.68611, 0.06979, 0, 0.77257],
            97: [0, 0.44444, 0, 0, 0.63287],
            98: [0, 0.69444, 0, 0, 0.52083],
            99: [0, 0.44444, 0, 0, 0.51342],
            100: [0, 0.69444, 0, 0, 0.60972],
            101: [0, 0.44444, 0, 0, 0.55361],
            102: [0.19444, 0.69444, 0.11042, 0, 0.56806],
            103: [0.19444, 0.44444, 0.03704, 0, 0.5449],
            104: [0, 0.69444, 0, 0, 0.66759],
            105: [0, 0.69326, 0, 0, 0.4048],
            106: [0.19444, 0.69326, 0.0622, 0, 0.47083],
            107: [0, 0.69444, 0.01852, 0, 0.6037],
            108: [0, 0.69444, 0.0088, 0, 0.34815],
            109: [0, 0.44444, 0, 0, 1.0324],
            110: [0, 0.44444, 0, 0, 0.71296],
            111: [0, 0.44444, 0, 0, 0.58472],
            112: [0.19444, 0.44444, 0, 0, 0.60092],
            113: [0.19444, 0.44444, 0.03704, 0, 0.54213],
            114: [0, 0.44444, 0.03194, 0, 0.5287],
            115: [0, 0.44444, 0, 0, 0.53125],
            116: [0, 0.63492, 0, 0, 0.41528],
            117: [0, 0.44444, 0, 0, 0.68102],
            118: [0, 0.44444, 0.03704, 0, 0.56666],
            119: [0, 0.44444, 0.02778, 0, 0.83148],
            120: [0, 0.44444, 0, 0, 0.65903],
            121: [0.19444, 0.44444, 0.03704, 0, 0.59028],
            122: [0, 0.44444, 0.04213, 0, 0.55509],
            160: [0, 0, 0, 0, 0.25],
            915: [0, 0.68611, 0.15972, 0, 0.65694],
            916: [0, 0.68611, 0, 0, 0.95833],
            920: [0, 0.68611, 0.03194, 0, 0.86722],
            923: [0, 0.68611, 0, 0, 0.80555],
            926: [0, 0.68611, 0.07458, 0, 0.84125],
            928: [0, 0.68611, 0.08229, 0, 0.98229],
            931: [0, 0.68611, 0.05451, 0, 0.88507],
            933: [0, 0.68611, 0.15972, 0, 0.67083],
            934: [0, 0.68611, 0, 0, 0.76666],
            936: [0, 0.68611, 0.11653, 0, 0.71402],
            937: [0, 0.68611, 0.04835, 0, 0.8789],
            945: [0, 0.44444, 0, 0, 0.76064],
            946: [0.19444, 0.69444, 0.03403, 0, 0.65972],
            947: [0.19444, 0.44444, 0.06389, 0, 0.59003],
            948: [0, 0.69444, 0.03819, 0, 0.52222],
            949: [0, 0.44444, 0, 0, 0.52882],
            950: [0.19444, 0.69444, 0.06215, 0, 0.50833],
            951: [0.19444, 0.44444, 0.03704, 0, 0.6],
            952: [0, 0.69444, 0.03194, 0, 0.5618],
            953: [0, 0.44444, 0, 0, 0.41204],
            954: [0, 0.44444, 0, 0, 0.66759],
            955: [0, 0.69444, 0, 0, 0.67083],
            956: [0.19444, 0.44444, 0, 0, 0.70787],
            957: [0, 0.44444, 0.06898, 0, 0.57685],
            958: [0.19444, 0.69444, 0.03021, 0, 0.50833],
            959: [0, 0.44444, 0, 0, 0.58472],
            960: [0, 0.44444, 0.03704, 0, 0.68241],
            961: [0.19444, 0.44444, 0, 0, 0.6118],
            962: [0.09722, 0.44444, 0.07917, 0, 0.42361],
            963: [0, 0.44444, 0.03704, 0, 0.68588],
            964: [0, 0.44444, 0.13472, 0, 0.52083],
            965: [0, 0.44444, 0.03704, 0, 0.63055],
            966: [0.19444, 0.44444, 0, 0, 0.74722],
            967: [0.19444, 0.44444, 0, 0, 0.71805],
            968: [0.19444, 0.69444, 0.03704, 0, 0.75833],
            969: [0, 0.44444, 0.03704, 0, 0.71782],
            977: [0, 0.69444, 0, 0, 0.69155],
            981: [0.19444, 0.69444, 0, 0, 0.7125],
            982: [0, 0.44444, 0.03194, 0, 0.975],
            1009: [0.19444, 0.44444, 0, 0, 0.6118],
            1013: [0, 0.44444, 0, 0, 0.48333],
            57649: [0, 0.44444, 0, 0, 0.39352],
            57911: [0.19444, 0.44444, 0, 0, 0.43889]
          },
          'Math-Italic': {
            32: [0, 0, 0, 0, 0.25],
            48: [0, 0.43056, 0, 0, 0.5],
            49: [0, 0.43056, 0, 0, 0.5],
            50: [0, 0.43056, 0, 0, 0.5],
            51: [0.19444, 0.43056, 0, 0, 0.5],
            52: [0.19444, 0.43056, 0, 0, 0.5],
            53: [0.19444, 0.43056, 0, 0, 0.5],
            54: [0, 0.64444, 0, 0, 0.5],
            55: [0.19444, 0.43056, 0, 0, 0.5],
            56: [0, 0.64444, 0, 0, 0.5],
            57: [0.19444, 0.43056, 0, 0, 0.5],
            65: [0, 0.68333, 0, 0.13889, 0.75],
            66: [0, 0.68333, 0.05017, 0.08334, 0.75851],
            67: [0, 0.68333, 0.07153, 0.08334, 0.71472],
            68: [0, 0.68333, 0.02778, 0.05556, 0.82792],
            69: [0, 0.68333, 0.05764, 0.08334, 0.7382],
            70: [0, 0.68333, 0.13889, 0.08334, 0.64306],
            71: [0, 0.68333, 0, 0.08334, 0.78625],
            72: [0, 0.68333, 0.08125, 0.05556, 0.83125],
            73: [0, 0.68333, 0.07847, 0.11111, 0.43958],
            74: [0, 0.68333, 0.09618, 0.16667, 0.55451],
            75: [0, 0.68333, 0.07153, 0.05556, 0.84931],
            76: [0, 0.68333, 0, 0.02778, 0.68056],
            77: [0, 0.68333, 0.10903, 0.08334, 0.97014],
            78: [0, 0.68333, 0.10903, 0.08334, 0.80347],
            79: [0, 0.68333, 0.02778, 0.08334, 0.76278],
            80: [0, 0.68333, 0.13889, 0.08334, 0.64201],
            81: [0.19444, 0.68333, 0, 0.08334, 0.79056],
            82: [0, 0.68333, 0.00773, 0.08334, 0.75929],
            83: [0, 0.68333, 0.05764, 0.08334, 0.6132],
            84: [0, 0.68333, 0.13889, 0.08334, 0.58438],
            85: [0, 0.68333, 0.10903, 0.02778, 0.68278],
            86: [0, 0.68333, 0.22222, 0, 0.58333],
            87: [0, 0.68333, 0.13889, 0, 0.94445],
            88: [0, 0.68333, 0.07847, 0.08334, 0.82847],
            89: [0, 0.68333, 0.22222, 0, 0.58056],
            90: [0, 0.68333, 0.07153, 0.08334, 0.68264],
            97: [0, 0.43056, 0, 0, 0.52859],
            98: [0, 0.69444, 0, 0, 0.42917],
            99: [0, 0.43056, 0, 0.05556, 0.43276],
            100: [0, 0.69444, 0, 0.16667, 0.52049],
            101: [0, 0.43056, 0, 0.05556, 0.46563],
            102: [0.19444, 0.69444, 0.10764, 0.16667, 0.48959],
            103: [0.19444, 0.43056, 0.03588, 0.02778, 0.47697],
            104: [0, 0.69444, 0, 0, 0.57616],
            105: [0, 0.65952, 0, 0, 0.34451],
            106: [0.19444, 0.65952, 0.05724, 0, 0.41181],
            107: [0, 0.69444, 0.03148, 0, 0.5206],
            108: [0, 0.69444, 0.01968, 0.08334, 0.29838],
            109: [0, 0.43056, 0, 0, 0.87801],
            110: [0, 0.43056, 0, 0, 0.60023],
            111: [0, 0.43056, 0, 0.05556, 0.48472],
            112: [0.19444, 0.43056, 0, 0.08334, 0.50313],
            113: [0.19444, 0.43056, 0.03588, 0.08334, 0.44641],
            114: [0, 0.43056, 0.02778, 0.05556, 0.45116],
            115: [0, 0.43056, 0, 0.05556, 0.46875],
            116: [0, 0.61508, 0, 0.08334, 0.36111],
            117: [0, 0.43056, 0, 0.02778, 0.57246],
            118: [0, 0.43056, 0.03588, 0.02778, 0.48472],
            119: [0, 0.43056, 0.02691, 0.08334, 0.71592],
            120: [0, 0.43056, 0, 0.02778, 0.57153],
            121: [0.19444, 0.43056, 0.03588, 0.05556, 0.49028],
            122: [0, 0.43056, 0.04398, 0.05556, 0.46505],
            160: [0, 0, 0, 0, 0.25],
            915: [0, 0.68333, 0.13889, 0.08334, 0.61528],
            916: [0, 0.68333, 0, 0.16667, 0.83334],
            920: [0, 0.68333, 0.02778, 0.08334, 0.76278],
            923: [0, 0.68333, 0, 0.16667, 0.69445],
            926: [0, 0.68333, 0.07569, 0.08334, 0.74236],
            928: [0, 0.68333, 0.08125, 0.05556, 0.83125],
            931: [0, 0.68333, 0.05764, 0.08334, 0.77986],
            933: [0, 0.68333, 0.13889, 0.05556, 0.58333],
            934: [0, 0.68333, 0, 0.08334, 0.66667],
            936: [0, 0.68333, 0.11, 0.05556, 0.61222],
            937: [0, 0.68333, 0.05017, 0.08334, 0.7724],
            945: [0, 0.43056, 0.0037, 0.02778, 0.6397],
            946: [0.19444, 0.69444, 0.05278, 0.08334, 0.56563],
            947: [0.19444, 0.43056, 0.05556, 0, 0.51773],
            948: [0, 0.69444, 0.03785, 0.05556, 0.44444],
            949: [0, 0.43056, 0, 0.08334, 0.46632],
            950: [0.19444, 0.69444, 0.07378, 0.08334, 0.4375],
            951: [0.19444, 0.43056, 0.03588, 0.05556, 0.49653],
            952: [0, 0.69444, 0.02778, 0.08334, 0.46944],
            953: [0, 0.43056, 0, 0.05556, 0.35394],
            954: [0, 0.43056, 0, 0, 0.57616],
            955: [0, 0.69444, 0, 0, 0.58334],
            956: [0.19444, 0.43056, 0, 0.02778, 0.60255],
            957: [0, 0.43056, 0.06366, 0.02778, 0.49398],
            958: [0.19444, 0.69444, 0.04601, 0.11111, 0.4375],
            959: [0, 0.43056, 0, 0.05556, 0.48472],
            960: [0, 0.43056, 0.03588, 0, 0.57003],
            961: [0.19444, 0.43056, 0, 0.08334, 0.51702],
            962: [0.09722, 0.43056, 0.07986, 0.08334, 0.36285],
            963: [0, 0.43056, 0.03588, 0, 0.57141],
            964: [0, 0.43056, 0.1132, 0.02778, 0.43715],
            965: [0, 0.43056, 0.03588, 0.02778, 0.54028],
            966: [0.19444, 0.43056, 0, 0.08334, 0.65417],
            967: [0.19444, 0.43056, 0, 0.05556, 0.62569],
            968: [0.19444, 0.69444, 0.03588, 0.11111, 0.65139],
            969: [0, 0.43056, 0.03588, 0, 0.62245],
            977: [0, 0.69444, 0, 0.08334, 0.59144],
            981: [0.19444, 0.69444, 0, 0.08334, 0.59583],
            982: [0, 0.43056, 0.02778, 0, 0.82813],
            1009: [0.19444, 0.43056, 0, 0.08334, 0.51702],
            1013: [0, 0.43056, 0, 0.05556, 0.4059],
            57649: [0, 0.43056, 0, 0.02778, 0.32246],
            57911: [0.19444, 0.43056, 0, 0.08334, 0.38403]
          },
          'SansSerif-Bold': {
            32: [0, 0, 0, 0, 0.25],
            33: [0, 0.69444, 0, 0, 0.36667],
            34: [0, 0.69444, 0, 0, 0.55834],
            35: [0.19444, 0.69444, 0, 0, 0.91667],
            36: [0.05556, 0.75, 0, 0, 0.55],
            37: [0.05556, 0.75, 0, 0, 1.02912],
            38: [0, 0.69444, 0, 0, 0.83056],
            39: [0, 0.69444, 0, 0, 0.30556],
            40: [0.25, 0.75, 0, 0, 0.42778],
            41: [0.25, 0.75, 0, 0, 0.42778],
            42: [0, 0.75, 0, 0, 0.55],
            43: [0.11667, 0.61667, 0, 0, 0.85556],
            44: [0.10556, 0.13056, 0, 0, 0.30556],
            45: [0, 0.45833, 0, 0, 0.36667],
            46: [0, 0.13056, 0, 0, 0.30556],
            47: [0.25, 0.75, 0, 0, 0.55],
            48: [0, 0.69444, 0, 0, 0.55],
            49: [0, 0.69444, 0, 0, 0.55],
            50: [0, 0.69444, 0, 0, 0.55],
            51: [0, 0.69444, 0, 0, 0.55],
            52: [0, 0.69444, 0, 0, 0.55],
            53: [0, 0.69444, 0, 0, 0.55],
            54: [0, 0.69444, 0, 0, 0.55],
            55: [0, 0.69444, 0, 0, 0.55],
            56: [0, 0.69444, 0, 0, 0.55],
            57: [0, 0.69444, 0, 0, 0.55],
            58: [0, 0.45833, 0, 0, 0.30556],
            59: [0.10556, 0.45833, 0, 0, 0.30556],
            61: [-0.09375, 0.40625, 0, 0, 0.85556],
            63: [0, 0.69444, 0, 0, 0.51945],
            64: [0, 0.69444, 0, 0, 0.73334],
            65: [0, 0.69444, 0, 0, 0.73334],
            66: [0, 0.69444, 0, 0, 0.73334],
            67: [0, 0.69444, 0, 0, 0.70278],
            68: [0, 0.69444, 0, 0, 0.79445],
            69: [0, 0.69444, 0, 0, 0.64167],
            70: [0, 0.69444, 0, 0, 0.61111],
            71: [0, 0.69444, 0, 0, 0.73334],
            72: [0, 0.69444, 0, 0, 0.79445],
            73: [0, 0.69444, 0, 0, 0.33056],
            74: [0, 0.69444, 0, 0, 0.51945],
            75: [0, 0.69444, 0, 0, 0.76389],
            76: [0, 0.69444, 0, 0, 0.58056],
            77: [0, 0.69444, 0, 0, 0.97778],
            78: [0, 0.69444, 0, 0, 0.79445],
            79: [0, 0.69444, 0, 0, 0.79445],
            80: [0, 0.69444, 0, 0, 0.70278],
            81: [0.10556, 0.69444, 0, 0, 0.79445],
            82: [0, 0.69444, 0, 0, 0.70278],
            83: [0, 0.69444, 0, 0, 0.61111],
            84: [0, 0.69444, 0, 0, 0.73334],
            85: [0, 0.69444, 0, 0, 0.76389],
            86: [0, 0.69444, 0.01528, 0, 0.73334],
            87: [0, 0.69444, 0.01528, 0, 1.03889],
            88: [0, 0.69444, 0, 0, 0.73334],
            89: [0, 0.69444, 0.0275, 0, 0.73334],
            90: [0, 0.69444, 0, 0, 0.67223],
            91: [0.25, 0.75, 0, 0, 0.34306],
            93: [0.25, 0.75, 0, 0, 0.34306],
            94: [0, 0.69444, 0, 0, 0.55],
            95: [0.35, 0.10833, 0.03056, 0, 0.55],
            97: [0, 0.45833, 0, 0, 0.525],
            98: [0, 0.69444, 0, 0, 0.56111],
            99: [0, 0.45833, 0, 0, 0.48889],
            100: [0, 0.69444, 0, 0, 0.56111],
            101: [0, 0.45833, 0, 0, 0.51111],
            102: [0, 0.69444, 0.07639, 0, 0.33611],
            103: [0.19444, 0.45833, 0.01528, 0, 0.55],
            104: [0, 0.69444, 0, 0, 0.56111],
            105: [0, 0.69444, 0, 0, 0.25556],
            106: [0.19444, 0.69444, 0, 0, 0.28611],
            107: [0, 0.69444, 0, 0, 0.53056],
            108: [0, 0.69444, 0, 0, 0.25556],
            109: [0, 0.45833, 0, 0, 0.86667],
            110: [0, 0.45833, 0, 0, 0.56111],
            111: [0, 0.45833, 0, 0, 0.55],
            112: [0.19444, 0.45833, 0, 0, 0.56111],
            113: [0.19444, 0.45833, 0, 0, 0.56111],
            114: [0, 0.45833, 0.01528, 0, 0.37222],
            115: [0, 0.45833, 0, 0, 0.42167],
            116: [0, 0.58929, 0, 0, 0.40417],
            117: [0, 0.45833, 0, 0, 0.56111],
            118: [0, 0.45833, 0.01528, 0, 0.5],
            119: [0, 0.45833, 0.01528, 0, 0.74445],
            120: [0, 0.45833, 0, 0, 0.5],
            121: [0.19444, 0.45833, 0.01528, 0, 0.5],
            122: [0, 0.45833, 0, 0, 0.47639],
            126: [0.35, 0.34444, 0, 0, 0.55],
            160: [0, 0, 0, 0, 0.25],
            168: [0, 0.69444, 0, 0, 0.55],
            176: [0, 0.69444, 0, 0, 0.73334],
            180: [0, 0.69444, 0, 0, 0.55],
            184: [0.17014, 0, 0, 0, 0.48889],
            305: [0, 0.45833, 0, 0, 0.25556],
            567: [0.19444, 0.45833, 0, 0, 0.28611],
            710: [0, 0.69444, 0, 0, 0.55],
            711: [0, 0.63542, 0, 0, 0.55],
            713: [0, 0.63778, 0, 0, 0.55],
            728: [0, 0.69444, 0, 0, 0.55],
            729: [0, 0.69444, 0, 0, 0.30556],
            730: [0, 0.69444, 0, 0, 0.73334],
            732: [0, 0.69444, 0, 0, 0.55],
            733: [0, 0.69444, 0, 0, 0.55],
            915: [0, 0.69444, 0, 0, 0.58056],
            916: [0, 0.69444, 0, 0, 0.91667],
            920: [0, 0.69444, 0, 0, 0.85556],
            923: [0, 0.69444, 0, 0, 0.67223],
            926: [0, 0.69444, 0, 0, 0.73334],
            928: [0, 0.69444, 0, 0, 0.79445],
            931: [0, 0.69444, 0, 0, 0.79445],
            933: [0, 0.69444, 0, 0, 0.85556],
            934: [0, 0.69444, 0, 0, 0.79445],
            936: [0, 0.69444, 0, 0, 0.85556],
            937: [0, 0.69444, 0, 0, 0.79445],
            8211: [0, 0.45833, 0.03056, 0, 0.55],
            8212: [0, 0.45833, 0.03056, 0, 1.10001],
            8216: [0, 0.69444, 0, 0, 0.30556],
            8217: [0, 0.69444, 0, 0, 0.30556],
            8220: [0, 0.69444, 0, 0, 0.55834],
            8221: [0, 0.69444, 0, 0, 0.55834]
          },
          'SansSerif-Italic': {
            32: [0, 0, 0, 0, 0.25],
            33: [0, 0.69444, 0.05733, 0, 0.31945],
            34: [0, 0.69444, 0.00316, 0, 0.5],
            35: [0.19444, 0.69444, 0.05087, 0, 0.83334],
            36: [0.05556, 0.75, 0.11156, 0, 0.5],
            37: [0.05556, 0.75, 0.03126, 0, 0.83334],
            38: [0, 0.69444, 0.03058, 0, 0.75834],
            39: [0, 0.69444, 0.07816, 0, 0.27778],
            40: [0.25, 0.75, 0.13164, 0, 0.38889],
            41: [0.25, 0.75, 0.02536, 0, 0.38889],
            42: [0, 0.75, 0.11775, 0, 0.5],
            43: [0.08333, 0.58333, 0.02536, 0, 0.77778],
            44: [0.125, 0.08333, 0, 0, 0.27778],
            45: [0, 0.44444, 0.01946, 0, 0.33333],
            46: [0, 0.08333, 0, 0, 0.27778],
            47: [0.25, 0.75, 0.13164, 0, 0.5],
            48: [0, 0.65556, 0.11156, 0, 0.5],
            49: [0, 0.65556, 0.11156, 0, 0.5],
            50: [0, 0.65556, 0.11156, 0, 0.5],
            51: [0, 0.65556, 0.11156, 0, 0.5],
            52: [0, 0.65556, 0.11156, 0, 0.5],
            53: [0, 0.65556, 0.11156, 0, 0.5],
            54: [0, 0.65556, 0.11156, 0, 0.5],
            55: [0, 0.65556, 0.11156, 0, 0.5],
            56: [0, 0.65556, 0.11156, 0, 0.5],
            57: [0, 0.65556, 0.11156, 0, 0.5],
            58: [0, 0.44444, 0.02502, 0, 0.27778],
            59: [0.125, 0.44444, 0.02502, 0, 0.27778],
            61: [-0.13, 0.37, 0.05087, 0, 0.77778],
            63: [0, 0.69444, 0.11809, 0, 0.47222],
            64: [0, 0.69444, 0.07555, 0, 0.66667],
            65: [0, 0.69444, 0, 0, 0.66667],
            66: [0, 0.69444, 0.08293, 0, 0.66667],
            67: [0, 0.69444, 0.11983, 0, 0.63889],
            68: [0, 0.69444, 0.07555, 0, 0.72223],
            69: [0, 0.69444, 0.11983, 0, 0.59722],
            70: [0, 0.69444, 0.13372, 0, 0.56945],
            71: [0, 0.69444, 0.11983, 0, 0.66667],
            72: [0, 0.69444, 0.08094, 0, 0.70834],
            73: [0, 0.69444, 0.13372, 0, 0.27778],
            74: [0, 0.69444, 0.08094, 0, 0.47222],
            75: [0, 0.69444, 0.11983, 0, 0.69445],
            76: [0, 0.69444, 0, 0, 0.54167],
            77: [0, 0.69444, 0.08094, 0, 0.875],
            78: [0, 0.69444, 0.08094, 0, 0.70834],
            79: [0, 0.69444, 0.07555, 0, 0.73611],
            80: [0, 0.69444, 0.08293, 0, 0.63889],
            81: [0.125, 0.69444, 0.07555, 0, 0.73611],
            82: [0, 0.69444, 0.08293, 0, 0.64584],
            83: [0, 0.69444, 0.09205, 0, 0.55556],
            84: [0, 0.69444, 0.13372, 0, 0.68056],
            85: [0, 0.69444, 0.08094, 0, 0.6875],
            86: [0, 0.69444, 0.1615, 0, 0.66667],
            87: [0, 0.69444, 0.1615, 0, 0.94445],
            88: [0, 0.69444, 0.13372, 0, 0.66667],
            89: [0, 0.69444, 0.17261, 0, 0.66667],
            90: [0, 0.69444, 0.11983, 0, 0.61111],
            91: [0.25, 0.75, 0.15942, 0, 0.28889],
            93: [0.25, 0.75, 0.08719, 0, 0.28889],
            94: [0, 0.69444, 0.0799, 0, 0.5],
            95: [0.35, 0.09444, 0.08616, 0, 0.5],
            97: [0, 0.44444, 0.00981, 0, 0.48056],
            98: [0, 0.69444, 0.03057, 0, 0.51667],
            99: [0, 0.44444, 0.08336, 0, 0.44445],
            100: [0, 0.69444, 0.09483, 0, 0.51667],
            101: [0, 0.44444, 0.06778, 0, 0.44445],
            102: [0, 0.69444, 0.21705, 0, 0.30556],
            103: [0.19444, 0.44444, 0.10836, 0, 0.5],
            104: [0, 0.69444, 0.01778, 0, 0.51667],
            105: [0, 0.67937, 0.09718, 0, 0.23889],
            106: [0.19444, 0.67937, 0.09162, 0, 0.26667],
            107: [0, 0.69444, 0.08336, 0, 0.48889],
            108: [0, 0.69444, 0.09483, 0, 0.23889],
            109: [0, 0.44444, 0.01778, 0, 0.79445],
            110: [0, 0.44444, 0.01778, 0, 0.51667],
            111: [0, 0.44444, 0.06613, 0, 0.5],
            112: [0.19444, 0.44444, 0.0389, 0, 0.51667],
            113: [0.19444, 0.44444, 0.04169, 0, 0.51667],
            114: [0, 0.44444, 0.10836, 0, 0.34167],
            115: [0, 0.44444, 0.0778, 0, 0.38333],
            116: [0, 0.57143, 0.07225, 0, 0.36111],
            117: [0, 0.44444, 0.04169, 0, 0.51667],
            118: [0, 0.44444, 0.10836, 0, 0.46111],
            119: [0, 0.44444, 0.10836, 0, 0.68334],
            120: [0, 0.44444, 0.09169, 0, 0.46111],
            121: [0.19444, 0.44444, 0.10836, 0, 0.46111],
            122: [0, 0.44444, 0.08752, 0, 0.43472],
            126: [0.35, 0.32659, 0.08826, 0, 0.5],
            160: [0, 0, 0, 0, 0.25],
            168: [0, 0.67937, 0.06385, 0, 0.5],
            176: [0, 0.69444, 0, 0, 0.73752],
            184: [0.17014, 0, 0, 0, 0.44445],
            305: [0, 0.44444, 0.04169, 0, 0.23889],
            567: [0.19444, 0.44444, 0.04169, 0, 0.26667],
            710: [0, 0.69444, 0.0799, 0, 0.5],
            711: [0, 0.63194, 0.08432, 0, 0.5],
            713: [0, 0.60889, 0.08776, 0, 0.5],
            714: [0, 0.69444, 0.09205, 0, 0.5],
            715: [0, 0.69444, 0, 0, 0.5],
            728: [0, 0.69444, 0.09483, 0, 0.5],
            729: [0, 0.67937, 0.07774, 0, 0.27778],
            730: [0, 0.69444, 0, 0, 0.73752],
            732: [0, 0.67659, 0.08826, 0, 0.5],
            733: [0, 0.69444, 0.09205, 0, 0.5],
            915: [0, 0.69444, 0.13372, 0, 0.54167],
            916: [0, 0.69444, 0, 0, 0.83334],
            920: [0, 0.69444, 0.07555, 0, 0.77778],
            923: [0, 0.69444, 0, 0, 0.61111],
            926: [0, 0.69444, 0.12816, 0, 0.66667],
            928: [0, 0.69444, 0.08094, 0, 0.70834],
            931: [0, 0.69444, 0.11983, 0, 0.72222],
            933: [0, 0.69444, 0.09031, 0, 0.77778],
            934: [0, 0.69444, 0.04603, 0, 0.72222],
            936: [0, 0.69444, 0.09031, 0, 0.77778],
            937: [0, 0.69444, 0.08293, 0, 0.72222],
            8211: [0, 0.44444, 0.08616, 0, 0.5],
            8212: [0, 0.44444, 0.08616, 0, 1],
            8216: [0, 0.69444, 0.07816, 0, 0.27778],
            8217: [0, 0.69444, 0.07816, 0, 0.27778],
            8220: [0, 0.69444, 0.14205, 0, 0.5],
            8221: [0, 0.69444, 0.00316, 0, 0.5]
          },
          'SansSerif-Regular': {
            32: [0, 0, 0, 0, 0.25],
            33: [0, 0.69444, 0, 0, 0.31945],
            34: [0, 0.69444, 0, 0, 0.5],
            35: [0.19444, 0.69444, 0, 0, 0.83334],
            36: [0.05556, 0.75, 0, 0, 0.5],
            37: [0.05556, 0.75, 0, 0, 0.83334],
            38: [0, 0.69444, 0, 0, 0.75834],
            39: [0, 0.69444, 0, 0, 0.27778],
            40: [0.25, 0.75, 0, 0, 0.38889],
            41: [0.25, 0.75, 0, 0, 0.38889],
            42: [0, 0.75, 0, 0, 0.5],
            43: [0.08333, 0.58333, 0, 0, 0.77778],
            44: [0.125, 0.08333, 0, 0, 0.27778],
            45: [0, 0.44444, 0, 0, 0.33333],
            46: [0, 0.08333, 0, 0, 0.27778],
            47: [0.25, 0.75, 0, 0, 0.5],
            48: [0, 0.65556, 0, 0, 0.5],
            49: [0, 0.65556, 0, 0, 0.5],
            50: [0, 0.65556, 0, 0, 0.5],
            51: [0, 0.65556, 0, 0, 0.5],
            52: [0, 0.65556, 0, 0, 0.5],
            53: [0, 0.65556, 0, 0, 0.5],
            54: [0, 0.65556, 0, 0, 0.5],
            55: [0, 0.65556, 0, 0, 0.5],
            56: [0, 0.65556, 0, 0, 0.5],
            57: [0, 0.65556, 0, 0, 0.5],
            58: [0, 0.44444, 0, 0, 0.27778],
            59: [0.125, 0.44444, 0, 0, 0.27778],
            61: [-0.13, 0.37, 0, 0, 0.77778],
            63: [0, 0.69444, 0, 0, 0.47222],
            64: [0, 0.69444, 0, 0, 0.66667],
            65: [0, 0.69444, 0, 0, 0.66667],
            66: [0, 0.69444, 0, 0, 0.66667],
            67: [0, 0.69444, 0, 0, 0.63889],
            68: [0, 0.69444, 0, 0, 0.72223],
            69: [0, 0.69444, 0, 0, 0.59722],
            70: [0, 0.69444, 0, 0, 0.56945],
            71: [0, 0.69444, 0, 0, 0.66667],
            72: [0, 0.69444, 0, 0, 0.70834],
            73: [0, 0.69444, 0, 0, 0.27778],
            74: [0, 0.69444, 0, 0, 0.47222],
            75: [0, 0.69444, 0, 0, 0.69445],
            76: [0, 0.69444, 0, 0, 0.54167],
            77: [0, 0.69444, 0, 0, 0.875],
            78: [0, 0.69444, 0, 0, 0.70834],
            79: [0, 0.69444, 0, 0, 0.73611],
            80: [0, 0.69444, 0, 0, 0.63889],
            81: [0.125, 0.69444, 0, 0, 0.73611],
            82: [0, 0.69444, 0, 0, 0.64584],
            83: [0, 0.69444, 0, 0, 0.55556],
            84: [0, 0.69444, 0, 0, 0.68056],
            85: [0, 0.69444, 0, 0, 0.6875],
            86: [0, 0.69444, 0.01389, 0, 0.66667],
            87: [0, 0.69444, 0.01389, 0, 0.94445],
            88: [0, 0.69444, 0, 0, 0.66667],
            89: [0, 0.69444, 0.025, 0, 0.66667],
            90: [0, 0.69444, 0, 0, 0.61111],
            91: [0.25, 0.75, 0, 0, 0.28889],
            93: [0.25, 0.75, 0, 0, 0.28889],
            94: [0, 0.69444, 0, 0, 0.5],
            95: [0.35, 0.09444, 0.02778, 0, 0.5],
            97: [0, 0.44444, 0, 0, 0.48056],
            98: [0, 0.69444, 0, 0, 0.51667],
            99: [0, 0.44444, 0, 0, 0.44445],
            100: [0, 0.69444, 0, 0, 0.51667],
            101: [0, 0.44444, 0, 0, 0.44445],
            102: [0, 0.69444, 0.06944, 0, 0.30556],
            103: [0.19444, 0.44444, 0.01389, 0, 0.5],
            104: [0, 0.69444, 0, 0, 0.51667],
            105: [0, 0.67937, 0, 0, 0.23889],
            106: [0.19444, 0.67937, 0, 0, 0.26667],
            107: [0, 0.69444, 0, 0, 0.48889],
            108: [0, 0.69444, 0, 0, 0.23889],
            109: [0, 0.44444, 0, 0, 0.79445],
            110: [0, 0.44444, 0, 0, 0.51667],
            111: [0, 0.44444, 0, 0, 0.5],
            112: [0.19444, 0.44444, 0, 0, 0.51667],
            113: [0.19444, 0.44444, 0, 0, 0.51667],
            114: [0, 0.44444, 0.01389, 0, 0.34167],
            115: [0, 0.44444, 0, 0, 0.38333],
            116: [0, 0.57143, 0, 0, 0.36111],
            117: [0, 0.44444, 0, 0, 0.51667],
            118: [0, 0.44444, 0.01389, 0, 0.46111],
            119: [0, 0.44444, 0.01389, 0, 0.68334],
            120: [0, 0.44444, 0, 0, 0.46111],
            121: [0.19444, 0.44444, 0.01389, 0, 0.46111],
            122: [0, 0.44444, 0, 0, 0.43472],
            126: [0.35, 0.32659, 0, 0, 0.5],
            160: [0, 0, 0, 0, 0.25],
            168: [0, 0.67937, 0, 0, 0.5],
            176: [0, 0.69444, 0, 0, 0.66667],
            184: [0.17014, 0, 0, 0, 0.44445],
            305: [0, 0.44444, 0, 0, 0.23889],
            567: [0.19444, 0.44444, 0, 0, 0.26667],
            710: [0, 0.69444, 0, 0, 0.5],
            711: [0, 0.63194, 0, 0, 0.5],
            713: [0, 0.60889, 0, 0, 0.5],
            714: [0, 0.69444, 0, 0, 0.5],
            715: [0, 0.69444, 0, 0, 0.5],
            728: [0, 0.69444, 0, 0, 0.5],
            729: [0, 0.67937, 0, 0, 0.27778],
            730: [0, 0.69444, 0, 0, 0.66667],
            732: [0, 0.67659, 0, 0, 0.5],
            733: [0, 0.69444, 0, 0, 0.5],
            915: [0, 0.69444, 0, 0, 0.54167],
            916: [0, 0.69444, 0, 0, 0.83334],
            920: [0, 0.69444, 0, 0, 0.77778],
            923: [0, 0.69444, 0, 0, 0.61111],
            926: [0, 0.69444, 0, 0, 0.66667],
            928: [0, 0.69444, 0, 0, 0.70834],
            931: [0, 0.69444, 0, 0, 0.72222],
            933: [0, 0.69444, 0, 0, 0.77778],
            934: [0, 0.69444, 0, 0, 0.72222],
            936: [0, 0.69444, 0, 0, 0.77778],
            937: [0, 0.69444, 0, 0, 0.72222],
            8211: [0, 0.44444, 0.02778, 0, 0.5],
            8212: [0, 0.44444, 0.02778, 0, 1],
            8216: [0, 0.69444, 0, 0, 0.27778],
            8217: [0, 0.69444, 0, 0, 0.27778],
            8220: [0, 0.69444, 0, 0, 0.5],
            8221: [0, 0.69444, 0, 0, 0.5]
          },
          'Script-Regular': {
            32: [0, 0, 0, 0, 0.25],
            65: [0, 0.7, 0.22925, 0, 0.80253],
            66: [0, 0.7, 0.04087, 0, 0.90757],
            67: [0, 0.7, 0.1689, 0, 0.66619],
            68: [0, 0.7, 0.09371, 0, 0.77443],
            69: [0, 0.7, 0.18583, 0, 0.56162],
            70: [0, 0.7, 0.13634, 0, 0.89544],
            71: [0, 0.7, 0.17322, 0, 0.60961],
            72: [0, 0.7, 0.29694, 0, 0.96919],
            73: [0, 0.7, 0.19189, 0, 0.80907],
            74: [0.27778, 0.7, 0.19189, 0, 1.05159],
            75: [0, 0.7, 0.31259, 0, 0.91364],
            76: [0, 0.7, 0.19189, 0, 0.87373],
            77: [0, 0.7, 0.15981, 0, 1.08031],
            78: [0, 0.7, 0.3525, 0, 0.9015],
            79: [0, 0.7, 0.08078, 0, 0.73787],
            80: [0, 0.7, 0.08078, 0, 1.01262],
            81: [0, 0.7, 0.03305, 0, 0.88282],
            82: [0, 0.7, 0.06259, 0, 0.85],
            83: [0, 0.7, 0.19189, 0, 0.86767],
            84: [0, 0.7, 0.29087, 0, 0.74697],
            85: [0, 0.7, 0.25815, 0, 0.79996],
            86: [0, 0.7, 0.27523, 0, 0.62204],
            87: [0, 0.7, 0.27523, 0, 0.80532],
            88: [0, 0.7, 0.26006, 0, 0.94445],
            89: [0, 0.7, 0.2939, 0, 0.70961],
            90: [0, 0.7, 0.24037, 0, 0.8212],
            160: [0, 0, 0, 0, 0.25]
          },
          'Size1-Regular': {
            32: [0, 0, 0, 0, 0.25],
            40: [0.35001, 0.85, 0, 0, 0.45834],
            41: [0.35001, 0.85, 0, 0, 0.45834],
            47: [0.35001, 0.85, 0, 0, 0.57778],
            91: [0.35001, 0.85, 0, 0, 0.41667],
            92: [0.35001, 0.85, 0, 0, 0.57778],
            93: [0.35001, 0.85, 0, 0, 0.41667],
            123: [0.35001, 0.85, 0, 0, 0.58334],
            125: [0.35001, 0.85, 0, 0, 0.58334],
            160: [0, 0, 0, 0, 0.25],
            710: [0, 0.72222, 0, 0, 0.55556],
            732: [0, 0.72222, 0, 0, 0.55556],
            770: [0, 0.72222, 0, 0, 0.55556],
            771: [0, 0.72222, 0, 0, 0.55556],
            8214: [-99e-5, 0.601, 0, 0, 0.77778],
            8593: [1e-5, 0.6, 0, 0, 0.66667],
            8595: [1e-5, 0.6, 0, 0, 0.66667],
            8657: [1e-5, 0.6, 0, 0, 0.77778],
            8659: [1e-5, 0.6, 0, 0, 0.77778],
            8719: [0.25001, 0.75, 0, 0, 0.94445],
            8720: [0.25001, 0.75, 0, 0, 0.94445],
            8721: [0.25001, 0.75, 0, 0, 1.05556],
            8730: [0.35001, 0.85, 0, 0, 1],
            8739: [-0.00599, 0.606, 0, 0, 0.33333],
            8741: [-0.00599, 0.606, 0, 0, 0.55556],
            8747: [0.30612, 0.805, 0.19445, 0, 0.47222],
            8748: [0.306, 0.805, 0.19445, 0, 0.47222],
            8749: [0.306, 0.805, 0.19445, 0, 0.47222],
            8750: [0.30612, 0.805, 0.19445, 0, 0.47222],
            8896: [0.25001, 0.75, 0, 0, 0.83334],
            8897: [0.25001, 0.75, 0, 0, 0.83334],
            8898: [0.25001, 0.75, 0, 0, 0.83334],
            8899: [0.25001, 0.75, 0, 0, 0.83334],
            8968: [0.35001, 0.85, 0, 0, 0.47222],
            8969: [0.35001, 0.85, 0, 0, 0.47222],
            8970: [0.35001, 0.85, 0, 0, 0.47222],
            8971: [0.35001, 0.85, 0, 0, 0.47222],
            9168: [-99e-5, 0.601, 0, 0, 0.66667],
            10216: [0.35001, 0.85, 0, 0, 0.47222],
            10217: [0.35001, 0.85, 0, 0, 0.47222],
            10752: [0.25001, 0.75, 0, 0, 1.11111],
            10753: [0.25001, 0.75, 0, 0, 1.11111],
            10754: [0.25001, 0.75, 0, 0, 1.11111],
            10756: [0.25001, 0.75, 0, 0, 0.83334],
            10758: [0.25001, 0.75, 0, 0, 0.83334]
          },
          'Size2-Regular': {
            32: [0, 0, 0, 0, 0.25],
            40: [0.65002, 1.15, 0, 0, 0.59722],
            41: [0.65002, 1.15, 0, 0, 0.59722],
            47: [0.65002, 1.15, 0, 0, 0.81111],
            91: [0.65002, 1.15, 0, 0, 0.47222],
            92: [0.65002, 1.15, 0, 0, 0.81111],
            93: [0.65002, 1.15, 0, 0, 0.47222],
            123: [0.65002, 1.15, 0, 0, 0.66667],
            125: [0.65002, 1.15, 0, 0, 0.66667],
            160: [0, 0, 0, 0, 0.25],
            710: [0, 0.75, 0, 0, 1],
            732: [0, 0.75, 0, 0, 1],
            770: [0, 0.75, 0, 0, 1],
            771: [0, 0.75, 0, 0, 1],
            8719: [0.55001, 1.05, 0, 0, 1.27778],
            8720: [0.55001, 1.05, 0, 0, 1.27778],
            8721: [0.55001, 1.05, 0, 0, 1.44445],
            8730: [0.65002, 1.15, 0, 0, 1],
            8747: [0.86225, 1.36, 0.44445, 0, 0.55556],
            8748: [0.862, 1.36, 0.44445, 0, 0.55556],
            8749: [0.862, 1.36, 0.44445, 0, 0.55556],
            8750: [0.86225, 1.36, 0.44445, 0, 0.55556],
            8896: [0.55001, 1.05, 0, 0, 1.11111],
            8897: [0.55001, 1.05, 0, 0, 1.11111],
            8898: [0.55001, 1.05, 0, 0, 1.11111],
            8899: [0.55001, 1.05, 0, 0, 1.11111],
            8968: [0.65002, 1.15, 0, 0, 0.52778],
            8969: [0.65002, 1.15, 0, 0, 0.52778],
            8970: [0.65002, 1.15, 0, 0, 0.52778],
            8971: [0.65002, 1.15, 0, 0, 0.52778],
            10216: [0.65002, 1.15, 0, 0, 0.61111],
            10217: [0.65002, 1.15, 0, 0, 0.61111],
            10752: [0.55001, 1.05, 0, 0, 1.51112],
            10753: [0.55001, 1.05, 0, 0, 1.51112],
            10754: [0.55001, 1.05, 0, 0, 1.51112],
            10756: [0.55001, 1.05, 0, 0, 1.11111],
            10758: [0.55001, 1.05, 0, 0, 1.11111]
          },
          'Size3-Regular': {
            32: [0, 0, 0, 0, 0.25],
            40: [0.95003, 1.45, 0, 0, 0.73611],
            41: [0.95003, 1.45, 0, 0, 0.73611],
            47: [0.95003, 1.45, 0, 0, 1.04445],
            91: [0.95003, 1.45, 0, 0, 0.52778],
            92: [0.95003, 1.45, 0, 0, 1.04445],
            93: [0.95003, 1.45, 0, 0, 0.52778],
            123: [0.95003, 1.45, 0, 0, 0.75],
            125: [0.95003, 1.45, 0, 0, 0.75],
            160: [0, 0, 0, 0, 0.25],
            710: [0, 0.75, 0, 0, 1.44445],
            732: [0, 0.75, 0, 0, 1.44445],
            770: [0, 0.75, 0, 0, 1.44445],
            771: [0, 0.75, 0, 0, 1.44445],
            8730: [0.95003, 1.45, 0, 0, 1],
            8968: [0.95003, 1.45, 0, 0, 0.58334],
            8969: [0.95003, 1.45, 0, 0, 0.58334],
            8970: [0.95003, 1.45, 0, 0, 0.58334],
            8971: [0.95003, 1.45, 0, 0, 0.58334],
            10216: [0.95003, 1.45, 0, 0, 0.75],
            10217: [0.95003, 1.45, 0, 0, 0.75]
          },
          'Size4-Regular': {
            32: [0, 0, 0, 0, 0.25],
            40: [1.25003, 1.75, 0, 0, 0.79167],
            41: [1.25003, 1.75, 0, 0, 0.79167],
            47: [1.25003, 1.75, 0, 0, 1.27778],
            91: [1.25003, 1.75, 0, 0, 0.58334],
            92: [1.25003, 1.75, 0, 0, 1.27778],
            93: [1.25003, 1.75, 0, 0, 0.58334],
            123: [1.25003, 1.75, 0, 0, 0.80556],
            125: [1.25003, 1.75, 0, 0, 0.80556],
            160: [0, 0, 0, 0, 0.25],
            710: [0, 0.825, 0, 0, 1.8889],
            732: [0, 0.825, 0, 0, 1.8889],
            770: [0, 0.825, 0, 0, 1.8889],
            771: [0, 0.825, 0, 0, 1.8889],
            8730: [1.25003, 1.75, 0, 0, 1],
            8968: [1.25003, 1.75, 0, 0, 0.63889],
            8969: [1.25003, 1.75, 0, 0, 0.63889],
            8970: [1.25003, 1.75, 0, 0, 0.63889],
            8971: [1.25003, 1.75, 0, 0, 0.63889],
            9115: [0.64502, 1.155, 0, 0, 0.875],
            9116: [1e-5, 0.6, 0, 0, 0.875],
            9117: [0.64502, 1.155, 0, 0, 0.875],
            9118: [0.64502, 1.155, 0, 0, 0.875],
            9119: [1e-5, 0.6, 0, 0, 0.875],
            9120: [0.64502, 1.155, 0, 0, 0.875],
            9121: [0.64502, 1.155, 0, 0, 0.66667],
            9122: [-99e-5, 0.601, 0, 0, 0.66667],
            9123: [0.64502, 1.155, 0, 0, 0.66667],
            9124: [0.64502, 1.155, 0, 0, 0.66667],
            9125: [-99e-5, 0.601, 0, 0, 0.66667],
            9126: [0.64502, 1.155, 0, 0, 0.66667],
            9127: [1e-5, 0.9, 0, 0, 0.88889],
            9128: [0.65002, 1.15, 0, 0, 0.88889],
            9129: [0.90001, 0, 0, 0, 0.88889],
            9130: [0, 0.3, 0, 0, 0.88889],
            9131: [1e-5, 0.9, 0, 0, 0.88889],
            9132: [0.65002, 1.15, 0, 0, 0.88889],
            9133: [0.90001, 0, 0, 0, 0.88889],
            9143: [0.88502, 0.915, 0, 0, 1.05556],
            10216: [1.25003, 1.75, 0, 0, 0.80556],
            10217: [1.25003, 1.75, 0, 0, 0.80556],
            57344: [-0.00499, 0.605, 0, 0, 1.05556],
            57345: [-0.00499, 0.605, 0, 0, 1.05556],
            57680: [0, 0.12, 0, 0, 0.45],
            57681: [0, 0.12, 0, 0, 0.45],
            57682: [0, 0.12, 0, 0, 0.45],
            57683: [0, 0.12, 0, 0, 0.45]
          },
          'Typewriter-Regular': {
            32: [0, 0, 0, 0, 0.525],
            33: [0, 0.61111, 0, 0, 0.525],
            34: [0, 0.61111, 0, 0, 0.525],
            35: [0, 0.61111, 0, 0, 0.525],
            36: [0.08333, 0.69444, 0, 0, 0.525],
            37: [0.08333, 0.69444, 0, 0, 0.525],
            38: [0, 0.61111, 0, 0, 0.525],
            39: [0, 0.61111, 0, 0, 0.525],
            40: [0.08333, 0.69444, 0, 0, 0.525],
            41: [0.08333, 0.69444, 0, 0, 0.525],
            42: [0, 0.52083, 0, 0, 0.525],
            43: [-0.08056, 0.53055, 0, 0, 0.525],
            44: [0.13889, 0.125, 0, 0, 0.525],
            45: [-0.08056, 0.53055, 0, 0, 0.525],
            46: [0, 0.125, 0, 0, 0.525],
            47: [0.08333, 0.69444, 0, 0, 0.525],
            48: [0, 0.61111, 0, 0, 0.525],
            49: [0, 0.61111, 0, 0, 0.525],
            50: [0, 0.61111, 0, 0, 0.525],
            51: [0, 0.61111, 0, 0, 0.525],
            52: [0, 0.61111, 0, 0, 0.525],
            53: [0, 0.61111, 0, 0, 0.525],
            54: [0, 0.61111, 0, 0, 0.525],
            55: [0, 0.61111, 0, 0, 0.525],
            56: [0, 0.61111, 0, 0, 0.525],
            57: [0, 0.61111, 0, 0, 0.525],
            58: [0, 0.43056, 0, 0, 0.525],
            59: [0.13889, 0.43056, 0, 0, 0.525],
            60: [-0.05556, 0.55556, 0, 0, 0.525],
            61: [-0.19549, 0.41562, 0, 0, 0.525],
            62: [-0.05556, 0.55556, 0, 0, 0.525],
            63: [0, 0.61111, 0, 0, 0.525],
            64: [0, 0.61111, 0, 0, 0.525],
            65: [0, 0.61111, 0, 0, 0.525],
            66: [0, 0.61111, 0, 0, 0.525],
            67: [0, 0.61111, 0, 0, 0.525],
            68: [0, 0.61111, 0, 0, 0.525],
            69: [0, 0.61111, 0, 0, 0.525],
            70: [0, 0.61111, 0, 0, 0.525],
            71: [0, 0.61111, 0, 0, 0.525],
            72: [0, 0.61111, 0, 0, 0.525],
            73: [0, 0.61111, 0, 0, 0.525],
            74: [0, 0.61111, 0, 0, 0.525],
            75: [0, 0.61111, 0, 0, 0.525],
            76: [0, 0.61111, 0, 0, 0.525],
            77: [0, 0.61111, 0, 0, 0.525],
            78: [0, 0.61111, 0, 0, 0.525],
            79: [0, 0.61111, 0, 0, 0.525],
            80: [0, 0.61111, 0, 0, 0.525],
            81: [0.13889, 0.61111, 0, 0, 0.525],
            82: [0, 0.61111, 0, 0, 0.525],
            83: [0, 0.61111, 0, 0, 0.525],
            84: [0, 0.61111, 0, 0, 0.525],
            85: [0, 0.61111, 0, 0, 0.525],
            86: [0, 0.61111, 0, 0, 0.525],
            87: [0, 0.61111, 0, 0, 0.525],
            88: [0, 0.61111, 0, 0, 0.525],
            89: [0, 0.61111, 0, 0, 0.525],
            90: [0, 0.61111, 0, 0, 0.525],
            91: [0.08333, 0.69444, 0, 0, 0.525],
            92: [0.08333, 0.69444, 0, 0, 0.525],
            93: [0.08333, 0.69444, 0, 0, 0.525],
            94: [0, 0.61111, 0, 0, 0.525],
            95: [0.09514, 0, 0, 0, 0.525],
            96: [0, 0.61111, 0, 0, 0.525],
            97: [0, 0.43056, 0, 0, 0.525],
            98: [0, 0.61111, 0, 0, 0.525],
            99: [0, 0.43056, 0, 0, 0.525],
            100: [0, 0.61111, 0, 0, 0.525],
            101: [0, 0.43056, 0, 0, 0.525],
            102: [0, 0.61111, 0, 0, 0.525],
            103: [0.22222, 0.43056, 0, 0, 0.525],
            104: [0, 0.61111, 0, 0, 0.525],
            105: [0, 0.61111, 0, 0, 0.525],
            106: [0.22222, 0.61111, 0, 0, 0.525],
            107: [0, 0.61111, 0, 0, 0.525],
            108: [0, 0.61111, 0, 0, 0.525],
            109: [0, 0.43056, 0, 0, 0.525],
            110: [0, 0.43056, 0, 0, 0.525],
            111: [0, 0.43056, 0, 0, 0.525],
            112: [0.22222, 0.43056, 0, 0, 0.525],
            113: [0.22222, 0.43056, 0, 0, 0.525],
            114: [0, 0.43056, 0, 0, 0.525],
            115: [0, 0.43056, 0, 0, 0.525],
            116: [0, 0.55358, 0, 0, 0.525],
            117: [0, 0.43056, 0, 0, 0.525],
            118: [0, 0.43056, 0, 0, 0.525],
            119: [0, 0.43056, 0, 0, 0.525],
            120: [0, 0.43056, 0, 0, 0.525],
            121: [0.22222, 0.43056, 0, 0, 0.525],
            122: [0, 0.43056, 0, 0, 0.525],
            123: [0.08333, 0.69444, 0, 0, 0.525],
            124: [0.08333, 0.69444, 0, 0, 0.525],
            125: [0.08333, 0.69444, 0, 0, 0.525],
            126: [0, 0.61111, 0, 0, 0.525],
            127: [0, 0.61111, 0, 0, 0.525],
            160: [0, 0, 0, 0, 0.525],
            176: [0, 0.61111, 0, 0, 0.525],
            184: [0.19445, 0, 0, 0, 0.525],
            305: [0, 0.43056, 0, 0, 0.525],
            567: [0.22222, 0.43056, 0, 0, 0.525],
            711: [0, 0.56597, 0, 0, 0.525],
            713: [0, 0.56555, 0, 0, 0.525],
            714: [0, 0.61111, 0, 0, 0.525],
            715: [0, 0.61111, 0, 0, 0.525],
            728: [0, 0.61111, 0, 0, 0.525],
            730: [0, 0.61111, 0, 0, 0.525],
            770: [0, 0.61111, 0, 0, 0.525],
            771: [0, 0.61111, 0, 0, 0.525],
            776: [0, 0.61111, 0, 0, 0.525],
            915: [0, 0.61111, 0, 0, 0.525],
            916: [0, 0.61111, 0, 0, 0.525],
            920: [0, 0.61111, 0, 0, 0.525],
            923: [0, 0.61111, 0, 0, 0.525],
            926: [0, 0.61111, 0, 0, 0.525],
            928: [0, 0.61111, 0, 0, 0.525],
            931: [0, 0.61111, 0, 0, 0.525],
            933: [0, 0.61111, 0, 0, 0.525],
            934: [0, 0.61111, 0, 0, 0.525],
            936: [0, 0.61111, 0, 0, 0.525],
            937: [0, 0.61111, 0, 0, 0.525],
            8216: [0, 0.61111, 0, 0, 0.525],
            8217: [0, 0.61111, 0, 0, 0.525],
            8242: [0, 0.61111, 0, 0, 0.525],
            9251: [0.11111, 0.21944, 0, 0, 0.525]
          }
        }),
        (c3 = {
          slant: [0.25, 0.25, 0.25],
          space: [0, 0, 0],
          stretch: [0, 0, 0],
          shrink: [0, 0, 0],
          xHeight: [0.431, 0.431, 0.431],
          quad: [1, 1.171, 1.472],
          extraSpace: [0, 0, 0],
          num1: [0.677, 0.732, 0.925],
          num2: [0.394, 0.384, 0.387],
          num3: [0.444, 0.471, 0.504],
          denom1: [0.686, 0.752, 1.025],
          denom2: [0.345, 0.344, 0.532],
          sup1: [0.413, 0.503, 0.504],
          sup2: [0.363, 0.431, 0.404],
          sup3: [0.289, 0.286, 0.294],
          sub1: [0.15, 0.143, 0.2],
          sub2: [0.247, 0.286, 0.4],
          supDrop: [0.386, 0.353, 0.494],
          subDrop: [0.05, 0.071, 0.1],
          delim1: [2.39, 1.7, 1.98],
          delim2: [1.01, 1.157, 1.42],
          axisHeight: [0.25, 0.25, 0.25],
          defaultRuleThickness: [0.04, 0.049, 0.049],
          bigOpSpacing1: [0.111, 0.111, 0.111],
          bigOpSpacing2: [0.166, 0.166, 0.166],
          bigOpSpacing3: [0.2, 0.2, 0.2],
          bigOpSpacing4: [0.6, 0.611, 0.611],
          bigOpSpacing5: [0.1, 0.143, 0.143],
          sqrtRuleThickness: [0.04, 0.04, 0.04],
          ptPerEm: [10, 10, 10],
          doubleRuleSep: [0.2, 0.2, 0.2],
          arrayRuleWidth: [0.04, 0.04, 0.04],
          fboxsep: [0.3, 0.3, 0.3],
          fboxrule: [0.04, 0.04, 0.04]
        }),
        (Kz = {
          Å: 'A',
          Ð: 'D',
          Þ: 'o',
          å: 'a',
          ð: 'd',
          þ: 'o',
          А: 'A',
          Б: 'B',
          В: 'B',
          Г: 'F',
          Д: 'A',
          Е: 'E',
          Ж: 'K',
          З: '3',
          И: 'N',
          Й: 'N',
          К: 'K',
          Л: 'N',
          М: 'M',
          Н: 'H',
          О: 'O',
          П: 'N',
          Р: 'P',
          С: 'C',
          Т: 'T',
          У: 'y',
          Ф: 'O',
          Х: 'X',
          Ц: 'U',
          Ч: 'h',
          Ш: 'W',
          Щ: 'W',
          Ъ: 'B',
          Ы: 'X',
          Ь: 'B',
          Э: '3',
          Ю: 'X',
          Я: 'R',
          а: 'a',
          б: 'b',
          в: 'a',
          г: 'r',
          д: 'y',
          е: 'e',
          ж: 'm',
          з: 'e',
          и: 'n',
          й: 'n',
          к: 'n',
          л: 'n',
          м: 'm',
          н: 'n',
          о: 'o',
          п: 'n',
          р: 'p',
          с: 'c',
          т: 'o',
          у: 'y',
          ф: 'b',
          х: 'x',
          ц: 'n',
          ч: 'n',
          ш: 'w',
          щ: 'w',
          ъ: 'a',
          ы: 'm',
          ь: 'a',
          э: 'e',
          ю: 'm',
          я: 'r'
        })
      o(_G, 'setFontMetrics')
      o(nA, 'getCharacterMetrics')
      R7 = {}
      o(X4e, 'getGlobalMetrics')
      ;(j4e = [
        [1, 1, 1],
        [2, 1, 1],
        [3, 1, 1],
        [4, 2, 1],
        [5, 2, 1],
        [6, 3, 1],
        [7, 4, 2],
        [8, 6, 3],
        [9, 7, 6],
        [10, 8, 7],
        [11, 10, 9]
      ]),
        (Qz = [0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.2, 1.44, 1.728, 2.074, 2.488]),
        (Zz = o(function (e, r) {
          return r.size < 2 ? e : j4e[e - 1][r.size - 1]
        }, 'sizeAtStyle')),
        (w3 = class t {
          static {
            o(this, 'Options')
          }
          constructor(e) {
            ;(this.style = void 0),
              (this.color = void 0),
              (this.size = void 0),
              (this.textSize = void 0),
              (this.phantom = void 0),
              (this.font = void 0),
              (this.fontFamily = void 0),
              (this.fontWeight = void 0),
              (this.fontShape = void 0),
              (this.sizeMultiplier = void 0),
              (this.maxSize = void 0),
              (this.minRuleThickness = void 0),
              (this._fontMetrics = void 0),
              (this.style = e.style),
              (this.color = e.color),
              (this.size = e.size || t.BASESIZE),
              (this.textSize = e.textSize || this.size),
              (this.phantom = !!e.phantom),
              (this.font = e.font || ''),
              (this.fontFamily = e.fontFamily || ''),
              (this.fontWeight = e.fontWeight || ''),
              (this.fontShape = e.fontShape || ''),
              (this.sizeMultiplier = Qz[this.size - 1]),
              (this.maxSize = e.maxSize),
              (this.minRuleThickness = e.minRuleThickness),
              (this._fontMetrics = void 0)
          }
          extend(e) {
            var r = {
              style: this.style,
              size: this.size,
              textSize: this.textSize,
              color: this.color,
              phantom: this.phantom,
              font: this.font,
              fontFamily: this.fontFamily,
              fontWeight: this.fontWeight,
              fontShape: this.fontShape,
              maxSize: this.maxSize,
              minRuleThickness: this.minRuleThickness
            }
            for (var n in e) e.hasOwnProperty(n) && (r[n] = e[n])
            return new t(r)
          }
          havingStyle(e) {
            return this.style === e ? this : this.extend({ style: e, size: Zz(this.textSize, e) })
          }
          havingCrampedStyle() {
            return this.havingStyle(this.style.cramp())
          }
          havingSize(e) {
            return this.size === e && this.textSize === e ? this : this.extend({ style: this.style.text(), size: e, textSize: e, sizeMultiplier: Qz[e - 1] })
          }
          havingBaseStyle(e) {
            e = e || this.style.text()
            var r = Zz(t.BASESIZE, e)
            return this.size === r && this.textSize === t.BASESIZE && this.style === e ? this : this.extend({ style: e, size: r })
          }
          havingBaseSizing() {
            var e
            switch (this.style.id) {
              case 4:
              case 5:
                e = 3
                break
              case 6:
              case 7:
                e = 1
                break
              default:
                e = 6
            }
            return this.extend({ style: this.style.text(), size: e })
          }
          withColor(e) {
            return this.extend({ color: e })
          }
          withPhantom() {
            return this.extend({ phantom: !0 })
          }
          withFont(e) {
            return this.extend({ font: e })
          }
          withTextFontFamily(e) {
            return this.extend({ fontFamily: e, font: '' })
          }
          withTextFontWeight(e) {
            return this.extend({ fontWeight: e, font: '' })
          }
          withTextFontShape(e) {
            return this.extend({ fontShape: e, font: '' })
          }
          sizingClasses(e) {
            return e.size !== this.size ? ['sizing', 'reset-size' + e.size, 'size' + this.size] : []
          }
          baseSizingClasses() {
            return this.size !== t.BASESIZE ? ['sizing', 'reset-size' + this.size, 'size' + t.BASESIZE] : []
          }
          fontMetrics() {
            return this._fontMetrics || (this._fontMetrics = X4e(this.size)), this._fontMetrics
          }
          getColor() {
            return this.phantom ? 'transparent' : this.color
          }
        })
      w3.BASESIZE = 6
      ;(W7 = {
        pt: 1,
        mm: 7227 / 2540,
        cm: 7227 / 254,
        in: 72.27,
        bp: 803 / 800,
        pc: 12,
        dd: 1238 / 1157,
        cc: 14856 / 1157,
        nd: 685 / 642,
        nc: 1370 / 107,
        sp: 1 / 65536,
        px: 803 / 800
      }),
        (K4e = { ex: !0, em: !0, mu: !0 }),
        (DG = o(function (e) {
          return typeof e != 'string' && (e = e.unit), e in W7 || e in K4e || e === 'ex'
        }, 'validUnit')),
        (ni = o(function (e, r) {
          var n
          if (e.unit in W7) n = W7[e.unit] / r.fontMetrics().ptPerEm / r.sizeMultiplier
          else if (e.unit === 'mu') n = r.fontMetrics().cssEmPerMu
          else {
            var i
            if ((r.style.isTight() ? (i = r.havingStyle(r.style.text())) : (i = r), e.unit === 'ex')) n = i.fontMetrics().xHeight
            else if (e.unit === 'em') n = i.fontMetrics().quad
            else throw new pt("Invalid unit: '" + e.unit + "'")
            i !== r && (n *= i.sizeMultiplier / r.sizeMultiplier)
          }
          return Math.min(e.number * n, r.maxSize)
        }, 'calculateSize')),
        (Et = o(function (e) {
          return +e.toFixed(4) + 'em'
        }, 'makeEm')),
        (vh = o(function (e) {
          return e.filter(r => r).join(' ')
        }, 'createClass')),
        (LG = o(function (e, r, n) {
          if (((this.classes = e || []), (this.attributes = {}), (this.height = 0), (this.depth = 0), (this.maxFontSize = 0), (this.style = n || {}), r)) {
            r.style.isTight() && this.classes.push('mtight')
            var i = r.getColor()
            i && (this.style.color = i)
          }
        }, 'initNode')),
        (RG = o(function (e) {
          var r = document.createElement(e)
          r.className = vh(this.classes)
          for (var n in this.style) this.style.hasOwnProperty(n) && (r.style[n] = this.style[n])
          for (var i in this.attributes) this.attributes.hasOwnProperty(i) && r.setAttribute(i, this.attributes[i])
          for (var a = 0; a < this.children.length; a++) r.appendChild(this.children[a].toNode())
          return r
        }, 'toNode')),
        (Q4e = /[\s"'>/=\x00-\x1f]/),
        (NG = o(function (e) {
          var r = '<' + e
          this.classes.length && (r += ' class="' + Jt.escape(vh(this.classes)) + '"')
          var n = ''
          for (var i in this.style) this.style.hasOwnProperty(i) && (n += Jt.hyphenate(i) + ':' + this.style[i] + ';')
          n && (r += ' style="' + Jt.escape(n) + '"')
          for (var a in this.attributes)
            if (this.attributes.hasOwnProperty(a)) {
              if (Q4e.test(a)) throw new pt("Invalid attribute name '" + a + "'")
              r += ' ' + a + '="' + Jt.escape(this.attributes[a]) + '"'
            }
          r += '>'
          for (var s = 0; s < this.children.length; s++) r += this.children[s].toMarkup()
          return (r += '</' + e + '>'), r
        }, 'toMarkup')),
        (ld = class {
          static {
            o(this, 'Span')
          }
          constructor(e, r, n, i) {
            ;(this.children = void 0),
              (this.attributes = void 0),
              (this.classes = void 0),
              (this.height = void 0),
              (this.depth = void 0),
              (this.width = void 0),
              (this.maxFontSize = void 0),
              (this.style = void 0),
              LG.call(this, e, n, i),
              (this.children = r || [])
          }
          setAttribute(e, r) {
            this.attributes[e] = r
          }
          hasClass(e) {
            return Jt.contains(this.classes, e)
          }
          toNode() {
            return RG.call(this, 'span')
          }
          toMarkup() {
            return NG.call(this, 'span')
          }
        }),
        (Zy = class {
          static {
            o(this, 'Anchor')
          }
          constructor(e, r, n, i) {
            ;(this.children = void 0),
              (this.attributes = void 0),
              (this.classes = void 0),
              (this.height = void 0),
              (this.depth = void 0),
              (this.maxFontSize = void 0),
              (this.style = void 0),
              LG.call(this, r, i),
              (this.children = n || []),
              this.setAttribute('href', e)
          }
          setAttribute(e, r) {
            this.attributes[e] = r
          }
          hasClass(e) {
            return Jt.contains(this.classes, e)
          }
          toNode() {
            return RG.call(this, 'a')
          }
          toMarkup() {
            return NG.call(this, 'a')
          }
        }),
        (q7 = class {
          static {
            o(this, 'Img')
          }
          constructor(e, r, n) {
            ;(this.src = void 0),
              (this.alt = void 0),
              (this.classes = void 0),
              (this.height = void 0),
              (this.depth = void 0),
              (this.maxFontSize = void 0),
              (this.style = void 0),
              (this.alt = r),
              (this.src = e),
              (this.classes = ['mord']),
              (this.style = n)
          }
          hasClass(e) {
            return Jt.contains(this.classes, e)
          }
          toNode() {
            var e = document.createElement('img')
            ;(e.src = this.src), (e.alt = this.alt), (e.className = 'mord')
            for (var r in this.style) this.style.hasOwnProperty(r) && (e.style[r] = this.style[r])
            return e
          }
          toMarkup() {
            var e = '<img src="' + Jt.escape(this.src) + '"' + (' alt="' + Jt.escape(this.alt) + '"'),
              r = ''
            for (var n in this.style) this.style.hasOwnProperty(n) && (r += Jt.hyphenate(n) + ':' + this.style[n] + ';')
            return r && (e += ' style="' + Jt.escape(r) + '"'), (e += "'/>"), e
          }
        }),
        (Z4e = { î: '\u0131\u0302', ï: '\u0131\u0308', í: '\u0131\u0301', ì: '\u0131\u0300' }),
        (As = class {
          static {
            o(this, 'SymbolNode')
          }
          constructor(e, r, n, i, a, s, l, u) {
            ;(this.text = void 0),
              (this.height = void 0),
              (this.depth = void 0),
              (this.italic = void 0),
              (this.skew = void 0),
              (this.width = void 0),
              (this.maxFontSize = void 0),
              (this.classes = void 0),
              (this.style = void 0),
              (this.text = e),
              (this.height = r || 0),
              (this.depth = n || 0),
              (this.italic = i || 0),
              (this.skew = a || 0),
              (this.width = s || 0),
              (this.classes = l || []),
              (this.style = u || {}),
              (this.maxFontSize = 0)
            var h = B4e(this.text.charCodeAt(0))
            h && this.classes.push(h + '_fallback'), /[îïíì]/.test(this.text) && (this.text = Z4e[this.text])
          }
          hasClass(e) {
            return Jt.contains(this.classes, e)
          }
          toNode() {
            var e = document.createTextNode(this.text),
              r = null
            this.italic > 0 && ((r = document.createElement('span')), (r.style.marginRight = Et(this.italic))),
              this.classes.length > 0 && ((r = r || document.createElement('span')), (r.className = vh(this.classes)))
            for (var n in this.style) this.style.hasOwnProperty(n) && ((r = r || document.createElement('span')), (r.style[n] = this.style[n]))
            return r ? (r.appendChild(e), r) : e
          }
          toMarkup() {
            var e = !1,
              r = '<span'
            this.classes.length && ((e = !0), (r += ' class="'), (r += Jt.escape(vh(this.classes))), (r += '"'))
            var n = ''
            this.italic > 0 && (n += 'margin-right:' + this.italic + 'em;')
            for (var i in this.style) this.style.hasOwnProperty(i) && (n += Jt.hyphenate(i) + ':' + this.style[i] + ';')
            n && ((e = !0), (r += ' style="' + Jt.escape(n) + '"'))
            var a = Jt.escape(this.text)
            return e ? ((r += '>'), (r += a), (r += '</span>'), r) : a
          }
        }),
        (dl = class {
          static {
            o(this, 'SvgNode')
          }
          constructor(e, r) {
            ;(this.children = void 0), (this.attributes = void 0), (this.children = e || []), (this.attributes = r || {})
          }
          toNode() {
            var e = 'http://www.w3.org/2000/svg',
              r = document.createElementNS(e, 'svg')
            for (var n in this.attributes) Object.prototype.hasOwnProperty.call(this.attributes, n) && r.setAttribute(n, this.attributes[n])
            for (var i = 0; i < this.children.length; i++) r.appendChild(this.children[i].toNode())
            return r
          }
          toMarkup() {
            var e = '<svg xmlns="http://www.w3.org/2000/svg"'
            for (var r in this.attributes) Object.prototype.hasOwnProperty.call(this.attributes, r) && (e += ' ' + r + '="' + Jt.escape(this.attributes[r]) + '"')
            e += '>'
            for (var n = 0; n < this.children.length; n++) e += this.children[n].toMarkup()
            return (e += '</svg>'), e
          }
        }),
        (ec = class {
          static {
            o(this, 'PathNode')
          }
          constructor(e, r) {
            ;(this.pathName = void 0), (this.alternate = void 0), (this.pathName = e), (this.alternate = r)
          }
          toNode() {
            var e = 'http://www.w3.org/2000/svg',
              r = document.createElementNS(e, 'path')
            return this.alternate ? r.setAttribute('d', this.alternate) : r.setAttribute('d', jz[this.pathName]), r
          }
          toMarkup() {
            return this.alternate ? '<path d="' + Jt.escape(this.alternate) + '"/>' : '<path d="' + Jt.escape(jz[this.pathName]) + '"/>'
          }
        }),
        (Jy = class {
          static {
            o(this, 'LineNode')
          }
          constructor(e) {
            ;(this.attributes = void 0), (this.attributes = e || {})
          }
          toNode() {
            var e = 'http://www.w3.org/2000/svg',
              r = document.createElementNS(e, 'line')
            for (var n in this.attributes) Object.prototype.hasOwnProperty.call(this.attributes, n) && r.setAttribute(n, this.attributes[n])
            return r
          }
          toMarkup() {
            var e = '<line'
            for (var r in this.attributes) Object.prototype.hasOwnProperty.call(this.attributes, r) && (e += ' ' + r + '="' + Jt.escape(this.attributes[r]) + '"')
            return (e += '/>'), e
          }
        })
      o(Jz, 'assertSymbolDomNode')
      o(J4e, 'assertSpan')
      ;(e3e = { bin: 1, close: 1, inner: 1, open: 1, punct: 1, rel: 1 }),
        (t3e = { 'accent-token': 1, mathord: 1, 'op-token': 1, spacing: 1, textord: 1 }),
        (An = { math: {}, text: {} })
      o(G, 'defineSymbol')
      ;(H = 'math'),
        (it = 'text'),
        (re = 'main'),
        (ke = 'ams'),
        (Hn = 'accent-token'),
        (It = 'bin'),
        (ns = 'close'),
        (E0 = 'inner'),
        (rr = 'mathord'),
        (Ci = 'op-token'),
        (Zs = 'open'),
        (D3 = 'punct'),
        (Ee = 'rel'),
        (pu = 'spacing'),
        (Re = 'textord')
      G(H, re, Ee, '\u2261', '\\equiv', !0)
      G(H, re, Ee, '\u227A', '\\prec', !0)
      G(H, re, Ee, '\u227B', '\\succ', !0)
      G(H, re, Ee, '\u223C', '\\sim', !0)
      G(H, re, Ee, '\u22A5', '\\perp')
      G(H, re, Ee, '\u2AAF', '\\preceq', !0)
      G(H, re, Ee, '\u2AB0', '\\succeq', !0)
      G(H, re, Ee, '\u2243', '\\simeq', !0)
      G(H, re, Ee, '\u2223', '\\mid', !0)
      G(H, re, Ee, '\u226A', '\\ll', !0)
      G(H, re, Ee, '\u226B', '\\gg', !0)
      G(H, re, Ee, '\u224D', '\\asymp', !0)
      G(H, re, Ee, '\u2225', '\\parallel')
      G(H, re, Ee, '\u22C8', '\\bowtie', !0)
      G(H, re, Ee, '\u2323', '\\smile', !0)
      G(H, re, Ee, '\u2291', '\\sqsubseteq', !0)
      G(H, re, Ee, '\u2292', '\\sqsupseteq', !0)
      G(H, re, Ee, '\u2250', '\\doteq', !0)
      G(H, re, Ee, '\u2322', '\\frown', !0)
      G(H, re, Ee, '\u220B', '\\ni', !0)
      G(H, re, Ee, '\u221D', '\\propto', !0)
      G(H, re, Ee, '\u22A2', '\\vdash', !0)
      G(H, re, Ee, '\u22A3', '\\dashv', !0)
      G(H, re, Ee, '\u220B', '\\owns')
      G(H, re, D3, '.', '\\ldotp')
      G(H, re, D3, '\u22C5', '\\cdotp')
      G(H, re, Re, '#', '\\#')
      G(it, re, Re, '#', '\\#')
      G(H, re, Re, '&', '\\&')
      G(it, re, Re, '&', '\\&')
      G(H, re, Re, '\u2135', '\\aleph', !0)
      G(H, re, Re, '\u2200', '\\forall', !0)
      G(H, re, Re, '\u210F', '\\hbar', !0)
      G(H, re, Re, '\u2203', '\\exists', !0)
      G(H, re, Re, '\u2207', '\\nabla', !0)
      G(H, re, Re, '\u266D', '\\flat', !0)
      G(H, re, Re, '\u2113', '\\ell', !0)
      G(H, re, Re, '\u266E', '\\natural', !0)
      G(H, re, Re, '\u2663', '\\clubsuit', !0)
      G(H, re, Re, '\u2118', '\\wp', !0)
      G(H, re, Re, '\u266F', '\\sharp', !0)
      G(H, re, Re, '\u2662', '\\diamondsuit', !0)
      G(H, re, Re, '\u211C', '\\Re', !0)
      G(H, re, Re, '\u2661', '\\heartsuit', !0)
      G(H, re, Re, '\u2111', '\\Im', !0)
      G(H, re, Re, '\u2660', '\\spadesuit', !0)
      G(H, re, Re, '\xA7', '\\S', !0)
      G(it, re, Re, '\xA7', '\\S')
      G(H, re, Re, '\xB6', '\\P', !0)
      G(it, re, Re, '\xB6', '\\P')
      G(H, re, Re, '\u2020', '\\dag')
      G(it, re, Re, '\u2020', '\\dag')
      G(it, re, Re, '\u2020', '\\textdagger')
      G(H, re, Re, '\u2021', '\\ddag')
      G(it, re, Re, '\u2021', '\\ddag')
      G(it, re, Re, '\u2021', '\\textdaggerdbl')
      G(H, re, ns, '\u23B1', '\\rmoustache', !0)
      G(H, re, Zs, '\u23B0', '\\lmoustache', !0)
      G(H, re, ns, '\u27EF', '\\rgroup', !0)
      G(H, re, Zs, '\u27EE', '\\lgroup', !0)
      G(H, re, It, '\u2213', '\\mp', !0)
      G(H, re, It, '\u2296', '\\ominus', !0)
      G(H, re, It, '\u228E', '\\uplus', !0)
      G(H, re, It, '\u2293', '\\sqcap', !0)
      G(H, re, It, '\u2217', '\\ast')
      G(H, re, It, '\u2294', '\\sqcup', !0)
      G(H, re, It, '\u25EF', '\\bigcirc', !0)
      G(H, re, It, '\u2219', '\\bullet', !0)
      G(H, re, It, '\u2021', '\\ddagger')
      G(H, re, It, '\u2240', '\\wr', !0)
      G(H, re, It, '\u2A3F', '\\amalg')
      G(H, re, It, '&', '\\And')
      G(H, re, Ee, '\u27F5', '\\longleftarrow', !0)
      G(H, re, Ee, '\u21D0', '\\Leftarrow', !0)
      G(H, re, Ee, '\u27F8', '\\Longleftarrow', !0)
      G(H, re, Ee, '\u27F6', '\\longrightarrow', !0)
      G(H, re, Ee, '\u21D2', '\\Rightarrow', !0)
      G(H, re, Ee, '\u27F9', '\\Longrightarrow', !0)
      G(H, re, Ee, '\u2194', '\\leftrightarrow', !0)
      G(H, re, Ee, '\u27F7', '\\longleftrightarrow', !0)
      G(H, re, Ee, '\u21D4', '\\Leftrightarrow', !0)
      G(H, re, Ee, '\u27FA', '\\Longleftrightarrow', !0)
      G(H, re, Ee, '\u21A6', '\\mapsto', !0)
      G(H, re, Ee, '\u27FC', '\\longmapsto', !0)
      G(H, re, Ee, '\u2197', '\\nearrow', !0)
      G(H, re, Ee, '\u21A9', '\\hookleftarrow', !0)
      G(H, re, Ee, '\u21AA', '\\hookrightarrow', !0)
      G(H, re, Ee, '\u2198', '\\searrow', !0)
      G(H, re, Ee, '\u21BC', '\\leftharpoonup', !0)
      G(H, re, Ee, '\u21C0', '\\rightharpoonup', !0)
      G(H, re, Ee, '\u2199', '\\swarrow', !0)
      G(H, re, Ee, '\u21BD', '\\leftharpoondown', !0)
      G(H, re, Ee, '\u21C1', '\\rightharpoondown', !0)
      G(H, re, Ee, '\u2196', '\\nwarrow', !0)
      G(H, re, Ee, '\u21CC', '\\rightleftharpoons', !0)
      G(H, ke, Ee, '\u226E', '\\nless', !0)
      G(H, ke, Ee, '\uE010', '\\@nleqslant')
      G(H, ke, Ee, '\uE011', '\\@nleqq')
      G(H, ke, Ee, '\u2A87', '\\lneq', !0)
      G(H, ke, Ee, '\u2268', '\\lneqq', !0)
      G(H, ke, Ee, '\uE00C', '\\@lvertneqq')
      G(H, ke, Ee, '\u22E6', '\\lnsim', !0)
      G(H, ke, Ee, '\u2A89', '\\lnapprox', !0)
      G(H, ke, Ee, '\u2280', '\\nprec', !0)
      G(H, ke, Ee, '\u22E0', '\\npreceq', !0)
      G(H, ke, Ee, '\u22E8', '\\precnsim', !0)
      G(H, ke, Ee, '\u2AB9', '\\precnapprox', !0)
      G(H, ke, Ee, '\u2241', '\\nsim', !0)
      G(H, ke, Ee, '\uE006', '\\@nshortmid')
      G(H, ke, Ee, '\u2224', '\\nmid', !0)
      G(H, ke, Ee, '\u22AC', '\\nvdash', !0)
      G(H, ke, Ee, '\u22AD', '\\nvDash', !0)
      G(H, ke, Ee, '\u22EA', '\\ntriangleleft')
      G(H, ke, Ee, '\u22EC', '\\ntrianglelefteq', !0)
      G(H, ke, Ee, '\u228A', '\\subsetneq', !0)
      G(H, ke, Ee, '\uE01A', '\\@varsubsetneq')
      G(H, ke, Ee, '\u2ACB', '\\subsetneqq', !0)
      G(H, ke, Ee, '\uE017', '\\@varsubsetneqq')
      G(H, ke, Ee, '\u226F', '\\ngtr', !0)
      G(H, ke, Ee, '\uE00F', '\\@ngeqslant')
      G(H, ke, Ee, '\uE00E', '\\@ngeqq')
      G(H, ke, Ee, '\u2A88', '\\gneq', !0)
      G(H, ke, Ee, '\u2269', '\\gneqq', !0)
      G(H, ke, Ee, '\uE00D', '\\@gvertneqq')
      G(H, ke, Ee, '\u22E7', '\\gnsim', !0)
      G(H, ke, Ee, '\u2A8A', '\\gnapprox', !0)
      G(H, ke, Ee, '\u2281', '\\nsucc', !0)
      G(H, ke, Ee, '\u22E1', '\\nsucceq', !0)
      G(H, ke, Ee, '\u22E9', '\\succnsim', !0)
      G(H, ke, Ee, '\u2ABA', '\\succnapprox', !0)
      G(H, ke, Ee, '\u2246', '\\ncong', !0)
      G(H, ke, Ee, '\uE007', '\\@nshortparallel')
      G(H, ke, Ee, '\u2226', '\\nparallel', !0)
      G(H, ke, Ee, '\u22AF', '\\nVDash', !0)
      G(H, ke, Ee, '\u22EB', '\\ntriangleright')
      G(H, ke, Ee, '\u22ED', '\\ntrianglerighteq', !0)
      G(H, ke, Ee, '\uE018', '\\@nsupseteqq')
      G(H, ke, Ee, '\u228B', '\\supsetneq', !0)
      G(H, ke, Ee, '\uE01B', '\\@varsupsetneq')
      G(H, ke, Ee, '\u2ACC', '\\supsetneqq', !0)
      G(H, ke, Ee, '\uE019', '\\@varsupsetneqq')
      G(H, ke, Ee, '\u22AE', '\\nVdash', !0)
      G(H, ke, Ee, '\u2AB5', '\\precneqq', !0)
      G(H, ke, Ee, '\u2AB6', '\\succneqq', !0)
      G(H, ke, Ee, '\uE016', '\\@nsubseteqq')
      G(H, ke, It, '\u22B4', '\\unlhd')
      G(H, ke, It, '\u22B5', '\\unrhd')
      G(H, ke, Ee, '\u219A', '\\nleftarrow', !0)
      G(H, ke, Ee, '\u219B', '\\nrightarrow', !0)
      G(H, ke, Ee, '\u21CD', '\\nLeftarrow', !0)
      G(H, ke, Ee, '\u21CF', '\\nRightarrow', !0)
      G(H, ke, Ee, '\u21AE', '\\nleftrightarrow', !0)
      G(H, ke, Ee, '\u21CE', '\\nLeftrightarrow', !0)
      G(H, ke, Ee, '\u25B3', '\\vartriangle')
      G(H, ke, Re, '\u210F', '\\hslash')
      G(H, ke, Re, '\u25BD', '\\triangledown')
      G(H, ke, Re, '\u25CA', '\\lozenge')
      G(H, ke, Re, '\u24C8', '\\circledS')
      G(H, ke, Re, '\xAE', '\\circledR')
      G(it, ke, Re, '\xAE', '\\circledR')
      G(H, ke, Re, '\u2221', '\\measuredangle', !0)
      G(H, ke, Re, '\u2204', '\\nexists')
      G(H, ke, Re, '\u2127', '\\mho')
      G(H, ke, Re, '\u2132', '\\Finv', !0)
      G(H, ke, Re, '\u2141', '\\Game', !0)
      G(H, ke, Re, '\u2035', '\\backprime')
      G(H, ke, Re, '\u25B2', '\\blacktriangle')
      G(H, ke, Re, '\u25BC', '\\blacktriangledown')
      G(H, ke, Re, '\u25A0', '\\blacksquare')
      G(H, ke, Re, '\u29EB', '\\blacklozenge')
      G(H, ke, Re, '\u2605', '\\bigstar')
      G(H, ke, Re, '\u2222', '\\sphericalangle', !0)
      G(H, ke, Re, '\u2201', '\\complement', !0)
      G(H, ke, Re, '\xF0', '\\eth', !0)
      G(it, re, Re, '\xF0', '\xF0')
      G(H, ke, Re, '\u2571', '\\diagup')
      G(H, ke, Re, '\u2572', '\\diagdown')
      G(H, ke, Re, '\u25A1', '\\square')
      G(H, ke, Re, '\u25A1', '\\Box')
      G(H, ke, Re, '\u25CA', '\\Diamond')
      G(H, ke, Re, '\xA5', '\\yen', !0)
      G(it, ke, Re, '\xA5', '\\yen', !0)
      G(H, ke, Re, '\u2713', '\\checkmark', !0)
      G(it, ke, Re, '\u2713', '\\checkmark')
      G(H, ke, Re, '\u2136', '\\beth', !0)
      G(H, ke, Re, '\u2138', '\\daleth', !0)
      G(H, ke, Re, '\u2137', '\\gimel', !0)
      G(H, ke, Re, '\u03DD', '\\digamma', !0)
      G(H, ke, Re, '\u03F0', '\\varkappa')
      G(H, ke, Zs, '\u250C', '\\@ulcorner', !0)
      G(H, ke, ns, '\u2510', '\\@urcorner', !0)
      G(H, ke, Zs, '\u2514', '\\@llcorner', !0)
      G(H, ke, ns, '\u2518', '\\@lrcorner', !0)
      G(H, ke, Ee, '\u2266', '\\leqq', !0)
      G(H, ke, Ee, '\u2A7D', '\\leqslant', !0)
      G(H, ke, Ee, '\u2A95', '\\eqslantless', !0)
      G(H, ke, Ee, '\u2272', '\\lesssim', !0)
      G(H, ke, Ee, '\u2A85', '\\lessapprox', !0)
      G(H, ke, Ee, '\u224A', '\\approxeq', !0)
      G(H, ke, It, '\u22D6', '\\lessdot')
      G(H, ke, Ee, '\u22D8', '\\lll', !0)
      G(H, ke, Ee, '\u2276', '\\lessgtr', !0)
      G(H, ke, Ee, '\u22DA', '\\lesseqgtr', !0)
      G(H, ke, Ee, '\u2A8B', '\\lesseqqgtr', !0)
      G(H, ke, Ee, '\u2251', '\\doteqdot')
      G(H, ke, Ee, '\u2253', '\\risingdotseq', !0)
      G(H, ke, Ee, '\u2252', '\\fallingdotseq', !0)
      G(H, ke, Ee, '\u223D', '\\backsim', !0)
      G(H, ke, Ee, '\u22CD', '\\backsimeq', !0)
      G(H, ke, Ee, '\u2AC5', '\\subseteqq', !0)
      G(H, ke, Ee, '\u22D0', '\\Subset', !0)
      G(H, ke, Ee, '\u228F', '\\sqsubset', !0)
      G(H, ke, Ee, '\u227C', '\\preccurlyeq', !0)
      G(H, ke, Ee, '\u22DE', '\\curlyeqprec', !0)
      G(H, ke, Ee, '\u227E', '\\precsim', !0)
      G(H, ke, Ee, '\u2AB7', '\\precapprox', !0)
      G(H, ke, Ee, '\u22B2', '\\vartriangleleft')
      G(H, ke, Ee, '\u22B4', '\\trianglelefteq')
      G(H, ke, Ee, '\u22A8', '\\vDash', !0)
      G(H, ke, Ee, '\u22AA', '\\Vvdash', !0)
      G(H, ke, Ee, '\u2323', '\\smallsmile')
      G(H, ke, Ee, '\u2322', '\\smallfrown')
      G(H, ke, Ee, '\u224F', '\\bumpeq', !0)
      G(H, ke, Ee, '\u224E', '\\Bumpeq', !0)
      G(H, ke, Ee, '\u2267', '\\geqq', !0)
      G(H, ke, Ee, '\u2A7E', '\\geqslant', !0)
      G(H, ke, Ee, '\u2A96', '\\eqslantgtr', !0)
      G(H, ke, Ee, '\u2273', '\\gtrsim', !0)
      G(H, ke, Ee, '\u2A86', '\\gtrapprox', !0)
      G(H, ke, It, '\u22D7', '\\gtrdot')
      G(H, ke, Ee, '\u22D9', '\\ggg', !0)
      G(H, ke, Ee, '\u2277', '\\gtrless', !0)
      G(H, ke, Ee, '\u22DB', '\\gtreqless', !0)
      G(H, ke, Ee, '\u2A8C', '\\gtreqqless', !0)
      G(H, ke, Ee, '\u2256', '\\eqcirc', !0)
      G(H, ke, Ee, '\u2257', '\\circeq', !0)
      G(H, ke, Ee, '\u225C', '\\triangleq', !0)
      G(H, ke, Ee, '\u223C', '\\thicksim')
      G(H, ke, Ee, '\u2248', '\\thickapprox')
      G(H, ke, Ee, '\u2AC6', '\\supseteqq', !0)
      G(H, ke, Ee, '\u22D1', '\\Supset', !0)
      G(H, ke, Ee, '\u2290', '\\sqsupset', !0)
      G(H, ke, Ee, '\u227D', '\\succcurlyeq', !0)
      G(H, ke, Ee, '\u22DF', '\\curlyeqsucc', !0)
      G(H, ke, Ee, '\u227F', '\\succsim', !0)
      G(H, ke, Ee, '\u2AB8', '\\succapprox', !0)
      G(H, ke, Ee, '\u22B3', '\\vartriangleright')
      G(H, ke, Ee, '\u22B5', '\\trianglerighteq')
      G(H, ke, Ee, '\u22A9', '\\Vdash', !0)
      G(H, ke, Ee, '\u2223', '\\shortmid')
      G(H, ke, Ee, '\u2225', '\\shortparallel')
      G(H, ke, Ee, '\u226C', '\\between', !0)
      G(H, ke, Ee, '\u22D4', '\\pitchfork', !0)
      G(H, ke, Ee, '\u221D', '\\varpropto')
      G(H, ke, Ee, '\u25C0', '\\blacktriangleleft')
      G(H, ke, Ee, '\u2234', '\\therefore', !0)
      G(H, ke, Ee, '\u220D', '\\backepsilon')
      G(H, ke, Ee, '\u25B6', '\\blacktriangleright')
      G(H, ke, Ee, '\u2235', '\\because', !0)
      G(H, ke, Ee, '\u22D8', '\\llless')
      G(H, ke, Ee, '\u22D9', '\\gggtr')
      G(H, ke, It, '\u22B2', '\\lhd')
      G(H, ke, It, '\u22B3', '\\rhd')
      G(H, ke, Ee, '\u2242', '\\eqsim', !0)
      G(H, re, Ee, '\u22C8', '\\Join')
      G(H, ke, Ee, '\u2251', '\\Doteq', !0)
      G(H, ke, It, '\u2214', '\\dotplus', !0)
      G(H, ke, It, '\u2216', '\\smallsetminus')
      G(H, ke, It, '\u22D2', '\\Cap', !0)
      G(H, ke, It, '\u22D3', '\\Cup', !0)
      G(H, ke, It, '\u2A5E', '\\doublebarwedge', !0)
      G(H, ke, It, '\u229F', '\\boxminus', !0)
      G(H, ke, It, '\u229E', '\\boxplus', !0)
      G(H, ke, It, '\u22C7', '\\divideontimes', !0)
      G(H, ke, It, '\u22C9', '\\ltimes', !0)
      G(H, ke, It, '\u22CA', '\\rtimes', !0)
      G(H, ke, It, '\u22CB', '\\leftthreetimes', !0)
      G(H, ke, It, '\u22CC', '\\rightthreetimes', !0)
      G(H, ke, It, '\u22CF', '\\curlywedge', !0)
      G(H, ke, It, '\u22CE', '\\curlyvee', !0)
      G(H, ke, It, '\u229D', '\\circleddash', !0)
      G(H, ke, It, '\u229B', '\\circledast', !0)
      G(H, ke, It, '\u22C5', '\\centerdot')
      G(H, ke, It, '\u22BA', '\\intercal', !0)
      G(H, ke, It, '\u22D2', '\\doublecap')
      G(H, ke, It, '\u22D3', '\\doublecup')
      G(H, ke, It, '\u22A0', '\\boxtimes', !0)
      G(H, ke, Ee, '\u21E2', '\\dashrightarrow', !0)
      G(H, ke, Ee, '\u21E0', '\\dashleftarrow', !0)
      G(H, ke, Ee, '\u21C7', '\\leftleftarrows', !0)
      G(H, ke, Ee, '\u21C6', '\\leftrightarrows', !0)
      G(H, ke, Ee, '\u21DA', '\\Lleftarrow', !0)
      G(H, ke, Ee, '\u219E', '\\twoheadleftarrow', !0)
      G(H, ke, Ee, '\u21A2', '\\leftarrowtail', !0)
      G(H, ke, Ee, '\u21AB', '\\looparrowleft', !0)
      G(H, ke, Ee, '\u21CB', '\\leftrightharpoons', !0)
      G(H, ke, Ee, '\u21B6', '\\curvearrowleft', !0)
      G(H, ke, Ee, '\u21BA', '\\circlearrowleft', !0)
      G(H, ke, Ee, '\u21B0', '\\Lsh', !0)
      G(H, ke, Ee, '\u21C8', '\\upuparrows', !0)
      G(H, ke, Ee, '\u21BF', '\\upharpoonleft', !0)
      G(H, ke, Ee, '\u21C3', '\\downharpoonleft', !0)
      G(H, re, Ee, '\u22B6', '\\origof', !0)
      G(H, re, Ee, '\u22B7', '\\imageof', !0)
      G(H, ke, Ee, '\u22B8', '\\multimap', !0)
      G(H, ke, Ee, '\u21AD', '\\leftrightsquigarrow', !0)
      G(H, ke, Ee, '\u21C9', '\\rightrightarrows', !0)
      G(H, ke, Ee, '\u21C4', '\\rightleftarrows', !0)
      G(H, ke, Ee, '\u21A0', '\\twoheadrightarrow', !0)
      G(H, ke, Ee, '\u21A3', '\\rightarrowtail', !0)
      G(H, ke, Ee, '\u21AC', '\\looparrowright', !0)
      G(H, ke, Ee, '\u21B7', '\\curvearrowright', !0)
      G(H, ke, Ee, '\u21BB', '\\circlearrowright', !0)
      G(H, ke, Ee, '\u21B1', '\\Rsh', !0)
      G(H, ke, Ee, '\u21CA', '\\downdownarrows', !0)
      G(H, ke, Ee, '\u21BE', '\\upharpoonright', !0)
      G(H, ke, Ee, '\u21C2', '\\downharpoonright', !0)
      G(H, ke, Ee, '\u21DD', '\\rightsquigarrow', !0)
      G(H, ke, Ee, '\u21DD', '\\leadsto')
      G(H, ke, Ee, '\u21DB', '\\Rrightarrow', !0)
      G(H, ke, Ee, '\u21BE', '\\restriction')
      G(H, re, Re, '\u2018', '`')
      G(H, re, Re, '$', '\\$')
      G(it, re, Re, '$', '\\$')
      G(it, re, Re, '$', '\\textdollar')
      G(H, re, Re, '%', '\\%')
      G(it, re, Re, '%', '\\%')
      G(H, re, Re, '_', '\\_')
      G(it, re, Re, '_', '\\_')
      G(it, re, Re, '_', '\\textunderscore')
      G(H, re, Re, '\u2220', '\\angle', !0)
      G(H, re, Re, '\u221E', '\\infty', !0)
      G(H, re, Re, '\u2032', '\\prime')
      G(H, re, Re, '\u25B3', '\\triangle')
      G(H, re, Re, '\u0393', '\\Gamma', !0)
      G(H, re, Re, '\u0394', '\\Delta', !0)
      G(H, re, Re, '\u0398', '\\Theta', !0)
      G(H, re, Re, '\u039B', '\\Lambda', !0)
      G(H, re, Re, '\u039E', '\\Xi', !0)
      G(H, re, Re, '\u03A0', '\\Pi', !0)
      G(H, re, Re, '\u03A3', '\\Sigma', !0)
      G(H, re, Re, '\u03A5', '\\Upsilon', !0)
      G(H, re, Re, '\u03A6', '\\Phi', !0)
      G(H, re, Re, '\u03A8', '\\Psi', !0)
      G(H, re, Re, '\u03A9', '\\Omega', !0)
      G(H, re, Re, 'A', '\u0391')
      G(H, re, Re, 'B', '\u0392')
      G(H, re, Re, 'E', '\u0395')
      G(H, re, Re, 'Z', '\u0396')
      G(H, re, Re, 'H', '\u0397')
      G(H, re, Re, 'I', '\u0399')
      G(H, re, Re, 'K', '\u039A')
      G(H, re, Re, 'M', '\u039C')
      G(H, re, Re, 'N', '\u039D')
      G(H, re, Re, 'O', '\u039F')
      G(H, re, Re, 'P', '\u03A1')
      G(H, re, Re, 'T', '\u03A4')
      G(H, re, Re, 'X', '\u03A7')
      G(H, re, Re, '\xAC', '\\neg', !0)
      G(H, re, Re, '\xAC', '\\lnot')
      G(H, re, Re, '\u22A4', '\\top')
      G(H, re, Re, '\u22A5', '\\bot')
      G(H, re, Re, '\u2205', '\\emptyset')
      G(H, ke, Re, '\u2205', '\\varnothing')
      G(H, re, rr, '\u03B1', '\\alpha', !0)
      G(H, re, rr, '\u03B2', '\\beta', !0)
      G(H, re, rr, '\u03B3', '\\gamma', !0)
      G(H, re, rr, '\u03B4', '\\delta', !0)
      G(H, re, rr, '\u03F5', '\\epsilon', !0)
      G(H, re, rr, '\u03B6', '\\zeta', !0)
      G(H, re, rr, '\u03B7', '\\eta', !0)
      G(H, re, rr, '\u03B8', '\\theta', !0)
      G(H, re, rr, '\u03B9', '\\iota', !0)
      G(H, re, rr, '\u03BA', '\\kappa', !0)
      G(H, re, rr, '\u03BB', '\\lambda', !0)
      G(H, re, rr, '\u03BC', '\\mu', !0)
      G(H, re, rr, '\u03BD', '\\nu', !0)
      G(H, re, rr, '\u03BE', '\\xi', !0)
      G(H, re, rr, '\u03BF', '\\omicron', !0)
      G(H, re, rr, '\u03C0', '\\pi', !0)
      G(H, re, rr, '\u03C1', '\\rho', !0)
      G(H, re, rr, '\u03C3', '\\sigma', !0)
      G(H, re, rr, '\u03C4', '\\tau', !0)
      G(H, re, rr, '\u03C5', '\\upsilon', !0)
      G(H, re, rr, '\u03D5', '\\phi', !0)
      G(H, re, rr, '\u03C7', '\\chi', !0)
      G(H, re, rr, '\u03C8', '\\psi', !0)
      G(H, re, rr, '\u03C9', '\\omega', !0)
      G(H, re, rr, '\u03B5', '\\varepsilon', !0)
      G(H, re, rr, '\u03D1', '\\vartheta', !0)
      G(H, re, rr, '\u03D6', '\\varpi', !0)
      G(H, re, rr, '\u03F1', '\\varrho', !0)
      G(H, re, rr, '\u03C2', '\\varsigma', !0)
      G(H, re, rr, '\u03C6', '\\varphi', !0)
      G(H, re, It, '\u2217', '*', !0)
      G(H, re, It, '+', '+')
      G(H, re, It, '\u2212', '-', !0)
      G(H, re, It, '\u22C5', '\\cdot', !0)
      G(H, re, It, '\u2218', '\\circ', !0)
      G(H, re, It, '\xF7', '\\div', !0)
      G(H, re, It, '\xB1', '\\pm', !0)
      G(H, re, It, '\xD7', '\\times', !0)
      G(H, re, It, '\u2229', '\\cap', !0)
      G(H, re, It, '\u222A', '\\cup', !0)
      G(H, re, It, '\u2216', '\\setminus', !0)
      G(H, re, It, '\u2227', '\\land')
      G(H, re, It, '\u2228', '\\lor')
      G(H, re, It, '\u2227', '\\wedge', !0)
      G(H, re, It, '\u2228', '\\vee', !0)
      G(H, re, Re, '\u221A', '\\surd')
      G(H, re, Zs, '\u27E8', '\\langle', !0)
      G(H, re, Zs, '\u2223', '\\lvert')
      G(H, re, Zs, '\u2225', '\\lVert')
      G(H, re, ns, '?', '?')
      G(H, re, ns, '!', '!')
      G(H, re, ns, '\u27E9', '\\rangle', !0)
      G(H, re, ns, '\u2223', '\\rvert')
      G(H, re, ns, '\u2225', '\\rVert')
      G(H, re, Ee, '=', '=')
      G(H, re, Ee, ':', ':')
      G(H, re, Ee, '\u2248', '\\approx', !0)
      G(H, re, Ee, '\u2245', '\\cong', !0)
      G(H, re, Ee, '\u2265', '\\ge')
      G(H, re, Ee, '\u2265', '\\geq', !0)
      G(H, re, Ee, '\u2190', '\\gets')
      G(H, re, Ee, '>', '\\gt', !0)
      G(H, re, Ee, '\u2208', '\\in', !0)
      G(H, re, Ee, '\uE020', '\\@not')
      G(H, re, Ee, '\u2282', '\\subset', !0)
      G(H, re, Ee, '\u2283', '\\supset', !0)
      G(H, re, Ee, '\u2286', '\\subseteq', !0)
      G(H, re, Ee, '\u2287', '\\supseteq', !0)
      G(H, ke, Ee, '\u2288', '\\nsubseteq', !0)
      G(H, ke, Ee, '\u2289', '\\nsupseteq', !0)
      G(H, re, Ee, '\u22A8', '\\models')
      G(H, re, Ee, '\u2190', '\\leftarrow', !0)
      G(H, re, Ee, '\u2264', '\\le')
      G(H, re, Ee, '\u2264', '\\leq', !0)
      G(H, re, Ee, '<', '\\lt', !0)
      G(H, re, Ee, '\u2192', '\\rightarrow', !0)
      G(H, re, Ee, '\u2192', '\\to')
      G(H, ke, Ee, '\u2271', '\\ngeq', !0)
      G(H, ke, Ee, '\u2270', '\\nleq', !0)
      G(H, re, pu, '\xA0', '\\ ')
      G(H, re, pu, '\xA0', '\\space')
      G(H, re, pu, '\xA0', '\\nobreakspace')
      G(it, re, pu, '\xA0', '\\ ')
      G(it, re, pu, '\xA0', ' ')
      G(it, re, pu, '\xA0', '\\space')
      G(it, re, pu, '\xA0', '\\nobreakspace')
      G(H, re, pu, null, '\\nobreak')
      G(H, re, pu, null, '\\allowbreak')
      G(H, re, D3, ',', ',')
      G(H, re, D3, ';', ';')
      G(H, ke, It, '\u22BC', '\\barwedge', !0)
      G(H, ke, It, '\u22BB', '\\veebar', !0)
      G(H, re, It, '\u2299', '\\odot', !0)
      G(H, re, It, '\u2295', '\\oplus', !0)
      G(H, re, It, '\u2297', '\\otimes', !0)
      G(H, re, Re, '\u2202', '\\partial', !0)
      G(H, re, It, '\u2298', '\\oslash', !0)
      G(H, ke, It, '\u229A', '\\circledcirc', !0)
      G(H, ke, It, '\u22A1', '\\boxdot', !0)
      G(H, re, It, '\u25B3', '\\bigtriangleup')
      G(H, re, It, '\u25BD', '\\bigtriangledown')
      G(H, re, It, '\u2020', '\\dagger')
      G(H, re, It, '\u22C4', '\\diamond')
      G(H, re, It, '\u22C6', '\\star')
      G(H, re, It, '\u25C3', '\\triangleleft')
      G(H, re, It, '\u25B9', '\\triangleright')
      G(H, re, Zs, '{', '\\{')
      G(it, re, Re, '{', '\\{')
      G(it, re, Re, '{', '\\textbraceleft')
      G(H, re, ns, '}', '\\}')
      G(it, re, Re, '}', '\\}')
      G(it, re, Re, '}', '\\textbraceright')
      G(H, re, Zs, '{', '\\lbrace')
      G(H, re, ns, '}', '\\rbrace')
      G(H, re, Zs, '[', '\\lbrack', !0)
      G(it, re, Re, '[', '\\lbrack', !0)
      G(H, re, ns, ']', '\\rbrack', !0)
      G(it, re, Re, ']', '\\rbrack', !0)
      G(H, re, Zs, '(', '\\lparen', !0)
      G(H, re, ns, ')', '\\rparen', !0)
      G(it, re, Re, '<', '\\textless', !0)
      G(it, re, Re, '>', '\\textgreater', !0)
      G(H, re, Zs, '\u230A', '\\lfloor', !0)
      G(H, re, ns, '\u230B', '\\rfloor', !0)
      G(H, re, Zs, '\u2308', '\\lceil', !0)
      G(H, re, ns, '\u2309', '\\rceil', !0)
      G(H, re, Re, '\\', '\\backslash')
      G(H, re, Re, '\u2223', '|')
      G(H, re, Re, '\u2223', '\\vert')
      G(it, re, Re, '|', '\\textbar', !0)
      G(H, re, Re, '\u2225', '\\|')
      G(H, re, Re, '\u2225', '\\Vert')
      G(it, re, Re, '\u2225', '\\textbardbl')
      G(it, re, Re, '~', '\\textasciitilde')
      G(it, re, Re, '\\', '\\textbackslash')
      G(it, re, Re, '^', '\\textasciicircum')
      G(H, re, Ee, '\u2191', '\\uparrow', !0)
      G(H, re, Ee, '\u21D1', '\\Uparrow', !0)
      G(H, re, Ee, '\u2193', '\\downarrow', !0)
      G(H, re, Ee, '\u21D3', '\\Downarrow', !0)
      G(H, re, Ee, '\u2195', '\\updownarrow', !0)
      G(H, re, Ee, '\u21D5', '\\Updownarrow', !0)
      G(H, re, Ci, '\u2210', '\\coprod')
      G(H, re, Ci, '\u22C1', '\\bigvee')
      G(H, re, Ci, '\u22C0', '\\bigwedge')
      G(H, re, Ci, '\u2A04', '\\biguplus')
      G(H, re, Ci, '\u22C2', '\\bigcap')
      G(H, re, Ci, '\u22C3', '\\bigcup')
      G(H, re, Ci, '\u222B', '\\int')
      G(H, re, Ci, '\u222B', '\\intop')
      G(H, re, Ci, '\u222C', '\\iint')
      G(H, re, Ci, '\u222D', '\\iiint')
      G(H, re, Ci, '\u220F', '\\prod')
      G(H, re, Ci, '\u2211', '\\sum')
      G(H, re, Ci, '\u2A02', '\\bigotimes')
      G(H, re, Ci, '\u2A01', '\\bigoplus')
      G(H, re, Ci, '\u2A00', '\\bigodot')
      G(H, re, Ci, '\u222E', '\\oint')
      G(H, re, Ci, '\u222F', '\\oiint')
      G(H, re, Ci, '\u2230', '\\oiiint')
      G(H, re, Ci, '\u2A06', '\\bigsqcup')
      G(H, re, Ci, '\u222B', '\\smallint')
      G(it, re, E0, '\u2026', '\\textellipsis')
      G(H, re, E0, '\u2026', '\\mathellipsis')
      G(it, re, E0, '\u2026', '\\ldots', !0)
      G(H, re, E0, '\u2026', '\\ldots', !0)
      G(H, re, E0, '\u22EF', '\\@cdots', !0)
      G(H, re, E0, '\u22F1', '\\ddots', !0)
      G(H, re, Re, '\u22EE', '\\varvdots')
      G(it, re, Re, '\u22EE', '\\varvdots')
      G(H, re, Hn, '\u02CA', '\\acute')
      G(H, re, Hn, '\u02CB', '\\grave')
      G(H, re, Hn, '\xA8', '\\ddot')
      G(H, re, Hn, '~', '\\tilde')
      G(H, re, Hn, '\u02C9', '\\bar')
      G(H, re, Hn, '\u02D8', '\\breve')
      G(H, re, Hn, '\u02C7', '\\check')
      G(H, re, Hn, '^', '\\hat')
      G(H, re, Hn, '\u20D7', '\\vec')
      G(H, re, Hn, '\u02D9', '\\dot')
      G(H, re, Hn, '\u02DA', '\\mathring')
      G(H, re, rr, '\uE131', '\\@imath')
      G(H, re, rr, '\uE237', '\\@jmath')
      G(H, re, Re, '\u0131', '\u0131')
      G(H, re, Re, '\u0237', '\u0237')
      G(it, re, Re, '\u0131', '\\i', !0)
      G(it, re, Re, '\u0237', '\\j', !0)
      G(it, re, Re, '\xDF', '\\ss', !0)
      G(it, re, Re, '\xE6', '\\ae', !0)
      G(it, re, Re, '\u0153', '\\oe', !0)
      G(it, re, Re, '\xF8', '\\o', !0)
      G(it, re, Re, '\xC6', '\\AE', !0)
      G(it, re, Re, '\u0152', '\\OE', !0)
      G(it, re, Re, '\xD8', '\\O', !0)
      G(it, re, Hn, '\u02CA', "\\'")
      G(it, re, Hn, '\u02CB', '\\`')
      G(it, re, Hn, '\u02C6', '\\^')
      G(it, re, Hn, '\u02DC', '\\~')
      G(it, re, Hn, '\u02C9', '\\=')
      G(it, re, Hn, '\u02D8', '\\u')
      G(it, re, Hn, '\u02D9', '\\.')
      G(it, re, Hn, '\xB8', '\\c')
      G(it, re, Hn, '\u02DA', '\\r')
      G(it, re, Hn, '\u02C7', '\\v')
      G(it, re, Hn, '\xA8', '\\"')
      G(it, re, Hn, '\u02DD', '\\H')
      G(it, re, Hn, '\u25EF', '\\textcircled')
      MG = { '--': !0, '---': !0, '``': !0, "''": !0 }
      G(it, re, Re, '\u2013', '--', !0)
      G(it, re, Re, '\u2013', '\\textendash')
      G(it, re, Re, '\u2014', '---', !0)
      G(it, re, Re, '\u2014', '\\textemdash')
      G(it, re, Re, '\u2018', '`', !0)
      G(it, re, Re, '\u2018', '\\textquoteleft')
      G(it, re, Re, '\u2019', "'", !0)
      G(it, re, Re, '\u2019', '\\textquoteright')
      G(it, re, Re, '\u201C', '``', !0)
      G(it, re, Re, '\u201C', '\\textquotedblleft')
      G(it, re, Re, '\u201D', "''", !0)
      G(it, re, Re, '\u201D', '\\textquotedblright')
      G(H, re, Re, '\xB0', '\\degree', !0)
      G(it, re, Re, '\xB0', '\\degree')
      G(it, re, Re, '\xB0', '\\textdegree', !0)
      G(H, re, Re, '\xA3', '\\pounds')
      G(H, re, Re, '\xA3', '\\mathsterling', !0)
      G(it, re, Re, '\xA3', '\\pounds')
      G(it, re, Re, '\xA3', '\\textsterling', !0)
      G(H, ke, Re, '\u2720', '\\maltese')
      G(it, ke, Re, '\u2720', '\\maltese')
      eG = '0123456789/@."'
      for (u3 = 0; u3 < eG.length; u3++) (N7 = eG.charAt(u3)), G(H, re, Re, N7, N7)
      tG = '0123456789!@*()-=+";:?/.,'
      for (h3 = 0; h3 < tG.length; h3++) (M7 = tG.charAt(h3)), G(it, re, Re, M7, M7)
      k3 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
      for (f3 = 0; f3 < k3.length; f3++) (Wy = k3.charAt(f3)), G(H, re, rr, Wy, Wy), G(it, re, Re, Wy, Wy)
      G(H, ke, Re, 'C', '\u2102')
      G(it, ke, Re, 'C', '\u2102')
      G(H, ke, Re, 'H', '\u210D')
      G(it, ke, Re, 'H', '\u210D')
      G(H, ke, Re, 'N', '\u2115')
      G(it, ke, Re, 'N', '\u2115')
      G(H, ke, Re, 'P', '\u2119')
      G(it, ke, Re, 'P', '\u2119')
      G(H, ke, Re, 'Q', '\u211A')
      G(it, ke, Re, 'Q', '\u211A')
      G(H, ke, Re, 'R', '\u211D')
      G(it, ke, Re, 'R', '\u211D')
      G(H, ke, Re, 'Z', '\u2124')
      G(it, ke, Re, 'Z', '\u2124')
      G(H, re, rr, 'h', '\u210E')
      G(it, re, rr, 'h', '\u210E')
      lr = ''
      for (Da = 0; Da < k3.length; Da++)
        (ti = k3.charAt(Da)),
          (lr = String.fromCharCode(55349, 56320 + Da)),
          G(H, re, rr, ti, lr),
          G(it, re, Re, ti, lr),
          (lr = String.fromCharCode(55349, 56372 + Da)),
          G(H, re, rr, ti, lr),
          G(it, re, Re, ti, lr),
          (lr = String.fromCharCode(55349, 56424 + Da)),
          G(H, re, rr, ti, lr),
          G(it, re, Re, ti, lr),
          (lr = String.fromCharCode(55349, 56580 + Da)),
          G(H, re, rr, ti, lr),
          G(it, re, Re, ti, lr),
          (lr = String.fromCharCode(55349, 56684 + Da)),
          G(H, re, rr, ti, lr),
          G(it, re, Re, ti, lr),
          (lr = String.fromCharCode(55349, 56736 + Da)),
          G(H, re, rr, ti, lr),
          G(it, re, Re, ti, lr),
          (lr = String.fromCharCode(55349, 56788 + Da)),
          G(H, re, rr, ti, lr),
          G(it, re, Re, ti, lr),
          (lr = String.fromCharCode(55349, 56840 + Da)),
          G(H, re, rr, ti, lr),
          G(it, re, Re, ti, lr),
          (lr = String.fromCharCode(55349, 56944 + Da)),
          G(H, re, rr, ti, lr),
          G(it, re, Re, ti, lr),
          Da < 26 &&
            ((lr = String.fromCharCode(55349, 56632 + Da)),
            G(H, re, rr, ti, lr),
            G(it, re, Re, ti, lr),
            (lr = String.fromCharCode(55349, 56476 + Da)),
            G(H, re, rr, ti, lr),
            G(it, re, Re, ti, lr))
      lr = '\u{1D55C}'
      G(H, re, rr, 'k', lr)
      G(it, re, Re, 'k', lr)
      for (gh = 0; gh < 10; gh++)
        (lu = gh.toString()),
          (lr = String.fromCharCode(55349, 57294 + gh)),
          G(H, re, rr, lu, lr),
          G(it, re, Re, lu, lr),
          (lr = String.fromCharCode(55349, 57314 + gh)),
          G(H, re, rr, lu, lr),
          G(it, re, Re, lu, lr),
          (lr = String.fromCharCode(55349, 57324 + gh)),
          G(H, re, rr, lu, lr),
          G(it, re, Re, lu, lr),
          (lr = String.fromCharCode(55349, 57334 + gh)),
          G(H, re, rr, lu, lr),
          G(it, re, Re, lu, lr)
      Y7 = '\xD0\xDE\xFE'
      for (d3 = 0; d3 < Y7.length; d3++) (qy = Y7.charAt(d3)), G(H, re, rr, qy, qy), G(it, re, Re, qy, qy)
      ;(p3 = [
        ['mathbf', 'textbf', 'Main-Bold'],
        ['mathbf', 'textbf', 'Main-Bold'],
        ['mathnormal', 'textit', 'Math-Italic'],
        ['mathnormal', 'textit', 'Math-Italic'],
        ['boldsymbol', 'boldsymbol', 'Main-BoldItalic'],
        ['boldsymbol', 'boldsymbol', 'Main-BoldItalic'],
        ['mathscr', 'textscr', 'Script-Regular'],
        ['', '', ''],
        ['', '', ''],
        ['', '', ''],
        ['mathfrak', 'textfrak', 'Fraktur-Regular'],
        ['mathfrak', 'textfrak', 'Fraktur-Regular'],
        ['mathbb', 'textbb', 'AMS-Regular'],
        ['mathbb', 'textbb', 'AMS-Regular'],
        ['mathboldfrak', 'textboldfrak', 'Fraktur-Regular'],
        ['mathboldfrak', 'textboldfrak', 'Fraktur-Regular'],
        ['mathsf', 'textsf', 'SansSerif-Regular'],
        ['mathsf', 'textsf', 'SansSerif-Regular'],
        ['mathboldsf', 'textboldsf', 'SansSerif-Bold'],
        ['mathboldsf', 'textboldsf', 'SansSerif-Bold'],
        ['mathitsf', 'textitsf', 'SansSerif-Italic'],
        ['mathitsf', 'textitsf', 'SansSerif-Italic'],
        ['', '', ''],
        ['', '', ''],
        ['mathtt', 'texttt', 'Typewriter-Regular'],
        ['mathtt', 'texttt', 'Typewriter-Regular']
      ]),
        (rG = [
          ['mathbf', 'textbf', 'Main-Bold'],
          ['', '', ''],
          ['mathsf', 'textsf', 'SansSerif-Regular'],
          ['mathboldsf', 'textboldsf', 'SansSerif-Bold'],
          ['mathtt', 'texttt', 'Typewriter-Regular']
        ]),
        (r3e = o(function (e, r) {
          var n = e.charCodeAt(0),
            i = e.charCodeAt(1),
            a = (n - 55296) * 1024 + (i - 56320) + 65536,
            s = r === 'math' ? 0 : 1
          if (119808 <= a && a < 120484) {
            var l = Math.floor((a - 119808) / 26)
            return [p3[l][2], p3[l][s]]
          } else if (120782 <= a && a <= 120831) {
            var u = Math.floor((a - 120782) / 10)
            return [rG[u][2], rG[u][s]]
          } else {
            if (a === 120485 || a === 120486) return [p3[0][2], p3[0][s]]
            if (120486 < a && a < 120782) return ['', '']
            throw new pt('Unsupported character: ' + e)
          }
        }, 'wideCharacterFont')),
        (L3 = o(function (e, r, n) {
          return An[n][e] && An[n][e].replace && (e = An[n][e].replace), { value: e, metrics: nA(e, r, n) }
        }, 'lookupSymbol')),
        (fl = o(function (e, r, n, i, a) {
          var s = L3(e, r, n),
            l = s.metrics
          e = s.value
          var u
          if (l) {
            var h = l.italic
            ;(n === 'text' || (i && i.font === 'mathit')) && (h = 0), (u = new As(e, l.height, l.depth, h, l.skew, l.width, a))
          } else typeof console < 'u' && console.warn('No character metrics ' + ("for '" + e + "' in style '" + r + "' and mode '" + n + "'")), (u = new As(e, 0, 0, 0, 0, 0, a))
          if (i) {
            ;(u.maxFontSize = i.sizeMultiplier), i.style.isTight() && u.classes.push('mtight')
            var f = i.getColor()
            f && (u.style.color = f)
          }
          return u
        }, 'makeSymbol')),
        (n3e = o(function (e, r, n, i) {
          return (
            i === void 0 && (i = []),
            n.font === 'boldsymbol' && L3(e, 'Main-Bold', r).metrics
              ? fl(e, 'Main-Bold', r, n, i.concat(['mathbf']))
              : e === '\\' || An[r][e].font === 'main'
                ? fl(e, 'Main-Regular', r, n, i)
                : fl(e, 'AMS-Regular', r, n, i.concat(['amsrm']))
          )
        }, 'mathsym')),
        (i3e = o(function (e, r, n, i, a) {
          return a !== 'textord' && L3(e, 'Math-BoldItalic', r).metrics ? { fontName: 'Math-BoldItalic', fontClass: 'boldsymbol' } : { fontName: 'Main-Bold', fontClass: 'mathbf' }
        }, 'boldsymbol')),
        (a3e = o(function (e, r, n) {
          var i = e.mode,
            a = e.text,
            s = ['mord'],
            l = i === 'math' || (i === 'text' && r.font),
            u = l ? r.font : r.fontFamily,
            h = '',
            f = ''
          if ((a.charCodeAt(0) === 55349 && ([h, f] = r3e(a, i)), h.length > 0)) return fl(a, h, i, r, s.concat(f))
          if (u) {
            var d, p
            if (u === 'boldsymbol') {
              var m = i3e(a, i, r, s, n)
              ;(d = m.fontName), (p = [m.fontClass])
            } else l ? ((d = PG[u].fontName), (p = [u])) : ((d = m3(u, r.fontWeight, r.fontShape)), (p = [u, r.fontWeight, r.fontShape]))
            if (L3(a, d, i).metrics) return fl(a, d, i, r, s.concat(p))
            if (MG.hasOwnProperty(a) && d.slice(0, 10) === 'Typewriter') {
              for (var g = [], y = 0; y < a.length; y++) g.push(fl(a[y], d, i, r, s.concat(p)))
              return OG(g)
            }
          }
          if (n === 'mathord') return fl(a, 'Math-Italic', i, r, s.concat(['mathnormal']))
          if (n === 'textord') {
            var v = An[i][a] && An[i][a].font
            if (v === 'ams') {
              var x = m3('amsrm', r.fontWeight, r.fontShape)
              return fl(a, x, i, r, s.concat('amsrm', r.fontWeight, r.fontShape))
            } else if (v === 'main' || !v) {
              var b = m3('textrm', r.fontWeight, r.fontShape)
              return fl(a, b, i, r, s.concat(r.fontWeight, r.fontShape))
            } else {
              var T = m3(v, r.fontWeight, r.fontShape)
              return fl(a, T, i, r, s.concat(T, r.fontWeight, r.fontShape))
            }
          } else throw new Error('unexpected type: ' + n + ' in makeOrd')
        }, 'makeOrd')),
        (s3e = o((t, e) => {
          if (vh(t.classes) !== vh(e.classes) || t.skew !== e.skew || t.maxFontSize !== e.maxFontSize) return !1
          if (t.classes.length === 1) {
            var r = t.classes[0]
            if (r === 'mbin' || r === 'mord') return !1
          }
          for (var n in t.style) if (t.style.hasOwnProperty(n) && t.style[n] !== e.style[n]) return !1
          for (var i in e.style) if (e.style.hasOwnProperty(i) && t.style[i] !== e.style[i]) return !1
          return !0
        }, 'canCombine')),
        (o3e = o(t => {
          for (var e = 0; e < t.length - 1; e++) {
            var r = t[e],
              n = t[e + 1]
            r instanceof As &&
              n instanceof As &&
              s3e(r, n) &&
              ((r.text += n.text), (r.height = Math.max(r.height, n.height)), (r.depth = Math.max(r.depth, n.depth)), (r.italic = n.italic), t.splice(e + 1, 1), e--)
          }
          return t
        }, 'tryCombineChars')),
        (iA = o(function (e) {
          for (var r = 0, n = 0, i = 0, a = 0; a < e.children.length; a++) {
            var s = e.children[a]
            s.height > r && (r = s.height), s.depth > n && (n = s.depth), s.maxFontSize > i && (i = s.maxFontSize)
          }
          ;(e.height = r), (e.depth = n), (e.maxFontSize = i)
        }, 'sizeElementFromChildren')),
        (Cs = o(function (e, r, n, i) {
          var a = new ld(e, r, n, i)
          return iA(a), a
        }, 'makeSpan')),
        (IG = o((t, e, r, n) => new ld(t, e, r, n), 'makeSvgSpan')),
        (l3e = o(function (e, r, n) {
          var i = Cs([e], [], r)
          return (i.height = Math.max(n || r.fontMetrics().defaultRuleThickness, r.minRuleThickness)), (i.style.borderBottomWidth = Et(i.height)), (i.maxFontSize = 1), i
        }, 'makeLineSpan')),
        (c3e = o(function (e, r, n, i) {
          var a = new Zy(e, r, n, i)
          return iA(a), a
        }, 'makeAnchor')),
        (OG = o(function (e) {
          var r = new od(e)
          return iA(r), r
        }, 'makeFragment')),
        (u3e = o(function (e, r) {
          return e instanceof od ? Cs([], [e], r) : e
        }, 'wrapFragment')),
        (h3e = o(function (e) {
          if (e.positionType === 'individualShift') {
            for (var r = e.children, n = [r[0]], i = -r[0].shift - r[0].elem.depth, a = i, s = 1; s < r.length; s++) {
              var l = -r[s].shift - a - r[s].elem.depth,
                u = l - (r[s - 1].elem.height + r[s - 1].elem.depth)
              ;(a = a + l), n.push({ type: 'kern', size: u }), n.push(r[s])
            }
            return { children: n, depth: i }
          }
          var h
          if (e.positionType === 'top') {
            for (var f = e.positionData, d = 0; d < e.children.length; d++) {
              var p = e.children[d]
              f -= p.type === 'kern' ? p.size : p.elem.height + p.elem.depth
            }
            h = f
          } else if (e.positionType === 'bottom') h = -e.positionData
          else {
            var m = e.children[0]
            if (m.type !== 'elem') throw new Error('First child must have type "elem".')
            if (e.positionType === 'shift') h = -m.elem.depth - e.positionData
            else if (e.positionType === 'firstBaseline') h = -m.elem.depth
            else throw new Error('Invalid positionType ' + e.positionType + '.')
          }
          return { children: e.children, depth: h }
        }, 'getVListChildrenAndDepth')),
        (f3e = o(function (e, r) {
          for (var { children: n, depth: i } = h3e(e), a = 0, s = 0; s < n.length; s++) {
            var l = n[s]
            if (l.type === 'elem') {
              var u = l.elem
              a = Math.max(a, u.maxFontSize, u.height)
            }
          }
          a += 2
          var h = Cs(['pstrut'], [])
          h.style.height = Et(a)
          for (var f = [], d = i, p = i, m = i, g = 0; g < n.length; g++) {
            var y = n[g]
            if (y.type === 'kern') m += y.size
            else {
              var v = y.elem,
                x = y.wrapperClasses || [],
                b = y.wrapperStyle || {},
                T = Cs(x, [h, v], void 0, b)
              ;(T.style.top = Et(-a - m - v.depth)),
                y.marginLeft && (T.style.marginLeft = y.marginLeft),
                y.marginRight && (T.style.marginRight = y.marginRight),
                f.push(T),
                (m += v.height + v.depth)
            }
            ;(d = Math.min(d, m)), (p = Math.max(p, m))
          }
          var S = Cs(['vlist'], f)
          S.style.height = Et(p)
          var w
          if (d < 0) {
            var E = Cs([], []),
              _ = Cs(['vlist'], [E])
            _.style.height = Et(-d)
            var C = Cs(['vlist-s'], [new As('\u200B')])
            w = [Cs(['vlist-r'], [S, C]), Cs(['vlist-r'], [_])]
          } else w = [Cs(['vlist-r'], [S])]
          var D = Cs(['vlist-t'], w)
          return w.length === 2 && D.classes.push('vlist-t2'), (D.height = p), (D.depth = -d), D
        }, 'makeVList')),
        (d3e = o((t, e) => {
          var r = Cs(['mspace'], [], e),
            n = ni(t, e)
          return (r.style.marginRight = Et(n)), r
        }, 'makeGlue')),
        (m3 = o(function (e, r, n) {
          var i = ''
          switch (e) {
            case 'amsrm':
              i = 'AMS'
              break
            case 'textrm':
              i = 'Main'
              break
            case 'textsf':
              i = 'SansSerif'
              break
            case 'texttt':
              i = 'Typewriter'
              break
            default:
              i = e
          }
          var a
          return r === 'textbf' && n === 'textit' ? (a = 'BoldItalic') : r === 'textbf' ? (a = 'Bold') : r === 'textit' ? (a = 'Italic') : (a = 'Regular'), i + '-' + a
        }, 'retrieveTextFontName')),
        (PG = {
          mathbf: { variant: 'bold', fontName: 'Main-Bold' },
          mathrm: { variant: 'normal', fontName: 'Main-Regular' },
          textit: { variant: 'italic', fontName: 'Main-Italic' },
          mathit: { variant: 'italic', fontName: 'Main-Italic' },
          mathnormal: { variant: 'italic', fontName: 'Math-Italic' },
          mathsfit: { variant: 'sans-serif-italic', fontName: 'SansSerif-Italic' },
          mathbb: { variant: 'double-struck', fontName: 'AMS-Regular' },
          mathcal: { variant: 'script', fontName: 'Caligraphic-Regular' },
          mathfrak: { variant: 'fraktur', fontName: 'Fraktur-Regular' },
          mathscr: { variant: 'script', fontName: 'Script-Regular' },
          mathsf: { variant: 'sans-serif', fontName: 'SansSerif-Regular' },
          mathtt: { variant: 'monospace', fontName: 'Typewriter-Regular' }
        }),
        (BG = {
          vec: ['vec', 0.471, 0.714],
          oiintSize1: ['oiintSize1', 0.957, 0.499],
          oiintSize2: ['oiintSize2', 1.472, 0.659],
          oiiintSize1: ['oiiintSize1', 1.304, 0.499],
          oiiintSize2: ['oiiintSize2', 1.98, 0.659]
        }),
        (p3e = o(function (e, r) {
          var [n, i, a] = BG[e],
            s = new ec(n),
            l = new dl([s], { width: Et(i), height: Et(a), style: 'width:' + Et(i), viewBox: '0 0 ' + 1e3 * i + ' ' + 1e3 * a, preserveAspectRatio: 'xMinYMin' }),
            u = IG(['overlay'], [l], r)
          return (u.height = a), (u.style.height = Et(a)), (u.style.width = Et(i)), u
        }, 'staticSvg')),
        (Fe = {
          fontMap: PG,
          makeSymbol: fl,
          mathsym: n3e,
          makeSpan: Cs,
          makeSvgSpan: IG,
          makeLineSpan: l3e,
          makeAnchor: c3e,
          makeFragment: OG,
          wrapFragment: u3e,
          makeVList: f3e,
          makeOrd: a3e,
          makeGlue: d3e,
          staticSvg: p3e,
          svgData: BG,
          tryCombineChars: o3e
        }),
        (ri = { number: 3, unit: 'mu' }),
        (sd = { number: 4, unit: 'mu' }),
        (cu = { number: 5, unit: 'mu' }),
        (m3e = {
          mord: { mop: ri, mbin: sd, mrel: cu, minner: ri },
          mop: { mord: ri, mop: ri, mrel: cu, minner: ri },
          mbin: { mord: sd, mop: sd, mopen: sd, minner: sd },
          mrel: { mord: cu, mop: cu, mopen: cu, minner: cu },
          mopen: {},
          mclose: { mop: ri, mbin: sd, mrel: cu, minner: ri },
          mpunct: { mord: ri, mop: ri, mrel: cu, mopen: ri, mclose: ri, mpunct: ri, minner: ri },
          minner: { mord: ri, mop: ri, mbin: sd, mrel: cu, mopen: ri, mpunct: ri, minner: ri }
        }),
        (g3e = { mord: { mop: ri }, mop: { mord: ri, mop: ri }, mbin: {}, mrel: {}, mopen: {}, mclose: { mop: ri }, mpunct: {}, minner: { mop: ri } }),
        (FG = {}),
        (E3 = {}),
        (S3 = {})
      o(Nt, 'defineFunction')
      o(cd, 'defineFunctionBuilders')
      ;(C3 = o(function (e) {
        return e.type === 'ordgroup' && e.body.length === 1 ? e.body[0] : e
      }, 'normalizeArgument')),
        (gi = o(function (e) {
          return e.type === 'ordgroup' ? e.body : [e]
        }, 'ordargument')),
        (fu = Fe.makeSpan),
        (y3e = ['leftmost', 'mbin', 'mopen', 'mrel', 'mop', 'mpunct']),
        (v3e = ['rightmost', 'mrel', 'mclose', 'mpunct']),
        (x3e = { display: nr.DISPLAY, text: nr.TEXT, script: nr.SCRIPT, scriptscript: nr.SCRIPTSCRIPT }),
        (b3e = { mord: 'mord', mop: 'mop', mbin: 'mbin', mrel: 'mrel', mopen: 'mopen', mclose: 'mclose', mpunct: 'mpunct', minner: 'minner' }),
        ($i = o(function (e, r, n, i) {
          i === void 0 && (i = [null, null])
          for (var a = [], s = 0; s < e.length; s++) {
            var l = $r(e[s], r)
            if (l instanceof od) {
              var u = l.children
              a.push(...u)
            } else a.push(l)
          }
          if ((Fe.tryCombineChars(a), !n)) return a
          var h = r
          if (e.length === 1) {
            var f = e[0]
            f.type === 'sizing' ? (h = r.havingSize(f.size)) : f.type === 'styling' && (h = r.havingStyle(x3e[f.style]))
          }
          var d = fu([i[0] || 'leftmost'], [], r),
            p = fu([i[1] || 'rightmost'], [], r),
            m = n === 'root'
          return (
            nG(
              a,
              (g, y) => {
                var v = y.classes[0],
                  x = g.classes[0]
                v === 'mbin' && Jt.contains(v3e, x) ? (y.classes[0] = 'mord') : x === 'mbin' && Jt.contains(y3e, v) && (g.classes[0] = 'mord')
              },
              { node: d },
              p,
              m
            ),
            nG(
              a,
              (g, y) => {
                var v = X7(y),
                  x = X7(g),
                  b = v && x ? (g.hasClass('mtight') ? g3e[v][x] : m3e[v][x]) : null
                if (b) return Fe.makeGlue(b, h)
              },
              { node: d },
              p,
              m
            ),
            a
          )
        }, 'buildExpression')),
        (nG = o(function t(e, r, n, i, a) {
          i && e.push(i)
          for (var s = 0; s < e.length; s++) {
            var l = e[s],
              u = $G(l)
            if (u) {
              t(u.children, r, n, null, a)
              continue
            }
            var h = !l.hasClass('mspace')
            if (h) {
              var f = r(l, n.node)
              f && (n.insertAfter ? n.insertAfter(f) : (e.unshift(f), s++))
            }
            h ? (n.node = l) : a && l.hasClass('newline') && (n.node = fu(['leftmost'])),
              (n.insertAfter = (d => p => {
                e.splice(d + 1, 0, p), s++
              })(s))
          }
          i && e.pop()
        }, 'traverseNonSpaceNodes')),
        ($G = o(function (e) {
          return e instanceof od || e instanceof Zy || (e instanceof ld && e.hasClass('enclosing')) ? e : null
        }, 'checkPartialGroup')),
        (T3e = o(function t(e, r) {
          var n = $G(e)
          if (n) {
            var i = n.children
            if (i.length) {
              if (r === 'right') return t(i[i.length - 1], 'right')
              if (r === 'left') return t(i[0], 'left')
            }
          }
          return e
        }, 'getOutermostNode')),
        (X7 = o(function (e, r) {
          return e ? (r && (e = T3e(e, r)), b3e[e.classes[0]] || null) : null
        }, 'getTypeOfDomTree')),
        (ev = o(function (e, r) {
          var n = ['nulldelimiter'].concat(e.baseSizingClasses())
          return fu(r.concat(n))
        }, 'makeNullDelimiter')),
        ($r = o(function (e, r, n) {
          if (!e) return fu()
          if (E3[e.type]) {
            var i = E3[e.type](e, r)
            if (n && r.size !== n.size) {
              i = fu(r.sizingClasses(n), [i], r)
              var a = r.sizeMultiplier / n.sizeMultiplier
              ;(i.height *= a), (i.depth *= a)
            }
            return i
          } else throw new pt("Got group of unknown type: '" + e.type + "'")
        }, 'buildGroup'))
      o(g3, 'buildHTMLUnbreakable')
      o(j7, 'buildHTML')
      o(zG, 'newDocumentFragment')
      ;(ts = class {
        static {
          o(this, 'MathNode')
        }
        constructor(e, r, n) {
          ;(this.type = void 0),
            (this.attributes = void 0),
            (this.children = void 0),
            (this.classes = void 0),
            (this.type = e),
            (this.attributes = {}),
            (this.children = r || []),
            (this.classes = n || [])
        }
        setAttribute(e, r) {
          this.attributes[e] = r
        }
        getAttribute(e) {
          return this.attributes[e]
        }
        toNode() {
          var e = document.createElementNS('http://www.w3.org/1998/Math/MathML', this.type)
          for (var r in this.attributes) Object.prototype.hasOwnProperty.call(this.attributes, r) && e.setAttribute(r, this.attributes[r])
          this.classes.length > 0 && (e.className = vh(this.classes))
          for (var n = 0; n < this.children.length; n++)
            if (this.children[n] instanceof Ao && this.children[n + 1] instanceof Ao) {
              for (var i = this.children[n].toText() + this.children[++n].toText(); this.children[n + 1] instanceof Ao; ) i += this.children[++n].toText()
              e.appendChild(new Ao(i).toNode())
            } else e.appendChild(this.children[n].toNode())
          return e
        }
        toMarkup() {
          var e = '<' + this.type
          for (var r in this.attributes) Object.prototype.hasOwnProperty.call(this.attributes, r) && ((e += ' ' + r + '="'), (e += Jt.escape(this.attributes[r])), (e += '"'))
          this.classes.length > 0 && (e += ' class ="' + Jt.escape(vh(this.classes)) + '"'), (e += '>')
          for (var n = 0; n < this.children.length; n++) e += this.children[n].toMarkup()
          return (e += '</' + this.type + '>'), e
        }
        toText() {
          return this.children.map(e => e.toText()).join('')
        }
      }),
        (Ao = class {
          static {
            o(this, 'TextNode')
          }
          constructor(e) {
            ;(this.text = void 0), (this.text = e)
          }
          toNode() {
            return document.createTextNode(this.text)
          }
          toMarkup() {
            return Jt.escape(this.toText())
          }
          toText() {
            return this.text
          }
        }),
        (K7 = class {
          static {
            o(this, 'SpaceNode')
          }
          constructor(e) {
            ;(this.width = void 0),
              (this.character = void 0),
              (this.width = e),
              e >= 0.05555 && e <= 0.05556
                ? (this.character = '\u200A')
                : e >= 0.1666 && e <= 0.1667
                  ? (this.character = '\u2009')
                  : e >= 0.2222 && e <= 0.2223
                    ? (this.character = '\u2005')
                    : e >= 0.2777 && e <= 0.2778
                      ? (this.character = '\u2005\u200A')
                      : e >= -0.05556 && e <= -0.05555
                        ? (this.character = '\u200A\u2063')
                        : e >= -0.1667 && e <= -0.1666
                          ? (this.character = '\u2009\u2063')
                          : e >= -0.2223 && e <= -0.2222
                            ? (this.character = '\u205F\u2063')
                            : e >= -0.2778 && e <= -0.2777
                              ? (this.character = '\u2005\u2063')
                              : (this.character = null)
          }
          toNode() {
            if (this.character) return document.createTextNode(this.character)
            var e = document.createElementNS('http://www.w3.org/1998/Math/MathML', 'mspace')
            return e.setAttribute('width', Et(this.width)), e
          }
          toMarkup() {
            return this.character ? '<mtext>' + this.character + '</mtext>' : '<mspace width="' + Et(this.width) + '"/>'
          }
          toText() {
            return this.character ? this.character : ' '
          }
        }),
        (dt = { MathNode: ts, TextNode: Ao, SpaceNode: K7, newDocumentFragment: zG }),
        (Do = o(function (e, r, n) {
          return (
            An[r][e] &&
              An[r][e].replace &&
              e.charCodeAt(0) !== 55349 &&
              !(MG.hasOwnProperty(e) && n && ((n.fontFamily && n.fontFamily.slice(4, 6) === 'tt') || (n.font && n.font.slice(4, 6) === 'tt'))) &&
              (e = An[r][e].replace),
            new dt.TextNode(e)
          )
        }, 'makeText')),
        (aA = o(function (e) {
          return e.length === 1 ? e[0] : new dt.MathNode('mrow', e)
        }, 'makeRow')),
        (sA = o(function (e, r) {
          if (r.fontFamily === 'texttt') return 'monospace'
          if (r.fontFamily === 'textsf')
            return r.fontShape === 'textit' && r.fontWeight === 'textbf'
              ? 'sans-serif-bold-italic'
              : r.fontShape === 'textit'
                ? 'sans-serif-italic'
                : r.fontWeight === 'textbf'
                  ? 'bold-sans-serif'
                  : 'sans-serif'
          if (r.fontShape === 'textit' && r.fontWeight === 'textbf') return 'bold-italic'
          if (r.fontShape === 'textit') return 'italic'
          if (r.fontWeight === 'textbf') return 'bold'
          var n = r.font
          if (!n || n === 'mathnormal') return null
          var i = e.mode
          if (n === 'mathit') return 'italic'
          if (n === 'boldsymbol') return e.type === 'textord' ? 'bold' : 'bold-italic'
          if (n === 'mathbf') return 'bold'
          if (n === 'mathbb') return 'double-struck'
          if (n === 'mathsfit') return 'sans-serif-italic'
          if (n === 'mathfrak') return 'fraktur'
          if (n === 'mathscr' || n === 'mathcal') return 'script'
          if (n === 'mathsf') return 'sans-serif'
          if (n === 'mathtt') return 'monospace'
          var a = e.text
          if (Jt.contains(['\\imath', '\\jmath'], a)) return null
          An[i][a] && An[i][a].replace && (a = An[i][a].replace)
          var s = Fe.fontMap[n].fontName
          return nA(a, s, i) ? Fe.fontMap[n].variant : null
        }, 'getVariant'))
      o(I7, 'isNumberPunctuation')
      ;(_s = o(function (e, r, n) {
        if (e.length === 1) {
          var i = vn(e[0], r)
          return n && i instanceof ts && i.type === 'mo' && (i.setAttribute('lspace', '0em'), i.setAttribute('rspace', '0em')), [i]
        }
        for (var a = [], s, l = 0; l < e.length; l++) {
          var u = vn(e[l], r)
          if (u instanceof ts && s instanceof ts) {
            if (u.type === 'mtext' && s.type === 'mtext' && u.getAttribute('mathvariant') === s.getAttribute('mathvariant')) {
              s.children.push(...u.children)
              continue
            } else if (u.type === 'mn' && s.type === 'mn') {
              s.children.push(...u.children)
              continue
            } else if (I7(u) && s.type === 'mn') {
              s.children.push(...u.children)
              continue
            } else if (u.type === 'mn' && I7(s)) (u.children = [...s.children, ...u.children]), a.pop()
            else if ((u.type === 'msup' || u.type === 'msub') && u.children.length >= 1 && (s.type === 'mn' || I7(s))) {
              var h = u.children[0]
              h instanceof ts && h.type === 'mn' && ((h.children = [...s.children, ...h.children]), a.pop())
            } else if (s.type === 'mi' && s.children.length === 1) {
              var f = s.children[0]
              if (f instanceof Ao && f.text === '\u0338' && (u.type === 'mo' || u.type === 'mi' || u.type === 'mn')) {
                var d = u.children[0]
                d instanceof Ao && d.text.length > 0 && ((d.text = d.text.slice(0, 1) + '\u0338' + d.text.slice(1)), a.pop())
              }
            }
          }
          a.push(u), (s = u)
        }
        return a
      }, 'buildExpression')),
        (xh = o(function (e, r, n) {
          return aA(_s(e, r, n))
        }, 'buildExpressionRow')),
        (vn = o(function (e, r) {
          if (!e) return new dt.MathNode('mrow')
          if (S3[e.type]) {
            var n = S3[e.type](e, r)
            return n
          } else throw new pt("Got group of unknown type: '" + e.type + "'")
        }, 'buildGroup'))
      o(iG, 'buildMathML')
      ;(GG = o(function (e) {
        return new w3({ style: e.displayMode ? nr.DISPLAY : nr.TEXT, maxSize: e.maxSize, minRuleThickness: e.minRuleThickness })
      }, 'optionsFromSettings')),
        (VG = o(function (e, r) {
          if (r.displayMode) {
            var n = ['katex-display']
            r.leqno && n.push('leqno'), r.fleqn && n.push('fleqn'), (e = Fe.makeSpan(n, [e]))
          }
          return e
        }, 'displayWrap')),
        (w3e = o(function (e, r, n) {
          var i = GG(n),
            a
          if (n.output === 'mathml') return iG(e, r, i, n.displayMode, !0)
          if (n.output === 'html') {
            var s = j7(e, i)
            a = Fe.makeSpan(['katex'], [s])
          } else {
            var l = iG(e, r, i, n.displayMode, !1),
              u = j7(e, i)
            a = Fe.makeSpan(['katex'], [l, u])
          }
          return VG(a, n)
        }, 'buildTree')),
        (k3e = o(function (e, r, n) {
          var i = GG(n),
            a = j7(e, i),
            s = Fe.makeSpan(['katex'], [a])
          return VG(s, n)
        }, 'buildHTMLTree')),
        (E3e = {
          widehat: '^',
          widecheck: '\u02C7',
          widetilde: '~',
          utilde: '~',
          overleftarrow: '\u2190',
          underleftarrow: '\u2190',
          xleftarrow: '\u2190',
          overrightarrow: '\u2192',
          underrightarrow: '\u2192',
          xrightarrow: '\u2192',
          underbrace: '\u23DF',
          overbrace: '\u23DE',
          overgroup: '\u23E0',
          undergroup: '\u23E1',
          overleftrightarrow: '\u2194',
          underleftrightarrow: '\u2194',
          xleftrightarrow: '\u2194',
          Overrightarrow: '\u21D2',
          xRightarrow: '\u21D2',
          overleftharpoon: '\u21BC',
          xleftharpoonup: '\u21BC',
          overrightharpoon: '\u21C0',
          xrightharpoonup: '\u21C0',
          xLeftarrow: '\u21D0',
          xLeftrightarrow: '\u21D4',
          xhookleftarrow: '\u21A9',
          xhookrightarrow: '\u21AA',
          xmapsto: '\u21A6',
          xrightharpoondown: '\u21C1',
          xleftharpoondown: '\u21BD',
          xrightleftharpoons: '\u21CC',
          xleftrightharpoons: '\u21CB',
          xtwoheadleftarrow: '\u219E',
          xtwoheadrightarrow: '\u21A0',
          xlongequal: '=',
          xtofrom: '\u21C4',
          xrightleftarrows: '\u21C4',
          xrightequilibrium: '\u21CC',
          xleftequilibrium: '\u21CB',
          '\\cdrightarrow': '\u2192',
          '\\cdleftarrow': '\u2190',
          '\\cdlongequal': '='
        }),
        (S3e = o(function (e) {
          var r = new dt.MathNode('mo', [new dt.TextNode(E3e[e.replace(/^\\/, '')])])
          return r.setAttribute('stretchy', 'true'), r
        }, 'mathMLnode')),
        (C3e = {
          overrightarrow: [['rightarrow'], 0.888, 522, 'xMaxYMin'],
          overleftarrow: [['leftarrow'], 0.888, 522, 'xMinYMin'],
          underrightarrow: [['rightarrow'], 0.888, 522, 'xMaxYMin'],
          underleftarrow: [['leftarrow'], 0.888, 522, 'xMinYMin'],
          xrightarrow: [['rightarrow'], 1.469, 522, 'xMaxYMin'],
          '\\cdrightarrow': [['rightarrow'], 3, 522, 'xMaxYMin'],
          xleftarrow: [['leftarrow'], 1.469, 522, 'xMinYMin'],
          '\\cdleftarrow': [['leftarrow'], 3, 522, 'xMinYMin'],
          Overrightarrow: [['doublerightarrow'], 0.888, 560, 'xMaxYMin'],
          xRightarrow: [['doublerightarrow'], 1.526, 560, 'xMaxYMin'],
          xLeftarrow: [['doubleleftarrow'], 1.526, 560, 'xMinYMin'],
          overleftharpoon: [['leftharpoon'], 0.888, 522, 'xMinYMin'],
          xleftharpoonup: [['leftharpoon'], 0.888, 522, 'xMinYMin'],
          xleftharpoondown: [['leftharpoondown'], 0.888, 522, 'xMinYMin'],
          overrightharpoon: [['rightharpoon'], 0.888, 522, 'xMaxYMin'],
          xrightharpoonup: [['rightharpoon'], 0.888, 522, 'xMaxYMin'],
          xrightharpoondown: [['rightharpoondown'], 0.888, 522, 'xMaxYMin'],
          xlongequal: [['longequal'], 0.888, 334, 'xMinYMin'],
          '\\cdlongequal': [['longequal'], 3, 334, 'xMinYMin'],
          xtwoheadleftarrow: [['twoheadleftarrow'], 0.888, 334, 'xMinYMin'],
          xtwoheadrightarrow: [['twoheadrightarrow'], 0.888, 334, 'xMaxYMin'],
          overleftrightarrow: [['leftarrow', 'rightarrow'], 0.888, 522],
          overbrace: [['leftbrace', 'midbrace', 'rightbrace'], 1.6, 548],
          underbrace: [['leftbraceunder', 'midbraceunder', 'rightbraceunder'], 1.6, 548],
          underleftrightarrow: [['leftarrow', 'rightarrow'], 0.888, 522],
          xleftrightarrow: [['leftarrow', 'rightarrow'], 1.75, 522],
          xLeftrightarrow: [['doubleleftarrow', 'doublerightarrow'], 1.75, 560],
          xrightleftharpoons: [['leftharpoondownplus', 'rightharpoonplus'], 1.75, 716],
          xleftrightharpoons: [['leftharpoonplus', 'rightharpoondownplus'], 1.75, 716],
          xhookleftarrow: [['leftarrow', 'righthook'], 1.08, 522],
          xhookrightarrow: [['lefthook', 'rightarrow'], 1.08, 522],
          overlinesegment: [['leftlinesegment', 'rightlinesegment'], 0.888, 522],
          underlinesegment: [['leftlinesegment', 'rightlinesegment'], 0.888, 522],
          overgroup: [['leftgroup', 'rightgroup'], 0.888, 342],
          undergroup: [['leftgroupunder', 'rightgroupunder'], 0.888, 342],
          xmapsto: [['leftmapsto', 'rightarrow'], 1.5, 522],
          xtofrom: [['leftToFrom', 'rightToFrom'], 1.75, 528],
          xrightleftarrows: [['baraboveleftarrow', 'rightarrowabovebar'], 1.75, 901],
          xrightequilibrium: [['baraboveshortleftharpoon', 'rightharpoonaboveshortbar'], 1.75, 716],
          xleftequilibrium: [['shortbaraboveleftharpoon', 'shortrightharpoonabovebar'], 1.75, 716]
        }),
        (A3e = o(function (e) {
          return e.type === 'ordgroup' ? e.body.length : 1
        }, 'groupLength')),
        (_3e = o(function (e, r) {
          function n() {
            var l = 4e5,
              u = e.label.slice(1)
            if (Jt.contains(['widehat', 'widecheck', 'widetilde', 'utilde'], u)) {
              var h = e,
                f = A3e(h.base),
                d,
                p,
                m
              if (f > 5) u === 'widehat' || u === 'widecheck' ? ((d = 420), (l = 2364), (m = 0.42), (p = u + '4')) : ((d = 312), (l = 2340), (m = 0.34), (p = 'tilde4'))
              else {
                var g = [1, 1, 2, 2, 3, 3][f]
                u === 'widehat' || u === 'widecheck'
                  ? ((l = [0, 1062, 2364, 2364, 2364][g]), (d = [0, 239, 300, 360, 420][g]), (m = [0, 0.24, 0.3, 0.3, 0.36, 0.42][g]), (p = u + g))
                  : ((l = [0, 600, 1033, 2339, 2340][g]), (d = [0, 260, 286, 306, 312][g]), (m = [0, 0.26, 0.286, 0.3, 0.306, 0.34][g]), (p = 'tilde' + g))
              }
              var y = new ec(p),
                v = new dl([y], { width: '100%', height: Et(m), viewBox: '0 0 ' + l + ' ' + d, preserveAspectRatio: 'none' })
              return { span: Fe.makeSvgSpan([], [v], r), minWidth: 0, height: m }
            } else {
              var x = [],
                b = C3e[u],
                [T, S, w] = b,
                E = w / 1e3,
                _ = T.length,
                C,
                D
              if (_ === 1) {
                var O = b[3]
                ;(C = ['hide-tail']), (D = [O])
              } else if (_ === 2) (C = ['halfarrow-left', 'halfarrow-right']), (D = ['xMinYMin', 'xMaxYMin'])
              else if (_ === 3) (C = ['brace-left', 'brace-center', 'brace-right']), (D = ['xMinYMin', 'xMidYMin', 'xMaxYMin'])
              else
                throw new Error(
                  `Correct katexImagesData or update code here to support
                    ` +
                    _ +
                    ' children.'
                )
              for (var R = 0; R < _; R++) {
                var k = new ec(T[R]),
                  L = new dl([k], { width: '400em', height: Et(E), viewBox: '0 0 ' + l + ' ' + w, preserveAspectRatio: D[R] + ' slice' }),
                  A = Fe.makeSvgSpan([C[R]], [L], r)
                if (_ === 1) return { span: A, minWidth: S, height: E }
                ;(A.style.height = Et(E)), x.push(A)
              }
              return { span: Fe.makeSpan(['stretchy'], x, r), minWidth: S, height: E }
            }
          }
          o(n, 'buildSvgSpan_')
          var { span: i, minWidth: a, height: s } = n()
          return (i.height = s), (i.style.height = Et(s)), a > 0 && (i.style.minWidth = Et(a)), i
        }, 'svgSpan')),
        (D3e = o(function (e, r, n, i, a) {
          var s,
            l = e.height + e.depth + n + i
          if (/fbox|color|angl/.test(r)) {
            if (((s = Fe.makeSpan(['stretchy', r], [], a)), r === 'fbox')) {
              var u = a.color && a.getColor()
              u && (s.style.borderColor = u)
            }
          } else {
            var h = []
            ;/^[bx]cancel$/.test(r) && h.push(new Jy({ x1: '0', y1: '0', x2: '100%', y2: '100%', 'stroke-width': '0.046em' })),
              /^x?cancel$/.test(r) && h.push(new Jy({ x1: '0', y1: '100%', x2: '100%', y2: '0', 'stroke-width': '0.046em' }))
            var f = new dl(h, { width: '100%', height: Et(l) })
            s = Fe.makeSvgSpan([], [f], a)
          }
          return (s.height = l), (s.style.height = Et(l)), s
        }, 'encloseSpan')),
        (du = { encloseSpan: D3e, mathMLnode: S3e, svgSpan: _3e })
      o(xr, 'assertNodeType')
      o(oA, 'assertSymbolNodeType')
      o(R3, 'checkSymbolNodeType')
      ;(lA = o((t, e) => {
        var r, n, i
        t && t.type === 'supsub' ? ((n = xr(t.base, 'accent')), (r = n.base), (t.base = r), (i = J4e($r(t, e))), (t.base = n)) : ((n = xr(t, 'accent')), (r = n.base))
        var a = $r(r, e.havingCrampedStyle()),
          s = n.isShifty && Jt.isCharacterBox(r),
          l = 0
        if (s) {
          var u = Jt.getBaseElem(r),
            h = $r(u, e.havingCrampedStyle())
          l = Jz(h).skew
        }
        var f = n.label === '\\c',
          d = f ? a.height + a.depth : Math.min(a.height, e.fontMetrics().xHeight),
          p
        if (n.isStretchy)
          (p = du.svgSpan(n, e)),
            (p = Fe.makeVList(
              {
                positionType: 'firstBaseline',
                children: [
                  { type: 'elem', elem: a },
                  { type: 'elem', elem: p, wrapperClasses: ['svg-align'], wrapperStyle: l > 0 ? { width: 'calc(100% - ' + Et(2 * l) + ')', marginLeft: Et(2 * l) } : void 0 }
                ]
              },
              e
            ))
        else {
          var m, g
          n.label === '\\vec'
            ? ((m = Fe.staticSvg('vec', e)), (g = Fe.svgData.vec[1]))
            : ((m = Fe.makeOrd({ mode: n.mode, text: n.label }, e, 'textord')), (m = Jz(m)), (m.italic = 0), (g = m.width), f && (d += m.depth)),
            (p = Fe.makeSpan(['accent-body'], [m]))
          var y = n.label === '\\textcircled'
          y && (p.classes.push('accent-full'), (d = a.height))
          var v = l
          y || (v -= g / 2),
            (p.style.left = Et(v)),
            n.label === '\\textcircled' && (p.style.top = '.2em'),
            (p = Fe.makeVList(
              {
                positionType: 'firstBaseline',
                children: [
                  { type: 'elem', elem: a },
                  { type: 'kern', size: -d },
                  { type: 'elem', elem: p }
                ]
              },
              e
            ))
        }
        var x = Fe.makeSpan(['mord', 'accent'], [p], e)
        return i ? ((i.children[0] = x), (i.height = Math.max(x.height, i.height)), (i.classes[0] = 'mord'), i) : x
      }, 'htmlBuilder$a')),
        (UG = o((t, e) => {
          var r = t.isStretchy ? du.mathMLnode(t.label) : new dt.MathNode('mo', [Do(t.label, t.mode)]),
            n = new dt.MathNode('mover', [vn(t.base, e), r])
          return n.setAttribute('accent', 'true'), n
        }, 'mathmlBuilder$9')),
        (L3e = new RegExp(['\\acute', '\\grave', '\\ddot', '\\tilde', '\\bar', '\\breve', '\\check', '\\hat', '\\vec', '\\dot', '\\mathring'].map(t => '\\' + t).join('|')))
      Nt({
        type: 'accent',
        names: [
          '\\acute',
          '\\grave',
          '\\ddot',
          '\\tilde',
          '\\bar',
          '\\breve',
          '\\check',
          '\\hat',
          '\\vec',
          '\\dot',
          '\\mathring',
          '\\widecheck',
          '\\widehat',
          '\\widetilde',
          '\\overrightarrow',
          '\\overleftarrow',
          '\\Overrightarrow',
          '\\overleftrightarrow',
          '\\overgroup',
          '\\overlinesegment',
          '\\overleftharpoon',
          '\\overrightharpoon'
        ],
        props: { numArgs: 1 },
        handler: o((t, e) => {
          var r = C3(e[0]),
            n = !L3e.test(t.funcName),
            i = !n || t.funcName === '\\widehat' || t.funcName === '\\widetilde' || t.funcName === '\\widecheck'
          return { type: 'accent', mode: t.parser.mode, label: t.funcName, isStretchy: n, isShifty: i, base: r }
        }, 'handler'),
        htmlBuilder: lA,
        mathmlBuilder: UG
      })
      Nt({
        type: 'accent',
        names: ["\\'", '\\`', '\\^', '\\~', '\\=', '\\u', '\\.', '\\"', '\\c', '\\r', '\\H', '\\v', '\\textcircled'],
        props: { numArgs: 1, allowedInText: !0, allowedInMath: !0, argTypes: ['primitive'] },
        handler: o((t, e) => {
          var r = e[0],
            n = t.parser.mode
          return (
            n === 'math' && (t.parser.settings.reportNonstrict('mathVsTextAccents', "LaTeX's accent " + t.funcName + ' works only in text mode'), (n = 'text')),
            { type: 'accent', mode: n, label: t.funcName, isStretchy: !1, isShifty: !0, base: r }
          )
        }, 'handler'),
        htmlBuilder: lA,
        mathmlBuilder: UG
      })
      Nt({
        type: 'accentUnder',
        names: ['\\underleftarrow', '\\underrightarrow', '\\underleftrightarrow', '\\undergroup', '\\underlinesegment', '\\utilde'],
        props: { numArgs: 1 },
        handler: o((t, e) => {
          var { parser: r, funcName: n } = t,
            i = e[0]
          return { type: 'accentUnder', mode: r.mode, label: n, base: i }
        }, 'handler'),
        htmlBuilder: o((t, e) => {
          var r = $r(t.base, e),
            n = du.svgSpan(t, e),
            i = t.label === '\\utilde' ? 0.12 : 0,
            a = Fe.makeVList(
              {
                positionType: 'top',
                positionData: r.height,
                children: [
                  { type: 'elem', elem: n, wrapperClasses: ['svg-align'] },
                  { type: 'kern', size: i },
                  { type: 'elem', elem: r }
                ]
              },
              e
            )
          return Fe.makeSpan(['mord', 'accentunder'], [a], e)
        }, 'htmlBuilder'),
        mathmlBuilder: o((t, e) => {
          var r = du.mathMLnode(t.label),
            n = new dt.MathNode('munder', [vn(t.base, e), r])
          return n.setAttribute('accentunder', 'true'), n
        }, 'mathmlBuilder')
      })
      y3 = o(t => {
        var e = new dt.MathNode('mpadded', t ? [t] : [])
        return e.setAttribute('width', '+0.6em'), e.setAttribute('lspace', '0.3em'), e
      }, 'paddedNode')
      Nt({
        type: 'xArrow',
        names: [
          '\\xleftarrow',
          '\\xrightarrow',
          '\\xLeftarrow',
          '\\xRightarrow',
          '\\xleftrightarrow',
          '\\xLeftrightarrow',
          '\\xhookleftarrow',
          '\\xhookrightarrow',
          '\\xmapsto',
          '\\xrightharpoondown',
          '\\xrightharpoonup',
          '\\xleftharpoondown',
          '\\xleftharpoonup',
          '\\xrightleftharpoons',
          '\\xleftrightharpoons',
          '\\xlongequal',
          '\\xtwoheadrightarrow',
          '\\xtwoheadleftarrow',
          '\\xtofrom',
          '\\xrightleftarrows',
          '\\xrightequilibrium',
          '\\xleftequilibrium',
          '\\\\cdrightarrow',
          '\\\\cdleftarrow',
          '\\\\cdlongequal'
        ],
        props: { numArgs: 1, numOptionalArgs: 1 },
        handler(t, e, r) {
          var { parser: n, funcName: i } = t
          return { type: 'xArrow', mode: n.mode, label: i, body: e[0], below: r[0] }
        },
        htmlBuilder(t, e) {
          var r = e.style,
            n = e.havingStyle(r.sup()),
            i = Fe.wrapFragment($r(t.body, n, e), e),
            a = t.label.slice(0, 2) === '\\x' ? 'x' : 'cd'
          i.classes.push(a + '-arrow-pad')
          var s
          t.below && ((n = e.havingStyle(r.sub())), (s = Fe.wrapFragment($r(t.below, n, e), e)), s.classes.push(a + '-arrow-pad'))
          var l = du.svgSpan(t, e),
            u = -e.fontMetrics().axisHeight + 0.5 * l.height,
            h = -e.fontMetrics().axisHeight - 0.5 * l.height - 0.111
          ;(i.depth > 0.25 || t.label === '\\xleftequilibrium') && (h -= i.depth)
          var f
          if (s) {
            var d = -e.fontMetrics().axisHeight + s.height + 0.5 * l.height + 0.111
            f = Fe.makeVList(
              {
                positionType: 'individualShift',
                children: [
                  { type: 'elem', elem: i, shift: h },
                  { type: 'elem', elem: l, shift: u },
                  { type: 'elem', elem: s, shift: d }
                ]
              },
              e
            )
          } else
            f = Fe.makeVList(
              {
                positionType: 'individualShift',
                children: [
                  { type: 'elem', elem: i, shift: h },
                  { type: 'elem', elem: l, shift: u }
                ]
              },
              e
            )
          return f.children[0].children[0].children[1].classes.push('svg-align'), Fe.makeSpan(['mrel', 'x-arrow'], [f], e)
        },
        mathmlBuilder(t, e) {
          var r = du.mathMLnode(t.label)
          r.setAttribute('minsize', t.label.charAt(0) === 'x' ? '1.75em' : '3.0em')
          var n
          if (t.body) {
            var i = y3(vn(t.body, e))
            if (t.below) {
              var a = y3(vn(t.below, e))
              n = new dt.MathNode('munderover', [r, a, i])
            } else n = new dt.MathNode('mover', [r, i])
          } else if (t.below) {
            var s = y3(vn(t.below, e))
            n = new dt.MathNode('munder', [r, s])
          } else (n = y3()), (n = new dt.MathNode('mover', [r, n]))
          return n
        }
      })
      R3e = Fe.makeSpan
      o(HG, 'htmlBuilder$9')
      o(WG, 'mathmlBuilder$8')
      Nt({
        type: 'mclass',
        names: ['\\mathord', '\\mathbin', '\\mathrel', '\\mathopen', '\\mathclose', '\\mathpunct', '\\mathinner'],
        props: { numArgs: 1, primitive: !0 },
        handler(t, e) {
          var { parser: r, funcName: n } = t,
            i = e[0]
          return { type: 'mclass', mode: r.mode, mclass: 'm' + n.slice(5), body: gi(i), isCharacterBox: Jt.isCharacterBox(i) }
        },
        htmlBuilder: HG,
        mathmlBuilder: WG
      })
      N3 = o(t => {
        var e = t.type === 'ordgroup' && t.body.length ? t.body[0] : t
        return e.type === 'atom' && (e.family === 'bin' || e.family === 'rel') ? 'm' + e.family : 'mord'
      }, 'binrelClass')
      Nt({
        type: 'mclass',
        names: ['\\@binrel'],
        props: { numArgs: 2 },
        handler(t, e) {
          var { parser: r } = t
          return { type: 'mclass', mode: r.mode, mclass: N3(e[0]), body: gi(e[1]), isCharacterBox: Jt.isCharacterBox(e[1]) }
        }
      })
      Nt({
        type: 'mclass',
        names: ['\\stackrel', '\\overset', '\\underset'],
        props: { numArgs: 2 },
        handler(t, e) {
          var { parser: r, funcName: n } = t,
            i = e[1],
            a = e[0],
            s
          n !== '\\stackrel' ? (s = N3(i)) : (s = 'mrel')
          var l = { type: 'op', mode: i.mode, limits: !0, alwaysHandleSupSub: !0, parentIsSupSub: !1, symbol: !1, suppressBaseShift: n !== '\\stackrel', body: gi(i) },
            u = { type: 'supsub', mode: a.mode, base: l, sup: n === '\\underset' ? null : a, sub: n === '\\underset' ? a : null }
          return { type: 'mclass', mode: r.mode, mclass: s, body: [u], isCharacterBox: Jt.isCharacterBox(u) }
        },
        htmlBuilder: HG,
        mathmlBuilder: WG
      })
      Nt({
        type: 'pmb',
        names: ['\\pmb'],
        props: { numArgs: 1, allowedInText: !0 },
        handler(t, e) {
          var { parser: r } = t
          return { type: 'pmb', mode: r.mode, mclass: N3(e[0]), body: gi(e[0]) }
        },
        htmlBuilder(t, e) {
          var r = $i(t.body, e, !0),
            n = Fe.makeSpan([t.mclass], r, e)
          return (n.style.textShadow = '0.02em 0.01em 0.04px'), n
        },
        mathmlBuilder(t, e) {
          var r = _s(t.body, e),
            n = new dt.MathNode('mstyle', r)
          return n.setAttribute('style', 'text-shadow: 0.02em 0.01em 0.04px'), n
        }
      })
      ;(N3e = { '>': '\\\\cdrightarrow', '<': '\\\\cdleftarrow', '=': '\\\\cdlongequal', A: '\\uparrow', V: '\\downarrow', '|': '\\Vert', '.': 'no arrow' }),
        (aG = o(() => ({ type: 'styling', body: [], mode: 'math', style: 'display' }), 'newCell')),
        (sG = o(t => t.type === 'textord' && t.text === '@', 'isStartOfArrow')),
        (M3e = o((t, e) => (t.type === 'mathord' || t.type === 'atom') && t.text === e, 'isLabelEnd'))
      o(I3e, 'cdArrow')
      o(O3e, 'parseCD')
      Nt({
        type: 'cdlabel',
        names: ['\\\\cdleft', '\\\\cdright'],
        props: { numArgs: 1 },
        handler(t, e) {
          var { parser: r, funcName: n } = t
          return { type: 'cdlabel', mode: r.mode, side: n.slice(4), label: e[0] }
        },
        htmlBuilder(t, e) {
          var r = e.havingStyle(e.style.sup()),
            n = Fe.wrapFragment($r(t.label, r, e), e)
          return n.classes.push('cd-label-' + t.side), (n.style.bottom = Et(0.8 - n.depth)), (n.height = 0), (n.depth = 0), n
        },
        mathmlBuilder(t, e) {
          var r = new dt.MathNode('mrow', [vn(t.label, e)])
          return (
            (r = new dt.MathNode('mpadded', [r])),
            r.setAttribute('width', '0'),
            t.side === 'left' && r.setAttribute('lspace', '-1width'),
            r.setAttribute('voffset', '0.7em'),
            (r = new dt.MathNode('mstyle', [r])),
            r.setAttribute('displaystyle', 'false'),
            r.setAttribute('scriptlevel', '1'),
            r
          )
        }
      })
      Nt({
        type: 'cdlabelparent',
        names: ['\\\\cdparent'],
        props: { numArgs: 1 },
        handler(t, e) {
          var { parser: r } = t
          return { type: 'cdlabelparent', mode: r.mode, fragment: e[0] }
        },
        htmlBuilder(t, e) {
          var r = Fe.wrapFragment($r(t.fragment, e), e)
          return r.classes.push('cd-vert-arrow'), r
        },
        mathmlBuilder(t, e) {
          return new dt.MathNode('mrow', [vn(t.fragment, e)])
        }
      })
      Nt({
        type: 'textord',
        names: ['\\@char'],
        props: { numArgs: 1, allowedInText: !0 },
        handler(t, e) {
          for (var { parser: r } = t, n = xr(e[0], 'ordgroup'), i = n.body, a = '', s = 0; s < i.length; s++) {
            var l = xr(i[s], 'textord')
            a += l.text
          }
          var u = parseInt(a),
            h
          if (isNaN(u)) throw new pt('\\@char has non-numeric argument ' + a)
          if (u < 0 || u >= 1114111) throw new pt('\\@char with invalid code point ' + a)
          return (
            u <= 65535 ? (h = String.fromCharCode(u)) : ((u -= 65536), (h = String.fromCharCode((u >> 10) + 55296, (u & 1023) + 56320))), { type: 'textord', mode: r.mode, text: h }
          )
        }
      })
      ;(qG = o((t, e) => {
        var r = $i(t.body, e.withColor(t.color), !1)
        return Fe.makeFragment(r)
      }, 'htmlBuilder$8')),
        (YG = o((t, e) => {
          var r = _s(t.body, e.withColor(t.color)),
            n = new dt.MathNode('mstyle', r)
          return n.setAttribute('mathcolor', t.color), n
        }, 'mathmlBuilder$7'))
      Nt({
        type: 'color',
        names: ['\\textcolor'],
        props: { numArgs: 2, allowedInText: !0, argTypes: ['color', 'original'] },
        handler(t, e) {
          var { parser: r } = t,
            n = xr(e[0], 'color-token').color,
            i = e[1]
          return { type: 'color', mode: r.mode, color: n, body: gi(i) }
        },
        htmlBuilder: qG,
        mathmlBuilder: YG
      })
      Nt({
        type: 'color',
        names: ['\\color'],
        props: { numArgs: 1, allowedInText: !0, argTypes: ['color'] },
        handler(t, e) {
          var { parser: r, breakOnTokenText: n } = t,
            i = xr(e[0], 'color-token').color
          r.gullet.macros.set('\\current@color', i)
          var a = r.parseExpression(!0, n)
          return { type: 'color', mode: r.mode, color: i, body: a }
        },
        htmlBuilder: qG,
        mathmlBuilder: YG
      })
      Nt({
        type: 'cr',
        names: ['\\\\'],
        props: { numArgs: 0, numOptionalArgs: 0, allowedInText: !0 },
        handler(t, e, r) {
          var { parser: n } = t,
            i = n.gullet.future().text === '[' ? n.parseSizeGroup(!0) : null,
            a = !n.settings.displayMode || !n.settings.useStrictBehavior('newLineInDisplayMode', 'In LaTeX, \\\\ or \\newline does nothing in display mode')
          return { type: 'cr', mode: n.mode, newLine: a, size: i && xr(i, 'size').value }
        },
        htmlBuilder(t, e) {
          var r = Fe.makeSpan(['mspace'], [], e)
          return t.newLine && (r.classes.push('newline'), t.size && (r.style.marginTop = Et(ni(t.size, e)))), r
        },
        mathmlBuilder(t, e) {
          var r = new dt.MathNode('mspace')
          return t.newLine && (r.setAttribute('linebreak', 'newline'), t.size && r.setAttribute('height', Et(ni(t.size, e)))), r
        }
      })
      ;(Q7 = {
        '\\global': '\\global',
        '\\long': '\\\\globallong',
        '\\\\globallong': '\\\\globallong',
        '\\def': '\\gdef',
        '\\gdef': '\\gdef',
        '\\edef': '\\xdef',
        '\\xdef': '\\xdef',
        '\\let': '\\\\globallet',
        '\\futurelet': '\\\\globalfuture'
      }),
        (XG = o(t => {
          var e = t.text
          if (/^(?:[\\{}$&#^_]|EOF)$/.test(e)) throw new pt('Expected a control sequence', t)
          return e
        }, 'checkControlSequence')),
        (P3e = o(t => {
          var e = t.gullet.popToken()
          return e.text === '=' && ((e = t.gullet.popToken()), e.text === ' ' && (e = t.gullet.popToken())), e
        }, 'getRHS')),
        (jG = o((t, e, r, n) => {
          var i = t.gullet.macros.get(r.text)
          i == null && ((r.noexpand = !0), (i = { tokens: [r], numArgs: 0, unexpandable: !t.gullet.isExpandable(r.text) })), t.gullet.macros.set(e, i, n)
        }, 'letCommand'))
      Nt({
        type: 'internal',
        names: ['\\global', '\\long', '\\\\globallong'],
        props: { numArgs: 0, allowedInText: !0 },
        handler(t) {
          var { parser: e, funcName: r } = t
          e.consumeSpaces()
          var n = e.fetch()
          if (Q7[n.text]) return (r === '\\global' || r === '\\\\globallong') && (n.text = Q7[n.text]), xr(e.parseFunction(), 'internal')
          throw new pt('Invalid token after macro prefix', n)
        }
      })
      Nt({
        type: 'internal',
        names: ['\\def', '\\gdef', '\\edef', '\\xdef'],
        props: { numArgs: 0, allowedInText: !0, primitive: !0 },
        handler(t) {
          var { parser: e, funcName: r } = t,
            n = e.gullet.popToken(),
            i = n.text
          if (/^(?:[\\{}$&#^_]|EOF)$/.test(i)) throw new pt('Expected a control sequence', n)
          for (var a = 0, s, l = [[]]; e.gullet.future().text !== '{'; )
            if (((n = e.gullet.popToken()), n.text === '#')) {
              if (e.gullet.future().text === '{') {
                ;(s = e.gullet.future()), l[a].push('{')
                break
              }
              if (((n = e.gullet.popToken()), !/^[1-9]$/.test(n.text))) throw new pt('Invalid argument number "' + n.text + '"')
              if (parseInt(n.text) !== a + 1) throw new pt('Argument number "' + n.text + '" out of order')
              a++, l.push([])
            } else {
              if (n.text === 'EOF') throw new pt('Expected a macro definition')
              l[a].push(n.text)
            }
          var { tokens: u } = e.gullet.consumeArg()
          return (
            s && u.unshift(s),
            (r === '\\edef' || r === '\\xdef') && ((u = e.gullet.expandTokens(u)), u.reverse()),
            e.gullet.macros.set(i, { tokens: u, numArgs: a, delimiters: l }, r === Q7[r]),
            { type: 'internal', mode: e.mode }
          )
        }
      })
      Nt({
        type: 'internal',
        names: ['\\let', '\\\\globallet'],
        props: { numArgs: 0, allowedInText: !0, primitive: !0 },
        handler(t) {
          var { parser: e, funcName: r } = t,
            n = XG(e.gullet.popToken())
          e.gullet.consumeSpaces()
          var i = P3e(e)
          return jG(e, n, i, r === '\\\\globallet'), { type: 'internal', mode: e.mode }
        }
      })
      Nt({
        type: 'internal',
        names: ['\\futurelet', '\\\\globalfuture'],
        props: { numArgs: 0, allowedInText: !0, primitive: !0 },
        handler(t) {
          var { parser: e, funcName: r } = t,
            n = XG(e.gullet.popToken()),
            i = e.gullet.popToken(),
            a = e.gullet.popToken()
          return jG(e, n, a, r === '\\\\globalfuture'), e.gullet.pushToken(a), e.gullet.pushToken(i), { type: 'internal', mode: e.mode }
        }
      })
      ;(Yy = o(function (e, r, n) {
        var i = An.math[e] && An.math[e].replace,
          a = nA(i || e, r, n)
        if (!a) throw new Error('Unsupported symbol ' + e + ' and font size ' + r + '.')
        return a
      }, 'getMetrics')),
        (cA = o(function (e, r, n, i) {
          var a = n.havingBaseStyle(r),
            s = Fe.makeSpan(i.concat(a.sizingClasses(n)), [e], n),
            l = a.sizeMultiplier / n.sizeMultiplier
          return (s.height *= l), (s.depth *= l), (s.maxFontSize = a.sizeMultiplier), s
        }, 'styleWrap')),
        (KG = o(function (e, r, n) {
          var i = r.havingBaseStyle(n),
            a = (1 - r.sizeMultiplier / i.sizeMultiplier) * r.fontMetrics().axisHeight
          e.classes.push('delimcenter'), (e.style.top = Et(a)), (e.height -= a), (e.depth += a)
        }, 'centerSpan')),
        (B3e = o(function (e, r, n, i, a, s) {
          var l = Fe.makeSymbol(e, 'Main-Regular', a, i),
            u = cA(l, r, i, s)
          return n && KG(u, i, r), u
        }, 'makeSmallDelim')),
        (F3e = o(function (e, r, n, i) {
          return Fe.makeSymbol(e, 'Size' + r + '-Regular', n, i)
        }, 'mathrmSize')),
        (QG = o(function (e, r, n, i, a, s) {
          var l = F3e(e, r, a, i),
            u = cA(Fe.makeSpan(['delimsizing', 'size' + r], [l], i), nr.TEXT, i, s)
          return n && KG(u, i, nr.TEXT), u
        }, 'makeLargeDelim')),
        (O7 = o(function (e, r, n) {
          var i
          r === 'Size1-Regular' ? (i = 'delim-size1') : (i = 'delim-size4')
          var a = Fe.makeSpan(['delimsizinginner', i], [Fe.makeSpan([], [Fe.makeSymbol(e, r, n)])])
          return { type: 'elem', elem: a }
        }, 'makeGlyphSpan')),
        (P7 = o(function (e, r, n) {
          var i = Jl['Size4-Regular'][e.charCodeAt(0)] ? Jl['Size4-Regular'][e.charCodeAt(0)][4] : Jl['Size1-Regular'][e.charCodeAt(0)][4],
            a = new ec('inner', q4e(e, Math.round(1e3 * r))),
            s = new dl([a], { width: Et(i), height: Et(r), style: 'width:' + Et(i), viewBox: '0 0 ' + 1e3 * i + ' ' + Math.round(1e3 * r), preserveAspectRatio: 'xMinYMin' }),
            l = Fe.makeSvgSpan([], [s], n)
          return (l.height = r), (l.style.height = Et(r)), (l.style.width = Et(i)), { type: 'elem', elem: l }
        }, 'makeInner')),
        (Z7 = 0.008),
        (v3 = { type: 'kern', size: -1 * Z7 }),
        ($3e = ['|', '\\lvert', '\\rvert', '\\vert']),
        (z3e = ['\\|', '\\lVert', '\\rVert', '\\Vert']),
        (ZG = o(function (e, r, n, i, a, s) {
          var l,
            u,
            h,
            f,
            d = '',
            p = 0
          ;(l = h = f = e), (u = null)
          var m = 'Size1-Regular'
          e === '\\uparrow'
            ? (h = f = '\u23D0')
            : e === '\\Uparrow'
              ? (h = f = '\u2016')
              : e === '\\downarrow'
                ? (l = h = '\u23D0')
                : e === '\\Downarrow'
                  ? (l = h = '\u2016')
                  : e === '\\updownarrow'
                    ? ((l = '\\uparrow'), (h = '\u23D0'), (f = '\\downarrow'))
                    : e === '\\Updownarrow'
                      ? ((l = '\\Uparrow'), (h = '\u2016'), (f = '\\Downarrow'))
                      : Jt.contains($3e, e)
                        ? ((h = '\u2223'), (d = 'vert'), (p = 333))
                        : Jt.contains(z3e, e)
                          ? ((h = '\u2225'), (d = 'doublevert'), (p = 556))
                          : e === '[' || e === '\\lbrack'
                            ? ((l = '\u23A1'), (h = '\u23A2'), (f = '\u23A3'), (m = 'Size4-Regular'), (d = 'lbrack'), (p = 667))
                            : e === ']' || e === '\\rbrack'
                              ? ((l = '\u23A4'), (h = '\u23A5'), (f = '\u23A6'), (m = 'Size4-Regular'), (d = 'rbrack'), (p = 667))
                              : e === '\\lfloor' || e === '\u230A'
                                ? ((h = l = '\u23A2'), (f = '\u23A3'), (m = 'Size4-Regular'), (d = 'lfloor'), (p = 667))
                                : e === '\\lceil' || e === '\u2308'
                                  ? ((l = '\u23A1'), (h = f = '\u23A2'), (m = 'Size4-Regular'), (d = 'lceil'), (p = 667))
                                  : e === '\\rfloor' || e === '\u230B'
                                    ? ((h = l = '\u23A5'), (f = '\u23A6'), (m = 'Size4-Regular'), (d = 'rfloor'), (p = 667))
                                    : e === '\\rceil' || e === '\u2309'
                                      ? ((l = '\u23A4'), (h = f = '\u23A5'), (m = 'Size4-Regular'), (d = 'rceil'), (p = 667))
                                      : e === '(' || e === '\\lparen'
                                        ? ((l = '\u239B'), (h = '\u239C'), (f = '\u239D'), (m = 'Size4-Regular'), (d = 'lparen'), (p = 875))
                                        : e === ')' || e === '\\rparen'
                                          ? ((l = '\u239E'), (h = '\u239F'), (f = '\u23A0'), (m = 'Size4-Regular'), (d = 'rparen'), (p = 875))
                                          : e === '\\{' || e === '\\lbrace'
                                            ? ((l = '\u23A7'), (u = '\u23A8'), (f = '\u23A9'), (h = '\u23AA'), (m = 'Size4-Regular'))
                                            : e === '\\}' || e === '\\rbrace'
                                              ? ((l = '\u23AB'), (u = '\u23AC'), (f = '\u23AD'), (h = '\u23AA'), (m = 'Size4-Regular'))
                                              : e === '\\lgroup' || e === '\u27EE'
                                                ? ((l = '\u23A7'), (f = '\u23A9'), (h = '\u23AA'), (m = 'Size4-Regular'))
                                                : e === '\\rgroup' || e === '\u27EF'
                                                  ? ((l = '\u23AB'), (f = '\u23AD'), (h = '\u23AA'), (m = 'Size4-Regular'))
                                                  : e === '\\lmoustache' || e === '\u23B0'
                                                    ? ((l = '\u23A7'), (f = '\u23AD'), (h = '\u23AA'), (m = 'Size4-Regular'))
                                                    : (e === '\\rmoustache' || e === '\u23B1') && ((l = '\u23AB'), (f = '\u23A9'), (h = '\u23AA'), (m = 'Size4-Regular'))
          var g = Yy(l, m, a),
            y = g.height + g.depth,
            v = Yy(h, m, a),
            x = v.height + v.depth,
            b = Yy(f, m, a),
            T = b.height + b.depth,
            S = 0,
            w = 1
          if (u !== null) {
            var E = Yy(u, m, a)
            ;(S = E.height + E.depth), (w = 2)
          }
          var _ = y + T + S,
            C = Math.max(0, Math.ceil((r - _) / (w * x))),
            D = _ + C * w * x,
            O = i.fontMetrics().axisHeight
          n && (O *= i.sizeMultiplier)
          var R = D / 2 - O,
            k = []
          if (d.length > 0) {
            var L = D - y - T,
              A = Math.round(D * 1e3),
              I = Y4e(d, Math.round(L * 1e3)),
              M = new ec(d, I),
              P = (p / 1e3).toFixed(3) + 'em',
              B = (A / 1e3).toFixed(3) + 'em',
              F = new dl([M], { width: P, height: B, viewBox: '0 0 ' + p + ' ' + A }),
              z = Fe.makeSvgSpan([], [F], i)
            ;(z.height = A / 1e3), (z.style.width = P), (z.style.height = B), k.push({ type: 'elem', elem: z })
          } else {
            if ((k.push(O7(f, m, a)), k.push(v3), u === null)) {
              var $ = D - y - T + 2 * Z7
              k.push(P7(h, $, i))
            } else {
              var U = (D - y - T - S) / 2 + 2 * Z7
              k.push(P7(h, U, i)), k.push(v3), k.push(O7(u, m, a)), k.push(v3), k.push(P7(h, U, i))
            }
            k.push(v3), k.push(O7(l, m, a))
          }
          var K = i.havingBaseStyle(nr.TEXT),
            ee = Fe.makeVList({ positionType: 'bottom', positionData: R, children: k }, K)
          return cA(Fe.makeSpan(['delimsizing', 'mult'], [ee], K), nr.TEXT, i, s)
        }, 'makeStackedDelim')),
        (B7 = 80),
        (F7 = 0.08),
        ($7 = o(function (e, r, n, i, a) {
          var s = W4e(e, i, n),
            l = new ec(e, s),
            u = new dl([l], { width: '400em', height: Et(r), viewBox: '0 0 400000 ' + n, preserveAspectRatio: 'xMinYMin slice' })
          return Fe.makeSvgSpan(['hide-tail'], [u], a)
        }, 'sqrtSvg')),
        (G3e = o(function (e, r) {
          var n = r.havingBaseSizing(),
            i = rV('\\surd', e * n.sizeMultiplier, tV, n),
            a = n.sizeMultiplier,
            s = Math.max(0, r.minRuleThickness - r.fontMetrics().sqrtRuleThickness),
            l,
            u = 0,
            h = 0,
            f = 0,
            d
          return (
            i.type === 'small'
              ? ((f = 1e3 + 1e3 * s + B7),
                e < 1 ? (a = 1) : e < 1.4 && (a = 0.7),
                (u = (1 + s + F7) / a),
                (h = (1 + s) / a),
                (l = $7('sqrtMain', u, f, s, r)),
                (l.style.minWidth = '0.853em'),
                (d = 0.833 / a))
              : i.type === 'large'
                ? ((f = (1e3 + B7) * jy[i.size]),
                  (h = (jy[i.size] + s) / a),
                  (u = (jy[i.size] + s + F7) / a),
                  (l = $7('sqrtSize' + i.size, u, f, s, r)),
                  (l.style.minWidth = '1.02em'),
                  (d = 1 / a))
                : ((u = e + s + F7), (h = e + s), (f = Math.floor(1e3 * e + s) + B7), (l = $7('sqrtTall', u, f, s, r)), (l.style.minWidth = '0.742em'), (d = 1.056)),
            (l.height = h),
            (l.style.height = Et(u)),
            { span: l, advanceWidth: d, ruleWidth: (r.fontMetrics().sqrtRuleThickness + s) * a }
          )
        }, 'makeSqrtImage')),
        (JG = [
          '(',
          '\\lparen',
          ')',
          '\\rparen',
          '[',
          '\\lbrack',
          ']',
          '\\rbrack',
          '\\{',
          '\\lbrace',
          '\\}',
          '\\rbrace',
          '\\lfloor',
          '\\rfloor',
          '\u230A',
          '\u230B',
          '\\lceil',
          '\\rceil',
          '\u2308',
          '\u2309',
          '\\surd'
        ]),
        (V3e = [
          '\\uparrow',
          '\\downarrow',
          '\\updownarrow',
          '\\Uparrow',
          '\\Downarrow',
          '\\Updownarrow',
          '|',
          '\\|',
          '\\vert',
          '\\Vert',
          '\\lvert',
          '\\rvert',
          '\\lVert',
          '\\rVert',
          '\\lgroup',
          '\\rgroup',
          '\u27EE',
          '\u27EF',
          '\\lmoustache',
          '\\rmoustache',
          '\u23B0',
          '\u23B1'
        ]),
        (eV = ['<', '>', '\\langle', '\\rangle', '/', '\\backslash', '\\lt', '\\gt']),
        (jy = [0, 1.2, 1.8, 2.4, 3]),
        (U3e = o(function (e, r, n, i, a) {
          if (
            (e === '<' || e === '\\lt' || e === '\u27E8' ? (e = '\\langle') : (e === '>' || e === '\\gt' || e === '\u27E9') && (e = '\\rangle'),
            Jt.contains(JG, e) || Jt.contains(eV, e))
          )
            return QG(e, r, !1, n, i, a)
          if (Jt.contains(V3e, e)) return ZG(e, jy[r], !1, n, i, a)
          throw new pt("Illegal delimiter: '" + e + "'")
        }, 'makeSizedDelim')),
        (H3e = [
          { type: 'small', style: nr.SCRIPTSCRIPT },
          { type: 'small', style: nr.SCRIPT },
          { type: 'small', style: nr.TEXT },
          { type: 'large', size: 1 },
          { type: 'large', size: 2 },
          { type: 'large', size: 3 },
          { type: 'large', size: 4 }
        ]),
        (W3e = [{ type: 'small', style: nr.SCRIPTSCRIPT }, { type: 'small', style: nr.SCRIPT }, { type: 'small', style: nr.TEXT }, { type: 'stack' }]),
        (tV = [
          { type: 'small', style: nr.SCRIPTSCRIPT },
          { type: 'small', style: nr.SCRIPT },
          { type: 'small', style: nr.TEXT },
          { type: 'large', size: 1 },
          { type: 'large', size: 2 },
          { type: 'large', size: 3 },
          { type: 'large', size: 4 },
          { type: 'stack' }
        ]),
        (q3e = o(function (e) {
          if (e.type === 'small') return 'Main-Regular'
          if (e.type === 'large') return 'Size' + e.size + '-Regular'
          if (e.type === 'stack') return 'Size4-Regular'
          throw new Error("Add support for delim type '" + e.type + "' here.")
        }, 'delimTypeToFont')),
        (rV = o(function (e, r, n, i) {
          for (var a = Math.min(2, 3 - i.style.size), s = a; s < n.length && n[s].type !== 'stack'; s++) {
            var l = Yy(e, q3e(n[s]), 'math'),
              u = l.height + l.depth
            if (n[s].type === 'small') {
              var h = i.havingBaseStyle(n[s].style)
              u *= h.sizeMultiplier
            }
            if (u > r) return n[s]
          }
          return n[n.length - 1]
        }, 'traverseSequence')),
        (nV = o(function (e, r, n, i, a, s) {
          e === '<' || e === '\\lt' || e === '\u27E8' ? (e = '\\langle') : (e === '>' || e === '\\gt' || e === '\u27E9') && (e = '\\rangle')
          var l
          Jt.contains(eV, e) ? (l = H3e) : Jt.contains(JG, e) ? (l = tV) : (l = W3e)
          var u = rV(e, r, l, i)
          return u.type === 'small' ? B3e(e, u.style, n, i, a, s) : u.type === 'large' ? QG(e, u.size, n, i, a, s) : ZG(e, r, n, i, a, s)
        }, 'makeCustomSizedDelim')),
        (Y3e = o(function (e, r, n, i, a, s) {
          var l = i.fontMetrics().axisHeight * i.sizeMultiplier,
            u = 901,
            h = 5 / i.fontMetrics().ptPerEm,
            f = Math.max(r - l, n + l),
            d = Math.max((f / 500) * u, 2 * f - h)
          return nV(e, d, !0, i, a, s)
        }, 'makeLeftRightDelim')),
        (hu = { sqrtImage: G3e, sizedDelim: U3e, sizeToMaxHeight: jy, customSizedDelim: nV, leftRightDelim: Y3e }),
        (oG = {
          '\\bigl': { mclass: 'mopen', size: 1 },
          '\\Bigl': { mclass: 'mopen', size: 2 },
          '\\biggl': { mclass: 'mopen', size: 3 },
          '\\Biggl': { mclass: 'mopen', size: 4 },
          '\\bigr': { mclass: 'mclose', size: 1 },
          '\\Bigr': { mclass: 'mclose', size: 2 },
          '\\biggr': { mclass: 'mclose', size: 3 },
          '\\Biggr': { mclass: 'mclose', size: 4 },
          '\\bigm': { mclass: 'mrel', size: 1 },
          '\\Bigm': { mclass: 'mrel', size: 2 },
          '\\biggm': { mclass: 'mrel', size: 3 },
          '\\Biggm': { mclass: 'mrel', size: 4 },
          '\\big': { mclass: 'mord', size: 1 },
          '\\Big': { mclass: 'mord', size: 2 },
          '\\bigg': { mclass: 'mord', size: 3 },
          '\\Bigg': { mclass: 'mord', size: 4 }
        }),
        (X3e = [
          '(',
          '\\lparen',
          ')',
          '\\rparen',
          '[',
          '\\lbrack',
          ']',
          '\\rbrack',
          '\\{',
          '\\lbrace',
          '\\}',
          '\\rbrace',
          '\\lfloor',
          '\\rfloor',
          '\u230A',
          '\u230B',
          '\\lceil',
          '\\rceil',
          '\u2308',
          '\u2309',
          '<',
          '>',
          '\\langle',
          '\u27E8',
          '\\rangle',
          '\u27E9',
          '\\lt',
          '\\gt',
          '\\lvert',
          '\\rvert',
          '\\lVert',
          '\\rVert',
          '\\lgroup',
          '\\rgroup',
          '\u27EE',
          '\u27EF',
          '\\lmoustache',
          '\\rmoustache',
          '\u23B0',
          '\u23B1',
          '/',
          '\\backslash',
          '|',
          '\\vert',
          '\\|',
          '\\Vert',
          '\\uparrow',
          '\\Uparrow',
          '\\downarrow',
          '\\Downarrow',
          '\\updownarrow',
          '\\Updownarrow',
          '.'
        ])
      o(M3, 'checkDelimiter')
      Nt({
        type: 'delimsizing',
        names: ['\\bigl', '\\Bigl', '\\biggl', '\\Biggl', '\\bigr', '\\Bigr', '\\biggr', '\\Biggr', '\\bigm', '\\Bigm', '\\biggm', '\\Biggm', '\\big', '\\Big', '\\bigg', '\\Bigg'],
        props: { numArgs: 1, argTypes: ['primitive'] },
        handler: o((t, e) => {
          var r = M3(e[0], t)
          return { type: 'delimsizing', mode: t.parser.mode, size: oG[t.funcName].size, mclass: oG[t.funcName].mclass, delim: r.text }
        }, 'handler'),
        htmlBuilder: o((t, e) => (t.delim === '.' ? Fe.makeSpan([t.mclass]) : hu.sizedDelim(t.delim, t.size, e, t.mode, [t.mclass])), 'htmlBuilder'),
        mathmlBuilder: o(t => {
          var e = []
          t.delim !== '.' && e.push(Do(t.delim, t.mode))
          var r = new dt.MathNode('mo', e)
          t.mclass === 'mopen' || t.mclass === 'mclose' ? r.setAttribute('fence', 'true') : r.setAttribute('fence', 'false'), r.setAttribute('stretchy', 'true')
          var n = Et(hu.sizeToMaxHeight[t.size])
          return r.setAttribute('minsize', n), r.setAttribute('maxsize', n), r
        }, 'mathmlBuilder')
      })
      o(lG, 'assertParsed')
      Nt({
        type: 'leftright-right',
        names: ['\\right'],
        props: { numArgs: 1, primitive: !0 },
        handler: o((t, e) => {
          var r = t.parser.gullet.macros.get('\\current@color')
          if (r && typeof r != 'string') throw new pt('\\current@color set to non-string in \\right')
          return { type: 'leftright-right', mode: t.parser.mode, delim: M3(e[0], t).text, color: r }
        }, 'handler')
      })
      Nt({
        type: 'leftright',
        names: ['\\left'],
        props: { numArgs: 1, primitive: !0 },
        handler: o((t, e) => {
          var r = M3(e[0], t),
            n = t.parser
          ++n.leftrightDepth
          var i = n.parseExpression(!1)
          --n.leftrightDepth, n.expect('\\right', !1)
          var a = xr(n.parseFunction(), 'leftright-right')
          return { type: 'leftright', mode: n.mode, body: i, left: r.text, right: a.delim, rightColor: a.color }
        }, 'handler'),
        htmlBuilder: o((t, e) => {
          lG(t)
          for (var r = $i(t.body, e, !0, ['mopen', 'mclose']), n = 0, i = 0, a = !1, s = 0; s < r.length; s++)
            r[s].isMiddle ? (a = !0) : ((n = Math.max(r[s].height, n)), (i = Math.max(r[s].depth, i)))
          ;(n *= e.sizeMultiplier), (i *= e.sizeMultiplier)
          var l
          if ((t.left === '.' ? (l = ev(e, ['mopen'])) : (l = hu.leftRightDelim(t.left, n, i, e, t.mode, ['mopen'])), r.unshift(l), a))
            for (var u = 1; u < r.length; u++) {
              var h = r[u],
                f = h.isMiddle
              f && (r[u] = hu.leftRightDelim(f.delim, n, i, f.options, t.mode, []))
            }
          var d
          if (t.right === '.') d = ev(e, ['mclose'])
          else {
            var p = t.rightColor ? e.withColor(t.rightColor) : e
            d = hu.leftRightDelim(t.right, n, i, p, t.mode, ['mclose'])
          }
          return r.push(d), Fe.makeSpan(['minner'], r, e)
        }, 'htmlBuilder'),
        mathmlBuilder: o((t, e) => {
          lG(t)
          var r = _s(t.body, e)
          if (t.left !== '.') {
            var n = new dt.MathNode('mo', [Do(t.left, t.mode)])
            n.setAttribute('fence', 'true'), r.unshift(n)
          }
          if (t.right !== '.') {
            var i = new dt.MathNode('mo', [Do(t.right, t.mode)])
            i.setAttribute('fence', 'true'), t.rightColor && i.setAttribute('mathcolor', t.rightColor), r.push(i)
          }
          return aA(r)
        }, 'mathmlBuilder')
      })
      Nt({
        type: 'middle',
        names: ['\\middle'],
        props: { numArgs: 1, primitive: !0 },
        handler: o((t, e) => {
          var r = M3(e[0], t)
          if (!t.parser.leftrightDepth) throw new pt('\\middle without preceding \\left', r)
          return { type: 'middle', mode: t.parser.mode, delim: r.text }
        }, 'handler'),
        htmlBuilder: o((t, e) => {
          var r
          if (t.delim === '.') r = ev(e, [])
          else {
            r = hu.sizedDelim(t.delim, 1, e, t.mode, [])
            var n = { delim: t.delim, options: e }
            r.isMiddle = n
          }
          return r
        }, 'htmlBuilder'),
        mathmlBuilder: o((t, e) => {
          var r = t.delim === '\\vert' || t.delim === '|' ? Do('|', 'text') : Do(t.delim, t.mode),
            n = new dt.MathNode('mo', [r])
          return n.setAttribute('fence', 'true'), n.setAttribute('lspace', '0.05em'), n.setAttribute('rspace', '0.05em'), n
        }, 'mathmlBuilder')
      })
      ;(uA = o((t, e) => {
        var r = Fe.wrapFragment($r(t.body, e), e),
          n = t.label.slice(1),
          i = e.sizeMultiplier,
          a,
          s = 0,
          l = Jt.isCharacterBox(t.body)
        if (n === 'sout') (a = Fe.makeSpan(['stretchy', 'sout'])), (a.height = e.fontMetrics().defaultRuleThickness / i), (s = -0.5 * e.fontMetrics().xHeight)
        else if (n === 'phase') {
          var u = ni({ number: 0.6, unit: 'pt' }, e),
            h = ni({ number: 0.35, unit: 'ex' }, e),
            f = e.havingBaseSizing()
          i = i / f.sizeMultiplier
          var d = r.height + r.depth + u + h
          r.style.paddingLeft = Et(d / 2 + u)
          var p = Math.floor(1e3 * d * i),
            m = U4e(p),
            g = new dl([new ec('phase', m)], { width: '400em', height: Et(p / 1e3), viewBox: '0 0 400000 ' + p, preserveAspectRatio: 'xMinYMin slice' })
          ;(a = Fe.makeSvgSpan(['hide-tail'], [g], e)), (a.style.height = Et(d)), (s = r.depth + u + h)
        } else {
          ;/cancel/.test(n) ? l || r.classes.push('cancel-pad') : n === 'angl' ? r.classes.push('anglpad') : r.classes.push('boxpad')
          var y = 0,
            v = 0,
            x = 0
          ;/box/.test(n)
            ? ((x = Math.max(e.fontMetrics().fboxrule, e.minRuleThickness)), (y = e.fontMetrics().fboxsep + (n === 'colorbox' ? 0 : x)), (v = y))
            : n === 'angl'
              ? ((x = Math.max(e.fontMetrics().defaultRuleThickness, e.minRuleThickness)), (y = 4 * x), (v = Math.max(0, 0.25 - r.depth)))
              : ((y = l ? 0.2 : 0), (v = y)),
            (a = du.encloseSpan(r, n, y, v, e)),
            /fbox|boxed|fcolorbox/.test(n)
              ? ((a.style.borderStyle = 'solid'), (a.style.borderWidth = Et(x)))
              : n === 'angl' && x !== 0.049 && ((a.style.borderTopWidth = Et(x)), (a.style.borderRightWidth = Et(x))),
            (s = r.depth + v),
            t.backgroundColor && ((a.style.backgroundColor = t.backgroundColor), t.borderColor && (a.style.borderColor = t.borderColor))
        }
        var b
        if (t.backgroundColor)
          b = Fe.makeVList(
            {
              positionType: 'individualShift',
              children: [
                { type: 'elem', elem: a, shift: s },
                { type: 'elem', elem: r, shift: 0 }
              ]
            },
            e
          )
        else {
          var T = /cancel|phase/.test(n) ? ['svg-align'] : []
          b = Fe.makeVList(
            {
              positionType: 'individualShift',
              children: [
                { type: 'elem', elem: r, shift: 0 },
                { type: 'elem', elem: a, shift: s, wrapperClasses: T }
              ]
            },
            e
          )
        }
        return (
          /cancel/.test(n) && ((b.height = r.height), (b.depth = r.depth)), /cancel/.test(n) && !l ? Fe.makeSpan(['mord', 'cancel-lap'], [b], e) : Fe.makeSpan(['mord'], [b], e)
        )
      }, 'htmlBuilder$7')),
        (hA = o((t, e) => {
          var r = 0,
            n = new dt.MathNode(t.label.indexOf('colorbox') > -1 ? 'mpadded' : 'menclose', [vn(t.body, e)])
          switch (t.label) {
            case '\\cancel':
              n.setAttribute('notation', 'updiagonalstrike')
              break
            case '\\bcancel':
              n.setAttribute('notation', 'downdiagonalstrike')
              break
            case '\\phase':
              n.setAttribute('notation', 'phasorangle')
              break
            case '\\sout':
              n.setAttribute('notation', 'horizontalstrike')
              break
            case '\\fbox':
              n.setAttribute('notation', 'box')
              break
            case '\\angl':
              n.setAttribute('notation', 'actuarial')
              break
            case '\\fcolorbox':
            case '\\colorbox':
              if (
                ((r = e.fontMetrics().fboxsep * e.fontMetrics().ptPerEm),
                n.setAttribute('width', '+' + 2 * r + 'pt'),
                n.setAttribute('height', '+' + 2 * r + 'pt'),
                n.setAttribute('lspace', r + 'pt'),
                n.setAttribute('voffset', r + 'pt'),
                t.label === '\\fcolorbox')
              ) {
                var i = Math.max(e.fontMetrics().fboxrule, e.minRuleThickness)
                n.setAttribute('style', 'border: ' + i + 'em solid ' + String(t.borderColor))
              }
              break
            case '\\xcancel':
              n.setAttribute('notation', 'updiagonalstrike downdiagonalstrike')
              break
          }
          return t.backgroundColor && n.setAttribute('mathbackground', t.backgroundColor), n
        }, 'mathmlBuilder$6'))
      Nt({
        type: 'enclose',
        names: ['\\colorbox'],
        props: { numArgs: 2, allowedInText: !0, argTypes: ['color', 'text'] },
        handler(t, e, r) {
          var { parser: n, funcName: i } = t,
            a = xr(e[0], 'color-token').color,
            s = e[1]
          return { type: 'enclose', mode: n.mode, label: i, backgroundColor: a, body: s }
        },
        htmlBuilder: uA,
        mathmlBuilder: hA
      })
      Nt({
        type: 'enclose',
        names: ['\\fcolorbox'],
        props: { numArgs: 3, allowedInText: !0, argTypes: ['color', 'color', 'text'] },
        handler(t, e, r) {
          var { parser: n, funcName: i } = t,
            a = xr(e[0], 'color-token').color,
            s = xr(e[1], 'color-token').color,
            l = e[2]
          return { type: 'enclose', mode: n.mode, label: i, backgroundColor: s, borderColor: a, body: l }
        },
        htmlBuilder: uA,
        mathmlBuilder: hA
      })
      Nt({
        type: 'enclose',
        names: ['\\fbox'],
        props: { numArgs: 1, argTypes: ['hbox'], allowedInText: !0 },
        handler(t, e) {
          var { parser: r } = t
          return { type: 'enclose', mode: r.mode, label: '\\fbox', body: e[0] }
        }
      })
      Nt({
        type: 'enclose',
        names: ['\\cancel', '\\bcancel', '\\xcancel', '\\sout', '\\phase'],
        props: { numArgs: 1 },
        handler(t, e) {
          var { parser: r, funcName: n } = t,
            i = e[0]
          return { type: 'enclose', mode: r.mode, label: n, body: i }
        },
        htmlBuilder: uA,
        mathmlBuilder: hA
      })
      Nt({
        type: 'enclose',
        names: ['\\angl'],
        props: { numArgs: 1, argTypes: ['hbox'], allowedInText: !1 },
        handler(t, e) {
          var { parser: r } = t
          return { type: 'enclose', mode: r.mode, label: '\\angl', body: e[0] }
        }
      })
      iV = {}
      o(tc, 'defineEnvironment')
      aV = {}
      o(fe, 'defineMacro')
      o(cG, 'getHLines')
      I3 = o(t => {
        var e = t.parser.settings
        if (!e.displayMode) throw new pt('{' + t.envName + '} can be used only in display mode.')
      }, 'validateAmsEnvironmentContext')
      o(fA, 'getAutoTag')
      o(bh, 'parseArray')
      o(dA, 'dCellStyle')
      ;(rc = o(function (e, r) {
        var n,
          i,
          a = e.body.length,
          s = e.hLinesBeforeRow,
          l = 0,
          u = new Array(a),
          h = [],
          f = Math.max(r.fontMetrics().arrayRuleWidth, r.minRuleThickness),
          d = 1 / r.fontMetrics().ptPerEm,
          p = 5 * d
        if (e.colSeparationType && e.colSeparationType === 'small') {
          var m = r.havingStyle(nr.SCRIPT).sizeMultiplier
          p = 0.2778 * (m / r.sizeMultiplier)
        }
        var g = e.colSeparationType === 'CD' ? ni({ number: 3, unit: 'ex' }, r) : 12 * d,
          y = 3 * d,
          v = e.arraystretch * g,
          x = 0.7 * v,
          b = 0.3 * v,
          T = 0
        function S(ae) {
          for (var Oe = 0; Oe < ae.length; ++Oe) Oe > 0 && (T += 0.25), h.push({ pos: T, isDashed: ae[Oe] })
        }
        for (o(S, 'setHLinePos'), S(s[0]), n = 0; n < e.body.length; ++n) {
          var w = e.body[n],
            E = x,
            _ = b
          l < w.length && (l = w.length)
          var C = new Array(w.length)
          for (i = 0; i < w.length; ++i) {
            var D = $r(w[i], r)
            _ < D.depth && (_ = D.depth), E < D.height && (E = D.height), (C[i] = D)
          }
          var O = e.rowGaps[n],
            R = 0
          O && ((R = ni(O, r)), R > 0 && ((R += b), _ < R && (_ = R), (R = 0))),
            e.addJot && (_ += y),
            (C.height = E),
            (C.depth = _),
            (T += E),
            (C.pos = T),
            (T += _ + R),
            (u[n] = C),
            S(s[n + 1])
        }
        var k = T / 2 + r.fontMetrics().axisHeight,
          L = e.cols || [],
          A = [],
          I,
          M,
          P = []
        if (e.tags && e.tags.some(ae => ae))
          for (n = 0; n < a; ++n) {
            var B = u[n],
              F = B.pos - k,
              z = e.tags[n],
              $ = void 0
            z === !0 ? ($ = Fe.makeSpan(['eqn-num'], [], r)) : z === !1 ? ($ = Fe.makeSpan([], [], r)) : ($ = Fe.makeSpan([], $i(z, r, !0), r)),
              ($.depth = B.depth),
              ($.height = B.height),
              P.push({ type: 'elem', elem: $, shift: F })
          }
        for (i = 0, M = 0; i < l || M < L.length; ++i, ++M) {
          for (var U = L[M] || {}, K = !0; U.type === 'separator'; ) {
            if ((K || ((I = Fe.makeSpan(['arraycolsep'], [])), (I.style.width = Et(r.fontMetrics().doubleRuleSep)), A.push(I)), U.separator === '|' || U.separator === ':')) {
              var ee = U.separator === '|' ? 'solid' : 'dashed',
                Y = Fe.makeSpan(['vertical-separator'], [], r)
              ;(Y.style.height = Et(T)), (Y.style.borderRightWidth = Et(f)), (Y.style.borderRightStyle = ee), (Y.style.margin = '0 ' + Et(-f / 2))
              var ce = T - k
              ce && (Y.style.verticalAlign = Et(-ce)), A.push(Y)
            } else throw new pt('Invalid separator type: ' + U.separator)
            M++, (U = L[M] || {}), (K = !1)
          }
          if (!(i >= l)) {
            var Z = void 0
            ;(i > 0 || e.hskipBeforeAndAfter) && ((Z = Jt.deflt(U.pregap, p)), Z !== 0 && ((I = Fe.makeSpan(['arraycolsep'], [])), (I.style.width = Et(Z)), A.push(I)))
            var ue = []
            for (n = 0; n < a; ++n) {
              var Q = u[n],
                j = Q[i]
              if (j) {
                var ne = Q.pos - k
                ;(j.depth = Q.depth), (j.height = Q.height), ue.push({ type: 'elem', elem: j, shift: ne })
              }
            }
            ;(ue = Fe.makeVList({ positionType: 'individualShift', children: ue }, r)),
              (ue = Fe.makeSpan(['col-align-' + (U.align || 'c')], [ue])),
              A.push(ue),
              (i < l - 1 || e.hskipBeforeAndAfter) && ((Z = Jt.deflt(U.postgap, p)), Z !== 0 && ((I = Fe.makeSpan(['arraycolsep'], [])), (I.style.width = Et(Z)), A.push(I)))
          }
        }
        if (((u = Fe.makeSpan(['mtable'], A)), h.length > 0)) {
          for (var te = Fe.makeLineSpan('hline', r, f), he = Fe.makeLineSpan('hdashline', r, f), le = [{ type: 'elem', elem: u, shift: 0 }]; h.length > 0; ) {
            var J = h.pop(),
              Se = J.pos - k
            J.isDashed ? le.push({ type: 'elem', elem: he, shift: Se }) : le.push({ type: 'elem', elem: te, shift: Se })
          }
          u = Fe.makeVList({ positionType: 'individualShift', children: le }, r)
        }
        if (P.length === 0) return Fe.makeSpan(['mord'], [u], r)
        var se = Fe.makeVList({ positionType: 'individualShift', children: P }, r)
        return (se = Fe.makeSpan(['tag'], [se], r)), Fe.makeFragment([u, se])
      }, 'htmlBuilder')),
        (j3e = { c: 'center ', l: 'left ', r: 'right ' }),
        (nc = o(function (e, r) {
          for (var n = [], i = new dt.MathNode('mtd', [], ['mtr-glue']), a = new dt.MathNode('mtd', [], ['mml-eqn-num']), s = 0; s < e.body.length; s++) {
            for (var l = e.body[s], u = [], h = 0; h < l.length; h++) u.push(new dt.MathNode('mtd', [vn(l[h], r)]))
            e.tags && e.tags[s] && (u.unshift(i), u.push(i), e.leqno ? u.unshift(a) : u.push(a)), n.push(new dt.MathNode('mtr', u))
          }
          var f = new dt.MathNode('mtable', n),
            d = e.arraystretch === 0.5 ? 0.1 : 0.16 + e.arraystretch - 1 + (e.addJot ? 0.09 : 0)
          f.setAttribute('rowspacing', Et(d))
          var p = '',
            m = ''
          if (e.cols && e.cols.length > 0) {
            var g = e.cols,
              y = '',
              v = !1,
              x = 0,
              b = g.length
            g[0].type === 'separator' && ((p += 'top '), (x = 1)), g[g.length - 1].type === 'separator' && ((p += 'bottom '), (b -= 1))
            for (var T = x; T < b; T++)
              g[T].type === 'align'
                ? ((m += j3e[g[T].align]), v && (y += 'none '), (v = !0))
                : g[T].type === 'separator' && v && ((y += g[T].separator === '|' ? 'solid ' : 'dashed '), (v = !1))
            f.setAttribute('columnalign', m.trim()), /[sd]/.test(y) && f.setAttribute('columnlines', y.trim())
          }
          if (e.colSeparationType === 'align') {
            for (var S = e.cols || [], w = '', E = 1; E < S.length; E++) w += E % 2 ? '0em ' : '1em '
            f.setAttribute('columnspacing', w.trim())
          } else
            e.colSeparationType === 'alignat' || e.colSeparationType === 'gather'
              ? f.setAttribute('columnspacing', '0em')
              : e.colSeparationType === 'small'
                ? f.setAttribute('columnspacing', '0.2778em')
                : e.colSeparationType === 'CD'
                  ? f.setAttribute('columnspacing', '0.5em')
                  : f.setAttribute('columnspacing', '1em')
          var _ = '',
            C = e.hLinesBeforeRow
          ;(p += C[0].length > 0 ? 'left ' : ''), (p += C[C.length - 1].length > 0 ? 'right ' : '')
          for (var D = 1; D < C.length - 1; D++) _ += C[D].length === 0 ? 'none ' : C[D][0] ? 'dashed ' : 'solid '
          return (
            /[sd]/.test(_) && f.setAttribute('rowlines', _.trim()),
            p !== '' && ((f = new dt.MathNode('menclose', [f])), f.setAttribute('notation', p.trim())),
            e.arraystretch && e.arraystretch < 1 && ((f = new dt.MathNode('mstyle', [f])), f.setAttribute('scriptlevel', '1')),
            f
          )
        }, 'mathmlBuilder')),
        (sV = o(function (e, r) {
          e.envName.indexOf('ed') === -1 && I3(e)
          var n = [],
            i = e.envName.indexOf('at') > -1 ? 'alignat' : 'align',
            a = e.envName === 'split',
            s = bh(
              e.parser,
              { cols: n, addJot: !0, autoTag: a ? void 0 : fA(e.envName), emptySingleRow: !0, colSeparationType: i, maxNumCols: a ? 2 : void 0, leqno: e.parser.settings.leqno },
              'display'
            ),
            l,
            u = 0,
            h = { type: 'ordgroup', mode: e.mode, body: [] }
          if (r[0] && r[0].type === 'ordgroup') {
            for (var f = '', d = 0; d < r[0].body.length; d++) {
              var p = xr(r[0].body[d], 'textord')
              f += p.text
            }
            ;(l = Number(f)), (u = l * 2)
          }
          var m = !u
          s.body.forEach(function (x) {
            for (var b = 1; b < x.length; b += 2) {
              var T = xr(x[b], 'styling'),
                S = xr(T.body[0], 'ordgroup')
              S.body.unshift(h)
            }
            if (m) u < x.length && (u = x.length)
            else {
              var w = x.length / 2
              if (l < w) throw new pt('Too many math in a row: ' + ('expected ' + l + ', but got ' + w), x[0])
            }
          })
          for (var g = 0; g < u; ++g) {
            var y = 'r',
              v = 0
            g % 2 === 1 ? (y = 'l') : g > 0 && m && (v = 1), (n[g] = { type: 'align', align: y, pregap: v, postgap: 0 })
          }
          return (s.colSeparationType = m ? 'align' : 'alignat'), s
        }, 'alignedHandler'))
      tc({
        type: 'array',
        names: ['array', 'darray'],
        props: { numArgs: 1 },
        handler(t, e) {
          var r = R3(e[0]),
            n = r ? [e[0]] : xr(e[0], 'ordgroup').body,
            i = n.map(function (s) {
              var l = oA(s),
                u = l.text
              if ('lcr'.indexOf(u) !== -1) return { type: 'align', align: u }
              if (u === '|') return { type: 'separator', separator: '|' }
              if (u === ':') return { type: 'separator', separator: ':' }
              throw new pt('Unknown column alignment: ' + u, s)
            }),
            a = { cols: i, hskipBeforeAndAfter: !0, maxNumCols: i.length }
          return bh(t.parser, a, dA(t.envName))
        },
        htmlBuilder: rc,
        mathmlBuilder: nc
      })
      tc({
        type: 'array',
        names: ['matrix', 'pmatrix', 'bmatrix', 'Bmatrix', 'vmatrix', 'Vmatrix', 'matrix*', 'pmatrix*', 'bmatrix*', 'Bmatrix*', 'vmatrix*', 'Vmatrix*'],
        props: { numArgs: 0 },
        handler(t) {
          var e = { matrix: null, pmatrix: ['(', ')'], bmatrix: ['[', ']'], Bmatrix: ['\\{', '\\}'], vmatrix: ['|', '|'], Vmatrix: ['\\Vert', '\\Vert'] }[
              t.envName.replace('*', '')
            ],
            r = 'c',
            n = { hskipBeforeAndAfter: !1, cols: [{ type: 'align', align: r }] }
          if (t.envName.charAt(t.envName.length - 1) === '*') {
            var i = t.parser
            if ((i.consumeSpaces(), i.fetch().text === '[')) {
              if ((i.consume(), i.consumeSpaces(), (r = i.fetch().text), 'lcr'.indexOf(r) === -1)) throw new pt('Expected l or c or r', i.nextToken)
              i.consume(), i.consumeSpaces(), i.expect(']'), i.consume(), (n.cols = [{ type: 'align', align: r }])
            }
          }
          var a = bh(t.parser, n, dA(t.envName)),
            s = Math.max(0, ...a.body.map(l => l.length))
          return (a.cols = new Array(s).fill({ type: 'align', align: r })), e ? { type: 'leftright', mode: t.mode, body: [a], left: e[0], right: e[1], rightColor: void 0 } : a
        },
        htmlBuilder: rc,
        mathmlBuilder: nc
      })
      tc({
        type: 'array',
        names: ['smallmatrix'],
        props: { numArgs: 0 },
        handler(t) {
          var e = { arraystretch: 0.5 },
            r = bh(t.parser, e, 'script')
          return (r.colSeparationType = 'small'), r
        },
        htmlBuilder: rc,
        mathmlBuilder: nc
      })
      tc({
        type: 'array',
        names: ['subarray'],
        props: { numArgs: 1 },
        handler(t, e) {
          var r = R3(e[0]),
            n = r ? [e[0]] : xr(e[0], 'ordgroup').body,
            i = n.map(function (s) {
              var l = oA(s),
                u = l.text
              if ('lc'.indexOf(u) !== -1) return { type: 'align', align: u }
              throw new pt('Unknown column alignment: ' + u, s)
            })
          if (i.length > 1) throw new pt('{subarray} can contain only one column')
          var a = { cols: i, hskipBeforeAndAfter: !1, arraystretch: 0.5 }
          if (((a = bh(t.parser, a, 'script')), a.body.length > 0 && a.body[0].length > 1)) throw new pt('{subarray} can contain only one column')
          return a
        },
        htmlBuilder: rc,
        mathmlBuilder: nc
      })
      tc({
        type: 'array',
        names: ['cases', 'dcases', 'rcases', 'drcases'],
        props: { numArgs: 0 },
        handler(t) {
          var e = {
              arraystretch: 1.2,
              cols: [
                { type: 'align', align: 'l', pregap: 0, postgap: 1 },
                { type: 'align', align: 'l', pregap: 0, postgap: 0 }
              ]
            },
            r = bh(t.parser, e, dA(t.envName))
          return {
            type: 'leftright',
            mode: t.mode,
            body: [r],
            left: t.envName.indexOf('r') > -1 ? '.' : '\\{',
            right: t.envName.indexOf('r') > -1 ? '\\}' : '.',
            rightColor: void 0
          }
        },
        htmlBuilder: rc,
        mathmlBuilder: nc
      })
      tc({ type: 'array', names: ['align', 'align*', 'aligned', 'split'], props: { numArgs: 0 }, handler: sV, htmlBuilder: rc, mathmlBuilder: nc })
      tc({
        type: 'array',
        names: ['gathered', 'gather', 'gather*'],
        props: { numArgs: 0 },
        handler(t) {
          Jt.contains(['gather', 'gather*'], t.envName) && I3(t)
          var e = { cols: [{ type: 'align', align: 'c' }], addJot: !0, colSeparationType: 'gather', autoTag: fA(t.envName), emptySingleRow: !0, leqno: t.parser.settings.leqno }
          return bh(t.parser, e, 'display')
        },
        htmlBuilder: rc,
        mathmlBuilder: nc
      })
      tc({ type: 'array', names: ['alignat', 'alignat*', 'alignedat'], props: { numArgs: 1 }, handler: sV, htmlBuilder: rc, mathmlBuilder: nc })
      tc({
        type: 'array',
        names: ['equation', 'equation*'],
        props: { numArgs: 0 },
        handler(t) {
          I3(t)
          var e = { autoTag: fA(t.envName), emptySingleRow: !0, singleRow: !0, maxNumCols: 1, leqno: t.parser.settings.leqno }
          return bh(t.parser, e, 'display')
        },
        htmlBuilder: rc,
        mathmlBuilder: nc
      })
      tc({
        type: 'array',
        names: ['CD'],
        props: { numArgs: 0 },
        handler(t) {
          return I3(t), O3e(t.parser)
        },
        htmlBuilder: rc,
        mathmlBuilder: nc
      })
      fe('\\nonumber', '\\gdef\\@eqnsw{0}')
      fe('\\notag', '\\nonumber')
      Nt({
        type: 'text',
        names: ['\\hline', '\\hdashline'],
        props: { numArgs: 0, allowedInText: !0, allowedInMath: !0 },
        handler(t, e) {
          throw new pt(t.funcName + ' valid only within array environment')
        }
      })
      uG = iV
      Nt({
        type: 'environment',
        names: ['\\begin', '\\end'],
        props: { numArgs: 1, argTypes: ['text'] },
        handler(t, e) {
          var { parser: r, funcName: n } = t,
            i = e[0]
          if (i.type !== 'ordgroup') throw new pt('Invalid environment name', i)
          for (var a = '', s = 0; s < i.body.length; ++s) a += xr(i.body[s], 'textord').text
          if (n === '\\begin') {
            if (!uG.hasOwnProperty(a)) throw new pt('No such environment: ' + a, i)
            var l = uG[a],
              { args: u, optArgs: h } = r.parseArguments('\\begin{' + a + '}', l),
              f = { mode: r.mode, envName: a, parser: r },
              d = l.handler(f, u, h)
            r.expect('\\end', !1)
            var p = r.nextToken,
              m = xr(r.parseFunction(), 'environment')
            if (m.name !== a) throw new pt('Mismatch: \\begin{' + a + '} matched by \\end{' + m.name + '}', p)
            return d
          }
          return { type: 'environment', mode: r.mode, name: a, nameGroup: i }
        }
      })
      ;(oV = o((t, e) => {
        var r = t.font,
          n = e.withFont(r)
        return $r(t.body, n)
      }, 'htmlBuilder$5')),
        (lV = o((t, e) => {
          var r = t.font,
            n = e.withFont(r)
          return vn(t.body, n)
        }, 'mathmlBuilder$4')),
        (hG = { '\\Bbb': '\\mathbb', '\\bold': '\\mathbf', '\\frak': '\\mathfrak', '\\bm': '\\boldsymbol' })
      Nt({
        type: 'font',
        names: [
          '\\mathrm',
          '\\mathit',
          '\\mathbf',
          '\\mathnormal',
          '\\mathsfit',
          '\\mathbb',
          '\\mathcal',
          '\\mathfrak',
          '\\mathscr',
          '\\mathsf',
          '\\mathtt',
          '\\Bbb',
          '\\bold',
          '\\frak'
        ],
        props: { numArgs: 1, allowedInArgument: !0 },
        handler: o((t, e) => {
          var { parser: r, funcName: n } = t,
            i = C3(e[0]),
            a = n
          return a in hG && (a = hG[a]), { type: 'font', mode: r.mode, font: a.slice(1), body: i }
        }, 'handler'),
        htmlBuilder: oV,
        mathmlBuilder: lV
      })
      Nt({
        type: 'mclass',
        names: ['\\boldsymbol', '\\bm'],
        props: { numArgs: 1 },
        handler: o((t, e) => {
          var { parser: r } = t,
            n = e[0],
            i = Jt.isCharacterBox(n)
          return { type: 'mclass', mode: r.mode, mclass: N3(n), body: [{ type: 'font', mode: r.mode, font: 'boldsymbol', body: n }], isCharacterBox: i }
        }, 'handler')
      })
      Nt({
        type: 'font',
        names: ['\\rm', '\\sf', '\\tt', '\\bf', '\\it', '\\cal'],
        props: { numArgs: 0, allowedInText: !0 },
        handler: o((t, e) => {
          var { parser: r, funcName: n, breakOnTokenText: i } = t,
            { mode: a } = r,
            s = r.parseExpression(!0, i),
            l = 'math' + n.slice(1)
          return { type: 'font', mode: a, font: l, body: { type: 'ordgroup', mode: r.mode, body: s } }
        }, 'handler'),
        htmlBuilder: oV,
        mathmlBuilder: lV
      })
      ;(cV = o((t, e) => {
        var r = e
        return (
          t === 'display'
            ? (r = r.id >= nr.SCRIPT.id ? r.text() : nr.DISPLAY)
            : t === 'text' && r.size === nr.DISPLAY.size
              ? (r = nr.TEXT)
              : t === 'script'
                ? (r = nr.SCRIPT)
                : t === 'scriptscript' && (r = nr.SCRIPTSCRIPT),
          r
        )
      }, 'adjustStyle')),
        (pA = o((t, e) => {
          var r = cV(t.size, e.style),
            n = r.fracNum(),
            i = r.fracDen(),
            a
          a = e.havingStyle(n)
          var s = $r(t.numer, a, e)
          if (t.continued) {
            var l = 8.5 / e.fontMetrics().ptPerEm,
              u = 3.5 / e.fontMetrics().ptPerEm
            ;(s.height = s.height < l ? l : s.height), (s.depth = s.depth < u ? u : s.depth)
          }
          a = e.havingStyle(i)
          var h = $r(t.denom, a, e),
            f,
            d,
            p
          t.hasBarLine
            ? (t.barSize ? ((d = ni(t.barSize, e)), (f = Fe.makeLineSpan('frac-line', e, d))) : (f = Fe.makeLineSpan('frac-line', e)), (d = f.height), (p = f.height))
            : ((f = null), (d = 0), (p = e.fontMetrics().defaultRuleThickness))
          var m, g, y
          r.size === nr.DISPLAY.size || t.size === 'display'
            ? ((m = e.fontMetrics().num1), d > 0 ? (g = 3 * p) : (g = 7 * p), (y = e.fontMetrics().denom1))
            : (d > 0 ? ((m = e.fontMetrics().num2), (g = p)) : ((m = e.fontMetrics().num3), (g = 3 * p)), (y = e.fontMetrics().denom2))
          var v
          if (f) {
            var b = e.fontMetrics().axisHeight
            m - s.depth - (b + 0.5 * d) < g && (m += g - (m - s.depth - (b + 0.5 * d))), b - 0.5 * d - (h.height - y) < g && (y += g - (b - 0.5 * d - (h.height - y)))
            var T = -(b - 0.5 * d)
            v = Fe.makeVList(
              {
                positionType: 'individualShift',
                children: [
                  { type: 'elem', elem: h, shift: y },
                  { type: 'elem', elem: f, shift: T },
                  { type: 'elem', elem: s, shift: -m }
                ]
              },
              e
            )
          } else {
            var x = m - s.depth - (h.height - y)
            x < g && ((m += 0.5 * (g - x)), (y += 0.5 * (g - x))),
              (v = Fe.makeVList(
                {
                  positionType: 'individualShift',
                  children: [
                    { type: 'elem', elem: h, shift: y },
                    { type: 'elem', elem: s, shift: -m }
                  ]
                },
                e
              ))
          }
          ;(a = e.havingStyle(r)), (v.height *= a.sizeMultiplier / e.sizeMultiplier), (v.depth *= a.sizeMultiplier / e.sizeMultiplier)
          var S
          r.size === nr.DISPLAY.size
            ? (S = e.fontMetrics().delim1)
            : r.size === nr.SCRIPTSCRIPT.size
              ? (S = e.havingStyle(nr.SCRIPT).fontMetrics().delim2)
              : (S = e.fontMetrics().delim2)
          var w, E
          return (
            t.leftDelim == null ? (w = ev(e, ['mopen'])) : (w = hu.customSizedDelim(t.leftDelim, S, !0, e.havingStyle(r), t.mode, ['mopen'])),
            t.continued
              ? (E = Fe.makeSpan([]))
              : t.rightDelim == null
                ? (E = ev(e, ['mclose']))
                : (E = hu.customSizedDelim(t.rightDelim, S, !0, e.havingStyle(r), t.mode, ['mclose'])),
            Fe.makeSpan(['mord'].concat(a.sizingClasses(e)), [w, Fe.makeSpan(['mfrac'], [v]), E], e)
          )
        }, 'htmlBuilder$4')),
        (mA = o((t, e) => {
          var r = new dt.MathNode('mfrac', [vn(t.numer, e), vn(t.denom, e)])
          if (!t.hasBarLine) r.setAttribute('linethickness', '0px')
          else if (t.barSize) {
            var n = ni(t.barSize, e)
            r.setAttribute('linethickness', Et(n))
          }
          var i = cV(t.size, e.style)
          if (i.size !== e.style.size) {
            r = new dt.MathNode('mstyle', [r])
            var a = i.size === nr.DISPLAY.size ? 'true' : 'false'
            r.setAttribute('displaystyle', a), r.setAttribute('scriptlevel', '0')
          }
          if (t.leftDelim != null || t.rightDelim != null) {
            var s = []
            if (t.leftDelim != null) {
              var l = new dt.MathNode('mo', [new dt.TextNode(t.leftDelim.replace('\\', ''))])
              l.setAttribute('fence', 'true'), s.push(l)
            }
            if ((s.push(r), t.rightDelim != null)) {
              var u = new dt.MathNode('mo', [new dt.TextNode(t.rightDelim.replace('\\', ''))])
              u.setAttribute('fence', 'true'), s.push(u)
            }
            return aA(s)
          }
          return r
        }, 'mathmlBuilder$3'))
      Nt({
        type: 'genfrac',
        names: ['\\dfrac', '\\frac', '\\tfrac', '\\dbinom', '\\binom', '\\tbinom', '\\\\atopfrac', '\\\\bracefrac', '\\\\brackfrac'],
        props: { numArgs: 2, allowedInArgument: !0 },
        handler: o((t, e) => {
          var { parser: r, funcName: n } = t,
            i = e[0],
            a = e[1],
            s,
            l = null,
            u = null,
            h = 'auto'
          switch (n) {
            case '\\dfrac':
            case '\\frac':
            case '\\tfrac':
              s = !0
              break
            case '\\\\atopfrac':
              s = !1
              break
            case '\\dbinom':
            case '\\binom':
            case '\\tbinom':
              ;(s = !1), (l = '('), (u = ')')
              break
            case '\\\\bracefrac':
              ;(s = !1), (l = '\\{'), (u = '\\}')
              break
            case '\\\\brackfrac':
              ;(s = !1), (l = '['), (u = ']')
              break
            default:
              throw new Error('Unrecognized genfrac command')
          }
          switch (n) {
            case '\\dfrac':
            case '\\dbinom':
              h = 'display'
              break
            case '\\tfrac':
            case '\\tbinom':
              h = 'text'
              break
          }
          return { type: 'genfrac', mode: r.mode, continued: !1, numer: i, denom: a, hasBarLine: s, leftDelim: l, rightDelim: u, size: h, barSize: null }
        }, 'handler'),
        htmlBuilder: pA,
        mathmlBuilder: mA
      })
      Nt({
        type: 'genfrac',
        names: ['\\cfrac'],
        props: { numArgs: 2 },
        handler: o((t, e) => {
          var { parser: r, funcName: n } = t,
            i = e[0],
            a = e[1]
          return { type: 'genfrac', mode: r.mode, continued: !0, numer: i, denom: a, hasBarLine: !0, leftDelim: null, rightDelim: null, size: 'display', barSize: null }
        }, 'handler')
      })
      Nt({
        type: 'infix',
        names: ['\\over', '\\choose', '\\atop', '\\brace', '\\brack'],
        props: { numArgs: 0, infix: !0 },
        handler(t) {
          var { parser: e, funcName: r, token: n } = t,
            i
          switch (r) {
            case '\\over':
              i = '\\frac'
              break
            case '\\choose':
              i = '\\binom'
              break
            case '\\atop':
              i = '\\\\atopfrac'
              break
            case '\\brace':
              i = '\\\\bracefrac'
              break
            case '\\brack':
              i = '\\\\brackfrac'
              break
            default:
              throw new Error('Unrecognized infix genfrac command')
          }
          return { type: 'infix', mode: e.mode, replaceWith: i, token: n }
        }
      })
      ;(fG = ['display', 'text', 'script', 'scriptscript']),
        (dG = o(function (e) {
          var r = null
          return e.length > 0 && ((r = e), (r = r === '.' ? null : r)), r
        }, 'delimFromValue'))
      Nt({
        type: 'genfrac',
        names: ['\\genfrac'],
        props: { numArgs: 6, allowedInArgument: !0, argTypes: ['math', 'math', 'size', 'text', 'math', 'math'] },
        handler(t, e) {
          var { parser: r } = t,
            n = e[4],
            i = e[5],
            a = C3(e[0]),
            s = a.type === 'atom' && a.family === 'open' ? dG(a.text) : null,
            l = C3(e[1]),
            u = l.type === 'atom' && l.family === 'close' ? dG(l.text) : null,
            h = xr(e[2], 'size'),
            f,
            d = null
          h.isBlank ? (f = !0) : ((d = h.value), (f = d.number > 0))
          var p = 'auto',
            m = e[3]
          if (m.type === 'ordgroup') {
            if (m.body.length > 0) {
              var g = xr(m.body[0], 'textord')
              p = fG[Number(g.text)]
            }
          } else (m = xr(m, 'textord')), (p = fG[Number(m.text)])
          return { type: 'genfrac', mode: r.mode, numer: n, denom: i, continued: !1, hasBarLine: f, barSize: d, leftDelim: s, rightDelim: u, size: p }
        },
        htmlBuilder: pA,
        mathmlBuilder: mA
      })
      Nt({
        type: 'infix',
        names: ['\\above'],
        props: { numArgs: 1, argTypes: ['size'], infix: !0 },
        handler(t, e) {
          var { parser: r, funcName: n, token: i } = t
          return { type: 'infix', mode: r.mode, replaceWith: '\\\\abovefrac', size: xr(e[0], 'size').value, token: i }
        }
      })
      Nt({
        type: 'genfrac',
        names: ['\\\\abovefrac'],
        props: { numArgs: 3, argTypes: ['math', 'size', 'math'] },
        handler: o((t, e) => {
          var { parser: r, funcName: n } = t,
            i = e[0],
            a = _4e(xr(e[1], 'infix').size),
            s = e[2],
            l = a.number > 0
          return { type: 'genfrac', mode: r.mode, numer: i, denom: s, continued: !1, hasBarLine: l, barSize: a, leftDelim: null, rightDelim: null, size: 'auto' }
        }, 'handler'),
        htmlBuilder: pA,
        mathmlBuilder: mA
      })
      ;(uV = o((t, e) => {
        var r = e.style,
          n,
          i
        t.type === 'supsub'
          ? ((n = t.sup ? $r(t.sup, e.havingStyle(r.sup()), e) : $r(t.sub, e.havingStyle(r.sub()), e)), (i = xr(t.base, 'horizBrace')))
          : (i = xr(t, 'horizBrace'))
        var a = $r(i.base, e.havingBaseStyle(nr.DISPLAY)),
          s = du.svgSpan(i, e),
          l
        if (
          (i.isOver
            ? ((l = Fe.makeVList(
                {
                  positionType: 'firstBaseline',
                  children: [
                    { type: 'elem', elem: a },
                    { type: 'kern', size: 0.1 },
                    { type: 'elem', elem: s }
                  ]
                },
                e
              )),
              l.children[0].children[0].children[1].classes.push('svg-align'))
            : ((l = Fe.makeVList(
                {
                  positionType: 'bottom',
                  positionData: a.depth + 0.1 + s.height,
                  children: [
                    { type: 'elem', elem: s },
                    { type: 'kern', size: 0.1 },
                    { type: 'elem', elem: a }
                  ]
                },
                e
              )),
              l.children[0].children[0].children[0].classes.push('svg-align')),
          n)
        ) {
          var u = Fe.makeSpan(['mord', i.isOver ? 'mover' : 'munder'], [l], e)
          i.isOver
            ? (l = Fe.makeVList(
                {
                  positionType: 'firstBaseline',
                  children: [
                    { type: 'elem', elem: u },
                    { type: 'kern', size: 0.2 },
                    { type: 'elem', elem: n }
                  ]
                },
                e
              ))
            : (l = Fe.makeVList(
                {
                  positionType: 'bottom',
                  positionData: u.depth + 0.2 + n.height + n.depth,
                  children: [
                    { type: 'elem', elem: n },
                    { type: 'kern', size: 0.2 },
                    { type: 'elem', elem: u }
                  ]
                },
                e
              ))
        }
        return Fe.makeSpan(['mord', i.isOver ? 'mover' : 'munder'], [l], e)
      }, 'htmlBuilder$3')),
        (K3e = o((t, e) => {
          var r = du.mathMLnode(t.label)
          return new dt.MathNode(t.isOver ? 'mover' : 'munder', [vn(t.base, e), r])
        }, 'mathmlBuilder$2'))
      Nt({
        type: 'horizBrace',
        names: ['\\overbrace', '\\underbrace'],
        props: { numArgs: 1 },
        handler(t, e) {
          var { parser: r, funcName: n } = t
          return { type: 'horizBrace', mode: r.mode, label: n, isOver: /^\\over/.test(n), base: e[0] }
        },
        htmlBuilder: uV,
        mathmlBuilder: K3e
      })
      Nt({
        type: 'href',
        names: ['\\href'],
        props: { numArgs: 2, argTypes: ['url', 'original'], allowedInText: !0 },
        handler: o((t, e) => {
          var { parser: r } = t,
            n = e[1],
            i = xr(e[0], 'url').url
          return r.settings.isTrusted({ command: '\\href', url: i }) ? { type: 'href', mode: r.mode, href: i, body: gi(n) } : r.formatUnsupportedCmd('\\href')
        }, 'handler'),
        htmlBuilder: o((t, e) => {
          var r = $i(t.body, e, !1)
          return Fe.makeAnchor(t.href, [], r, e)
        }, 'htmlBuilder'),
        mathmlBuilder: o((t, e) => {
          var r = xh(t.body, e)
          return r instanceof ts || (r = new ts('mrow', [r])), r.setAttribute('href', t.href), r
        }, 'mathmlBuilder')
      })
      Nt({
        type: 'href',
        names: ['\\url'],
        props: { numArgs: 1, argTypes: ['url'], allowedInText: !0 },
        handler: o((t, e) => {
          var { parser: r } = t,
            n = xr(e[0], 'url').url
          if (!r.settings.isTrusted({ command: '\\url', url: n })) return r.formatUnsupportedCmd('\\url')
          for (var i = [], a = 0; a < n.length; a++) {
            var s = n[a]
            s === '~' && (s = '\\textasciitilde'), i.push({ type: 'textord', mode: 'text', text: s })
          }
          var l = { type: 'text', mode: r.mode, font: '\\texttt', body: i }
          return { type: 'href', mode: r.mode, href: n, body: gi(l) }
        }, 'handler')
      })
      Nt({
        type: 'hbox',
        names: ['\\hbox'],
        props: { numArgs: 1, argTypes: ['text'], allowedInText: !0, primitive: !0 },
        handler(t, e) {
          var { parser: r } = t
          return { type: 'hbox', mode: r.mode, body: gi(e[0]) }
        },
        htmlBuilder(t, e) {
          var r = $i(t.body, e, !1)
          return Fe.makeFragment(r)
        },
        mathmlBuilder(t, e) {
          return new dt.MathNode('mrow', _s(t.body, e))
        }
      })
      Nt({
        type: 'html',
        names: ['\\htmlClass', '\\htmlId', '\\htmlStyle', '\\htmlData'],
        props: { numArgs: 2, argTypes: ['raw', 'original'], allowedInText: !0 },
        handler: o((t, e) => {
          var { parser: r, funcName: n, token: i } = t,
            a = xr(e[0], 'raw').string,
            s = e[1]
          r.settings.strict && r.settings.reportNonstrict('htmlExtension', 'HTML extension is disabled on strict mode')
          var l,
            u = {}
          switch (n) {
            case '\\htmlClass':
              ;(u.class = a), (l = { command: '\\htmlClass', class: a })
              break
            case '\\htmlId':
              ;(u.id = a), (l = { command: '\\htmlId', id: a })
              break
            case '\\htmlStyle':
              ;(u.style = a), (l = { command: '\\htmlStyle', style: a })
              break
            case '\\htmlData': {
              for (var h = a.split(','), f = 0; f < h.length; f++) {
                var d = h[f].split('=')
                if (d.length !== 2) throw new pt('Error parsing key-value for \\htmlData')
                u['data-' + d[0].trim()] = d[1].trim()
              }
              l = { command: '\\htmlData', attributes: u }
              break
            }
            default:
              throw new Error('Unrecognized html command')
          }
          return r.settings.isTrusted(l) ? { type: 'html', mode: r.mode, attributes: u, body: gi(s) } : r.formatUnsupportedCmd(n)
        }, 'handler'),
        htmlBuilder: o((t, e) => {
          var r = $i(t.body, e, !1),
            n = ['enclosing']
          t.attributes.class && n.push(...t.attributes.class.trim().split(/\s+/))
          var i = Fe.makeSpan(n, r, e)
          for (var a in t.attributes) a !== 'class' && t.attributes.hasOwnProperty(a) && i.setAttribute(a, t.attributes[a])
          return i
        }, 'htmlBuilder'),
        mathmlBuilder: o((t, e) => xh(t.body, e), 'mathmlBuilder')
      })
      Nt({
        type: 'htmlmathml',
        names: ['\\html@mathml'],
        props: { numArgs: 2, allowedInText: !0 },
        handler: o((t, e) => {
          var { parser: r } = t
          return { type: 'htmlmathml', mode: r.mode, html: gi(e[0]), mathml: gi(e[1]) }
        }, 'handler'),
        htmlBuilder: o((t, e) => {
          var r = $i(t.html, e, !1)
          return Fe.makeFragment(r)
        }, 'htmlBuilder'),
        mathmlBuilder: o((t, e) => xh(t.mathml, e), 'mathmlBuilder')
      })
      z7 = o(function (e) {
        if (/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e)) return { number: +e, unit: 'bp' }
        var r = /([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e)
        if (!r) throw new pt("Invalid size: '" + e + "' in \\includegraphics")
        var n = { number: +(r[1] + r[2]), unit: r[3] }
        if (!DG(n)) throw new pt("Invalid unit: '" + n.unit + "' in \\includegraphics.")
        return n
      }, 'sizeData')
      Nt({
        type: 'includegraphics',
        names: ['\\includegraphics'],
        props: { numArgs: 1, numOptionalArgs: 1, argTypes: ['raw', 'url'], allowedInText: !1 },
        handler: o((t, e, r) => {
          var { parser: n } = t,
            i = { number: 0, unit: 'em' },
            a = { number: 0.9, unit: 'em' },
            s = { number: 0, unit: 'em' },
            l = ''
          if (r[0])
            for (var u = xr(r[0], 'raw').string, h = u.split(','), f = 0; f < h.length; f++) {
              var d = h[f].split('=')
              if (d.length === 2) {
                var p = d[1].trim()
                switch (d[0].trim()) {
                  case 'alt':
                    l = p
                    break
                  case 'width':
                    i = z7(p)
                    break
                  case 'height':
                    a = z7(p)
                    break
                  case 'totalheight':
                    s = z7(p)
                    break
                  default:
                    throw new pt("Invalid key: '" + d[0] + "' in \\includegraphics.")
                }
              }
            }
          var m = xr(e[0], 'url').url
          return (
            l === '' && ((l = m), (l = l.replace(/^.*[\\/]/, '')), (l = l.substring(0, l.lastIndexOf('.')))),
            n.settings.isTrusted({ command: '\\includegraphics', url: m })
              ? { type: 'includegraphics', mode: n.mode, alt: l, width: i, height: a, totalheight: s, src: m }
              : n.formatUnsupportedCmd('\\includegraphics')
          )
        }, 'handler'),
        htmlBuilder: o((t, e) => {
          var r = ni(t.height, e),
            n = 0
          t.totalheight.number > 0 && (n = ni(t.totalheight, e) - r)
          var i = 0
          t.width.number > 0 && (i = ni(t.width, e))
          var a = { height: Et(r + n) }
          i > 0 && (a.width = Et(i)), n > 0 && (a.verticalAlign = Et(-n))
          var s = new q7(t.src, t.alt, a)
          return (s.height = r), (s.depth = n), s
        }, 'htmlBuilder'),
        mathmlBuilder: o((t, e) => {
          var r = new dt.MathNode('mglyph', [])
          r.setAttribute('alt', t.alt)
          var n = ni(t.height, e),
            i = 0
          if ((t.totalheight.number > 0 && ((i = ni(t.totalheight, e) - n), r.setAttribute('valign', Et(-i))), r.setAttribute('height', Et(n + i)), t.width.number > 0)) {
            var a = ni(t.width, e)
            r.setAttribute('width', Et(a))
          }
          return r.setAttribute('src', t.src), r
        }, 'mathmlBuilder')
      })
      Nt({
        type: 'kern',
        names: ['\\kern', '\\mkern', '\\hskip', '\\mskip'],
        props: { numArgs: 1, argTypes: ['size'], primitive: !0, allowedInText: !0 },
        handler(t, e) {
          var { parser: r, funcName: n } = t,
            i = xr(e[0], 'size')
          if (r.settings.strict) {
            var a = n[1] === 'm',
              s = i.value.unit === 'mu'
            a
              ? (s || r.settings.reportNonstrict('mathVsTextUnits', "LaTeX's " + n + ' supports only mu units, ' + ('not ' + i.value.unit + ' units')),
                r.mode !== 'math' && r.settings.reportNonstrict('mathVsTextUnits', "LaTeX's " + n + ' works only in math mode'))
              : s && r.settings.reportNonstrict('mathVsTextUnits', "LaTeX's " + n + " doesn't support mu units")
          }
          return { type: 'kern', mode: r.mode, dimension: i.value }
        },
        htmlBuilder(t, e) {
          return Fe.makeGlue(t.dimension, e)
        },
        mathmlBuilder(t, e) {
          var r = ni(t.dimension, e)
          return new dt.SpaceNode(r)
        }
      })
      Nt({
        type: 'lap',
        names: ['\\mathllap', '\\mathrlap', '\\mathclap'],
        props: { numArgs: 1, allowedInText: !0 },
        handler: o((t, e) => {
          var { parser: r, funcName: n } = t,
            i = e[0]
          return { type: 'lap', mode: r.mode, alignment: n.slice(5), body: i }
        }, 'handler'),
        htmlBuilder: o((t, e) => {
          var r
          t.alignment === 'clap' ? ((r = Fe.makeSpan([], [$r(t.body, e)])), (r = Fe.makeSpan(['inner'], [r], e))) : (r = Fe.makeSpan(['inner'], [$r(t.body, e)]))
          var n = Fe.makeSpan(['fix'], []),
            i = Fe.makeSpan([t.alignment], [r, n], e),
            a = Fe.makeSpan(['strut'])
          return (
            (a.style.height = Et(i.height + i.depth)),
            i.depth && (a.style.verticalAlign = Et(-i.depth)),
            i.children.unshift(a),
            (i = Fe.makeSpan(['thinbox'], [i], e)),
            Fe.makeSpan(['mord', 'vbox'], [i], e)
          )
        }, 'htmlBuilder'),
        mathmlBuilder: o((t, e) => {
          var r = new dt.MathNode('mpadded', [vn(t.body, e)])
          if (t.alignment !== 'rlap') {
            var n = t.alignment === 'llap' ? '-1' : '-0.5'
            r.setAttribute('lspace', n + 'width')
          }
          return r.setAttribute('width', '0px'), r
        }, 'mathmlBuilder')
      })
      Nt({
        type: 'styling',
        names: ['\\(', '$'],
        props: { numArgs: 0, allowedInText: !0, allowedInMath: !1 },
        handler(t, e) {
          var { funcName: r, parser: n } = t,
            i = n.mode
          n.switchMode('math')
          var a = r === '\\(' ? '\\)' : '$',
            s = n.parseExpression(!1, a)
          return n.expect(a), n.switchMode(i), { type: 'styling', mode: n.mode, style: 'text', body: s }
        }
      })
      Nt({
        type: 'text',
        names: ['\\)', '\\]'],
        props: { numArgs: 0, allowedInText: !0, allowedInMath: !1 },
        handler(t, e) {
          throw new pt('Mismatched ' + t.funcName)
        }
      })
      pG = o((t, e) => {
        switch (e.style.size) {
          case nr.DISPLAY.size:
            return t.display
          case nr.TEXT.size:
            return t.text
          case nr.SCRIPT.size:
            return t.script
          case nr.SCRIPTSCRIPT.size:
            return t.scriptscript
          default:
            return t.text
        }
      }, 'chooseMathStyle')
      Nt({
        type: 'mathchoice',
        names: ['\\mathchoice'],
        props: { numArgs: 4, primitive: !0 },
        handler: o((t, e) => {
          var { parser: r } = t
          return { type: 'mathchoice', mode: r.mode, display: gi(e[0]), text: gi(e[1]), script: gi(e[2]), scriptscript: gi(e[3]) }
        }, 'handler'),
        htmlBuilder: o((t, e) => {
          var r = pG(t, e),
            n = $i(r, e, !1)
          return Fe.makeFragment(n)
        }, 'htmlBuilder'),
        mathmlBuilder: o((t, e) => {
          var r = pG(t, e)
          return xh(r, e)
        }, 'mathmlBuilder')
      })
      ;(hV = o((t, e, r, n, i, a, s) => {
        t = Fe.makeSpan([], [t])
        var l = r && Jt.isCharacterBox(r),
          u,
          h
        if (e) {
          var f = $r(e, n.havingStyle(i.sup()), n)
          h = { elem: f, kern: Math.max(n.fontMetrics().bigOpSpacing1, n.fontMetrics().bigOpSpacing3 - f.depth) }
        }
        if (r) {
          var d = $r(r, n.havingStyle(i.sub()), n)
          u = { elem: d, kern: Math.max(n.fontMetrics().bigOpSpacing2, n.fontMetrics().bigOpSpacing4 - d.height) }
        }
        var p
        if (h && u) {
          var m = n.fontMetrics().bigOpSpacing5 + u.elem.height + u.elem.depth + u.kern + t.depth + s
          p = Fe.makeVList(
            {
              positionType: 'bottom',
              positionData: m,
              children: [
                { type: 'kern', size: n.fontMetrics().bigOpSpacing5 },
                { type: 'elem', elem: u.elem, marginLeft: Et(-a) },
                { type: 'kern', size: u.kern },
                { type: 'elem', elem: t },
                { type: 'kern', size: h.kern },
                { type: 'elem', elem: h.elem, marginLeft: Et(a) },
                { type: 'kern', size: n.fontMetrics().bigOpSpacing5 }
              ]
            },
            n
          )
        } else if (u) {
          var g = t.height - s
          p = Fe.makeVList(
            {
              positionType: 'top',
              positionData: g,
              children: [
                { type: 'kern', size: n.fontMetrics().bigOpSpacing5 },
                { type: 'elem', elem: u.elem, marginLeft: Et(-a) },
                { type: 'kern', size: u.kern },
                { type: 'elem', elem: t }
              ]
            },
            n
          )
        } else if (h) {
          var y = t.depth + s
          p = Fe.makeVList(
            {
              positionType: 'bottom',
              positionData: y,
              children: [
                { type: 'elem', elem: t },
                { type: 'kern', size: h.kern },
                { type: 'elem', elem: h.elem, marginLeft: Et(a) },
                { type: 'kern', size: n.fontMetrics().bigOpSpacing5 }
              ]
            },
            n
          )
        } else return t
        var v = [p]
        if (u && a !== 0 && !l) {
          var x = Fe.makeSpan(['mspace'], [], n)
          ;(x.style.marginRight = Et(a)), v.unshift(x)
        }
        return Fe.makeSpan(['mop', 'op-limits'], v, n)
      }, 'assembleSupSub')),
        (fV = ['\\smallint']),
        (S0 = o((t, e) => {
          var r,
            n,
            i = !1,
            a
          t.type === 'supsub' ? ((r = t.sup), (n = t.sub), (a = xr(t.base, 'op')), (i = !0)) : (a = xr(t, 'op'))
          var s = e.style,
            l = !1
          s.size === nr.DISPLAY.size && a.symbol && !Jt.contains(fV, a.name) && (l = !0)
          var u
          if (a.symbol) {
            var h = l ? 'Size2-Regular' : 'Size1-Regular',
              f = ''
            if (
              ((a.name === '\\oiint' || a.name === '\\oiiint') && ((f = a.name.slice(1)), (a.name = f === 'oiint' ? '\\iint' : '\\iiint')),
              (u = Fe.makeSymbol(a.name, h, 'math', e, ['mop', 'op-symbol', l ? 'large-op' : 'small-op'])),
              f.length > 0)
            ) {
              var d = u.italic,
                p = Fe.staticSvg(f + 'Size' + (l ? '2' : '1'), e)
              ;(u = Fe.makeVList(
                {
                  positionType: 'individualShift',
                  children: [
                    { type: 'elem', elem: u, shift: 0 },
                    { type: 'elem', elem: p, shift: l ? 0.08 : 0 }
                  ]
                },
                e
              )),
                (a.name = '\\' + f),
                u.classes.unshift('mop'),
                (u.italic = d)
            }
          } else if (a.body) {
            var m = $i(a.body, e, !0)
            m.length === 1 && m[0] instanceof As ? ((u = m[0]), (u.classes[0] = 'mop')) : (u = Fe.makeSpan(['mop'], m, e))
          } else {
            for (var g = [], y = 1; y < a.name.length; y++) g.push(Fe.mathsym(a.name[y], a.mode, e))
            u = Fe.makeSpan(['mop'], g, e)
          }
          var v = 0,
            x = 0
          return (
            (u instanceof As || a.name === '\\oiint' || a.name === '\\oiiint') &&
              !a.suppressBaseShift &&
              ((v = (u.height - u.depth) / 2 - e.fontMetrics().axisHeight), (x = u.italic)),
            i ? hV(u, r, n, e, s, x, v) : (v && ((u.style.position = 'relative'), (u.style.top = Et(v))), u)
          )
        }, 'htmlBuilder$2')),
        (tv = o((t, e) => {
          var r
          if (t.symbol) (r = new ts('mo', [Do(t.name, t.mode)])), Jt.contains(fV, t.name) && r.setAttribute('largeop', 'false')
          else if (t.body) r = new ts('mo', _s(t.body, e))
          else {
            r = new ts('mi', [new Ao(t.name.slice(1))])
            var n = new ts('mo', [Do('\u2061', 'text')])
            t.parentIsSupSub ? (r = new ts('mrow', [r, n])) : (r = zG([r, n]))
          }
          return r
        }, 'mathmlBuilder$1')),
        (Q3e = {
          '\u220F': '\\prod',
          '\u2210': '\\coprod',
          '\u2211': '\\sum',
          '\u22C0': '\\bigwedge',
          '\u22C1': '\\bigvee',
          '\u22C2': '\\bigcap',
          '\u22C3': '\\bigcup',
          '\u2A00': '\\bigodot',
          '\u2A01': '\\bigoplus',
          '\u2A02': '\\bigotimes',
          '\u2A04': '\\biguplus',
          '\u2A06': '\\bigsqcup'
        })
      Nt({
        type: 'op',
        names: [
          '\\coprod',
          '\\bigvee',
          '\\bigwedge',
          '\\biguplus',
          '\\bigcap',
          '\\bigcup',
          '\\intop',
          '\\prod',
          '\\sum',
          '\\bigotimes',
          '\\bigoplus',
          '\\bigodot',
          '\\bigsqcup',
          '\\smallint',
          '\u220F',
          '\u2210',
          '\u2211',
          '\u22C0',
          '\u22C1',
          '\u22C2',
          '\u22C3',
          '\u2A00',
          '\u2A01',
          '\u2A02',
          '\u2A04',
          '\u2A06'
        ],
        props: { numArgs: 0 },
        handler: o((t, e) => {
          var { parser: r, funcName: n } = t,
            i = n
          return i.length === 1 && (i = Q3e[i]), { type: 'op', mode: r.mode, limits: !0, parentIsSupSub: !1, symbol: !0, name: i }
        }, 'handler'),
        htmlBuilder: S0,
        mathmlBuilder: tv
      })
      Nt({
        type: 'op',
        names: ['\\mathop'],
        props: { numArgs: 1, primitive: !0 },
        handler: o((t, e) => {
          var { parser: r } = t,
            n = e[0]
          return { type: 'op', mode: r.mode, limits: !1, parentIsSupSub: !1, symbol: !1, body: gi(n) }
        }, 'handler'),
        htmlBuilder: S0,
        mathmlBuilder: tv
      })
      Z3e = { '\u222B': '\\int', '\u222C': '\\iint', '\u222D': '\\iiint', '\u222E': '\\oint', '\u222F': '\\oiint', '\u2230': '\\oiiint' }
      Nt({
        type: 'op',
        names: [
          '\\arcsin',
          '\\arccos',
          '\\arctan',
          '\\arctg',
          '\\arcctg',
          '\\arg',
          '\\ch',
          '\\cos',
          '\\cosec',
          '\\cosh',
          '\\cot',
          '\\cotg',
          '\\coth',
          '\\csc',
          '\\ctg',
          '\\cth',
          '\\deg',
          '\\dim',
          '\\exp',
          '\\hom',
          '\\ker',
          '\\lg',
          '\\ln',
          '\\log',
          '\\sec',
          '\\sin',
          '\\sinh',
          '\\sh',
          '\\tan',
          '\\tanh',
          '\\tg',
          '\\th'
        ],
        props: { numArgs: 0 },
        handler(t) {
          var { parser: e, funcName: r } = t
          return { type: 'op', mode: e.mode, limits: !1, parentIsSupSub: !1, symbol: !1, name: r }
        },
        htmlBuilder: S0,
        mathmlBuilder: tv
      })
      Nt({
        type: 'op',
        names: ['\\det', '\\gcd', '\\inf', '\\lim', '\\max', '\\min', '\\Pr', '\\sup'],
        props: { numArgs: 0 },
        handler(t) {
          var { parser: e, funcName: r } = t
          return { type: 'op', mode: e.mode, limits: !0, parentIsSupSub: !1, symbol: !1, name: r }
        },
        htmlBuilder: S0,
        mathmlBuilder: tv
      })
      Nt({
        type: 'op',
        names: ['\\int', '\\iint', '\\iiint', '\\oint', '\\oiint', '\\oiiint', '\u222B', '\u222C', '\u222D', '\u222E', '\u222F', '\u2230'],
        props: { numArgs: 0 },
        handler(t) {
          var { parser: e, funcName: r } = t,
            n = r
          return n.length === 1 && (n = Z3e[n]), { type: 'op', mode: e.mode, limits: !1, parentIsSupSub: !1, symbol: !0, name: n }
        },
        htmlBuilder: S0,
        mathmlBuilder: tv
      })
      ;(dV = o((t, e) => {
        var r,
          n,
          i = !1,
          a
        t.type === 'supsub' ? ((r = t.sup), (n = t.sub), (a = xr(t.base, 'operatorname')), (i = !0)) : (a = xr(t, 'operatorname'))
        var s
        if (a.body.length > 0) {
          for (
            var l = a.body.map(d => {
                var p = d.text
                return typeof p == 'string' ? { type: 'textord', mode: d.mode, text: p } : d
              }),
              u = $i(l, e.withFont('mathrm'), !0),
              h = 0;
            h < u.length;
            h++
          ) {
            var f = u[h]
            f instanceof As && (f.text = f.text.replace(/\u2212/, '-').replace(/\u2217/, '*'))
          }
          s = Fe.makeSpan(['mop'], u, e)
        } else s = Fe.makeSpan(['mop'], [], e)
        return i ? hV(s, r, n, e, e.style, 0, 0) : s
      }, 'htmlBuilder$1')),
        (J3e = o((t, e) => {
          for (var r = _s(t.body, e.withFont('mathrm')), n = !0, i = 0; i < r.length; i++) {
            var a = r[i]
            if (!(a instanceof dt.SpaceNode))
              if (a instanceof dt.MathNode)
                switch (a.type) {
                  case 'mi':
                  case 'mn':
                  case 'ms':
                  case 'mspace':
                  case 'mtext':
                    break
                  case 'mo': {
                    var s = a.children[0]
                    a.children.length === 1 && s instanceof dt.TextNode ? (s.text = s.text.replace(/\u2212/, '-').replace(/\u2217/, '*')) : (n = !1)
                    break
                  }
                  default:
                    n = !1
                }
              else n = !1
          }
          if (n) {
            var l = r.map(f => f.toText()).join('')
            r = [new dt.TextNode(l)]
          }
          var u = new dt.MathNode('mi', r)
          u.setAttribute('mathvariant', 'normal')
          var h = new dt.MathNode('mo', [Do('\u2061', 'text')])
          return t.parentIsSupSub ? new dt.MathNode('mrow', [u, h]) : dt.newDocumentFragment([u, h])
        }, 'mathmlBuilder'))
      Nt({
        type: 'operatorname',
        names: ['\\operatorname@', '\\operatornamewithlimits'],
        props: { numArgs: 1 },
        handler: o((t, e) => {
          var { parser: r, funcName: n } = t,
            i = e[0]
          return { type: 'operatorname', mode: r.mode, body: gi(i), alwaysHandleSupSub: n === '\\operatornamewithlimits', limits: !1, parentIsSupSub: !1 }
        }, 'handler'),
        htmlBuilder: dV,
        mathmlBuilder: J3e
      })
      fe('\\operatorname', '\\@ifstar\\operatornamewithlimits\\operatorname@')
      cd({
        type: 'ordgroup',
        htmlBuilder(t, e) {
          return t.semisimple ? Fe.makeFragment($i(t.body, e, !1)) : Fe.makeSpan(['mord'], $i(t.body, e, !0), e)
        },
        mathmlBuilder(t, e) {
          return xh(t.body, e, !0)
        }
      })
      Nt({
        type: 'overline',
        names: ['\\overline'],
        props: { numArgs: 1 },
        handler(t, e) {
          var { parser: r } = t,
            n = e[0]
          return { type: 'overline', mode: r.mode, body: n }
        },
        htmlBuilder(t, e) {
          var r = $r(t.body, e.havingCrampedStyle()),
            n = Fe.makeLineSpan('overline-line', e),
            i = e.fontMetrics().defaultRuleThickness,
            a = Fe.makeVList(
              {
                positionType: 'firstBaseline',
                children: [
                  { type: 'elem', elem: r },
                  { type: 'kern', size: 3 * i },
                  { type: 'elem', elem: n },
                  { type: 'kern', size: i }
                ]
              },
              e
            )
          return Fe.makeSpan(['mord', 'overline'], [a], e)
        },
        mathmlBuilder(t, e) {
          var r = new dt.MathNode('mo', [new dt.TextNode('\u203E')])
          r.setAttribute('stretchy', 'true')
          var n = new dt.MathNode('mover', [vn(t.body, e), r])
          return n.setAttribute('accent', 'true'), n
        }
      })
      Nt({
        type: 'phantom',
        names: ['\\phantom'],
        props: { numArgs: 1, allowedInText: !0 },
        handler: o((t, e) => {
          var { parser: r } = t,
            n = e[0]
          return { type: 'phantom', mode: r.mode, body: gi(n) }
        }, 'handler'),
        htmlBuilder: o((t, e) => {
          var r = $i(t.body, e.withPhantom(), !1)
          return Fe.makeFragment(r)
        }, 'htmlBuilder'),
        mathmlBuilder: o((t, e) => {
          var r = _s(t.body, e)
          return new dt.MathNode('mphantom', r)
        }, 'mathmlBuilder')
      })
      Nt({
        type: 'hphantom',
        names: ['\\hphantom'],
        props: { numArgs: 1, allowedInText: !0 },
        handler: o((t, e) => {
          var { parser: r } = t,
            n = e[0]
          return { type: 'hphantom', mode: r.mode, body: n }
        }, 'handler'),
        htmlBuilder: o((t, e) => {
          var r = Fe.makeSpan([], [$r(t.body, e.withPhantom())])
          if (((r.height = 0), (r.depth = 0), r.children)) for (var n = 0; n < r.children.length; n++) (r.children[n].height = 0), (r.children[n].depth = 0)
          return (r = Fe.makeVList({ positionType: 'firstBaseline', children: [{ type: 'elem', elem: r }] }, e)), Fe.makeSpan(['mord'], [r], e)
        }, 'htmlBuilder'),
        mathmlBuilder: o((t, e) => {
          var r = _s(gi(t.body), e),
            n = new dt.MathNode('mphantom', r),
            i = new dt.MathNode('mpadded', [n])
          return i.setAttribute('height', '0px'), i.setAttribute('depth', '0px'), i
        }, 'mathmlBuilder')
      })
      Nt({
        type: 'vphantom',
        names: ['\\vphantom'],
        props: { numArgs: 1, allowedInText: !0 },
        handler: o((t, e) => {
          var { parser: r } = t,
            n = e[0]
          return { type: 'vphantom', mode: r.mode, body: n }
        }, 'handler'),
        htmlBuilder: o((t, e) => {
          var r = Fe.makeSpan(['inner'], [$r(t.body, e.withPhantom())]),
            n = Fe.makeSpan(['fix'], [])
          return Fe.makeSpan(['mord', 'rlap'], [r, n], e)
        }, 'htmlBuilder'),
        mathmlBuilder: o((t, e) => {
          var r = _s(gi(t.body), e),
            n = new dt.MathNode('mphantom', r),
            i = new dt.MathNode('mpadded', [n])
          return i.setAttribute('width', '0px'), i
        }, 'mathmlBuilder')
      })
      Nt({
        type: 'raisebox',
        names: ['\\raisebox'],
        props: { numArgs: 2, argTypes: ['size', 'hbox'], allowedInText: !0 },
        handler(t, e) {
          var { parser: r } = t,
            n = xr(e[0], 'size').value,
            i = e[1]
          return { type: 'raisebox', mode: r.mode, dy: n, body: i }
        },
        htmlBuilder(t, e) {
          var r = $r(t.body, e),
            n = ni(t.dy, e)
          return Fe.makeVList({ positionType: 'shift', positionData: -n, children: [{ type: 'elem', elem: r }] }, e)
        },
        mathmlBuilder(t, e) {
          var r = new dt.MathNode('mpadded', [vn(t.body, e)]),
            n = t.dy.number + t.dy.unit
          return r.setAttribute('voffset', n), r
        }
      })
      Nt({
        type: 'internal',
        names: ['\\relax'],
        props: { numArgs: 0, allowedInText: !0, allowedInArgument: !0 },
        handler(t) {
          var { parser: e } = t
          return { type: 'internal', mode: e.mode }
        }
      })
      Nt({
        type: 'rule',
        names: ['\\rule'],
        props: { numArgs: 2, numOptionalArgs: 1, allowedInText: !0, allowedInMath: !0, argTypes: ['size', 'size', 'size'] },
        handler(t, e, r) {
          var { parser: n } = t,
            i = r[0],
            a = xr(e[0], 'size'),
            s = xr(e[1], 'size')
          return { type: 'rule', mode: n.mode, shift: i && xr(i, 'size').value, width: a.value, height: s.value }
        },
        htmlBuilder(t, e) {
          var r = Fe.makeSpan(['mord', 'rule'], [], e),
            n = ni(t.width, e),
            i = ni(t.height, e),
            a = t.shift ? ni(t.shift, e) : 0
          return (
            (r.style.borderRightWidth = Et(n)),
            (r.style.borderTopWidth = Et(i)),
            (r.style.bottom = Et(a)),
            (r.width = n),
            (r.height = i + a),
            (r.depth = -a),
            (r.maxFontSize = i * 1.125 * e.sizeMultiplier),
            r
          )
        },
        mathmlBuilder(t, e) {
          var r = ni(t.width, e),
            n = ni(t.height, e),
            i = t.shift ? ni(t.shift, e) : 0,
            a = (e.color && e.getColor()) || 'black',
            s = new dt.MathNode('mspace')
          s.setAttribute('mathbackground', a), s.setAttribute('width', Et(r)), s.setAttribute('height', Et(n))
          var l = new dt.MathNode('mpadded', [s])
          return i >= 0 ? l.setAttribute('height', Et(i)) : (l.setAttribute('height', Et(i)), l.setAttribute('depth', Et(-i))), l.setAttribute('voffset', Et(i)), l
        }
      })
      o(pV, 'sizingGroup')
      ;(mG = ['\\tiny', '\\sixptsize', '\\scriptsize', '\\footnotesize', '\\small', '\\normalsize', '\\large', '\\Large', '\\LARGE', '\\huge', '\\Huge']),
        (e5e = o((t, e) => {
          var r = e.havingSize(t.size)
          return pV(t.body, r, e)
        }, 'htmlBuilder'))
      Nt({
        type: 'sizing',
        names: mG,
        props: { numArgs: 0, allowedInText: !0 },
        handler: o((t, e) => {
          var { breakOnTokenText: r, funcName: n, parser: i } = t,
            a = i.parseExpression(!1, r)
          return { type: 'sizing', mode: i.mode, size: mG.indexOf(n) + 1, body: a }
        }, 'handler'),
        htmlBuilder: e5e,
        mathmlBuilder: o((t, e) => {
          var r = e.havingSize(t.size),
            n = _s(t.body, r),
            i = new dt.MathNode('mstyle', n)
          return i.setAttribute('mathsize', Et(r.sizeMultiplier)), i
        }, 'mathmlBuilder')
      })
      Nt({
        type: 'smash',
        names: ['\\smash'],
        props: { numArgs: 1, numOptionalArgs: 1, allowedInText: !0 },
        handler: o((t, e, r) => {
          var { parser: n } = t,
            i = !1,
            a = !1,
            s = r[0] && xr(r[0], 'ordgroup')
          if (s)
            for (var l = '', u = 0; u < s.body.length; ++u) {
              var h = s.body[u]
              if (((l = h.text), l === 't')) i = !0
              else if (l === 'b') a = !0
              else {
                ;(i = !1), (a = !1)
                break
              }
            }
          else (i = !0), (a = !0)
          var f = e[0]
          return { type: 'smash', mode: n.mode, body: f, smashHeight: i, smashDepth: a }
        }, 'handler'),
        htmlBuilder: o((t, e) => {
          var r = Fe.makeSpan([], [$r(t.body, e)])
          if (!t.smashHeight && !t.smashDepth) return r
          if (t.smashHeight && ((r.height = 0), r.children)) for (var n = 0; n < r.children.length; n++) r.children[n].height = 0
          if (t.smashDepth && ((r.depth = 0), r.children)) for (var i = 0; i < r.children.length; i++) r.children[i].depth = 0
          var a = Fe.makeVList({ positionType: 'firstBaseline', children: [{ type: 'elem', elem: r }] }, e)
          return Fe.makeSpan(['mord'], [a], e)
        }, 'htmlBuilder'),
        mathmlBuilder: o((t, e) => {
          var r = new dt.MathNode('mpadded', [vn(t.body, e)])
          return t.smashHeight && r.setAttribute('height', '0px'), t.smashDepth && r.setAttribute('depth', '0px'), r
        }, 'mathmlBuilder')
      })
      Nt({
        type: 'sqrt',
        names: ['\\sqrt'],
        props: { numArgs: 1, numOptionalArgs: 1 },
        handler(t, e, r) {
          var { parser: n } = t,
            i = r[0],
            a = e[0]
          return { type: 'sqrt', mode: n.mode, body: a, index: i }
        },
        htmlBuilder(t, e) {
          var r = $r(t.body, e.havingCrampedStyle())
          r.height === 0 && (r.height = e.fontMetrics().xHeight), (r = Fe.wrapFragment(r, e))
          var n = e.fontMetrics(),
            i = n.defaultRuleThickness,
            a = i
          e.style.id < nr.TEXT.id && (a = e.fontMetrics().xHeight)
          var s = i + a / 4,
            l = r.height + r.depth + s + i,
            { span: u, ruleWidth: h, advanceWidth: f } = hu.sqrtImage(l, e),
            d = u.height - h
          d > r.height + r.depth + s && (s = (s + d - r.height - r.depth) / 2)
          var p = u.height - r.height - s - h
          r.style.paddingLeft = Et(f)
          var m = Fe.makeVList(
            {
              positionType: 'firstBaseline',
              children: [
                { type: 'elem', elem: r, wrapperClasses: ['svg-align'] },
                { type: 'kern', size: -(r.height + p) },
                { type: 'elem', elem: u },
                { type: 'kern', size: h }
              ]
            },
            e
          )
          if (t.index) {
            var g = e.havingStyle(nr.SCRIPTSCRIPT),
              y = $r(t.index, g, e),
              v = 0.6 * (m.height - m.depth),
              x = Fe.makeVList({ positionType: 'shift', positionData: -v, children: [{ type: 'elem', elem: y }] }, e),
              b = Fe.makeSpan(['root'], [x])
            return Fe.makeSpan(['mord', 'sqrt'], [b, m], e)
          } else return Fe.makeSpan(['mord', 'sqrt'], [m], e)
        },
        mathmlBuilder(t, e) {
          var { body: r, index: n } = t
          return n ? new dt.MathNode('mroot', [vn(r, e), vn(n, e)]) : new dt.MathNode('msqrt', [vn(r, e)])
        }
      })
      gG = { display: nr.DISPLAY, text: nr.TEXT, script: nr.SCRIPT, scriptscript: nr.SCRIPTSCRIPT }
      Nt({
        type: 'styling',
        names: ['\\displaystyle', '\\textstyle', '\\scriptstyle', '\\scriptscriptstyle'],
        props: { numArgs: 0, allowedInText: !0, primitive: !0 },
        handler(t, e) {
          var { breakOnTokenText: r, funcName: n, parser: i } = t,
            a = i.parseExpression(!0, r),
            s = n.slice(1, n.length - 5)
          return { type: 'styling', mode: i.mode, style: s, body: a }
        },
        htmlBuilder(t, e) {
          var r = gG[t.style],
            n = e.havingStyle(r).withFont('')
          return pV(t.body, n, e)
        },
        mathmlBuilder(t, e) {
          var r = gG[t.style],
            n = e.havingStyle(r),
            i = _s(t.body, n),
            a = new dt.MathNode('mstyle', i),
            s = { display: ['0', 'true'], text: ['0', 'false'], script: ['1', 'false'], scriptscript: ['2', 'false'] },
            l = s[t.style]
          return a.setAttribute('scriptlevel', l[0]), a.setAttribute('displaystyle', l[1]), a
        }
      })
      t5e = o(function (e, r) {
        var n = e.base
        if (n)
          if (n.type === 'op') {
            var i = n.limits && (r.style.size === nr.DISPLAY.size || n.alwaysHandleSupSub)
            return i ? S0 : null
          } else if (n.type === 'operatorname') {
            var a = n.alwaysHandleSupSub && (r.style.size === nr.DISPLAY.size || n.limits)
            return a ? dV : null
          } else {
            if (n.type === 'accent') return Jt.isCharacterBox(n.base) ? lA : null
            if (n.type === 'horizBrace') {
              var s = !e.sub
              return s === n.isOver ? uV : null
            } else return null
          }
        else return null
      }, 'htmlBuilderDelegate')
      cd({
        type: 'supsub',
        htmlBuilder(t, e) {
          var r = t5e(t, e)
          if (r) return r(t, e)
          var { base: n, sup: i, sub: a } = t,
            s = $r(n, e),
            l,
            u,
            h = e.fontMetrics(),
            f = 0,
            d = 0,
            p = n && Jt.isCharacterBox(n)
          if (i) {
            var m = e.havingStyle(e.style.sup())
            ;(l = $r(i, m, e)), p || (f = s.height - (m.fontMetrics().supDrop * m.sizeMultiplier) / e.sizeMultiplier)
          }
          if (a) {
            var g = e.havingStyle(e.style.sub())
            ;(u = $r(a, g, e)), p || (d = s.depth + (g.fontMetrics().subDrop * g.sizeMultiplier) / e.sizeMultiplier)
          }
          var y
          e.style === nr.DISPLAY ? (y = h.sup1) : e.style.cramped ? (y = h.sup3) : (y = h.sup2)
          var v = e.sizeMultiplier,
            x = Et(0.5 / h.ptPerEm / v),
            b = null
          if (u) {
            var T = t.base && t.base.type === 'op' && t.base.name && (t.base.name === '\\oiint' || t.base.name === '\\oiiint')
            ;(s instanceof As || T) && (b = Et(-s.italic))
          }
          var S
          if (l && u) {
            ;(f = Math.max(f, y, l.depth + 0.25 * h.xHeight)), (d = Math.max(d, h.sub2))
            var w = h.defaultRuleThickness,
              E = 4 * w
            if (f - l.depth - (u.height - d) < E) {
              d = E - (f - l.depth) + u.height
              var _ = 0.8 * h.xHeight - (f - l.depth)
              _ > 0 && ((f += _), (d -= _))
            }
            var C = [
              { type: 'elem', elem: u, shift: d, marginRight: x, marginLeft: b },
              { type: 'elem', elem: l, shift: -f, marginRight: x }
            ]
            S = Fe.makeVList({ positionType: 'individualShift', children: C }, e)
          } else if (u) {
            d = Math.max(d, h.sub1, u.height - 0.8 * h.xHeight)
            var D = [{ type: 'elem', elem: u, marginLeft: b, marginRight: x }]
            S = Fe.makeVList({ positionType: 'shift', positionData: d, children: D }, e)
          } else if (l)
            (f = Math.max(f, y, l.depth + 0.25 * h.xHeight)),
              (S = Fe.makeVList({ positionType: 'shift', positionData: -f, children: [{ type: 'elem', elem: l, marginRight: x }] }, e))
          else throw new Error('supsub must have either sup or sub.')
          var O = X7(s, 'right') || 'mord'
          return Fe.makeSpan([O], [s, Fe.makeSpan(['msupsub'], [S])], e)
        },
        mathmlBuilder(t, e) {
          var r = !1,
            n,
            i
          t.base && t.base.type === 'horizBrace' && ((i = !!t.sup), i === t.base.isOver && ((r = !0), (n = t.base.isOver))),
            t.base && (t.base.type === 'op' || t.base.type === 'operatorname') && (t.base.parentIsSupSub = !0)
          var a = [vn(t.base, e)]
          t.sub && a.push(vn(t.sub, e)), t.sup && a.push(vn(t.sup, e))
          var s
          if (r) s = n ? 'mover' : 'munder'
          else if (t.sub)
            if (t.sup) {
              var h = t.base
              ;(h && h.type === 'op' && h.limits && e.style === nr.DISPLAY) || (h && h.type === 'operatorname' && h.alwaysHandleSupSub && (e.style === nr.DISPLAY || h.limits))
                ? (s = 'munderover')
                : (s = 'msubsup')
            } else {
              var u = t.base
              ;(u && u.type === 'op' && u.limits && (e.style === nr.DISPLAY || u.alwaysHandleSupSub)) ||
              (u && u.type === 'operatorname' && u.alwaysHandleSupSub && (u.limits || e.style === nr.DISPLAY))
                ? (s = 'munder')
                : (s = 'msub')
            }
          else {
            var l = t.base
            ;(l && l.type === 'op' && l.limits && (e.style === nr.DISPLAY || l.alwaysHandleSupSub)) ||
            (l && l.type === 'operatorname' && l.alwaysHandleSupSub && (l.limits || e.style === nr.DISPLAY))
              ? (s = 'mover')
              : (s = 'msup')
          }
          return new dt.MathNode(s, a)
        }
      })
      cd({
        type: 'atom',
        htmlBuilder(t, e) {
          return Fe.mathsym(t.text, t.mode, e, ['m' + t.family])
        },
        mathmlBuilder(t, e) {
          var r = new dt.MathNode('mo', [Do(t.text, t.mode)])
          if (t.family === 'bin') {
            var n = sA(t, e)
            n === 'bold-italic' && r.setAttribute('mathvariant', n)
          } else t.family === 'punct' ? r.setAttribute('separator', 'true') : (t.family === 'open' || t.family === 'close') && r.setAttribute('stretchy', 'false')
          return r
        }
      })
      mV = { mi: 'italic', mn: 'normal', mtext: 'normal' }
      cd({
        type: 'mathord',
        htmlBuilder(t, e) {
          return Fe.makeOrd(t, e, 'mathord')
        },
        mathmlBuilder(t, e) {
          var r = new dt.MathNode('mi', [Do(t.text, t.mode, e)]),
            n = sA(t, e) || 'italic'
          return n !== mV[r.type] && r.setAttribute('mathvariant', n), r
        }
      })
      cd({
        type: 'textord',
        htmlBuilder(t, e) {
          return Fe.makeOrd(t, e, 'textord')
        },
        mathmlBuilder(t, e) {
          var r = Do(t.text, t.mode, e),
            n = sA(t, e) || 'normal',
            i
          return (
            t.mode === 'text'
              ? (i = new dt.MathNode('mtext', [r]))
              : /[0-9]/.test(t.text)
                ? (i = new dt.MathNode('mn', [r]))
                : t.text === '\\prime'
                  ? (i = new dt.MathNode('mo', [r]))
                  : (i = new dt.MathNode('mi', [r])),
            n !== mV[i.type] && i.setAttribute('mathvariant', n),
            i
          )
        }
      })
      ;(G7 = { '\\nobreak': 'nobreak', '\\allowbreak': 'allowbreak' }),
        (V7 = { ' ': {}, '\\ ': {}, '~': { className: 'nobreak' }, '\\space': {}, '\\nobreakspace': { className: 'nobreak' } })
      cd({
        type: 'spacing',
        htmlBuilder(t, e) {
          if (V7.hasOwnProperty(t.text)) {
            var r = V7[t.text].className || ''
            if (t.mode === 'text') {
              var n = Fe.makeOrd(t, e, 'textord')
              return n.classes.push(r), n
            } else return Fe.makeSpan(['mspace', r], [Fe.mathsym(t.text, t.mode, e)], e)
          } else {
            if (G7.hasOwnProperty(t.text)) return Fe.makeSpan(['mspace', G7[t.text]], [], e)
            throw new pt('Unknown type of space "' + t.text + '"')
          }
        },
        mathmlBuilder(t, e) {
          var r
          if (V7.hasOwnProperty(t.text)) r = new dt.MathNode('mtext', [new dt.TextNode('\xA0')])
          else {
            if (G7.hasOwnProperty(t.text)) return new dt.MathNode('mspace')
            throw new pt('Unknown type of space "' + t.text + '"')
          }
          return r
        }
      })
      yG = o(() => {
        var t = new dt.MathNode('mtd', [])
        return t.setAttribute('width', '50%'), t
      }, 'pad')
      cd({
        type: 'tag',
        mathmlBuilder(t, e) {
          var r = new dt.MathNode('mtable', [new dt.MathNode('mtr', [yG(), new dt.MathNode('mtd', [xh(t.body, e)]), yG(), new dt.MathNode('mtd', [xh(t.tag, e)])])])
          return r.setAttribute('width', '100%'), r
        }
      })
      ;(vG = { '\\text': void 0, '\\textrm': 'textrm', '\\textsf': 'textsf', '\\texttt': 'texttt', '\\textnormal': 'textrm' }),
        (xG = { '\\textbf': 'textbf', '\\textmd': 'textmd' }),
        (r5e = { '\\textit': 'textit', '\\textup': 'textup' }),
        (bG = o((t, e) => {
          var r = t.font
          if (r) {
            if (vG[r]) return e.withTextFontFamily(vG[r])
            if (xG[r]) return e.withTextFontWeight(xG[r])
            if (r === '\\emph') return e.fontShape === 'textit' ? e.withTextFontShape('textup') : e.withTextFontShape('textit')
          } else return e
          return e.withTextFontShape(r5e[r])
        }, 'optionsWithFont'))
      Nt({
        type: 'text',
        names: ['\\text', '\\textrm', '\\textsf', '\\texttt', '\\textnormal', '\\textbf', '\\textmd', '\\textit', '\\textup', '\\emph'],
        props: { numArgs: 1, argTypes: ['text'], allowedInArgument: !0, allowedInText: !0 },
        handler(t, e) {
          var { parser: r, funcName: n } = t,
            i = e[0]
          return { type: 'text', mode: r.mode, body: gi(i), font: n }
        },
        htmlBuilder(t, e) {
          var r = bG(t, e),
            n = $i(t.body, r, !0)
          return Fe.makeSpan(['mord', 'text'], n, r)
        },
        mathmlBuilder(t, e) {
          var r = bG(t, e)
          return xh(t.body, r)
        }
      })
      Nt({
        type: 'underline',
        names: ['\\underline'],
        props: { numArgs: 1, allowedInText: !0 },
        handler(t, e) {
          var { parser: r } = t
          return { type: 'underline', mode: r.mode, body: e[0] }
        },
        htmlBuilder(t, e) {
          var r = $r(t.body, e),
            n = Fe.makeLineSpan('underline-line', e),
            i = e.fontMetrics().defaultRuleThickness,
            a = Fe.makeVList(
              {
                positionType: 'top',
                positionData: r.height,
                children: [
                  { type: 'kern', size: i },
                  { type: 'elem', elem: n },
                  { type: 'kern', size: 3 * i },
                  { type: 'elem', elem: r }
                ]
              },
              e
            )
          return Fe.makeSpan(['mord', 'underline'], [a], e)
        },
        mathmlBuilder(t, e) {
          var r = new dt.MathNode('mo', [new dt.TextNode('\u203E')])
          r.setAttribute('stretchy', 'true')
          var n = new dt.MathNode('munder', [vn(t.body, e), r])
          return n.setAttribute('accentunder', 'true'), n
        }
      })
      Nt({
        type: 'vcenter',
        names: ['\\vcenter'],
        props: { numArgs: 1, argTypes: ['original'], allowedInText: !1 },
        handler(t, e) {
          var { parser: r } = t
          return { type: 'vcenter', mode: r.mode, body: e[0] }
        },
        htmlBuilder(t, e) {
          var r = $r(t.body, e),
            n = e.fontMetrics().axisHeight,
            i = 0.5 * (r.height - n - (r.depth + n))
          return Fe.makeVList({ positionType: 'shift', positionData: i, children: [{ type: 'elem', elem: r }] }, e)
        },
        mathmlBuilder(t, e) {
          return new dt.MathNode('mpadded', [vn(t.body, e)], ['vcenter'])
        }
      })
      Nt({
        type: 'verb',
        names: ['\\verb'],
        props: { numArgs: 0, allowedInText: !0 },
        handler(t, e, r) {
          throw new pt('\\verb ended by end of line instead of matching delimiter')
        },
        htmlBuilder(t, e) {
          for (var r = TG(t), n = [], i = e.havingStyle(e.style.text()), a = 0; a < r.length; a++) {
            var s = r[a]
            s === '~' && (s = '\\textasciitilde'), n.push(Fe.makeSymbol(s, 'Typewriter-Regular', t.mode, i, ['mord', 'texttt']))
          }
          return Fe.makeSpan(['mord', 'text'].concat(i.sizingClasses(e)), Fe.tryCombineChars(n), i)
        },
        mathmlBuilder(t, e) {
          var r = new dt.TextNode(TG(t)),
            n = new dt.MathNode('mtext', [r])
          return n.setAttribute('mathvariant', 'monospace'), n
        }
      })
      ;(TG = o(t => t.body.replace(/ /g, t.star ? '\u2423' : '\xA0'), 'makeVerb')),
        (yh = FG),
        (gV = `[ \r
	]`),
        (n5e = '\\\\[a-zA-Z@]+'),
        (i5e = '\\\\[^\uD800-\uDFFF]'),
        (a5e = '(' + n5e + ')' + gV + '*'),
        (s5e = `\\\\(
|[ \r	]+
?)[ \r	]*`),
        (J7 = '[\u0300-\u036F]'),
        (o5e = new RegExp(J7 + '+$')),
        (l5e =
          '(' +
          gV +
          '+)|' +
          (s5e + '|') +
          '([!-\\[\\]-\u2027\u202A-\uD7FF\uF900-\uFFFF]' +
          (J7 + '*') +
          '|[\uD800-\uDBFF][\uDC00-\uDFFF]' +
          (J7 + '*') +
          '|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5' +
          ('|' + a5e) +
          ('|' + i5e + ')')),
        (A3 = class {
          static {
            o(this, 'Lexer')
          }
          constructor(e, r) {
            ;(this.input = void 0),
              (this.settings = void 0),
              (this.tokenRegex = void 0),
              (this.catcodes = void 0),
              (this.input = e),
              (this.settings = r),
              (this.tokenRegex = new RegExp(l5e, 'g')),
              (this.catcodes = { '%': 14, '~': 13 })
          }
          setCatcode(e, r) {
            this.catcodes[e] = r
          }
          lex() {
            var e = this.input,
              r = this.tokenRegex.lastIndex
            if (r === e.length) return new _o('EOF', new Qs(this, r, r))
            var n = this.tokenRegex.exec(e)
            if (n === null || n.index !== r) throw new pt("Unexpected character: '" + e[r] + "'", new _o(e[r], new Qs(this, r, r + 1)))
            var i = n[6] || n[3] || (n[2] ? '\\ ' : ' ')
            if (this.catcodes[i] === 14) {
              var a = e.indexOf(
                `
`,
                this.tokenRegex.lastIndex
              )
              return (
                a === -1
                  ? ((this.tokenRegex.lastIndex = e.length),
                    this.settings.reportNonstrict('commentAtEnd', '% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)'))
                  : (this.tokenRegex.lastIndex = a + 1),
                this.lex()
              )
            }
            return new _o(i, new Qs(this, r, this.tokenRegex.lastIndex))
          }
        }),
        (eA = class {
          static {
            o(this, 'Namespace')
          }
          constructor(e, r) {
            e === void 0 && (e = {}),
              r === void 0 && (r = {}),
              (this.current = void 0),
              (this.builtins = void 0),
              (this.undefStack = void 0),
              (this.current = r),
              (this.builtins = e),
              (this.undefStack = [])
          }
          beginGroup() {
            this.undefStack.push({})
          }
          endGroup() {
            if (this.undefStack.length === 0) throw new pt('Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug')
            var e = this.undefStack.pop()
            for (var r in e) e.hasOwnProperty(r) && (e[r] == null ? delete this.current[r] : (this.current[r] = e[r]))
          }
          endGroups() {
            for (; this.undefStack.length > 0; ) this.endGroup()
          }
          has(e) {
            return this.current.hasOwnProperty(e) || this.builtins.hasOwnProperty(e)
          }
          get(e) {
            return this.current.hasOwnProperty(e) ? this.current[e] : this.builtins[e]
          }
          set(e, r, n) {
            if ((n === void 0 && (n = !1), n)) {
              for (var i = 0; i < this.undefStack.length; i++) delete this.undefStack[i][e]
              this.undefStack.length > 0 && (this.undefStack[this.undefStack.length - 1][e] = r)
            } else {
              var a = this.undefStack[this.undefStack.length - 1]
              a && !a.hasOwnProperty(e) && (a[e] = this.current[e])
            }
            r == null ? delete this.current[e] : (this.current[e] = r)
          }
        }),
        (c5e = aV)
      fe('\\noexpand', function (t) {
        var e = t.popToken()
        return t.isExpandable(e.text) && ((e.noexpand = !0), (e.treatAsRelax = !0)), { tokens: [e], numArgs: 0 }
      })
      fe('\\expandafter', function (t) {
        var e = t.popToken()
        return t.expandOnce(!0), { tokens: [e], numArgs: 0 }
      })
      fe('\\@firstoftwo', function (t) {
        var e = t.consumeArgs(2)
        return { tokens: e[0], numArgs: 0 }
      })
      fe('\\@secondoftwo', function (t) {
        var e = t.consumeArgs(2)
        return { tokens: e[1], numArgs: 0 }
      })
      fe('\\@ifnextchar', function (t) {
        var e = t.consumeArgs(3)
        t.consumeSpaces()
        var r = t.future()
        return e[0].length === 1 && e[0][0].text === r.text ? { tokens: e[1], numArgs: 0 } : { tokens: e[2], numArgs: 0 }
      })
      fe('\\@ifstar', '\\@ifnextchar *{\\@firstoftwo{#1}}')
      fe('\\TextOrMath', function (t) {
        var e = t.consumeArgs(2)
        return t.mode === 'text' ? { tokens: e[0], numArgs: 0 } : { tokens: e[1], numArgs: 0 }
      })
      wG = { 0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, a: 10, A: 10, b: 11, B: 11, c: 12, C: 12, d: 13, D: 13, e: 14, E: 14, f: 15, F: 15 }
      fe('\\char', function (t) {
        var e = t.popToken(),
          r,
          n = ''
        if (e.text === "'") (r = 8), (e = t.popToken())
        else if (e.text === '"') (r = 16), (e = t.popToken())
        else if (e.text === '`')
          if (((e = t.popToken()), e.text[0] === '\\')) n = e.text.charCodeAt(1)
          else {
            if (e.text === 'EOF') throw new pt('\\char` missing argument')
            n = e.text.charCodeAt(0)
          }
        else r = 10
        if (r) {
          if (((n = wG[e.text]), n == null || n >= r)) throw new pt('Invalid base-' + r + ' digit ' + e.text)
          for (var i; (i = wG[t.future().text]) != null && i < r; ) (n *= r), (n += i), t.popToken()
        }
        return '\\@char{' + n + '}'
      })
      gA = o((t, e, r, n) => {
        var i = t.consumeArg().tokens
        if (i.length !== 1) throw new pt("\\newcommand's first argument must be a macro name")
        var a = i[0].text,
          s = t.isDefined(a)
        if (s && !e) throw new pt('\\newcommand{' + a + '} attempting to redefine ' + (a + '; use \\renewcommand'))
        if (!s && !r) throw new pt('\\renewcommand{' + a + '} when command ' + a + ' does not yet exist; use \\newcommand')
        var l = 0
        if (((i = t.consumeArg().tokens), i.length === 1 && i[0].text === '[')) {
          for (var u = '', h = t.expandNextToken(); h.text !== ']' && h.text !== 'EOF'; ) (u += h.text), (h = t.expandNextToken())
          if (!u.match(/^\s*[0-9]+\s*$/)) throw new pt('Invalid number of arguments: ' + u)
          ;(l = parseInt(u)), (i = t.consumeArg().tokens)
        }
        return (s && n) || t.macros.set(a, { tokens: i, numArgs: l }), ''
      }, 'newcommand')
      fe('\\newcommand', t => gA(t, !1, !0, !1))
      fe('\\renewcommand', t => gA(t, !0, !1, !1))
      fe('\\providecommand', t => gA(t, !0, !0, !0))
      fe('\\message', t => {
        var e = t.consumeArgs(1)[0]
        return (
          console.log(
            e
              .reverse()
              .map(r => r.text)
              .join('')
          ),
          ''
        )
      })
      fe('\\errmessage', t => {
        var e = t.consumeArgs(1)[0]
        return (
          console.error(
            e
              .reverse()
              .map(r => r.text)
              .join('')
          ),
          ''
        )
      })
      fe('\\show', t => {
        var e = t.popToken(),
          r = e.text
        return console.log(e, t.macros.get(r), yh[r], An.math[r], An.text[r]), ''
      })
      fe('\\bgroup', '{')
      fe('\\egroup', '}')
      fe('~', '\\nobreakspace')
      fe('\\lq', '`')
      fe('\\rq', "'")
      fe('\\aa', '\\r a')
      fe('\\AA', '\\r A')
      fe('\\textcopyright', '\\html@mathml{\\textcircled{c}}{\\char`\xA9}')
      fe('\\copyright', '\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}')
      fe('\\textregistered', '\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`\xAE}')
      fe('\u212C', '\\mathscr{B}')
      fe('\u2130', '\\mathscr{E}')
      fe('\u2131', '\\mathscr{F}')
      fe('\u210B', '\\mathscr{H}')
      fe('\u2110', '\\mathscr{I}')
      fe('\u2112', '\\mathscr{L}')
      fe('\u2133', '\\mathscr{M}')
      fe('\u211B', '\\mathscr{R}')
      fe('\u212D', '\\mathfrak{C}')
      fe('\u210C', '\\mathfrak{H}')
      fe('\u2128', '\\mathfrak{Z}')
      fe('\\Bbbk', '\\Bbb{k}')
      fe('\xB7', '\\cdotp')
      fe('\\llap', '\\mathllap{\\textrm{#1}}')
      fe('\\rlap', '\\mathrlap{\\textrm{#1}}')
      fe('\\clap', '\\mathclap{\\textrm{#1}}')
      fe('\\mathstrut', '\\vphantom{(}')
      fe('\\underbar', '\\underline{\\text{#1}}')
      fe('\\not', '\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}')
      fe('\\neq', '\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`\u2260}}')
      fe('\\ne', '\\neq')
      fe('\u2260', '\\neq')
      fe('\\notin', '\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`\u2209}}')
      fe('\u2209', '\\notin')
      fe('\u2258', '\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`\u2258}}')
      fe('\u2259', '\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`\u2258}}')
      fe('\u225A', '\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`\u225A}}')
      fe('\u225B', '\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`\u225B}}')
      fe('\u225D', '\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`\u225D}}')
      fe('\u225E', '\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`\u225E}}')
      fe('\u225F', '\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`\u225F}}')
      fe('\u27C2', '\\perp')
      fe('\u203C', '\\mathclose{!\\mkern-0.8mu!}')
      fe('\u220C', '\\notni')
      fe('\u231C', '\\ulcorner')
      fe('\u231D', '\\urcorner')
      fe('\u231E', '\\llcorner')
      fe('\u231F', '\\lrcorner')
      fe('\xA9', '\\copyright')
      fe('\xAE', '\\textregistered')
      fe('\uFE0F', '\\textregistered')
      fe('\\ulcorner', '\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}')
      fe('\\urcorner', '\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}')
      fe('\\llcorner', '\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}')
      fe('\\lrcorner', '\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}')
      fe('\\vdots', '{\\varvdots\\rule{0pt}{15pt}}')
      fe('\u22EE', '\\vdots')
      fe('\\varGamma', '\\mathit{\\Gamma}')
      fe('\\varDelta', '\\mathit{\\Delta}')
      fe('\\varTheta', '\\mathit{\\Theta}')
      fe('\\varLambda', '\\mathit{\\Lambda}')
      fe('\\varXi', '\\mathit{\\Xi}')
      fe('\\varPi', '\\mathit{\\Pi}')
      fe('\\varSigma', '\\mathit{\\Sigma}')
      fe('\\varUpsilon', '\\mathit{\\Upsilon}')
      fe('\\varPhi', '\\mathit{\\Phi}')
      fe('\\varPsi', '\\mathit{\\Psi}')
      fe('\\varOmega', '\\mathit{\\Omega}')
      fe('\\substack', '\\begin{subarray}{c}#1\\end{subarray}')
      fe('\\colon', '\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax')
      fe('\\boxed', '\\fbox{$\\displaystyle{#1}$}')
      fe('\\iff', '\\DOTSB\\;\\Longleftrightarrow\\;')
      fe('\\implies', '\\DOTSB\\;\\Longrightarrow\\;')
      fe('\\impliedby', '\\DOTSB\\;\\Longleftarrow\\;')
      fe('\\dddot', '{\\overset{\\raisebox{-0.1ex}{\\normalsize ...}}{#1}}')
      fe('\\ddddot', '{\\overset{\\raisebox{-0.1ex}{\\normalsize ....}}{#1}}')
      kG = {
        ',': '\\dotsc',
        '\\not': '\\dotsb',
        '+': '\\dotsb',
        '=': '\\dotsb',
        '<': '\\dotsb',
        '>': '\\dotsb',
        '-': '\\dotsb',
        '*': '\\dotsb',
        ':': '\\dotsb',
        '\\DOTSB': '\\dotsb',
        '\\coprod': '\\dotsb',
        '\\bigvee': '\\dotsb',
        '\\bigwedge': '\\dotsb',
        '\\biguplus': '\\dotsb',
        '\\bigcap': '\\dotsb',
        '\\bigcup': '\\dotsb',
        '\\prod': '\\dotsb',
        '\\sum': '\\dotsb',
        '\\bigotimes': '\\dotsb',
        '\\bigoplus': '\\dotsb',
        '\\bigodot': '\\dotsb',
        '\\bigsqcup': '\\dotsb',
        '\\And': '\\dotsb',
        '\\longrightarrow': '\\dotsb',
        '\\Longrightarrow': '\\dotsb',
        '\\longleftarrow': '\\dotsb',
        '\\Longleftarrow': '\\dotsb',
        '\\longleftrightarrow': '\\dotsb',
        '\\Longleftrightarrow': '\\dotsb',
        '\\mapsto': '\\dotsb',
        '\\longmapsto': '\\dotsb',
        '\\hookrightarrow': '\\dotsb',
        '\\doteq': '\\dotsb',
        '\\mathbin': '\\dotsb',
        '\\mathrel': '\\dotsb',
        '\\relbar': '\\dotsb',
        '\\Relbar': '\\dotsb',
        '\\xrightarrow': '\\dotsb',
        '\\xleftarrow': '\\dotsb',
        '\\DOTSI': '\\dotsi',
        '\\int': '\\dotsi',
        '\\oint': '\\dotsi',
        '\\iint': '\\dotsi',
        '\\iiint': '\\dotsi',
        '\\iiiint': '\\dotsi',
        '\\idotsint': '\\dotsi',
        '\\DOTSX': '\\dotsx'
      }
      fe('\\dots', function (t) {
        var e = '\\dotso',
          r = t.expandAfterFuture().text
        return r in kG ? (e = kG[r]) : (r.slice(0, 4) === '\\not' || (r in An.math && Jt.contains(['bin', 'rel'], An.math[r].group))) && (e = '\\dotsb'), e
      })
      yA = {
        ')': !0,
        ']': !0,
        '\\rbrack': !0,
        '\\}': !0,
        '\\rbrace': !0,
        '\\rangle': !0,
        '\\rceil': !0,
        '\\rfloor': !0,
        '\\rgroup': !0,
        '\\rmoustache': !0,
        '\\right': !0,
        '\\bigr': !0,
        '\\biggr': !0,
        '\\Bigr': !0,
        '\\Biggr': !0,
        $: !0,
        ';': !0,
        '.': !0,
        ',': !0
      }
      fe('\\dotso', function (t) {
        var e = t.future().text
        return e in yA ? '\\ldots\\,' : '\\ldots'
      })
      fe('\\dotsc', function (t) {
        var e = t.future().text
        return e in yA && e !== ',' ? '\\ldots\\,' : '\\ldots'
      })
      fe('\\cdots', function (t) {
        var e = t.future().text
        return e in yA ? '\\@cdots\\,' : '\\@cdots'
      })
      fe('\\dotsb', '\\cdots')
      fe('\\dotsm', '\\cdots')
      fe('\\dotsi', '\\!\\cdots')
      fe('\\dotsx', '\\ldots\\,')
      fe('\\DOTSI', '\\relax')
      fe('\\DOTSB', '\\relax')
      fe('\\DOTSX', '\\relax')
      fe('\\tmspace', '\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax')
      fe('\\,', '\\tmspace+{3mu}{.1667em}')
      fe('\\thinspace', '\\,')
      fe('\\>', '\\mskip{4mu}')
      fe('\\:', '\\tmspace+{4mu}{.2222em}')
      fe('\\medspace', '\\:')
      fe('\\;', '\\tmspace+{5mu}{.2777em}')
      fe('\\thickspace', '\\;')
      fe('\\!', '\\tmspace-{3mu}{.1667em}')
      fe('\\negthinspace', '\\!')
      fe('\\negmedspace', '\\tmspace-{4mu}{.2222em}')
      fe('\\negthickspace', '\\tmspace-{5mu}{.277em}')
      fe('\\enspace', '\\kern.5em ')
      fe('\\enskip', '\\hskip.5em\\relax')
      fe('\\quad', '\\hskip1em\\relax')
      fe('\\qquad', '\\hskip2em\\relax')
      fe('\\tag', '\\@ifstar\\tag@literal\\tag@paren')
      fe('\\tag@paren', '\\tag@literal{({#1})}')
      fe('\\tag@literal', t => {
        if (t.macros.get('\\df@tag')) throw new pt('Multiple \\tag')
        return '\\gdef\\df@tag{\\text{#1}}'
      })
      fe('\\bmod', '\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}')
      fe('\\pod', '\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)')
      fe('\\pmod', '\\pod{{\\rm mod}\\mkern6mu#1}')
      fe('\\mod', '\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1')
      fe('\\newline', '\\\\\\relax')
      fe('\\TeX', '\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}')
      yV = Et(Jl['Main-Regular'][84][1] - 0.7 * Jl['Main-Regular'][65][1])
      fe('\\LaTeX', '\\textrm{\\html@mathml{' + ('L\\kern-.36em\\raisebox{' + yV + '}{\\scriptstyle A}') + '\\kern-.15em\\TeX}{LaTeX}}')
      fe('\\KaTeX', '\\textrm{\\html@mathml{' + ('K\\kern-.17em\\raisebox{' + yV + '}{\\scriptstyle A}') + '\\kern-.15em\\TeX}{KaTeX}}')
      fe('\\hspace', '\\@ifstar\\@hspacer\\@hspace')
      fe('\\@hspace', '\\hskip #1\\relax')
      fe('\\@hspacer', '\\rule{0pt}{0pt}\\hskip #1\\relax')
      fe('\\ordinarycolon', ':')
      fe('\\vcentcolon', '\\mathrel{\\mathop\\ordinarycolon}')
      fe('\\dblcolon', '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}')
      fe('\\coloneqq', '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}')
      fe('\\Coloneqq', '\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}')
      fe('\\coloneq', '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}')
      fe('\\Coloneq', '\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}')
      fe('\\eqqcolon', '\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}')
      fe('\\Eqqcolon', '\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}')
      fe('\\eqcolon', '\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}')
      fe('\\Eqcolon', '\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}')
      fe('\\colonapprox', '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}')
      fe('\\Colonapprox', '\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}')
      fe('\\colonsim', '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}')
      fe('\\Colonsim', '\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}')
      fe('\u2237', '\\dblcolon')
      fe('\u2239', '\\eqcolon')
      fe('\u2254', '\\coloneqq')
      fe('\u2255', '\\eqqcolon')
      fe('\u2A74', '\\Coloneqq')
      fe('\\ratio', '\\vcentcolon')
      fe('\\coloncolon', '\\dblcolon')
      fe('\\colonequals', '\\coloneqq')
      fe('\\coloncolonequals', '\\Coloneqq')
      fe('\\equalscolon', '\\eqqcolon')
      fe('\\equalscoloncolon', '\\Eqqcolon')
      fe('\\colonminus', '\\coloneq')
      fe('\\coloncolonminus', '\\Coloneq')
      fe('\\minuscolon', '\\eqcolon')
      fe('\\minuscoloncolon', '\\Eqcolon')
      fe('\\coloncolonapprox', '\\Colonapprox')
      fe('\\coloncolonsim', '\\Colonsim')
      fe('\\simcolon', '\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}')
      fe('\\simcoloncolon', '\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}')
      fe('\\approxcolon', '\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}')
      fe('\\approxcoloncolon', '\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}')
      fe('\\notni', '\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220C}}')
      fe('\\limsup', '\\DOTSB\\operatorname*{lim\\,sup}')
      fe('\\liminf', '\\DOTSB\\operatorname*{lim\\,inf}')
      fe('\\injlim', '\\DOTSB\\operatorname*{inj\\,lim}')
      fe('\\projlim', '\\DOTSB\\operatorname*{proj\\,lim}')
      fe('\\varlimsup', '\\DOTSB\\operatorname*{\\overline{lim}}')
      fe('\\varliminf', '\\DOTSB\\operatorname*{\\underline{lim}}')
      fe('\\varinjlim', '\\DOTSB\\operatorname*{\\underrightarrow{lim}}')
      fe('\\varprojlim', '\\DOTSB\\operatorname*{\\underleftarrow{lim}}')
      fe('\\gvertneqq', '\\html@mathml{\\@gvertneqq}{\u2269}')
      fe('\\lvertneqq', '\\html@mathml{\\@lvertneqq}{\u2268}')
      fe('\\ngeqq', '\\html@mathml{\\@ngeqq}{\u2271}')
      fe('\\ngeqslant', '\\html@mathml{\\@ngeqslant}{\u2271}')
      fe('\\nleqq', '\\html@mathml{\\@nleqq}{\u2270}')
      fe('\\nleqslant', '\\html@mathml{\\@nleqslant}{\u2270}')
      fe('\\nshortmid', '\\html@mathml{\\@nshortmid}{\u2224}')
      fe('\\nshortparallel', '\\html@mathml{\\@nshortparallel}{\u2226}')
      fe('\\nsubseteqq', '\\html@mathml{\\@nsubseteqq}{\u2288}')
      fe('\\nsupseteqq', '\\html@mathml{\\@nsupseteqq}{\u2289}')
      fe('\\varsubsetneq', '\\html@mathml{\\@varsubsetneq}{\u228A}')
      fe('\\varsubsetneqq', '\\html@mathml{\\@varsubsetneqq}{\u2ACB}')
      fe('\\varsupsetneq', '\\html@mathml{\\@varsupsetneq}{\u228B}')
      fe('\\varsupsetneqq', '\\html@mathml{\\@varsupsetneqq}{\u2ACC}')
      fe('\\imath', '\\html@mathml{\\@imath}{\u0131}')
      fe('\\jmath', '\\html@mathml{\\@jmath}{\u0237}')
      fe('\\llbracket', '\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`\u27E6}}')
      fe('\\rrbracket', '\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`\u27E7}}')
      fe('\u27E6', '\\llbracket')
      fe('\u27E7', '\\rrbracket')
      fe('\\lBrace', '\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`\u2983}}')
      fe('\\rBrace', '\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`\u2984}}')
      fe('\u2983', '\\lBrace')
      fe('\u2984', '\\rBrace')
      fe('\\minuso', '\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`\u29B5}}')
      fe('\u29B5', '\\minuso')
      fe('\\darr', '\\downarrow')
      fe('\\dArr', '\\Downarrow')
      fe('\\Darr', '\\Downarrow')
      fe('\\lang', '\\langle')
      fe('\\rang', '\\rangle')
      fe('\\uarr', '\\uparrow')
      fe('\\uArr', '\\Uparrow')
      fe('\\Uarr', '\\Uparrow')
      fe('\\N', '\\mathbb{N}')
      fe('\\R', '\\mathbb{R}')
      fe('\\Z', '\\mathbb{Z}')
      fe('\\alef', '\\aleph')
      fe('\\alefsym', '\\aleph')
      fe('\\Alpha', '\\mathrm{A}')
      fe('\\Beta', '\\mathrm{B}')
      fe('\\bull', '\\bullet')
      fe('\\Chi', '\\mathrm{X}')
      fe('\\clubs', '\\clubsuit')
      fe('\\cnums', '\\mathbb{C}')
      fe('\\Complex', '\\mathbb{C}')
      fe('\\Dagger', '\\ddagger')
      fe('\\diamonds', '\\diamondsuit')
      fe('\\empty', '\\emptyset')
      fe('\\Epsilon', '\\mathrm{E}')
      fe('\\Eta', '\\mathrm{H}')
      fe('\\exist', '\\exists')
      fe('\\harr', '\\leftrightarrow')
      fe('\\hArr', '\\Leftrightarrow')
      fe('\\Harr', '\\Leftrightarrow')
      fe('\\hearts', '\\heartsuit')
      fe('\\image', '\\Im')
      fe('\\infin', '\\infty')
      fe('\\Iota', '\\mathrm{I}')
      fe('\\isin', '\\in')
      fe('\\Kappa', '\\mathrm{K}')
      fe('\\larr', '\\leftarrow')
      fe('\\lArr', '\\Leftarrow')
      fe('\\Larr', '\\Leftarrow')
      fe('\\lrarr', '\\leftrightarrow')
      fe('\\lrArr', '\\Leftrightarrow')
      fe('\\Lrarr', '\\Leftrightarrow')
      fe('\\Mu', '\\mathrm{M}')
      fe('\\natnums', '\\mathbb{N}')
      fe('\\Nu', '\\mathrm{N}')
      fe('\\Omicron', '\\mathrm{O}')
      fe('\\plusmn', '\\pm')
      fe('\\rarr', '\\rightarrow')
      fe('\\rArr', '\\Rightarrow')
      fe('\\Rarr', '\\Rightarrow')
      fe('\\real', '\\Re')
      fe('\\reals', '\\mathbb{R}')
      fe('\\Reals', '\\mathbb{R}')
      fe('\\Rho', '\\mathrm{P}')
      fe('\\sdot', '\\cdot')
      fe('\\sect', '\\S')
      fe('\\spades', '\\spadesuit')
      fe('\\sub', '\\subset')
      fe('\\sube', '\\subseteq')
      fe('\\supe', '\\supseteq')
      fe('\\Tau', '\\mathrm{T}')
      fe('\\thetasym', '\\vartheta')
      fe('\\weierp', '\\wp')
      fe('\\Zeta', '\\mathrm{Z}')
      fe('\\argmin', '\\DOTSB\\operatorname*{arg\\,min}')
      fe('\\argmax', '\\DOTSB\\operatorname*{arg\\,max}')
      fe('\\plim', '\\DOTSB\\mathop{\\operatorname{plim}}\\limits')
      fe('\\bra', '\\mathinner{\\langle{#1}|}')
      fe('\\ket', '\\mathinner{|{#1}\\rangle}')
      fe('\\braket', '\\mathinner{\\langle{#1}\\rangle}')
      fe('\\Bra', '\\left\\langle#1\\right|')
      fe('\\Ket', '\\left|#1\\right\\rangle')
      vV = o(
        t => e => {
          var r = e.consumeArg().tokens,
            n = e.consumeArg().tokens,
            i = e.consumeArg().tokens,
            a = e.consumeArg().tokens,
            s = e.macros.get('|'),
            l = e.macros.get('\\|')
          e.macros.beginGroup()
          var u = o(
            d => p => {
              t && (p.macros.set('|', s), i.length && p.macros.set('\\|', l))
              var m = d
              if (!d && i.length) {
                var g = p.future()
                g.text === '|' && (p.popToken(), (m = !0))
              }
              return { tokens: m ? i : n, numArgs: 0 }
            },
            'midMacro'
          )
          e.macros.set('|', u(!1)), i.length && e.macros.set('\\|', u(!0))
          var h = e.consumeArg().tokens,
            f = e.expandTokens([...a, ...h, ...r])
          return e.macros.endGroup(), { tokens: f.reverse(), numArgs: 0 }
        },
        'braketHelper'
      )
      fe('\\bra@ket', vV(!1))
      fe('\\bra@set', vV(!0))
      fe('\\Braket', '\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}')
      fe('\\Set', '\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}')
      fe('\\set', '\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}')
      fe('\\angln', '{\\angl n}')
      fe('\\blue', '\\textcolor{##6495ed}{#1}')
      fe('\\orange', '\\textcolor{##ffa500}{#1}')
      fe('\\pink', '\\textcolor{##ff00af}{#1}')
      fe('\\red', '\\textcolor{##df0030}{#1}')
      fe('\\green', '\\textcolor{##28ae7b}{#1}')
      fe('\\gray', '\\textcolor{gray}{#1}')
      fe('\\purple', '\\textcolor{##9d38bd}{#1}')
      fe('\\blueA', '\\textcolor{##ccfaff}{#1}')
      fe('\\blueB', '\\textcolor{##80f6ff}{#1}')
      fe('\\blueC', '\\textcolor{##63d9ea}{#1}')
      fe('\\blueD', '\\textcolor{##11accd}{#1}')
      fe('\\blueE', '\\textcolor{##0c7f99}{#1}')
      fe('\\tealA', '\\textcolor{##94fff5}{#1}')
      fe('\\tealB', '\\textcolor{##26edd5}{#1}')
      fe('\\tealC', '\\textcolor{##01d1c1}{#1}')
      fe('\\tealD', '\\textcolor{##01a995}{#1}')
      fe('\\tealE', '\\textcolor{##208170}{#1}')
      fe('\\greenA', '\\textcolor{##b6ffb0}{#1}')
      fe('\\greenB', '\\textcolor{##8af281}{#1}')
      fe('\\greenC', '\\textcolor{##74cf70}{#1}')
      fe('\\greenD', '\\textcolor{##1fab54}{#1}')
      fe('\\greenE', '\\textcolor{##0d923f}{#1}')
      fe('\\goldA', '\\textcolor{##ffd0a9}{#1}')
      fe('\\goldB', '\\textcolor{##ffbb71}{#1}')
      fe('\\goldC', '\\textcolor{##ff9c39}{#1}')
      fe('\\goldD', '\\textcolor{##e07d10}{#1}')
      fe('\\goldE', '\\textcolor{##a75a05}{#1}')
      fe('\\redA', '\\textcolor{##fca9a9}{#1}')
      fe('\\redB', '\\textcolor{##ff8482}{#1}')
      fe('\\redC', '\\textcolor{##f9685d}{#1}')
      fe('\\redD', '\\textcolor{##e84d39}{#1}')
      fe('\\redE', '\\textcolor{##bc2612}{#1}')
      fe('\\maroonA', '\\textcolor{##ffbde0}{#1}')
      fe('\\maroonB', '\\textcolor{##ff92c6}{#1}')
      fe('\\maroonC', '\\textcolor{##ed5fa6}{#1}')
      fe('\\maroonD', '\\textcolor{##ca337c}{#1}')
      fe('\\maroonE', '\\textcolor{##9e034e}{#1}')
      fe('\\purpleA', '\\textcolor{##ddd7ff}{#1}')
      fe('\\purpleB', '\\textcolor{##c6b9fc}{#1}')
      fe('\\purpleC', '\\textcolor{##aa87ff}{#1}')
      fe('\\purpleD', '\\textcolor{##7854ab}{#1}')
      fe('\\purpleE', '\\textcolor{##543b78}{#1}')
      fe('\\mintA', '\\textcolor{##f5f9e8}{#1}')
      fe('\\mintB', '\\textcolor{##edf2df}{#1}')
      fe('\\mintC', '\\textcolor{##e0e5cc}{#1}')
      fe('\\grayA', '\\textcolor{##f6f7f7}{#1}')
      fe('\\grayB', '\\textcolor{##f0f1f2}{#1}')
      fe('\\grayC', '\\textcolor{##e3e5e6}{#1}')
      fe('\\grayD', '\\textcolor{##d6d8da}{#1}')
      fe('\\grayE', '\\textcolor{##babec2}{#1}')
      fe('\\grayF', '\\textcolor{##888d93}{#1}')
      fe('\\grayG', '\\textcolor{##626569}{#1}')
      fe('\\grayH', '\\textcolor{##3b3e40}{#1}')
      fe('\\grayI', '\\textcolor{##21242c}{#1}')
      fe('\\kaBlue', '\\textcolor{##314453}{#1}')
      fe('\\kaGreen', '\\textcolor{##71B307}{#1}')
      ;(xV = { '^': !0, _: !0, '\\limits': !0, '\\nolimits': !0 }),
        (tA = class {
          static {
            o(this, 'MacroExpander')
          }
          constructor(e, r, n) {
            ;(this.settings = void 0),
              (this.expansionCount = void 0),
              (this.lexer = void 0),
              (this.macros = void 0),
              (this.stack = void 0),
              (this.mode = void 0),
              (this.settings = r),
              (this.expansionCount = 0),
              this.feed(e),
              (this.macros = new eA(c5e, r.macros)),
              (this.mode = n),
              (this.stack = [])
          }
          feed(e) {
            this.lexer = new A3(e, this.settings)
          }
          switchMode(e) {
            this.mode = e
          }
          beginGroup() {
            this.macros.beginGroup()
          }
          endGroup() {
            this.macros.endGroup()
          }
          endGroups() {
            this.macros.endGroups()
          }
          future() {
            return this.stack.length === 0 && this.pushToken(this.lexer.lex()), this.stack[this.stack.length - 1]
          }
          popToken() {
            return this.future(), this.stack.pop()
          }
          pushToken(e) {
            this.stack.push(e)
          }
          pushTokens(e) {
            this.stack.push(...e)
          }
          scanArgument(e) {
            var r, n, i
            if (e) {
              if ((this.consumeSpaces(), this.future().text !== '[')) return null
              ;(r = this.popToken()), ({ tokens: i, end: n } = this.consumeArg([']']))
            } else ({ tokens: i, start: r, end: n } = this.consumeArg())
            return this.pushToken(new _o('EOF', n.loc)), this.pushTokens(i), r.range(n, '')
          }
          consumeSpaces() {
            for (;;) {
              var e = this.future()
              if (e.text === ' ') this.stack.pop()
              else break
            }
          }
          consumeArg(e) {
            var r = [],
              n = e && e.length > 0
            n || this.consumeSpaces()
            var i = this.future(),
              a,
              s = 0,
              l = 0
            do {
              if (((a = this.popToken()), r.push(a), a.text === '{')) ++s
              else if (a.text === '}') {
                if ((--s, s === -1)) throw new pt('Extra }', a)
              } else if (a.text === 'EOF') throw new pt("Unexpected end of input in a macro argument, expected '" + (e && n ? e[l] : '}') + "'", a)
              if (e && n)
                if ((s === 0 || (s === 1 && e[l] === '{')) && a.text === e[l]) {
                  if ((++l, l === e.length)) {
                    r.splice(-l, l)
                    break
                  }
                } else l = 0
            } while (s !== 0 || n)
            return i.text === '{' && r[r.length - 1].text === '}' && (r.pop(), r.shift()), r.reverse(), { tokens: r, start: i, end: a }
          }
          consumeArgs(e, r) {
            if (r) {
              if (r.length !== e + 1) throw new pt("The length of delimiters doesn't match the number of args!")
              for (var n = r[0], i = 0; i < n.length; i++) {
                var a = this.popToken()
                if (n[i] !== a.text) throw new pt("Use of the macro doesn't match its definition", a)
              }
            }
            for (var s = [], l = 0; l < e; l++) s.push(this.consumeArg(r && r[l + 1]).tokens)
            return s
          }
          countExpansion(e) {
            if (((this.expansionCount += e), this.expansionCount > this.settings.maxExpand))
              throw new pt('Too many expansions: infinite loop or need to increase maxExpand setting')
          }
          expandOnce(e) {
            var r = this.popToken(),
              n = r.text,
              i = r.noexpand ? null : this._getExpansion(n)
            if (i == null || (e && i.unexpandable)) {
              if (e && i == null && n[0] === '\\' && !this.isDefined(n)) throw new pt('Undefined control sequence: ' + n)
              return this.pushToken(r), !1
            }
            this.countExpansion(1)
            var a = i.tokens,
              s = this.consumeArgs(i.numArgs, i.delimiters)
            if (i.numArgs) {
              a = a.slice()
              for (var l = a.length - 1; l >= 0; --l) {
                var u = a[l]
                if (u.text === '#') {
                  if (l === 0) throw new pt('Incomplete placeholder at end of macro body', u)
                  if (((u = a[--l]), u.text === '#')) a.splice(l + 1, 1)
                  else if (/^[1-9]$/.test(u.text)) a.splice(l, 2, ...s[+u.text - 1])
                  else throw new pt('Not a valid argument number', u)
                }
              }
            }
            return this.pushTokens(a), a.length
          }
          expandAfterFuture() {
            return this.expandOnce(), this.future()
          }
          expandNextToken() {
            for (;;)
              if (this.expandOnce() === !1) {
                var e = this.stack.pop()
                return e.treatAsRelax && (e.text = '\\relax'), e
              }
            throw new Error()
          }
          expandMacro(e) {
            return this.macros.has(e) ? this.expandTokens([new _o(e)]) : void 0
          }
          expandTokens(e) {
            var r = [],
              n = this.stack.length
            for (this.pushTokens(e); this.stack.length > n; )
              if (this.expandOnce(!0) === !1) {
                var i = this.stack.pop()
                i.treatAsRelax && ((i.noexpand = !1), (i.treatAsRelax = !1)), r.push(i)
              }
            return this.countExpansion(r.length), r
          }
          expandMacroAsText(e) {
            var r = this.expandMacro(e)
            return r && r.map(n => n.text).join('')
          }
          _getExpansion(e) {
            var r = this.macros.get(e)
            if (r == null) return r
            if (e.length === 1) {
              var n = this.lexer.catcodes[e]
              if (n != null && n !== 13) return
            }
            var i = typeof r == 'function' ? r(this) : r
            if (typeof i == 'string') {
              var a = 0
              if (i.indexOf('#') !== -1) for (var s = i.replace(/##/g, ''); s.indexOf('#' + (a + 1)) !== -1; ) ++a
              for (var l = new A3(i, this.settings), u = [], h = l.lex(); h.text !== 'EOF'; ) u.push(h), (h = l.lex())
              u.reverse()
              var f = { tokens: u, numArgs: a }
              return f
            }
            return i
          }
          isDefined(e) {
            return this.macros.has(e) || yh.hasOwnProperty(e) || An.math.hasOwnProperty(e) || An.text.hasOwnProperty(e) || xV.hasOwnProperty(e)
          }
          isExpandable(e) {
            var r = this.macros.get(e)
            return r != null ? typeof r == 'string' || typeof r == 'function' || !r.unexpandable : yh.hasOwnProperty(e) && !yh[e].primitive
          }
        }),
        (EG = /^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/),
        (x3 = Object.freeze({
          '\u208A': '+',
          '\u208B': '-',
          '\u208C': '=',
          '\u208D': '(',
          '\u208E': ')',
          '\u2080': '0',
          '\u2081': '1',
          '\u2082': '2',
          '\u2083': '3',
          '\u2084': '4',
          '\u2085': '5',
          '\u2086': '6',
          '\u2087': '7',
          '\u2088': '8',
          '\u2089': '9',
          '\u2090': 'a',
          '\u2091': 'e',
          '\u2095': 'h',
          '\u1D62': 'i',
          '\u2C7C': 'j',
          '\u2096': 'k',
          '\u2097': 'l',
          '\u2098': 'm',
          '\u2099': 'n',
          '\u2092': 'o',
          '\u209A': 'p',
          '\u1D63': 'r',
          '\u209B': 's',
          '\u209C': 't',
          '\u1D64': 'u',
          '\u1D65': 'v',
          '\u2093': 'x',
          '\u1D66': '\u03B2',
          '\u1D67': '\u03B3',
          '\u1D68': '\u03C1',
          '\u1D69': '\u03D5',
          '\u1D6A': '\u03C7',
          '\u207A': '+',
          '\u207B': '-',
          '\u207C': '=',
          '\u207D': '(',
          '\u207E': ')',
          '\u2070': '0',
          '\xB9': '1',
          '\xB2': '2',
          '\xB3': '3',
          '\u2074': '4',
          '\u2075': '5',
          '\u2076': '6',
          '\u2077': '7',
          '\u2078': '8',
          '\u2079': '9',
          '\u1D2C': 'A',
          '\u1D2E': 'B',
          '\u1D30': 'D',
          '\u1D31': 'E',
          '\u1D33': 'G',
          '\u1D34': 'H',
          '\u1D35': 'I',
          '\u1D36': 'J',
          '\u1D37': 'K',
          '\u1D38': 'L',
          '\u1D39': 'M',
          '\u1D3A': 'N',
          '\u1D3C': 'O',
          '\u1D3E': 'P',
          '\u1D3F': 'R',
          '\u1D40': 'T',
          '\u1D41': 'U',
          '\u2C7D': 'V',
          '\u1D42': 'W',
          '\u1D43': 'a',
          '\u1D47': 'b',
          '\u1D9C': 'c',
          '\u1D48': 'd',
          '\u1D49': 'e',
          '\u1DA0': 'f',
          '\u1D4D': 'g',
          ʰ: 'h',
          '\u2071': 'i',
          ʲ: 'j',
          '\u1D4F': 'k',
          ˡ: 'l',
          '\u1D50': 'm',
          ⁿ: 'n',
          '\u1D52': 'o',
          '\u1D56': 'p',
          ʳ: 'r',
          ˢ: 's',
          '\u1D57': 't',
          '\u1D58': 'u',
          '\u1D5B': 'v',
          ʷ: 'w',
          ˣ: 'x',
          ʸ: 'y',
          '\u1DBB': 'z',
          '\u1D5D': '\u03B2',
          '\u1D5E': '\u03B3',
          '\u1D5F': '\u03B4',
          '\u1D60': '\u03D5',
          '\u1D61': '\u03C7',
          '\u1DBF': '\u03B8'
        })),
        (U7 = {
          '\u0301': { text: "\\'", math: '\\acute' },
          '\u0300': { text: '\\`', math: '\\grave' },
          '\u0308': { text: '\\"', math: '\\ddot' },
          '\u0303': { text: '\\~', math: '\\tilde' },
          '\u0304': { text: '\\=', math: '\\bar' },
          '\u0306': { text: '\\u', math: '\\breve' },
          '\u030C': { text: '\\v', math: '\\check' },
          '\u0302': { text: '\\^', math: '\\hat' },
          '\u0307': { text: '\\.', math: '\\dot' },
          '\u030A': { text: '\\r', math: '\\mathring' },
          '\u030B': { text: '\\H' },
          '\u0327': { text: '\\c' }
        }),
        (SG = {
          á: 'a\u0301',
          à: 'a\u0300',
          ä: 'a\u0308',
          ǟ: 'a\u0308\u0304',
          ã: 'a\u0303',
          ā: 'a\u0304',
          ă: 'a\u0306',
          ắ: 'a\u0306\u0301',
          ằ: 'a\u0306\u0300',
          ẵ: 'a\u0306\u0303',
          ǎ: 'a\u030C',
          â: 'a\u0302',
          ấ: 'a\u0302\u0301',
          ầ: 'a\u0302\u0300',
          ẫ: 'a\u0302\u0303',
          ȧ: 'a\u0307',
          ǡ: 'a\u0307\u0304',
          å: 'a\u030A',
          ǻ: 'a\u030A\u0301',
          ḃ: 'b\u0307',
          ć: 'c\u0301',
          ḉ: 'c\u0327\u0301',
          č: 'c\u030C',
          ĉ: 'c\u0302',
          ċ: 'c\u0307',
          ç: 'c\u0327',
          ď: 'd\u030C',
          ḋ: 'd\u0307',
          ḑ: 'd\u0327',
          é: 'e\u0301',
          è: 'e\u0300',
          ë: 'e\u0308',
          ẽ: 'e\u0303',
          ē: 'e\u0304',
          ḗ: 'e\u0304\u0301',
          ḕ: 'e\u0304\u0300',
          ĕ: 'e\u0306',
          ḝ: 'e\u0327\u0306',
          ě: 'e\u030C',
          ê: 'e\u0302',
          ế: 'e\u0302\u0301',
          ề: 'e\u0302\u0300',
          ễ: 'e\u0302\u0303',
          ė: 'e\u0307',
          ȩ: 'e\u0327',
          ḟ: 'f\u0307',
          ǵ: 'g\u0301',
          ḡ: 'g\u0304',
          ğ: 'g\u0306',
          ǧ: 'g\u030C',
          ĝ: 'g\u0302',
          ġ: 'g\u0307',
          ģ: 'g\u0327',
          ḧ: 'h\u0308',
          ȟ: 'h\u030C',
          ĥ: 'h\u0302',
          ḣ: 'h\u0307',
          ḩ: 'h\u0327',
          í: 'i\u0301',
          ì: 'i\u0300',
          ï: 'i\u0308',
          ḯ: 'i\u0308\u0301',
          ĩ: 'i\u0303',
          ī: 'i\u0304',
          ĭ: 'i\u0306',
          ǐ: 'i\u030C',
          î: 'i\u0302',
          ǰ: 'j\u030C',
          ĵ: 'j\u0302',
          ḱ: 'k\u0301',
          ǩ: 'k\u030C',
          ķ: 'k\u0327',
          ĺ: 'l\u0301',
          ľ: 'l\u030C',
          ļ: 'l\u0327',
          ḿ: 'm\u0301',
          ṁ: 'm\u0307',
          ń: 'n\u0301',
          ǹ: 'n\u0300',
          ñ: 'n\u0303',
          ň: 'n\u030C',
          ṅ: 'n\u0307',
          ņ: 'n\u0327',
          ó: 'o\u0301',
          ò: 'o\u0300',
          ö: 'o\u0308',
          ȫ: 'o\u0308\u0304',
          õ: 'o\u0303',
          ṍ: 'o\u0303\u0301',
          ṏ: 'o\u0303\u0308',
          ȭ: 'o\u0303\u0304',
          ō: 'o\u0304',
          ṓ: 'o\u0304\u0301',
          ṑ: 'o\u0304\u0300',
          ŏ: 'o\u0306',
          ǒ: 'o\u030C',
          ô: 'o\u0302',
          ố: 'o\u0302\u0301',
          ồ: 'o\u0302\u0300',
          ỗ: 'o\u0302\u0303',
          ȯ: 'o\u0307',
          ȱ: 'o\u0307\u0304',
          ő: 'o\u030B',
          ṕ: 'p\u0301',
          ṗ: 'p\u0307',
          ŕ: 'r\u0301',
          ř: 'r\u030C',
          ṙ: 'r\u0307',
          ŗ: 'r\u0327',
          ś: 's\u0301',
          ṥ: 's\u0301\u0307',
          š: 's\u030C',
          ṧ: 's\u030C\u0307',
          ŝ: 's\u0302',
          ṡ: 's\u0307',
          ş: 's\u0327',
          ẗ: 't\u0308',
          ť: 't\u030C',
          ṫ: 't\u0307',
          ţ: 't\u0327',
          ú: 'u\u0301',
          ù: 'u\u0300',
          ü: 'u\u0308',
          ǘ: 'u\u0308\u0301',
          ǜ: 'u\u0308\u0300',
          ǖ: 'u\u0308\u0304',
          ǚ: 'u\u0308\u030C',
          ũ: 'u\u0303',
          ṹ: 'u\u0303\u0301',
          ū: 'u\u0304',
          ṻ: 'u\u0304\u0308',
          ŭ: 'u\u0306',
          ǔ: 'u\u030C',
          û: 'u\u0302',
          ů: 'u\u030A',
          ű: 'u\u030B',
          ṽ: 'v\u0303',
          ẃ: 'w\u0301',
          ẁ: 'w\u0300',
          ẅ: 'w\u0308',
          ŵ: 'w\u0302',
          ẇ: 'w\u0307',
          ẘ: 'w\u030A',
          ẍ: 'x\u0308',
          ẋ: 'x\u0307',
          ý: 'y\u0301',
          ỳ: 'y\u0300',
          ÿ: 'y\u0308',
          ỹ: 'y\u0303',
          ȳ: 'y\u0304',
          ŷ: 'y\u0302',
          ẏ: 'y\u0307',
          ẙ: 'y\u030A',
          ź: 'z\u0301',
          ž: 'z\u030C',
          ẑ: 'z\u0302',
          ż: 'z\u0307',
          Á: 'A\u0301',
          À: 'A\u0300',
          Ä: 'A\u0308',
          Ǟ: 'A\u0308\u0304',
          Ã: 'A\u0303',
          Ā: 'A\u0304',
          Ă: 'A\u0306',
          Ắ: 'A\u0306\u0301',
          Ằ: 'A\u0306\u0300',
          Ẵ: 'A\u0306\u0303',
          Ǎ: 'A\u030C',
          Â: 'A\u0302',
          Ấ: 'A\u0302\u0301',
          Ầ: 'A\u0302\u0300',
          Ẫ: 'A\u0302\u0303',
          Ȧ: 'A\u0307',
          Ǡ: 'A\u0307\u0304',
          Å: 'A\u030A',
          Ǻ: 'A\u030A\u0301',
          Ḃ: 'B\u0307',
          Ć: 'C\u0301',
          Ḉ: 'C\u0327\u0301',
          Č: 'C\u030C',
          Ĉ: 'C\u0302',
          Ċ: 'C\u0307',
          Ç: 'C\u0327',
          Ď: 'D\u030C',
          Ḋ: 'D\u0307',
          Ḑ: 'D\u0327',
          É: 'E\u0301',
          È: 'E\u0300',
          Ë: 'E\u0308',
          Ẽ: 'E\u0303',
          Ē: 'E\u0304',
          Ḗ: 'E\u0304\u0301',
          Ḕ: 'E\u0304\u0300',
          Ĕ: 'E\u0306',
          Ḝ: 'E\u0327\u0306',
          Ě: 'E\u030C',
          Ê: 'E\u0302',
          Ế: 'E\u0302\u0301',
          Ề: 'E\u0302\u0300',
          Ễ: 'E\u0302\u0303',
          Ė: 'E\u0307',
          Ȩ: 'E\u0327',
          Ḟ: 'F\u0307',
          Ǵ: 'G\u0301',
          Ḡ: 'G\u0304',
          Ğ: 'G\u0306',
          Ǧ: 'G\u030C',
          Ĝ: 'G\u0302',
          Ġ: 'G\u0307',
          Ģ: 'G\u0327',
          Ḧ: 'H\u0308',
          Ȟ: 'H\u030C',
          Ĥ: 'H\u0302',
          Ḣ: 'H\u0307',
          Ḩ: 'H\u0327',
          Í: 'I\u0301',
          Ì: 'I\u0300',
          Ï: 'I\u0308',
          Ḯ: 'I\u0308\u0301',
          Ĩ: 'I\u0303',
          Ī: 'I\u0304',
          Ĭ: 'I\u0306',
          Ǐ: 'I\u030C',
          Î: 'I\u0302',
          İ: 'I\u0307',
          Ĵ: 'J\u0302',
          Ḱ: 'K\u0301',
          Ǩ: 'K\u030C',
          Ķ: 'K\u0327',
          Ĺ: 'L\u0301',
          Ľ: 'L\u030C',
          Ļ: 'L\u0327',
          Ḿ: 'M\u0301',
          Ṁ: 'M\u0307',
          Ń: 'N\u0301',
          Ǹ: 'N\u0300',
          Ñ: 'N\u0303',
          Ň: 'N\u030C',
          Ṅ: 'N\u0307',
          Ņ: 'N\u0327',
          Ó: 'O\u0301',
          Ò: 'O\u0300',
          Ö: 'O\u0308',
          Ȫ: 'O\u0308\u0304',
          Õ: 'O\u0303',
          Ṍ: 'O\u0303\u0301',
          Ṏ: 'O\u0303\u0308',
          Ȭ: 'O\u0303\u0304',
          Ō: 'O\u0304',
          Ṓ: 'O\u0304\u0301',
          Ṑ: 'O\u0304\u0300',
          Ŏ: 'O\u0306',
          Ǒ: 'O\u030C',
          Ô: 'O\u0302',
          Ố: 'O\u0302\u0301',
          Ồ: 'O\u0302\u0300',
          Ỗ: 'O\u0302\u0303',
          Ȯ: 'O\u0307',
          Ȱ: 'O\u0307\u0304',
          Ő: 'O\u030B',
          Ṕ: 'P\u0301',
          Ṗ: 'P\u0307',
          Ŕ: 'R\u0301',
          Ř: 'R\u030C',
          Ṙ: 'R\u0307',
          Ŗ: 'R\u0327',
          Ś: 'S\u0301',
          Ṥ: 'S\u0301\u0307',
          Š: 'S\u030C',
          Ṧ: 'S\u030C\u0307',
          Ŝ: 'S\u0302',
          Ṡ: 'S\u0307',
          Ş: 'S\u0327',
          Ť: 'T\u030C',
          Ṫ: 'T\u0307',
          Ţ: 'T\u0327',
          Ú: 'U\u0301',
          Ù: 'U\u0300',
          Ü: 'U\u0308',
          Ǘ: 'U\u0308\u0301',
          Ǜ: 'U\u0308\u0300',
          Ǖ: 'U\u0308\u0304',
          Ǚ: 'U\u0308\u030C',
          Ũ: 'U\u0303',
          Ṹ: 'U\u0303\u0301',
          Ū: 'U\u0304',
          Ṻ: 'U\u0304\u0308',
          Ŭ: 'U\u0306',
          Ǔ: 'U\u030C',
          Û: 'U\u0302',
          Ů: 'U\u030A',
          Ű: 'U\u030B',
          Ṽ: 'V\u0303',
          Ẃ: 'W\u0301',
          Ẁ: 'W\u0300',
          Ẅ: 'W\u0308',
          Ŵ: 'W\u0302',
          Ẇ: 'W\u0307',
          Ẍ: 'X\u0308',
          Ẋ: 'X\u0307',
          Ý: 'Y\u0301',
          Ỳ: 'Y\u0300',
          Ÿ: 'Y\u0308',
          Ỹ: 'Y\u0303',
          Ȳ: 'Y\u0304',
          Ŷ: 'Y\u0302',
          Ẏ: 'Y\u0307',
          Ź: 'Z\u0301',
          Ž: 'Z\u030C',
          Ẑ: 'Z\u0302',
          Ż: 'Z\u0307',
          ά: '\u03B1\u0301',
          ὰ: '\u03B1\u0300',
          ᾱ: '\u03B1\u0304',
          ᾰ: '\u03B1\u0306',
          έ: '\u03B5\u0301',
          ὲ: '\u03B5\u0300',
          ή: '\u03B7\u0301',
          ὴ: '\u03B7\u0300',
          ί: '\u03B9\u0301',
          ὶ: '\u03B9\u0300',
          ϊ: '\u03B9\u0308',
          ΐ: '\u03B9\u0308\u0301',
          ῒ: '\u03B9\u0308\u0300',
          ῑ: '\u03B9\u0304',
          ῐ: '\u03B9\u0306',
          ό: '\u03BF\u0301',
          ὸ: '\u03BF\u0300',
          ύ: '\u03C5\u0301',
          ὺ: '\u03C5\u0300',
          ϋ: '\u03C5\u0308',
          ΰ: '\u03C5\u0308\u0301',
          ῢ: '\u03C5\u0308\u0300',
          ῡ: '\u03C5\u0304',
          ῠ: '\u03C5\u0306',
          ώ: '\u03C9\u0301',
          ὼ: '\u03C9\u0300',
          Ύ: '\u03A5\u0301',
          Ὺ: '\u03A5\u0300',
          Ϋ: '\u03A5\u0308',
          Ῡ: '\u03A5\u0304',
          Ῠ: '\u03A5\u0306',
          Ώ: '\u03A9\u0301',
          Ὼ: '\u03A9\u0300'
        }),
        (_3 = class t {
          static {
            o(this, 'Parser')
          }
          constructor(e, r) {
            ;(this.mode = void 0),
              (this.gullet = void 0),
              (this.settings = void 0),
              (this.leftrightDepth = void 0),
              (this.nextToken = void 0),
              (this.mode = 'math'),
              (this.gullet = new tA(e, r, this.mode)),
              (this.settings = r),
              (this.leftrightDepth = 0)
          }
          expect(e, r) {
            if ((r === void 0 && (r = !0), this.fetch().text !== e)) throw new pt("Expected '" + e + "', got '" + this.fetch().text + "'", this.fetch())
            r && this.consume()
          }
          consume() {
            this.nextToken = null
          }
          fetch() {
            return this.nextToken == null && (this.nextToken = this.gullet.expandNextToken()), this.nextToken
          }
          switchMode(e) {
            ;(this.mode = e), this.gullet.switchMode(e)
          }
          parse() {
            this.settings.globalGroup || this.gullet.beginGroup(), this.settings.colorIsTextColor && this.gullet.macros.set('\\color', '\\textcolor')
            try {
              var e = this.parseExpression(!1)
              return this.expect('EOF'), this.settings.globalGroup || this.gullet.endGroup(), e
            } finally {
              this.gullet.endGroups()
            }
          }
          subparse(e) {
            var r = this.nextToken
            this.consume(), this.gullet.pushToken(new _o('}')), this.gullet.pushTokens(e)
            var n = this.parseExpression(!1)
            return this.expect('}'), (this.nextToken = r), n
          }
          parseExpression(e, r) {
            for (var n = []; ; ) {
              this.mode === 'math' && this.consumeSpaces()
              var i = this.fetch()
              if (t.endOfExpression.indexOf(i.text) !== -1 || (r && i.text === r) || (e && yh[i.text] && yh[i.text].infix)) break
              var a = this.parseAtom(r)
              if (a) {
                if (a.type === 'internal') continue
              } else break
              n.push(a)
            }
            return this.mode === 'text' && this.formLigatures(n), this.handleInfixNodes(n)
          }
          handleInfixNodes(e) {
            for (var r = -1, n, i = 0; i < e.length; i++)
              if (e[i].type === 'infix') {
                if (r !== -1) throw new pt('only one infix operator per group', e[i].token)
                ;(r = i), (n = e[i].replaceWith)
              }
            if (r !== -1 && n) {
              var a,
                s,
                l = e.slice(0, r),
                u = e.slice(r + 1)
              l.length === 1 && l[0].type === 'ordgroup' ? (a = l[0]) : (a = { type: 'ordgroup', mode: this.mode, body: l }),
                u.length === 1 && u[0].type === 'ordgroup' ? (s = u[0]) : (s = { type: 'ordgroup', mode: this.mode, body: u })
              var h
              return n === '\\\\abovefrac' ? (h = this.callFunction(n, [a, e[r], s], [])) : (h = this.callFunction(n, [a, s], [])), [h]
            } else return e
          }
          handleSupSubscript(e) {
            var r = this.fetch(),
              n = r.text
            this.consume(), this.consumeSpaces()
            var i
            do {
              var a
              i = this.parseGroup(e)
            } while (((a = i) == null ? void 0 : a.type) === 'internal')
            if (!i) throw new pt("Expected group after '" + n + "'", r)
            return i
          }
          formatUnsupportedCmd(e) {
            for (var r = [], n = 0; n < e.length; n++) r.push({ type: 'textord', mode: 'text', text: e[n] })
            var i = { type: 'text', mode: this.mode, body: r },
              a = { type: 'color', mode: this.mode, color: this.settings.errorColor, body: [i] }
            return a
          }
          parseAtom(e) {
            var r = this.parseGroup('atom', e)
            if (r?.type === 'internal' || this.mode === 'text') return r
            for (var n, i; ; ) {
              this.consumeSpaces()
              var a = this.fetch()
              if (a.text === '\\limits' || a.text === '\\nolimits') {
                if (r && r.type === 'op') {
                  var s = a.text === '\\limits'
                  ;(r.limits = s), (r.alwaysHandleSupSub = !0)
                } else if (r && r.type === 'operatorname') r.alwaysHandleSupSub && (r.limits = a.text === '\\limits')
                else throw new pt('Limit controls must follow a math operator', a)
                this.consume()
              } else if (a.text === '^') {
                if (n) throw new pt('Double superscript', a)
                n = this.handleSupSubscript('superscript')
              } else if (a.text === '_') {
                if (i) throw new pt('Double subscript', a)
                i = this.handleSupSubscript('subscript')
              } else if (a.text === "'") {
                if (n) throw new pt('Double superscript', a)
                var l = { type: 'textord', mode: this.mode, text: '\\prime' },
                  u = [l]
                for (this.consume(); this.fetch().text === "'"; ) u.push(l), this.consume()
                this.fetch().text === '^' && u.push(this.handleSupSubscript('superscript')), (n = { type: 'ordgroup', mode: this.mode, body: u })
              } else if (x3[a.text]) {
                var h = EG.test(a.text),
                  f = []
                for (f.push(new _o(x3[a.text])), this.consume(); ; ) {
                  var d = this.fetch().text
                  if (!x3[d] || EG.test(d) !== h) break
                  f.unshift(new _o(x3[d])), this.consume()
                }
                var p = this.subparse(f)
                h ? (i = { type: 'ordgroup', mode: 'math', body: p }) : (n = { type: 'ordgroup', mode: 'math', body: p })
              } else break
            }
            return n || i ? { type: 'supsub', mode: this.mode, base: r, sup: n, sub: i } : r
          }
          parseFunction(e, r) {
            var n = this.fetch(),
              i = n.text,
              a = yh[i]
            if (!a) return null
            if ((this.consume(), r && r !== 'atom' && !a.allowedInArgument)) throw new pt("Got function '" + i + "' with no arguments" + (r ? ' as ' + r : ''), n)
            if (this.mode === 'text' && !a.allowedInText) throw new pt("Can't use function '" + i + "' in text mode", n)
            if (this.mode === 'math' && a.allowedInMath === !1) throw new pt("Can't use function '" + i + "' in math mode", n)
            var { args: s, optArgs: l } = this.parseArguments(i, a)
            return this.callFunction(i, s, l, n, e)
          }
          callFunction(e, r, n, i, a) {
            var s = { funcName: e, parser: this, token: i, breakOnTokenText: a },
              l = yh[e]
            if (l && l.handler) return l.handler(s, r, n)
            throw new pt('No function handler for ' + e)
          }
          parseArguments(e, r) {
            var n = r.numArgs + r.numOptionalArgs
            if (n === 0) return { args: [], optArgs: [] }
            for (var i = [], a = [], s = 0; s < n; s++) {
              var l = r.argTypes && r.argTypes[s],
                u = s < r.numOptionalArgs
              ;((r.primitive && l == null) || (r.type === 'sqrt' && s === 1 && a[0] == null)) && (l = 'primitive')
              var h = this.parseGroupOfType("argument to '" + e + "'", l, u)
              if (u) a.push(h)
              else if (h != null) i.push(h)
              else throw new pt('Null argument, please report this as a bug')
            }
            return { args: i, optArgs: a }
          }
          parseGroupOfType(e, r, n) {
            switch (r) {
              case 'color':
                return this.parseColorGroup(n)
              case 'size':
                return this.parseSizeGroup(n)
              case 'url':
                return this.parseUrlGroup(n)
              case 'math':
              case 'text':
                return this.parseArgumentGroup(n, r)
              case 'hbox': {
                var i = this.parseArgumentGroup(n, 'text')
                return i != null ? { type: 'styling', mode: i.mode, body: [i], style: 'text' } : null
              }
              case 'raw': {
                var a = this.parseStringGroup('raw', n)
                return a != null ? { type: 'raw', mode: 'text', string: a.text } : null
              }
              case 'primitive': {
                if (n) throw new pt('A primitive argument cannot be optional')
                var s = this.parseGroup(e)
                if (s == null) throw new pt('Expected group as ' + e, this.fetch())
                return s
              }
              case 'original':
              case null:
              case void 0:
                return this.parseArgumentGroup(n)
              default:
                throw new pt('Unknown group type as ' + e, this.fetch())
            }
          }
          consumeSpaces() {
            for (; this.fetch().text === ' '; ) this.consume()
          }
          parseStringGroup(e, r) {
            var n = this.gullet.scanArgument(r)
            if (n == null) return null
            for (var i = '', a; (a = this.fetch()).text !== 'EOF'; ) (i += a.text), this.consume()
            return this.consume(), (n.text = i), n
          }
          parseRegexGroup(e, r) {
            for (var n = this.fetch(), i = n, a = '', s; (s = this.fetch()).text !== 'EOF' && e.test(a + s.text); ) (i = s), (a += i.text), this.consume()
            if (a === '') throw new pt('Invalid ' + r + ": '" + n.text + "'", n)
            return n.range(i, a)
          }
          parseColorGroup(e) {
            var r = this.parseStringGroup('color', e)
            if (r == null) return null
            var n = /^(#[a-f0-9]{3}|#?[a-f0-9]{6}|[a-z]+)$/i.exec(r.text)
            if (!n) throw new pt("Invalid color: '" + r.text + "'", r)
            var i = n[0]
            return /^[0-9a-f]{6}$/i.test(i) && (i = '#' + i), { type: 'color-token', mode: this.mode, color: i }
          }
          parseSizeGroup(e) {
            var r,
              n = !1
            if (
              (this.gullet.consumeSpaces(),
              !e && this.gullet.future().text !== '{'
                ? (r = this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/, 'size'))
                : (r = this.parseStringGroup('size', e)),
              !r)
            )
              return null
            !e && r.text.length === 0 && ((r.text = '0pt'), (n = !0))
            var i = /([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(r.text)
            if (!i) throw new pt("Invalid size: '" + r.text + "'", r)
            var a = { number: +(i[1] + i[2]), unit: i[3] }
            if (!DG(a)) throw new pt("Invalid unit: '" + a.unit + "'", r)
            return { type: 'size', mode: this.mode, value: a, isBlank: n }
          }
          parseUrlGroup(e) {
            this.gullet.lexer.setCatcode('%', 13), this.gullet.lexer.setCatcode('~', 12)
            var r = this.parseStringGroup('url', e)
            if ((this.gullet.lexer.setCatcode('%', 14), this.gullet.lexer.setCatcode('~', 13), r == null)) return null
            var n = r.text.replace(/\\([#$%&~_^{}])/g, '$1')
            return { type: 'url', mode: this.mode, url: n }
          }
          parseArgumentGroup(e, r) {
            var n = this.gullet.scanArgument(e)
            if (n == null) return null
            var i = this.mode
            r && this.switchMode(r), this.gullet.beginGroup()
            var a = this.parseExpression(!1, 'EOF')
            this.expect('EOF'), this.gullet.endGroup()
            var s = { type: 'ordgroup', mode: this.mode, loc: n.loc, body: a }
            return r && this.switchMode(i), s
          }
          parseGroup(e, r) {
            var n = this.fetch(),
              i = n.text,
              a
            if (i === '{' || i === '\\begingroup') {
              this.consume()
              var s = i === '{' ? '}' : '\\endgroup'
              this.gullet.beginGroup()
              var l = this.parseExpression(!1, s),
                u = this.fetch()
              this.expect(s), this.gullet.endGroup(), (a = { type: 'ordgroup', mode: this.mode, loc: Qs.range(n, u), body: l, semisimple: i === '\\begingroup' || void 0 })
            } else if (((a = this.parseFunction(r, e) || this.parseSymbol()), a == null && i[0] === '\\' && !xV.hasOwnProperty(i))) {
              if (this.settings.throwOnError) throw new pt('Undefined control sequence: ' + i, n)
              ;(a = this.formatUnsupportedCmd(i)), this.consume()
            }
            return a
          }
          formLigatures(e) {
            for (var r = e.length - 1, n = 0; n < r; ++n) {
              var i = e[n],
                a = i.text
              a === '-' &&
                e[n + 1].text === '-' &&
                (n + 1 < r && e[n + 2].text === '-'
                  ? (e.splice(n, 3, { type: 'textord', mode: 'text', loc: Qs.range(i, e[n + 2]), text: '---' }), (r -= 2))
                  : (e.splice(n, 2, { type: 'textord', mode: 'text', loc: Qs.range(i, e[n + 1]), text: '--' }), (r -= 1))),
                (a === "'" || a === '`') && e[n + 1].text === a && (e.splice(n, 2, { type: 'textord', mode: 'text', loc: Qs.range(i, e[n + 1]), text: a + a }), (r -= 1))
            }
          }
          parseSymbol() {
            var e = this.fetch(),
              r = e.text
            if (/^\\verb[^a-zA-Z]/.test(r)) {
              this.consume()
              var n = r.slice(5),
                i = n.charAt(0) === '*'
              if ((i && (n = n.slice(1)), n.length < 2 || n.charAt(0) !== n.slice(-1)))
                throw new pt(`\\verb assertion failed --
                    please report what input caused this bug`)
              return (n = n.slice(1, -1)), { type: 'verb', mode: 'text', body: n, star: i }
            }
            SG.hasOwnProperty(r[0]) &&
              !An[this.mode][r[0]] &&
              (this.settings.strict &&
                this.mode === 'math' &&
                this.settings.reportNonstrict('unicodeTextInMathMode', 'Accented Unicode text character "' + r[0] + '" used in math mode', e),
              (r = SG[r[0]] + r.slice(1)))
            var a = o5e.exec(r)
            a && ((r = r.substring(0, a.index)), r === 'i' ? (r = '\u0131') : r === 'j' && (r = '\u0237'))
            var s
            if (An[this.mode][r]) {
              this.settings.strict &&
                this.mode === 'math' &&
                Y7.indexOf(r) >= 0 &&
                this.settings.reportNonstrict('unicodeTextInMathMode', 'Latin-1/Unicode text character "' + r[0] + '" used in math mode', e)
              var l = An[this.mode][r].group,
                u = Qs.range(e),
                h
              if (e3e.hasOwnProperty(l)) {
                var f = l
                h = { type: 'atom', mode: this.mode, family: f, loc: u, text: r }
              } else h = { type: l, mode: this.mode, loc: u, text: r }
              s = h
            } else if (r.charCodeAt(0) >= 128)
              this.settings.strict &&
                (AG(r.charCodeAt(0))
                  ? this.mode === 'math' && this.settings.reportNonstrict('unicodeTextInMathMode', 'Unicode text character "' + r[0] + '" used in math mode', e)
                  : this.settings.reportNonstrict('unknownSymbol', 'Unrecognized Unicode character "' + r[0] + '"' + (' (' + r.charCodeAt(0) + ')'), e)),
                (s = { type: 'textord', mode: 'text', loc: Qs.range(e), text: r })
            else return null
            if ((this.consume(), a))
              for (var d = 0; d < a[0].length; d++) {
                var p = a[0][d]
                if (!U7[p]) throw new pt("Unknown accent ' " + p + "'", e)
                var m = U7[p][this.mode] || U7[p].text
                if (!m) throw new pt('Accent ' + p + ' unsupported in ' + this.mode + ' mode', e)
                s = { type: 'accent', mode: this.mode, loc: Qs.range(e), label: m, isStretchy: !1, isShifty: !0, base: s }
              }
            return s
          }
        })
      _3.endOfExpression = ['}', '\\endgroup', '\\end', '\\right', '&']
      ;(vA = o(function (e, r) {
        if (!(typeof e == 'string' || e instanceof String)) throw new TypeError('KaTeX can only parse string typed expression')
        var n = new _3(e, r)
        delete n.gullet.macros.current['\\df@tag']
        var i = n.parse()
        if ((delete n.gullet.macros.current['\\current@color'], delete n.gullet.macros.current['\\color'], n.gullet.macros.get('\\df@tag'))) {
          if (!r.displayMode) throw new pt('\\tag works only in display equations')
          i = [{ type: 'tag', mode: 'text', body: i, tag: n.subparse([new _o('\\df@tag')]) }]
        }
        return i
      }, 'parseTree')),
        (xA = o(function (e, r, n) {
          r.textContent = ''
          var i = O3(e, n).toNode()
          r.appendChild(i)
        }, 'render'))
      typeof document < 'u' &&
        document.compatMode !== 'CSS1Compat' &&
        (typeof console < 'u' && console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your website has a suitable doctype."),
        (xA = o(function () {
          throw new pt("KaTeX doesn't work in quirks mode.")
        }, 'render')))
      ;(bV = o(function (e, r) {
        var n = O3(e, r).toMarkup()
        return n
      }, 'renderToString')),
        (TV = o(function (e, r) {
          var n = new Ky(r)
          return vA(e, n)
        }, 'generateParseTree')),
        (wV = o(function (e, r, n) {
          if (n.throwOnError || !(e instanceof pt)) throw e
          var i = Fe.makeSpan(['katex-error'], [new As(r)])
          return i.setAttribute('title', e.toString()), i.setAttribute('style', 'color:' + n.errorColor), i
        }, 'renderError')),
        (O3 = o(function (e, r) {
          var n = new Ky(r)
          try {
            var i = vA(e, n)
            return w3e(i, e, n)
          } catch (a) {
            return wV(a, e, n)
          }
        }, 'renderToDomTree')),
        (kV = o(function (e, r) {
          var n = new Ky(r)
          try {
            var i = vA(e, n)
            return k3e(i, e, n)
          } catch (a) {
            return wV(a, e, n)
          }
        }, 'renderToHTMLTree')),
        (EV = '0.16.22'),
        (SV = { Span: ld, Anchor: Zy, SymbolNode: As, SvgNode: dl, PathNode: ec, LineNode: Jy }),
        (u5e = {
          version: EV,
          render: xA,
          renderToString: bV,
          ParseError: pt,
          SETTINGS_SCHEMA: Xy,
          __parse: TV,
          __renderToDomTree: O3,
          __renderToHTMLTree: kV,
          __setFontMetrics: _G,
          __defineSymbol: G,
          __defineFunction: Nt,
          __defineMacro: fe,
          __domTree: SV
        })
    })
  function d5e() {
    let t = 'data-temp-href-target'
    mh.addHook('beforeSanitizeAttributes', e => {
      e instanceof Element && e.tagName === 'A' && e.hasAttribute('target') && e.setAttribute(t, e.getAttribute('target') ?? '')
    }),
      mh.addHook('afterSanitizeAttributes', e => {
        e instanceof Element &&
          e.tagName === 'A' &&
          e.hasAttribute(t) &&
          (e.setAttribute('target', e.getAttribute(t) ?? ''), e.removeAttribute(t), e.getAttribute('target') === '_blank' && e.setAttribute('rel', 'noopener'))
      })
  }
  var ud,
    h5e,
    f5e,
    LV,
    _V,
    wr,
    p5e,
    m5e,
    g5e,
    y5e,
    RV,
    mu,
    dr,
    v5e,
    x5e,
    ic,
    bA,
    b5e,
    T5e,
    DV,
    P3,
    yi,
    hd,
    Th,
    Ze,
    pr = N(() => {
      'use strict'
      L7()
      ;(ud = /<br\s*\/?>/gi),
        (h5e = o(t => (t ? RV(t).replace(/\\n/g, '#br#').split('#br#') : ['']), 'getRows')),
        (f5e = (() => {
          let t = !1
          return () => {
            t || (d5e(), (t = !0))
          }
        })())
      o(d5e, 'setupDompurifyHooks')
      ;(LV = o(t => (f5e(), mh.sanitize(t)), 'removeScript')),
        (_V = o((t, e) => {
          if (e.flowchart?.htmlLabels !== !1) {
            let r = e.securityLevel
            r === 'antiscript' || r === 'strict'
              ? (t = LV(t))
              : r !== 'loose' && ((t = RV(t)), (t = t.replace(/</g, '&lt;').replace(/>/g, '&gt;')), (t = t.replace(/=/g, '&equals;')), (t = y5e(t)))
          }
          return t
        }, 'sanitizeMore')),
        (wr = o(
          (t, e) => t && (e.dompurifyConfig ? (t = mh.sanitize(_V(t, e), e.dompurifyConfig).toString()) : (t = mh.sanitize(_V(t, e), { FORBID_TAGS: ['style'] }).toString()), t),
          'sanitizeText'
        )),
        (p5e = o((t, e) => (typeof t == 'string' ? wr(t, e) : t.flat().map(r => wr(r, e))), 'sanitizeTextOrArray')),
        (m5e = o(t => ud.test(t), 'hasBreaks')),
        (g5e = o(t => t.split(ud), 'splitBreaks')),
        (y5e = o(t => t.replace(/#br#/g, '<br/>'), 'placeholderToBreak')),
        (RV = o(t => t.replace(ud, '#br#'), 'breakToPlaceholder')),
        (mu = o(t => {
          let e = ''
          return t && ((e = window.location.protocol + '//' + window.location.host + window.location.pathname + window.location.search), (e = CSS.escape(e))), e
        }, 'getUrl')),
        (dr = o(t => !(t === !1 || ['false', 'null', '0'].includes(String(t).trim().toLowerCase())), 'evaluate')),
        (v5e = o(function (...t) {
          let e = t.filter(r => !isNaN(r))
          return Math.max(...e)
        }, 'getMax')),
        (x5e = o(function (...t) {
          let e = t.filter(r => !isNaN(r))
          return Math.min(...e)
        }, 'getMin')),
        (ic = o(function (t) {
          let e = t.split(/(,)/),
            r = []
          for (let n = 0; n < e.length; n++) {
            let i = e[n]
            if (i === ',' && n > 0 && n + 1 < e.length) {
              let a = e[n - 1],
                s = e[n + 1]
              b5e(a, s) && ((i = a + ',' + s), n++, r.pop())
            }
            r.push(T5e(i))
          }
          return r.join('')
        }, 'parseGenericTypes')),
        (bA = o((t, e) => Math.max(0, t.split(e).length - 1), 'countOccurrence')),
        (b5e = o((t, e) => {
          let r = bA(t, '~'),
            n = bA(e, '~')
          return r === 1 && n === 1
        }, 'shouldCombineSets')),
        (T5e = o(t => {
          let e = bA(t, '~'),
            r = !1
          if (e <= 1) return t
          e % 2 !== 0 && t.startsWith('~') && ((t = t.substring(1)), (r = !0))
          let n = [...t],
            i = n.indexOf('~'),
            a = n.lastIndexOf('~')
          for (; i !== -1 && a !== -1 && i !== a; ) (n[i] = '<'), (n[a] = '>'), (i = n.indexOf('~')), (a = n.lastIndexOf('~'))
          return r && n.unshift('~'), n.join('')
        }, 'processSet')),
        (DV = o(() => window.MathMLElement !== void 0, 'isMathMLSupported')),
        (P3 = /\$\$(.*)\$\$/g),
        (yi = o(t => (t.match(P3)?.length ?? 0) > 0, 'hasKatex')),
        (hd = o(async (t, e) => {
          t = await Th(t, e)
          let r = document.createElement('div')
          ;(r.innerHTML = t),
            (r.id = 'katex-temp'),
            (r.style.visibility = 'hidden'),
            (r.style.position = 'absolute'),
            (r.style.top = '0'),
            document.querySelector('body')?.insertAdjacentElement('beforeend', r)
          let i = { width: r.clientWidth, height: r.clientHeight }
          return r.remove(), i
        }, 'calculateMathMLDimensions')),
        (Th = o(async (t, e) => {
          if (!yi(t)) return t
          if (!(DV() || e.legacyMathML || e.forceLegacyMathML)) return t.replace(P3, 'MathML is unsupported in this environment.')
          {
            let { default: r } = await Promise.resolve().then(() => (AV(), CV)),
              n = e.forceLegacyMathML || (!DV() && e.legacyMathML) ? 'htmlAndMathml' : 'mathml'
            return t
              .split(ud)
              .map(i => (yi(i) ? `<div style="display: flex; align-items: center; justify-content: center; white-space: nowrap;">${i}</div>` : `<div>${i}</div>`))
              .join('')
              .replace(P3, (i, a) =>
                r
                  .renderToString(a, { throwOnError: !0, displayMode: !0, output: n })
                  .replace(/\n/g, ' ')
                  .replace(/<annotation.*<\/annotation>/g, '')
              )
          }
          return t.replace(P3, 'Katex is not supported in @mermaid-js/tiny. Please use the full mermaid library.')
        }, 'renderKatex')),
        (Ze = {
          getRows: h5e,
          sanitizeText: wr,
          sanitizeTextOrArray: p5e,
          hasBreaks: m5e,
          splitBreaks: g5e,
          lineBreakRegex: ud,
          removeScript: LV,
          getUrl: mu,
          evaluate: dr,
          getMax: v5e,
          getMin: x5e
        })
    })
  var w5e,
    k5e,
    fn,
    Lo,
    xi = N(() => {
      'use strict'
      yt()
      ;(w5e = o(function (t, e) {
        for (let r of e) t.attr(r[0], r[1])
      }, 'd3Attrs')),
        (k5e = o(function (t, e, r) {
          let n = new Map()
          return r ? (n.set('width', '100%'), n.set('style', `max-width: ${e}px;`)) : (n.set('height', t), n.set('width', e)), n
        }, 'calculateSvgSizeAttrs')),
        (fn = o(function (t, e, r, n) {
          let i = k5e(e, r, n)
          w5e(t, i)
        }, 'configureSvgSize')),
        (Lo = o(function (t, e, r, n) {
          let i = e.node().getBBox(),
            a = i.width,
            s = i.height
          X.info(`SVG bounds: ${a}x${s}`, i)
          let l = 0,
            u = 0
          X.info(`Graph bounds: ${l}x${u}`, t), (l = a + r * 2), (u = s + r * 2), X.info(`Calculated bounds: ${l}x${u}`), fn(e, u, l, n)
          let h = `${i.x - r} ${i.y - r} ${i.width + 2 * r} ${i.height + 2 * r}`
          e.attr('viewBox', h)
        }, 'setupGraphViewbox'))
    })
  var B3,
    E5e,
    NV,
    MV,
    TA = N(() => {
      'use strict'
      yt()
      ;(B3 = {}),
        (E5e = o((t, e, r) => {
          let n = ''
          return (
            t in B3 && B3[t] ? (n = B3[t](r)) : X.warn(`No theme found for ${t}`),
            ` & {
    font-family: ${r.fontFamily};
    font-size: ${r.fontSize};
    fill: ${r.textColor}
  }
  @keyframes edge-animation-frame {
    from {
      stroke-dashoffset: 0;
    }
  }
  @keyframes dash {
    to {
      stroke-dashoffset: 0;
    }
  }
  & .edge-animation-slow {
    stroke-dasharray: 9,5 !important;
    stroke-dashoffset: 900;
    animation: dash 50s linear infinite;
    stroke-linecap: round;
  }
  & .edge-animation-fast {
    stroke-dasharray: 9,5 !important;
    stroke-dashoffset: 900;
    animation: dash 20s linear infinite;
    stroke-linecap: round;
  }
  /* Classes common for multiple diagrams */

  & .error-icon {
    fill: ${r.errorBkgColor};
  }
  & .error-text {
    fill: ${r.errorTextColor};
    stroke: ${r.errorTextColor};
  }

  & .edge-thickness-normal {
    stroke-width: 1px;
  }
  & .edge-thickness-thick {
    stroke-width: 3.5px
  }
  & .edge-pattern-solid {
    stroke-dasharray: 0;
  }
  & .edge-thickness-invisible {
    stroke-width: 0;
    fill: none;
  }
  & .edge-pattern-dashed{
    stroke-dasharray: 3;
  }
  .edge-pattern-dotted {
    stroke-dasharray: 2;
  }

  & .marker {
    fill: ${r.lineColor};
    stroke: ${r.lineColor};
  }
  & .marker.cross {
    stroke: ${r.lineColor};
  }

  & svg {
    font-family: ${r.fontFamily};
    font-size: ${r.fontSize};
  }
   & p {
    margin: 0
   }

  ${n}

  ${e}
`
          )
        }, 'getStyles')),
        (NV = o((t, e) => {
          e !== void 0 && (B3[t] = e)
        }, 'addStylesForDiagram')),
        (MV = E5e)
    })
  var rv = {}
  ur(rv, {
    clear: () => kr,
    getAccDescription: () => Rr,
    getAccTitle: () => Dr,
    getDiagramTitle: () => Nr,
    setAccDescription: () => Lr,
    setAccTitle: () => Ar,
    setDiagramTitle: () => Or
  })
  var wA,
    kA,
    EA,
    SA,
    kr,
    Ar,
    Dr,
    Lr,
    Rr,
    Or,
    Nr,
    ci = N(() => {
      'use strict'
      pr()
      mi()
      ;(wA = ''),
        (kA = ''),
        (EA = ''),
        (SA = o(t => wr(t, tr()), 'sanitizeText')),
        (kr = o(() => {
          ;(wA = ''), (EA = ''), (kA = '')
        }, 'clear')),
        (Ar = o(t => {
          wA = SA(t).replace(/^\s+/g, '')
        }, 'setAccTitle')),
        (Dr = o(() => wA, 'getAccTitle')),
        (Lr = o(t => {
          EA = SA(t).replace(
            /\n\s+/g,
            `
`
          )
        }, 'setAccDescription')),
        (Rr = o(() => EA, 'getAccDescription')),
        (Or = o(t => {
          kA = SA(t)
        }, 'setDiagramTitle')),
        (Nr = o(() => kA, 'getDiagramTitle'))
    })
  var IV,
    S5e,
    me,
    nv,
    $3,
    fd,
    AA,
    C5e,
    F3,
    dd,
    iv,
    CA,
    Gt = N(() => {
      'use strict'
      rd()
      yt()
      mi()
      pr()
      xi()
      TA()
      ci()
      ;(IV = X),
        (S5e = Dy),
        (me = tr),
        (nv = a3),
        ($3 = ph),
        (fd = o(t => wr(t, me()), 'sanitizeText')),
        (AA = Lo),
        (C5e = o(() => rv, 'getCommonDb')),
        (F3 = {}),
        (dd = o((t, e, r) => {
          F3[t] && IV.warn(`Diagram with id ${t} already registered. Overwriting.`),
            (F3[t] = e),
            r && i7(t, r),
            NV(t, e.styles),
            e.injectUtils?.(IV, S5e, me, fd, AA, C5e(), () => {})
        }, 'registerDiagram')),
        (iv = o(t => {
          if (t in F3) return F3[t]
          throw new CA(t)
        }, 'getDiagram')),
        (CA = class extends Error {
          static {
            o(this, 'DiagramNotFoundError')
          }
          constructor(e) {
            super(`Diagram ${e} not found.`)
          }
        })
    })
  var ml,
    wh,
    is,
    pl,
    ac,
    av,
    _A,
    DA,
    z3,
    G3,
    OV,
    A5e,
    _5e,
    D5e,
    L5e,
    R5e,
    N5e,
    M5e,
    I5e,
    O5e,
    P5e,
    B5e,
    F5e,
    $5e,
    z5e,
    G5e,
    V5e,
    U5e,
    PV,
    H5e,
    W5e,
    BV,
    q5e,
    Y5e,
    X5e,
    j5e,
    kh,
    K5e,
    Q5e,
    Z5e,
    J5e,
    eTe,
    sv,
    LA = N(() => {
      'use strict'
      Gt()
      pr()
      ci()
      ;(ml = []),
        (wh = ['']),
        (is = 'global'),
        (pl = ''),
        (ac = [{ alias: 'global', label: { text: 'global' }, type: { text: 'global' }, tags: null, link: null, parentBoundary: '' }]),
        (av = []),
        (_A = ''),
        (DA = !1),
        (z3 = 4),
        (G3 = 2),
        (A5e = o(function () {
          return OV
        }, 'getC4Type')),
        (_5e = o(function (t) {
          OV = wr(t, me())
        }, 'setC4Type')),
        (D5e = o(function (t, e, r, n, i, a, s, l, u) {
          if (t == null || e === void 0 || e === null || r === void 0 || r === null || n === void 0 || n === null) return
          let h = {},
            f = av.find(d => d.from === e && d.to === r)
          if ((f ? (h = f) : av.push(h), (h.type = t), (h.from = e), (h.to = r), (h.label = { text: n }), i == null)) h.techn = { text: '' }
          else if (typeof i == 'object') {
            let [d, p] = Object.entries(i)[0]
            h[d] = { text: p }
          } else h.techn = { text: i }
          if (a == null) h.descr = { text: '' }
          else if (typeof a == 'object') {
            let [d, p] = Object.entries(a)[0]
            h[d] = { text: p }
          } else h.descr = { text: a }
          if (typeof s == 'object') {
            let [d, p] = Object.entries(s)[0]
            h[d] = p
          } else h.sprite = s
          if (typeof l == 'object') {
            let [d, p] = Object.entries(l)[0]
            h[d] = p
          } else h.tags = l
          if (typeof u == 'object') {
            let [d, p] = Object.entries(u)[0]
            h[d] = p
          } else h.link = u
          h.wrap = kh()
        }, 'addRel')),
        (L5e = o(function (t, e, r, n, i, a, s) {
          if (e === null || r === null) return
          let l = {},
            u = ml.find(h => h.alias === e)
          if ((u && e === u.alias ? (l = u) : ((l.alias = e), ml.push(l)), r == null ? (l.label = { text: '' }) : (l.label = { text: r }), n == null)) l.descr = { text: '' }
          else if (typeof n == 'object') {
            let [h, f] = Object.entries(n)[0]
            l[h] = { text: f }
          } else l.descr = { text: n }
          if (typeof i == 'object') {
            let [h, f] = Object.entries(i)[0]
            l[h] = f
          } else l.sprite = i
          if (typeof a == 'object') {
            let [h, f] = Object.entries(a)[0]
            l[h] = f
          } else l.tags = a
          if (typeof s == 'object') {
            let [h, f] = Object.entries(s)[0]
            l[h] = f
          } else l.link = s
          ;(l.typeC4Shape = { text: t }), (l.parentBoundary = is), (l.wrap = kh())
        }, 'addPersonOrSystem')),
        (R5e = o(function (t, e, r, n, i, a, s, l) {
          if (e === null || r === null) return
          let u = {},
            h = ml.find(f => f.alias === e)
          if ((h && e === h.alias ? (u = h) : ((u.alias = e), ml.push(u)), r == null ? (u.label = { text: '' }) : (u.label = { text: r }), n == null)) u.techn = { text: '' }
          else if (typeof n == 'object') {
            let [f, d] = Object.entries(n)[0]
            u[f] = { text: d }
          } else u.techn = { text: n }
          if (i == null) u.descr = { text: '' }
          else if (typeof i == 'object') {
            let [f, d] = Object.entries(i)[0]
            u[f] = { text: d }
          } else u.descr = { text: i }
          if (typeof a == 'object') {
            let [f, d] = Object.entries(a)[0]
            u[f] = d
          } else u.sprite = a
          if (typeof s == 'object') {
            let [f, d] = Object.entries(s)[0]
            u[f] = d
          } else u.tags = s
          if (typeof l == 'object') {
            let [f, d] = Object.entries(l)[0]
            u[f] = d
          } else u.link = l
          ;(u.wrap = kh()), (u.typeC4Shape = { text: t }), (u.parentBoundary = is)
        }, 'addContainer')),
        (N5e = o(function (t, e, r, n, i, a, s, l) {
          if (e === null || r === null) return
          let u = {},
            h = ml.find(f => f.alias === e)
          if ((h && e === h.alias ? (u = h) : ((u.alias = e), ml.push(u)), r == null ? (u.label = { text: '' }) : (u.label = { text: r }), n == null)) u.techn = { text: '' }
          else if (typeof n == 'object') {
            let [f, d] = Object.entries(n)[0]
            u[f] = { text: d }
          } else u.techn = { text: n }
          if (i == null) u.descr = { text: '' }
          else if (typeof i == 'object') {
            let [f, d] = Object.entries(i)[0]
            u[f] = { text: d }
          } else u.descr = { text: i }
          if (typeof a == 'object') {
            let [f, d] = Object.entries(a)[0]
            u[f] = d
          } else u.sprite = a
          if (typeof s == 'object') {
            let [f, d] = Object.entries(s)[0]
            u[f] = d
          } else u.tags = s
          if (typeof l == 'object') {
            let [f, d] = Object.entries(l)[0]
            u[f] = d
          } else u.link = l
          ;(u.wrap = kh()), (u.typeC4Shape = { text: t }), (u.parentBoundary = is)
        }, 'addComponent')),
        (M5e = o(function (t, e, r, n, i) {
          if (t === null || e === null) return
          let a = {},
            s = ac.find(l => l.alias === t)
          if ((s && t === s.alias ? (a = s) : ((a.alias = t), ac.push(a)), e == null ? (a.label = { text: '' }) : (a.label = { text: e }), r == null)) a.type = { text: 'system' }
          else if (typeof r == 'object') {
            let [l, u] = Object.entries(r)[0]
            a[l] = { text: u }
          } else a.type = { text: r }
          if (typeof n == 'object') {
            let [l, u] = Object.entries(n)[0]
            a[l] = u
          } else a.tags = n
          if (typeof i == 'object') {
            let [l, u] = Object.entries(i)[0]
            a[l] = u
          } else a.link = i
          ;(a.parentBoundary = is), (a.wrap = kh()), (pl = is), (is = t), wh.push(pl)
        }, 'addPersonOrSystemBoundary')),
        (I5e = o(function (t, e, r, n, i) {
          if (t === null || e === null) return
          let a = {},
            s = ac.find(l => l.alias === t)
          if ((s && t === s.alias ? (a = s) : ((a.alias = t), ac.push(a)), e == null ? (a.label = { text: '' }) : (a.label = { text: e }), r == null))
            a.type = { text: 'container' }
          else if (typeof r == 'object') {
            let [l, u] = Object.entries(r)[0]
            a[l] = { text: u }
          } else a.type = { text: r }
          if (typeof n == 'object') {
            let [l, u] = Object.entries(n)[0]
            a[l] = u
          } else a.tags = n
          if (typeof i == 'object') {
            let [l, u] = Object.entries(i)[0]
            a[l] = u
          } else a.link = i
          ;(a.parentBoundary = is), (a.wrap = kh()), (pl = is), (is = t), wh.push(pl)
        }, 'addContainerBoundary')),
        (O5e = o(function (t, e, r, n, i, a, s, l) {
          if (e === null || r === null) return
          let u = {},
            h = ac.find(f => f.alias === e)
          if ((h && e === h.alias ? (u = h) : ((u.alias = e), ac.push(u)), r == null ? (u.label = { text: '' }) : (u.label = { text: r }), n == null)) u.type = { text: 'node' }
          else if (typeof n == 'object') {
            let [f, d] = Object.entries(n)[0]
            u[f] = { text: d }
          } else u.type = { text: n }
          if (i == null) u.descr = { text: '' }
          else if (typeof i == 'object') {
            let [f, d] = Object.entries(i)[0]
            u[f] = { text: d }
          } else u.descr = { text: i }
          if (typeof s == 'object') {
            let [f, d] = Object.entries(s)[0]
            u[f] = d
          } else u.tags = s
          if (typeof l == 'object') {
            let [f, d] = Object.entries(l)[0]
            u[f] = d
          } else u.link = l
          ;(u.nodeType = t), (u.parentBoundary = is), (u.wrap = kh()), (pl = is), (is = e), wh.push(pl)
        }, 'addDeploymentNode')),
        (P5e = o(function () {
          ;(is = pl), wh.pop(), (pl = wh.pop()), wh.push(pl)
        }, 'popBoundaryParseStack')),
        (B5e = o(function (t, e, r, n, i, a, s, l, u, h, f) {
          let d = ml.find(p => p.alias === e)
          if (!(d === void 0 && ((d = ac.find(p => p.alias === e)), d === void 0))) {
            if (r != null)
              if (typeof r == 'object') {
                let [p, m] = Object.entries(r)[0]
                d[p] = m
              } else d.bgColor = r
            if (n != null)
              if (typeof n == 'object') {
                let [p, m] = Object.entries(n)[0]
                d[p] = m
              } else d.fontColor = n
            if (i != null)
              if (typeof i == 'object') {
                let [p, m] = Object.entries(i)[0]
                d[p] = m
              } else d.borderColor = i
            if (a != null)
              if (typeof a == 'object') {
                let [p, m] = Object.entries(a)[0]
                d[p] = m
              } else d.shadowing = a
            if (s != null)
              if (typeof s == 'object') {
                let [p, m] = Object.entries(s)[0]
                d[p] = m
              } else d.shape = s
            if (l != null)
              if (typeof l == 'object') {
                let [p, m] = Object.entries(l)[0]
                d[p] = m
              } else d.sprite = l
            if (u != null)
              if (typeof u == 'object') {
                let [p, m] = Object.entries(u)[0]
                d[p] = m
              } else d.techn = u
            if (h != null)
              if (typeof h == 'object') {
                let [p, m] = Object.entries(h)[0]
                d[p] = m
              } else d.legendText = h
            if (f != null)
              if (typeof f == 'object') {
                let [p, m] = Object.entries(f)[0]
                d[p] = m
              } else d.legendSprite = f
          }
        }, 'updateElStyle')),
        (F5e = o(function (t, e, r, n, i, a, s) {
          let l = av.find(u => u.from === e && u.to === r)
          if (l !== void 0) {
            if (n != null)
              if (typeof n == 'object') {
                let [u, h] = Object.entries(n)[0]
                l[u] = h
              } else l.textColor = n
            if (i != null)
              if (typeof i == 'object') {
                let [u, h] = Object.entries(i)[0]
                l[u] = h
              } else l.lineColor = i
            if (a != null)
              if (typeof a == 'object') {
                let [u, h] = Object.entries(a)[0]
                l[u] = parseInt(h)
              } else l.offsetX = parseInt(a)
            if (s != null)
              if (typeof s == 'object') {
                let [u, h] = Object.entries(s)[0]
                l[u] = parseInt(h)
              } else l.offsetY = parseInt(s)
          }
        }, 'updateRelStyle')),
        ($5e = o(function (t, e, r) {
          let n = z3,
            i = G3
          if (typeof e == 'object') {
            let a = Object.values(e)[0]
            n = parseInt(a)
          } else n = parseInt(e)
          if (typeof r == 'object') {
            let a = Object.values(r)[0]
            i = parseInt(a)
          } else i = parseInt(r)
          n >= 1 && (z3 = n), i >= 1 && (G3 = i)
        }, 'updateLayoutConfig')),
        (z5e = o(function () {
          return z3
        }, 'getC4ShapeInRow')),
        (G5e = o(function () {
          return G3
        }, 'getC4BoundaryInRow')),
        (V5e = o(function () {
          return is
        }, 'getCurrentBoundaryParse')),
        (U5e = o(function () {
          return pl
        }, 'getParentBoundaryParse')),
        (PV = o(function (t) {
          return t == null ? ml : ml.filter(e => e.parentBoundary === t)
        }, 'getC4ShapeArray')),
        (H5e = o(function (t) {
          return ml.find(e => e.alias === t)
        }, 'getC4Shape')),
        (W5e = o(function (t) {
          return Object.keys(PV(t))
        }, 'getC4ShapeKeys')),
        (BV = o(function (t) {
          return t == null ? ac : ac.filter(e => e.parentBoundary === t)
        }, 'getBoundaries')),
        (q5e = BV),
        (Y5e = o(function () {
          return av
        }, 'getRels')),
        (X5e = o(function () {
          return _A
        }, 'getTitle')),
        (j5e = o(function (t) {
          DA = t
        }, 'setWrap')),
        (kh = o(function () {
          return DA
        }, 'autoWrap')),
        (K5e = o(function () {
          ;(ml = []),
            (ac = [{ alias: 'global', label: { text: 'global' }, type: { text: 'global' }, tags: null, link: null, parentBoundary: '' }]),
            (pl = ''),
            (is = 'global'),
            (wh = ['']),
            (av = []),
            (wh = ['']),
            (_A = ''),
            (DA = !1),
            (z3 = 4),
            (G3 = 2)
        }, 'clear')),
        (Q5e = {
          SOLID: 0,
          DOTTED: 1,
          NOTE: 2,
          SOLID_CROSS: 3,
          DOTTED_CROSS: 4,
          SOLID_OPEN: 5,
          DOTTED_OPEN: 6,
          LOOP_START: 10,
          LOOP_END: 11,
          ALT_START: 12,
          ALT_ELSE: 13,
          ALT_END: 14,
          OPT_START: 15,
          OPT_END: 16,
          ACTIVE_START: 17,
          ACTIVE_END: 18,
          PAR_START: 19,
          PAR_AND: 20,
          PAR_END: 21,
          RECT_START: 22,
          RECT_END: 23,
          SOLID_POINT: 24,
          DOTTED_POINT: 25
        }),
        (Z5e = { FILLED: 0, OPEN: 1 }),
        (J5e = { LEFTOF: 0, RIGHTOF: 1, OVER: 2 }),
        (eTe = o(function (t) {
          _A = wr(t, me())
        }, 'setTitle')),
        (sv = {
          addPersonOrSystem: L5e,
          addPersonOrSystemBoundary: M5e,
          addContainer: R5e,
          addContainerBoundary: I5e,
          addComponent: N5e,
          addDeploymentNode: O5e,
          popBoundaryParseStack: P5e,
          addRel: D5e,
          updateElStyle: B5e,
          updateRelStyle: F5e,
          updateLayoutConfig: $5e,
          autoWrap: kh,
          setWrap: j5e,
          getC4ShapeArray: PV,
          getC4Shape: H5e,
          getC4ShapeKeys: W5e,
          getBoundaries: BV,
          getBoundarys: q5e,
          getCurrentBoundaryParse: V5e,
          getParentBoundaryParse: U5e,
          getRels: Y5e,
          getTitle: X5e,
          getC4Type: A5e,
          getC4ShapeInRow: z5e,
          getC4BoundaryInRow: G5e,
          setAccTitle: Ar,
          getAccTitle: Dr,
          getAccDescription: Rr,
          setAccDescription: Lr,
          getConfig: o(() => me().c4, 'getConfig'),
          clear: K5e,
          LINETYPE: Q5e,
          ARROWTYPE: Z5e,
          PLACEMENT: J5e,
          setTitle: eTe,
          setC4Type: _5e
        })
    })
  function pd(t, e) {
    return t == null || e == null ? NaN : t < e ? -1 : t > e ? 1 : t >= e ? 0 : NaN
  }
  var RA = N(() => {
    'use strict'
    o(pd, 'ascending')
  })
  function NA(t, e) {
    return t == null || e == null ? NaN : e < t ? -1 : e > t ? 1 : e >= t ? 0 : NaN
  }
  var FV = N(() => {
    'use strict'
    o(NA, 'descending')
  })
  function md(t) {
    let e, r, n
    t.length !== 2 ? ((e = pd), (r = o((l, u) => pd(t(l), u), 'compare2')), (n = o((l, u) => t(l) - u, 'delta'))) : ((e = t === pd || t === NA ? t : tTe), (r = t), (n = t))
    function i(l, u, h = 0, f = l.length) {
      if (h < f) {
        if (e(u, u) !== 0) return f
        do {
          let d = (h + f) >>> 1
          r(l[d], u) < 0 ? (h = d + 1) : (f = d)
        } while (h < f)
      }
      return h
    }
    o(i, 'left')
    function a(l, u, h = 0, f = l.length) {
      if (h < f) {
        if (e(u, u) !== 0) return f
        do {
          let d = (h + f) >>> 1
          r(l[d], u) <= 0 ? (h = d + 1) : (f = d)
        } while (h < f)
      }
      return h
    }
    o(a, 'right')
    function s(l, u, h = 0, f = l.length) {
      let d = i(l, u, h, f - 1)
      return d > h && n(l[d - 1], u) > -n(l[d], u) ? d - 1 : d
    }
    return o(s, 'center'), { left: i, center: s, right: a }
  }
  function tTe() {
    return 0
  }
  var MA = N(() => {
    'use strict'
    RA()
    FV()
    o(md, 'bisector')
    o(tTe, 'zero')
  })
  function IA(t) {
    return t === null ? NaN : +t
  }
  var $V = N(() => {
    'use strict'
    o(IA, 'number')
  })
  var zV,
    GV,
    rTe,
    nTe,
    OA,
    VV = N(() => {
      'use strict'
      RA()
      MA()
      $V()
      ;(zV = md(pd)), (GV = zV.right), (rTe = zV.left), (nTe = md(IA).center), (OA = GV)
    })
  function UV({ _intern: t, _key: e }, r) {
    let n = e(r)
    return t.has(n) ? t.get(n) : r
  }
  function iTe({ _intern: t, _key: e }, r) {
    let n = e(r)
    return t.has(n) ? t.get(n) : (t.set(n, r), r)
  }
  function aTe({ _intern: t, _key: e }, r) {
    let n = e(r)
    return t.has(n) && ((r = t.get(n)), t.delete(n)), r
  }
  function sTe(t) {
    return t !== null && typeof t == 'object' ? t.valueOf() : t
  }
  var C0,
    HV = N(() => {
      'use strict'
      C0 = class extends Map {
        static {
          o(this, 'InternMap')
        }
        constructor(e, r = sTe) {
          if ((super(), Object.defineProperties(this, { _intern: { value: new Map() }, _key: { value: r } }), e != null)) for (let [n, i] of e) this.set(n, i)
        }
        get(e) {
          return super.get(UV(this, e))
        }
        has(e) {
          return super.has(UV(this, e))
        }
        set(e, r) {
          return super.set(iTe(this, e), r)
        }
        delete(e) {
          return super.delete(aTe(this, e))
        }
      }
      o(UV, 'intern_get')
      o(iTe, 'intern_set')
      o(aTe, 'intern_delete')
      o(sTe, 'keyof')
    })
  function V3(t, e, r) {
    let n = (e - t) / Math.max(0, r),
      i = Math.floor(Math.log10(n)),
      a = n / Math.pow(10, i),
      s = a >= oTe ? 10 : a >= lTe ? 5 : a >= cTe ? 2 : 1,
      l,
      u,
      h
    return (
      i < 0
        ? ((h = Math.pow(10, -i) / s), (l = Math.round(t * h)), (u = Math.round(e * h)), l / h < t && ++l, u / h > e && --u, (h = -h))
        : ((h = Math.pow(10, i) * s), (l = Math.round(t / h)), (u = Math.round(e / h)), l * h < t && ++l, u * h > e && --u),
      u < l && 0.5 <= r && r < 2 ? V3(t, e, r * 2) : [l, u, h]
    )
  }
  function U3(t, e, r) {
    if (((e = +e), (t = +t), (r = +r), !(r > 0))) return []
    if (t === e) return [t]
    let n = e < t,
      [i, a, s] = n ? V3(e, t, r) : V3(t, e, r)
    if (!(a >= i)) return []
    let l = a - i + 1,
      u = new Array(l)
    if (n)
      if (s < 0) for (let h = 0; h < l; ++h) u[h] = (a - h) / -s
      else for (let h = 0; h < l; ++h) u[h] = (a - h) * s
    else if (s < 0) for (let h = 0; h < l; ++h) u[h] = (i + h) / -s
    else for (let h = 0; h < l; ++h) u[h] = (i + h) * s
    return u
  }
  function ov(t, e, r) {
    return (e = +e), (t = +t), (r = +r), V3(t, e, r)[2]
  }
  function A0(t, e, r) {
    ;(e = +e), (t = +t), (r = +r)
    let n = e < t,
      i = n ? ov(e, t, r) : ov(t, e, r)
    return (n ? -1 : 1) * (i < 0 ? 1 / -i : i)
  }
  var oTe,
    lTe,
    cTe,
    WV = N(() => {
      'use strict'
      ;(oTe = Math.sqrt(50)), (lTe = Math.sqrt(10)), (cTe = Math.sqrt(2))
      o(V3, 'tickSpec')
      o(U3, 'ticks')
      o(ov, 'tickIncrement')
      o(A0, 'tickStep')
    })
  function H3(t, e) {
    let r
    if (e === void 0) for (let n of t) n != null && (r < n || (r === void 0 && n >= n)) && (r = n)
    else {
      let n = -1
      for (let i of t) (i = e(i, ++n, t)) != null && (r < i || (r === void 0 && i >= i)) && (r = i)
    }
    return r
  }
  var qV = N(() => {
    'use strict'
    o(H3, 'max')
  })
  function W3(t, e) {
    let r
    if (e === void 0) for (let n of t) n != null && (r > n || (r === void 0 && n >= n)) && (r = n)
    else {
      let n = -1
      for (let i of t) (i = e(i, ++n, t)) != null && (r > i || (r === void 0 && i >= i)) && (r = i)
    }
    return r
  }
  var YV = N(() => {
    'use strict'
    o(W3, 'min')
  })
  function q3(t, e, r) {
    ;(t = +t), (e = +e), (r = (i = arguments.length) < 2 ? ((e = t), (t = 0), 1) : i < 3 ? 1 : +r)
    for (var n = -1, i = Math.max(0, Math.ceil((e - t) / r)) | 0, a = new Array(i); ++n < i; ) a[n] = t + n * r
    return a
  }
  var XV = N(() => {
    'use strict'
    o(q3, 'range')
  })
  var Eh = N(() => {
    'use strict'
    VV()
    MA()
    qV()
    YV()
    XV()
    WV()
    HV()
  })
  function PA(t) {
    return t
  }
  var jV = N(() => {
    'use strict'
    o(PA, 'default')
  })
  function uTe(t) {
    return 'translate(' + t + ',0)'
  }
  function hTe(t) {
    return 'translate(0,' + t + ')'
  }
  function fTe(t) {
    return e => +t(e)
  }
  function dTe(t, e) {
    return (e = Math.max(0, t.bandwidth() - e * 2) / 2), t.round() && (e = Math.round(e)), r => +t(r) + e
  }
  function pTe() {
    return !this.__axis
  }
  function QV(t, e) {
    var r = [],
      n = null,
      i = null,
      a = 6,
      s = 6,
      l = 3,
      u = typeof window < 'u' && window.devicePixelRatio > 1 ? 0 : 0.5,
      h = t === X3 || t === Y3 ? -1 : 1,
      f = t === Y3 || t === BA ? 'x' : 'y',
      d = t === X3 || t === FA ? uTe : hTe
    function p(m) {
      var g = n ?? (e.ticks ? e.ticks.apply(e, r) : e.domain()),
        y = i ?? (e.tickFormat ? e.tickFormat.apply(e, r) : PA),
        v = Math.max(a, 0) + l,
        x = e.range(),
        b = +x[0] + u,
        T = +x[x.length - 1] + u,
        S = (e.bandwidth ? dTe : fTe)(e.copy(), u),
        w = m.selection ? m.selection() : m,
        E = w.selectAll('.domain').data([null]),
        _ = w.selectAll('.tick').data(g, e).order(),
        C = _.exit(),
        D = _.enter().append('g').attr('class', 'tick'),
        O = _.select('line'),
        R = _.select('text')
      ;(E = E.merge(E.enter().insert('path', '.tick').attr('class', 'domain').attr('stroke', 'currentColor'))),
        (_ = _.merge(D)),
        (O = O.merge(
          D.append('line')
            .attr('stroke', 'currentColor')
            .attr(f + '2', h * a)
        )),
        (R = R.merge(
          D.append('text')
            .attr('fill', 'currentColor')
            .attr(f, h * v)
            .attr('dy', t === X3 ? '0em' : t === FA ? '0.71em' : '0.32em')
        )),
        m !== w &&
          ((E = E.transition(m)),
          (_ = _.transition(m)),
          (O = O.transition(m)),
          (R = R.transition(m)),
          (C = C.transition(m)
            .attr('opacity', KV)
            .attr('transform', function (k) {
              return isFinite((k = S(k))) ? d(k + u) : this.getAttribute('transform')
            })),
          D.attr('opacity', KV).attr('transform', function (k) {
            var L = this.parentNode.__axis
            return d((L && isFinite((L = L(k))) ? L : S(k)) + u)
          })),
        C.remove(),
        E.attr(
          'd',
          t === Y3 || t === BA
            ? s
              ? 'M' + h * s + ',' + b + 'H' + u + 'V' + T + 'H' + h * s
              : 'M' + u + ',' + b + 'V' + T
            : s
              ? 'M' + b + ',' + h * s + 'V' + u + 'H' + T + 'V' + h * s
              : 'M' + b + ',' + u + 'H' + T
        ),
        _.attr('opacity', 1).attr('transform', function (k) {
          return d(S(k) + u)
        }),
        O.attr(f + '2', h * a),
        R.attr(f, h * v).text(y),
        w
          .filter(pTe)
          .attr('fill', 'none')
          .attr('font-size', 10)
          .attr('font-family', 'sans-serif')
          .attr('text-anchor', t === BA ? 'start' : t === Y3 ? 'end' : 'middle'),
        w.each(function () {
          this.__axis = S
        })
    }
    return (
      o(p, 'axis'),
      (p.scale = function (m) {
        return arguments.length ? ((e = m), p) : e
      }),
      (p.ticks = function () {
        return (r = Array.from(arguments)), p
      }),
      (p.tickArguments = function (m) {
        return arguments.length ? ((r = m == null ? [] : Array.from(m)), p) : r.slice()
      }),
      (p.tickValues = function (m) {
        return arguments.length ? ((n = m == null ? null : Array.from(m)), p) : n && n.slice()
      }),
      (p.tickFormat = function (m) {
        return arguments.length ? ((i = m), p) : i
      }),
      (p.tickSize = function (m) {
        return arguments.length ? ((a = s = +m), p) : a
      }),
      (p.tickSizeInner = function (m) {
        return arguments.length ? ((a = +m), p) : a
      }),
      (p.tickSizeOuter = function (m) {
        return arguments.length ? ((s = +m), p) : s
      }),
      (p.tickPadding = function (m) {
        return arguments.length ? ((l = +m), p) : l
      }),
      (p.offset = function (m) {
        return arguments.length ? ((u = +m), p) : u
      }),
      p
    )
  }
  function $A(t) {
    return QV(X3, t)
  }
  function zA(t) {
    return QV(FA, t)
  }
  var X3,
    BA,
    FA,
    Y3,
    KV,
    ZV = N(() => {
      'use strict'
      jV()
      ;(X3 = 1), (BA = 2), (FA = 3), (Y3 = 4), (KV = 1e-6)
      o(uTe, 'translateX')
      o(hTe, 'translateY')
      o(fTe, 'number')
      o(dTe, 'center')
      o(pTe, 'entering')
      o(QV, 'axis')
      o($A, 'axisTop')
      o(zA, 'axisBottom')
    })
  var JV = N(() => {
    'use strict'
    ZV()
  })
  function tU() {
    for (var t = 0, e = arguments.length, r = {}, n; t < e; ++t) {
      if (!(n = arguments[t] + '') || n in r || /[\s.]/.test(n)) throw new Error('illegal type: ' + n)
      r[n] = []
    }
    return new j3(r)
  }
  function j3(t) {
    this._ = t
  }
  function gTe(t, e) {
    return t
      .trim()
      .split(/^|\s+/)
      .map(function (r) {
        var n = '',
          i = r.indexOf('.')
        if ((i >= 0 && ((n = r.slice(i + 1)), (r = r.slice(0, i))), r && !e.hasOwnProperty(r))) throw new Error('unknown type: ' + r)
        return { type: r, name: n }
      })
  }
  function yTe(t, e) {
    for (var r = 0, n = t.length, i; r < n; ++r) if ((i = t[r]).name === e) return i.value
  }
  function eU(t, e, r) {
    for (var n = 0, i = t.length; n < i; ++n)
      if (t[n].name === e) {
        ;(t[n] = mTe), (t = t.slice(0, n).concat(t.slice(n + 1)))
        break
      }
    return r != null && t.push({ name: e, value: r }), t
  }
  var mTe,
    GA,
    rU = N(() => {
      'use strict'
      mTe = { value: o(() => {}, 'value') }
      o(tU, 'dispatch')
      o(j3, 'Dispatch')
      o(gTe, 'parseTypenames')
      j3.prototype = tU.prototype = {
        constructor: j3,
        on: o(function (t, e) {
          var r = this._,
            n = gTe(t + '', r),
            i,
            a = -1,
            s = n.length
          if (arguments.length < 2) {
            for (; ++a < s; ) if ((i = (t = n[a]).type) && (i = yTe(r[i], t.name))) return i
            return
          }
          if (e != null && typeof e != 'function') throw new Error('invalid callback: ' + e)
          for (; ++a < s; )
            if ((i = (t = n[a]).type)) r[i] = eU(r[i], t.name, e)
            else if (e == null) for (i in r) r[i] = eU(r[i], t.name, null)
          return this
        }, 'on'),
        copy: o(function () {
          var t = {},
            e = this._
          for (var r in e) t[r] = e[r].slice()
          return new j3(t)
        }, 'copy'),
        call: o(function (t, e) {
          if ((i = arguments.length - 2) > 0) for (var r = new Array(i), n = 0, i, a; n < i; ++n) r[n] = arguments[n + 2]
          if (!this._.hasOwnProperty(t)) throw new Error('unknown type: ' + t)
          for (a = this._[t], n = 0, i = a.length; n < i; ++n) a[n].value.apply(e, r)
        }, 'call'),
        apply: o(function (t, e, r) {
          if (!this._.hasOwnProperty(t)) throw new Error('unknown type: ' + t)
          for (var n = this._[t], i = 0, a = n.length; i < a; ++i) n[i].value.apply(e, r)
        }, 'apply')
      }
      o(yTe, 'get')
      o(eU, 'set')
      GA = tU
    })
  var VA = N(() => {
    'use strict'
    rU()
  })
  var K3,
    UA,
    HA = N(() => {
      'use strict'
      ;(K3 = 'http://www.w3.org/1999/xhtml'),
        (UA = {
          svg: 'http://www.w3.org/2000/svg',
          xhtml: K3,
          xlink: 'http://www.w3.org/1999/xlink',
          xml: 'http://www.w3.org/XML/1998/namespace',
          xmlns: 'http://www.w3.org/2000/xmlns/'
        })
    })
  function sc(t) {
    var e = (t += ''),
      r = e.indexOf(':')
    return r >= 0 && (e = t.slice(0, r)) !== 'xmlns' && (t = t.slice(r + 1)), UA.hasOwnProperty(e) ? { space: UA[e], local: t } : t
  }
  var Q3 = N(() => {
    'use strict'
    HA()
    o(sc, 'default')
  })
  function vTe(t) {
    return function () {
      var e = this.ownerDocument,
        r = this.namespaceURI
      return r === K3 && e.documentElement.namespaceURI === K3 ? e.createElement(t) : e.createElementNS(r, t)
    }
  }
  function xTe(t) {
    return function () {
      return this.ownerDocument.createElementNS(t.space, t.local)
    }
  }
  function lv(t) {
    var e = sc(t)
    return (e.local ? xTe : vTe)(e)
  }
  var WA = N(() => {
    'use strict'
    Q3()
    HA()
    o(vTe, 'creatorInherit')
    o(xTe, 'creatorFixed')
    o(lv, 'default')
  })
  function bTe() {}
  function Sh(t) {
    return t == null
      ? bTe
      : function () {
          return this.querySelector(t)
        }
  }
  var Z3 = N(() => {
    'use strict'
    o(bTe, 'none')
    o(Sh, 'default')
  })
  function qA(t) {
    typeof t != 'function' && (t = Sh(t))
    for (var e = this._groups, r = e.length, n = new Array(r), i = 0; i < r; ++i)
      for (var a = e[i], s = a.length, l = (n[i] = new Array(s)), u, h, f = 0; f < s; ++f)
        (u = a[f]) && (h = t.call(u, u.__data__, f, a)) && ('__data__' in u && (h.__data__ = u.__data__), (l[f] = h))
    return new ui(n, this._parents)
  }
  var nU = N(() => {
    'use strict'
    gl()
    Z3()
    o(qA, 'default')
  })
  function YA(t) {
    return t == null ? [] : Array.isArray(t) ? t : Array.from(t)
  }
  var iU = N(() => {
    'use strict'
    o(YA, 'array')
  })
  function TTe() {
    return []
  }
  function _0(t) {
    return t == null
      ? TTe
      : function () {
          return this.querySelectorAll(t)
        }
  }
  var XA = N(() => {
    'use strict'
    o(TTe, 'empty')
    o(_0, 'default')
  })
  function wTe(t) {
    return function () {
      return YA(t.apply(this, arguments))
    }
  }
  function jA(t) {
    typeof t == 'function' ? (t = wTe(t)) : (t = _0(t))
    for (var e = this._groups, r = e.length, n = [], i = [], a = 0; a < r; ++a)
      for (var s = e[a], l = s.length, u, h = 0; h < l; ++h) (u = s[h]) && (n.push(t.call(u, u.__data__, h, s)), i.push(u))
    return new ui(n, i)
  }
  var aU = N(() => {
    'use strict'
    gl()
    iU()
    XA()
    o(wTe, 'arrayAll')
    o(jA, 'default')
  })
  function D0(t) {
    return function () {
      return this.matches(t)
    }
  }
  function J3(t) {
    return function (e) {
      return e.matches(t)
    }
  }
  var cv = N(() => {
    'use strict'
    o(D0, 'default')
    o(J3, 'childMatcher')
  })
  function ETe(t) {
    return function () {
      return kTe.call(this.children, t)
    }
  }
  function STe() {
    return this.firstElementChild
  }
  function KA(t) {
    return this.select(t == null ? STe : ETe(typeof t == 'function' ? t : J3(t)))
  }
  var kTe,
    sU = N(() => {
      'use strict'
      cv()
      kTe = Array.prototype.find
      o(ETe, 'childFind')
      o(STe, 'childFirst')
      o(KA, 'default')
    })
  function ATe() {
    return Array.from(this.children)
  }
  function _Te(t) {
    return function () {
      return CTe.call(this.children, t)
    }
  }
  function QA(t) {
    return this.selectAll(t == null ? ATe : _Te(typeof t == 'function' ? t : J3(t)))
  }
  var CTe,
    oU = N(() => {
      'use strict'
      cv()
      CTe = Array.prototype.filter
      o(ATe, 'children')
      o(_Te, 'childrenFilter')
      o(QA, 'default')
    })
  function ZA(t) {
    typeof t != 'function' && (t = D0(t))
    for (var e = this._groups, r = e.length, n = new Array(r), i = 0; i < r; ++i)
      for (var a = e[i], s = a.length, l = (n[i] = []), u, h = 0; h < s; ++h) (u = a[h]) && t.call(u, u.__data__, h, a) && l.push(u)
    return new ui(n, this._parents)
  }
  var lU = N(() => {
    'use strict'
    gl()
    cv()
    o(ZA, 'default')
  })
  function uv(t) {
    return new Array(t.length)
  }
  var JA = N(() => {
    'use strict'
    o(uv, 'default')
  })
  function e8() {
    return new ui(this._enter || this._groups.map(uv), this._parents)
  }
  function hv(t, e) {
    ;(this.ownerDocument = t.ownerDocument), (this.namespaceURI = t.namespaceURI), (this._next = null), (this._parent = t), (this.__data__ = e)
  }
  var t8 = N(() => {
    'use strict'
    JA()
    gl()
    o(e8, 'default')
    o(hv, 'EnterNode')
    hv.prototype = {
      constructor: hv,
      appendChild: o(function (t) {
        return this._parent.insertBefore(t, this._next)
      }, 'appendChild'),
      insertBefore: o(function (t, e) {
        return this._parent.insertBefore(t, e)
      }, 'insertBefore'),
      querySelector: o(function (t) {
        return this._parent.querySelector(t)
      }, 'querySelector'),
      querySelectorAll: o(function (t) {
        return this._parent.querySelectorAll(t)
      }, 'querySelectorAll')
    }
  })
  function r8(t) {
    return function () {
      return t
    }
  }
  var cU = N(() => {
    'use strict'
    o(r8, 'default')
  })
  function DTe(t, e, r, n, i, a) {
    for (var s = 0, l, u = e.length, h = a.length; s < h; ++s) (l = e[s]) ? ((l.__data__ = a[s]), (n[s] = l)) : (r[s] = new hv(t, a[s]))
    for (; s < u; ++s) (l = e[s]) && (i[s] = l)
  }
  function LTe(t, e, r, n, i, a, s) {
    var l,
      u,
      h = new Map(),
      f = e.length,
      d = a.length,
      p = new Array(f),
      m
    for (l = 0; l < f; ++l) (u = e[l]) && ((p[l] = m = s.call(u, u.__data__, l, e) + ''), h.has(m) ? (i[l] = u) : h.set(m, u))
    for (l = 0; l < d; ++l) (m = s.call(t, a[l], l, a) + ''), (u = h.get(m)) ? ((n[l] = u), (u.__data__ = a[l]), h.delete(m)) : (r[l] = new hv(t, a[l]))
    for (l = 0; l < f; ++l) (u = e[l]) && h.get(p[l]) === u && (i[l] = u)
  }
  function RTe(t) {
    return t.__data__
  }
  function n8(t, e) {
    if (!arguments.length) return Array.from(this, RTe)
    var r = e ? LTe : DTe,
      n = this._parents,
      i = this._groups
    typeof t != 'function' && (t = r8(t))
    for (var a = i.length, s = new Array(a), l = new Array(a), u = new Array(a), h = 0; h < a; ++h) {
      var f = n[h],
        d = i[h],
        p = d.length,
        m = NTe(t.call(f, f && f.__data__, h, n)),
        g = m.length,
        y = (l[h] = new Array(g)),
        v = (s[h] = new Array(g)),
        x = (u[h] = new Array(p))
      r(f, d, y, v, x, m, e)
      for (var b = 0, T = 0, S, w; b < g; ++b)
        if ((S = y[b])) {
          for (b >= T && (T = b + 1); !(w = v[T]) && ++T < g; );
          S._next = w || null
        }
    }
    return (s = new ui(s, n)), (s._enter = l), (s._exit = u), s
  }
  function NTe(t) {
    return typeof t == 'object' && 'length' in t ? t : Array.from(t)
  }
  var uU = N(() => {
    'use strict'
    gl()
    t8()
    cU()
    o(DTe, 'bindIndex')
    o(LTe, 'bindKey')
    o(RTe, 'datum')
    o(n8, 'default')
    o(NTe, 'arraylike')
  })
  function i8() {
    return new ui(this._exit || this._groups.map(uv), this._parents)
  }
  var hU = N(() => {
    'use strict'
    JA()
    gl()
    o(i8, 'default')
  })
  function a8(t, e, r) {
    var n = this.enter(),
      i = this,
      a = this.exit()
    return (
      typeof t == 'function' ? ((n = t(n)), n && (n = n.selection())) : (n = n.append(t + '')),
      e != null && ((i = e(i)), i && (i = i.selection())),
      r == null ? a.remove() : r(a),
      n && i ? n.merge(i).order() : i
    )
  }
  var fU = N(() => {
    'use strict'
    o(a8, 'default')
  })
  function s8(t) {
    for (var e = t.selection ? t.selection() : t, r = this._groups, n = e._groups, i = r.length, a = n.length, s = Math.min(i, a), l = new Array(i), u = 0; u < s; ++u)
      for (var h = r[u], f = n[u], d = h.length, p = (l[u] = new Array(d)), m, g = 0; g < d; ++g) (m = h[g] || f[g]) && (p[g] = m)
    for (; u < i; ++u) l[u] = r[u]
    return new ui(l, this._parents)
  }
  var dU = N(() => {
    'use strict'
    gl()
    o(s8, 'default')
  })
  function o8() {
    for (var t = this._groups, e = -1, r = t.length; ++e < r; )
      for (var n = t[e], i = n.length - 1, a = n[i], s; --i >= 0; ) (s = n[i]) && (a && s.compareDocumentPosition(a) ^ 4 && a.parentNode.insertBefore(s, a), (a = s))
    return this
  }
  var pU = N(() => {
    'use strict'
    o(o8, 'default')
  })
  function l8(t) {
    t || (t = MTe)
    function e(d, p) {
      return d && p ? t(d.__data__, p.__data__) : !d - !p
    }
    o(e, 'compareNode')
    for (var r = this._groups, n = r.length, i = new Array(n), a = 0; a < n; ++a) {
      for (var s = r[a], l = s.length, u = (i[a] = new Array(l)), h, f = 0; f < l; ++f) (h = s[f]) && (u[f] = h)
      u.sort(e)
    }
    return new ui(i, this._parents).order()
  }
  function MTe(t, e) {
    return t < e ? -1 : t > e ? 1 : t >= e ? 0 : NaN
  }
  var mU = N(() => {
    'use strict'
    gl()
    o(l8, 'default')
    o(MTe, 'ascending')
  })
  function c8() {
    var t = arguments[0]
    return (arguments[0] = this), t.apply(null, arguments), this
  }
  var gU = N(() => {
    'use strict'
    o(c8, 'default')
  })
  function u8() {
    return Array.from(this)
  }
  var yU = N(() => {
    'use strict'
    o(u8, 'default')
  })
  function h8() {
    for (var t = this._groups, e = 0, r = t.length; e < r; ++e)
      for (var n = t[e], i = 0, a = n.length; i < a; ++i) {
        var s = n[i]
        if (s) return s
      }
    return null
  }
  var vU = N(() => {
    'use strict'
    o(h8, 'default')
  })
  function f8() {
    let t = 0
    for (let e of this) ++t
    return t
  }
  var xU = N(() => {
    'use strict'
    o(f8, 'default')
  })
  function d8() {
    return !this.node()
  }
  var bU = N(() => {
    'use strict'
    o(d8, 'default')
  })
  function p8(t) {
    for (var e = this._groups, r = 0, n = e.length; r < n; ++r) for (var i = e[r], a = 0, s = i.length, l; a < s; ++a) (l = i[a]) && t.call(l, l.__data__, a, i)
    return this
  }
  var TU = N(() => {
    'use strict'
    o(p8, 'default')
  })
  function ITe(t) {
    return function () {
      this.removeAttribute(t)
    }
  }
  function OTe(t) {
    return function () {
      this.removeAttributeNS(t.space, t.local)
    }
  }
  function PTe(t, e) {
    return function () {
      this.setAttribute(t, e)
    }
  }
  function BTe(t, e) {
    return function () {
      this.setAttributeNS(t.space, t.local, e)
    }
  }
  function FTe(t, e) {
    return function () {
      var r = e.apply(this, arguments)
      r == null ? this.removeAttribute(t) : this.setAttribute(t, r)
    }
  }
  function $Te(t, e) {
    return function () {
      var r = e.apply(this, arguments)
      r == null ? this.removeAttributeNS(t.space, t.local) : this.setAttributeNS(t.space, t.local, r)
    }
  }
  function m8(t, e) {
    var r = sc(t)
    if (arguments.length < 2) {
      var n = this.node()
      return r.local ? n.getAttributeNS(r.space, r.local) : n.getAttribute(r)
    }
    return this.each((e == null ? (r.local ? OTe : ITe) : typeof e == 'function' ? (r.local ? $Te : FTe) : r.local ? BTe : PTe)(r, e))
  }
  var wU = N(() => {
    'use strict'
    Q3()
    o(ITe, 'attrRemove')
    o(OTe, 'attrRemoveNS')
    o(PTe, 'attrConstant')
    o(BTe, 'attrConstantNS')
    o(FTe, 'attrFunction')
    o($Te, 'attrFunctionNS')
    o(m8, 'default')
  })
  function fv(t) {
    return (t.ownerDocument && t.ownerDocument.defaultView) || (t.document && t) || t.defaultView
  }
  var g8 = N(() => {
    'use strict'
    o(fv, 'default')
  })
  function zTe(t) {
    return function () {
      this.style.removeProperty(t)
    }
  }
  function GTe(t, e, r) {
    return function () {
      this.style.setProperty(t, e, r)
    }
  }
  function VTe(t, e, r) {
    return function () {
      var n = e.apply(this, arguments)
      n == null ? this.style.removeProperty(t) : this.style.setProperty(t, n, r)
    }
  }
  function y8(t, e, r) {
    return arguments.length > 1 ? this.each((e == null ? zTe : typeof e == 'function' ? VTe : GTe)(t, e, r ?? '')) : Ch(this.node(), t)
  }
  function Ch(t, e) {
    return t.style.getPropertyValue(e) || fv(t).getComputedStyle(t, null).getPropertyValue(e)
  }
  var v8 = N(() => {
    'use strict'
    g8()
    o(zTe, 'styleRemove')
    o(GTe, 'styleConstant')
    o(VTe, 'styleFunction')
    o(y8, 'default')
    o(Ch, 'styleValue')
  })
  function UTe(t) {
    return function () {
      delete this[t]
    }
  }
  function HTe(t, e) {
    return function () {
      this[t] = e
    }
  }
  function WTe(t, e) {
    return function () {
      var r = e.apply(this, arguments)
      r == null ? delete this[t] : (this[t] = r)
    }
  }
  function x8(t, e) {
    return arguments.length > 1 ? this.each((e == null ? UTe : typeof e == 'function' ? WTe : HTe)(t, e)) : this.node()[t]
  }
  var kU = N(() => {
    'use strict'
    o(UTe, 'propertyRemove')
    o(HTe, 'propertyConstant')
    o(WTe, 'propertyFunction')
    o(x8, 'default')
  })
  function EU(t) {
    return t.trim().split(/^|\s+/)
  }
  function b8(t) {
    return t.classList || new SU(t)
  }
  function SU(t) {
    ;(this._node = t), (this._names = EU(t.getAttribute('class') || ''))
  }
  function CU(t, e) {
    for (var r = b8(t), n = -1, i = e.length; ++n < i; ) r.add(e[n])
  }
  function AU(t, e) {
    for (var r = b8(t), n = -1, i = e.length; ++n < i; ) r.remove(e[n])
  }
  function qTe(t) {
    return function () {
      CU(this, t)
    }
  }
  function YTe(t) {
    return function () {
      AU(this, t)
    }
  }
  function XTe(t, e) {
    return function () {
      ;(e.apply(this, arguments) ? CU : AU)(this, t)
    }
  }
  function T8(t, e) {
    var r = EU(t + '')
    if (arguments.length < 2) {
      for (var n = b8(this.node()), i = -1, a = r.length; ++i < a; ) if (!n.contains(r[i])) return !1
      return !0
    }
    return this.each((typeof e == 'function' ? XTe : e ? qTe : YTe)(r, e))
  }
  var _U = N(() => {
    'use strict'
    o(EU, 'classArray')
    o(b8, 'classList')
    o(SU, 'ClassList')
    SU.prototype = {
      add: o(function (t) {
        var e = this._names.indexOf(t)
        e < 0 && (this._names.push(t), this._node.setAttribute('class', this._names.join(' ')))
      }, 'add'),
      remove: o(function (t) {
        var e = this._names.indexOf(t)
        e >= 0 && (this._names.splice(e, 1), this._node.setAttribute('class', this._names.join(' ')))
      }, 'remove'),
      contains: o(function (t) {
        return this._names.indexOf(t) >= 0
      }, 'contains')
    }
    o(CU, 'classedAdd')
    o(AU, 'classedRemove')
    o(qTe, 'classedTrue')
    o(YTe, 'classedFalse')
    o(XTe, 'classedFunction')
    o(T8, 'default')
  })
  function jTe() {
    this.textContent = ''
  }
  function KTe(t) {
    return function () {
      this.textContent = t
    }
  }
  function QTe(t) {
    return function () {
      var e = t.apply(this, arguments)
      this.textContent = e ?? ''
    }
  }
  function w8(t) {
    return arguments.length ? this.each(t == null ? jTe : (typeof t == 'function' ? QTe : KTe)(t)) : this.node().textContent
  }
  var DU = N(() => {
    'use strict'
    o(jTe, 'textRemove')
    o(KTe, 'textConstant')
    o(QTe, 'textFunction')
    o(w8, 'default')
  })
  function ZTe() {
    this.innerHTML = ''
  }
  function JTe(t) {
    return function () {
      this.innerHTML = t
    }
  }
  function ewe(t) {
    return function () {
      var e = t.apply(this, arguments)
      this.innerHTML = e ?? ''
    }
  }
  function k8(t) {
    return arguments.length ? this.each(t == null ? ZTe : (typeof t == 'function' ? ewe : JTe)(t)) : this.node().innerHTML
  }
  var LU = N(() => {
    'use strict'
    o(ZTe, 'htmlRemove')
    o(JTe, 'htmlConstant')
    o(ewe, 'htmlFunction')
    o(k8, 'default')
  })
  function twe() {
    this.nextSibling && this.parentNode.appendChild(this)
  }
  function E8() {
    return this.each(twe)
  }
  var RU = N(() => {
    'use strict'
    o(twe, 'raise')
    o(E8, 'default')
  })
  function rwe() {
    this.previousSibling && this.parentNode.insertBefore(this, this.parentNode.firstChild)
  }
  function S8() {
    return this.each(rwe)
  }
  var NU = N(() => {
    'use strict'
    o(rwe, 'lower')
    o(S8, 'default')
  })
  function C8(t) {
    var e = typeof t == 'function' ? t : lv(t)
    return this.select(function () {
      return this.appendChild(e.apply(this, arguments))
    })
  }
  var MU = N(() => {
    'use strict'
    WA()
    o(C8, 'default')
  })
  function nwe() {
    return null
  }
  function A8(t, e) {
    var r = typeof t == 'function' ? t : lv(t),
      n = e == null ? nwe : typeof e == 'function' ? e : Sh(e)
    return this.select(function () {
      return this.insertBefore(r.apply(this, arguments), n.apply(this, arguments) || null)
    })
  }
  var IU = N(() => {
    'use strict'
    WA()
    Z3()
    o(nwe, 'constantNull')
    o(A8, 'default')
  })
  function iwe() {
    var t = this.parentNode
    t && t.removeChild(this)
  }
  function _8() {
    return this.each(iwe)
  }
  var OU = N(() => {
    'use strict'
    o(iwe, 'remove')
    o(_8, 'default')
  })
  function awe() {
    var t = this.cloneNode(!1),
      e = this.parentNode
    return e ? e.insertBefore(t, this.nextSibling) : t
  }
  function swe() {
    var t = this.cloneNode(!0),
      e = this.parentNode
    return e ? e.insertBefore(t, this.nextSibling) : t
  }
  function D8(t) {
    return this.select(t ? swe : awe)
  }
  var PU = N(() => {
    'use strict'
    o(awe, 'selection_cloneShallow')
    o(swe, 'selection_cloneDeep')
    o(D8, 'default')
  })
  function L8(t) {
    return arguments.length ? this.property('__data__', t) : this.node().__data__
  }
  var BU = N(() => {
    'use strict'
    o(L8, 'default')
  })
  function owe(t) {
    return function (e) {
      t.call(this, e, this.__data__)
    }
  }
  function lwe(t) {
    return t
      .trim()
      .split(/^|\s+/)
      .map(function (e) {
        var r = '',
          n = e.indexOf('.')
        return n >= 0 && ((r = e.slice(n + 1)), (e = e.slice(0, n))), { type: e, name: r }
      })
  }
  function cwe(t) {
    return function () {
      var e = this.__on
      if (e) {
        for (var r = 0, n = -1, i = e.length, a; r < i; ++r)
          (a = e[r]), (!t.type || a.type === t.type) && a.name === t.name ? this.removeEventListener(a.type, a.listener, a.options) : (e[++n] = a)
        ++n ? (e.length = n) : delete this.__on
      }
    }
  }
  function uwe(t, e, r) {
    return function () {
      var n = this.__on,
        i,
        a = owe(e)
      if (n) {
        for (var s = 0, l = n.length; s < l; ++s)
          if ((i = n[s]).type === t.type && i.name === t.name) {
            this.removeEventListener(i.type, i.listener, i.options), this.addEventListener(i.type, (i.listener = a), (i.options = r)), (i.value = e)
            return
          }
      }
      this.addEventListener(t.type, a, r), (i = { type: t.type, name: t.name, value: e, listener: a, options: r }), n ? n.push(i) : (this.__on = [i])
    }
  }
  function R8(t, e, r) {
    var n = lwe(t + ''),
      i,
      a = n.length,
      s
    if (arguments.length < 2) {
      var l = this.node().__on
      if (l) {
        for (var u = 0, h = l.length, f; u < h; ++u) for (i = 0, f = l[u]; i < a; ++i) if ((s = n[i]).type === f.type && s.name === f.name) return f.value
      }
      return
    }
    for (l = e ? uwe : cwe, i = 0; i < a; ++i) this.each(l(n[i], e, r))
    return this
  }
  var FU = N(() => {
    'use strict'
    o(owe, 'contextListener')
    o(lwe, 'parseTypenames')
    o(cwe, 'onRemove')
    o(uwe, 'onAdd')
    o(R8, 'default')
  })
  function $U(t, e, r) {
    var n = fv(t),
      i = n.CustomEvent
    typeof i == 'function'
      ? (i = new i(e, r))
      : ((i = n.document.createEvent('Event')), r ? (i.initEvent(e, r.bubbles, r.cancelable), (i.detail = r.detail)) : i.initEvent(e, !1, !1)),
      t.dispatchEvent(i)
  }
  function hwe(t, e) {
    return function () {
      return $U(this, t, e)
    }
  }
  function fwe(t, e) {
    return function () {
      return $U(this, t, e.apply(this, arguments))
    }
  }
  function N8(t, e) {
    return this.each((typeof e == 'function' ? fwe : hwe)(t, e))
  }
  var zU = N(() => {
    'use strict'
    g8()
    o($U, 'dispatchEvent')
    o(hwe, 'dispatchConstant')
    o(fwe, 'dispatchFunction')
    o(N8, 'default')
  })
  function* M8() {
    for (var t = this._groups, e = 0, r = t.length; e < r; ++e) for (var n = t[e], i = 0, a = n.length, s; i < a; ++i) (s = n[i]) && (yield s)
  }
  var GU = N(() => {
    'use strict'
    o(M8, 'default')
  })
  function ui(t, e) {
    ;(this._groups = t), (this._parents = e)
  }
  function VU() {
    return new ui([[document.documentElement]], I8)
  }
  function dwe() {
    return this
  }
  var I8,
    gu,
    gl = N(() => {
      'use strict'
      nU()
      aU()
      sU()
      oU()
      lU()
      uU()
      t8()
      hU()
      fU()
      dU()
      pU()
      mU()
      gU()
      yU()
      vU()
      xU()
      bU()
      TU()
      wU()
      v8()
      kU()
      _U()
      DU()
      LU()
      RU()
      NU()
      MU()
      IU()
      OU()
      PU()
      BU()
      FU()
      zU()
      GU()
      I8 = [null]
      o(ui, 'Selection')
      o(VU, 'selection')
      o(dwe, 'selection_selection')
      ui.prototype = VU.prototype = {
        constructor: ui,
        select: qA,
        selectAll: jA,
        selectChild: KA,
        selectChildren: QA,
        filter: ZA,
        data: n8,
        enter: e8,
        exit: i8,
        join: a8,
        merge: s8,
        selection: dwe,
        order: o8,
        sort: l8,
        call: c8,
        nodes: u8,
        node: h8,
        size: f8,
        empty: d8,
        each: p8,
        attr: m8,
        style: y8,
        property: x8,
        classed: T8,
        text: w8,
        html: k8,
        raise: E8,
        lower: S8,
        append: C8,
        insert: A8,
        remove: _8,
        clone: D8,
        datum: L8,
        on: R8,
        dispatch: N8,
        [Symbol.iterator]: M8
      }
      gu = VU
    })
  function Ge(t) {
    return typeof t == 'string' ? new ui([[document.querySelector(t)]], [document.documentElement]) : new ui([[t]], I8)
  }
  var UU = N(() => {
    'use strict'
    gl()
    o(Ge, 'default')
  })
  var yl = N(() => {
    'use strict'
    cv()
    Q3()
    UU()
    gl()
    Z3()
    XA()
    v8()
  })
  var HU = N(() => {
    'use strict'
  })
  function Ah(t, e, r) {
    ;(t.prototype = e.prototype = r), (r.constructor = t)
  }
  function L0(t, e) {
    var r = Object.create(t.prototype)
    for (var n in e) r[n] = e[n]
    return r
  }
  var O8 = N(() => {
    'use strict'
    o(Ah, 'default')
    o(L0, 'extend')
  })
  function _h() {}
  function qU() {
    return this.rgb().formatHex()
  }
  function Twe() {
    return this.rgb().formatHex8()
  }
  function wwe() {
    return JU(this).formatHsl()
  }
  function YU() {
    return this.rgb().formatRgb()
  }
  function xl(t) {
    var e, r
    return (
      (t = (t + '').trim().toLowerCase()),
      (e = pwe.exec(t))
        ? ((r = e[1].length),
          (e = parseInt(e[1], 16)),
          r === 6
            ? XU(e)
            : r === 3
              ? new ca(((e >> 8) & 15) | ((e >> 4) & 240), ((e >> 4) & 15) | (e & 240), ((e & 15) << 4) | (e & 15), 1)
              : r === 8
                ? e5((e >> 24) & 255, (e >> 16) & 255, (e >> 8) & 255, (e & 255) / 255)
                : r === 4
                  ? e5(((e >> 12) & 15) | ((e >> 8) & 240), ((e >> 8) & 15) | ((e >> 4) & 240), ((e >> 4) & 15) | (e & 240), (((e & 15) << 4) | (e & 15)) / 255)
                  : null)
        : (e = mwe.exec(t))
          ? new ca(e[1], e[2], e[3], 1)
          : (e = gwe.exec(t))
            ? new ca((e[1] * 255) / 100, (e[2] * 255) / 100, (e[3] * 255) / 100, 1)
            : (e = ywe.exec(t))
              ? e5(e[1], e[2], e[3], e[4])
              : (e = vwe.exec(t))
                ? e5((e[1] * 255) / 100, (e[2] * 255) / 100, (e[3] * 255) / 100, e[4])
                : (e = xwe.exec(t))
                  ? QU(e[1], e[2] / 100, e[3] / 100, 1)
                  : (e = bwe.exec(t))
                    ? QU(e[1], e[2] / 100, e[3] / 100, e[4])
                    : WU.hasOwnProperty(t)
                      ? XU(WU[t])
                      : t === 'transparent'
                        ? new ca(NaN, NaN, NaN, 0)
                        : null
    )
  }
  function XU(t) {
    return new ca((t >> 16) & 255, (t >> 8) & 255, t & 255, 1)
  }
  function e5(t, e, r, n) {
    return n <= 0 && (t = e = r = NaN), new ca(t, e, r, n)
  }
  function B8(t) {
    return t instanceof _h || (t = xl(t)), t ? ((t = t.rgb()), new ca(t.r, t.g, t.b, t.opacity)) : new ca()
  }
  function N0(t, e, r, n) {
    return arguments.length === 1 ? B8(t) : new ca(t, e, r, n ?? 1)
  }
  function ca(t, e, r, n) {
    ;(this.r = +t), (this.g = +e), (this.b = +r), (this.opacity = +n)
  }
  function jU() {
    return `#${gd(this.r)}${gd(this.g)}${gd(this.b)}`
  }
  function kwe() {
    return `#${gd(this.r)}${gd(this.g)}${gd(this.b)}${gd((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`
  }
  function KU() {
    let t = n5(this.opacity)
    return `${t === 1 ? 'rgb(' : 'rgba('}${yd(this.r)}, ${yd(this.g)}, ${yd(this.b)}${t === 1 ? ')' : `, ${t})`}`
  }
  function n5(t) {
    return isNaN(t) ? 1 : Math.max(0, Math.min(1, t))
  }
  function yd(t) {
    return Math.max(0, Math.min(255, Math.round(t) || 0))
  }
  function gd(t) {
    return (t = yd(t)), (t < 16 ? '0' : '') + t.toString(16)
  }
  function QU(t, e, r, n) {
    return n <= 0 ? (t = e = r = NaN) : r <= 0 || r >= 1 ? (t = e = NaN) : e <= 0 && (t = NaN), new vl(t, e, r, n)
  }
  function JU(t) {
    if (t instanceof vl) return new vl(t.h, t.s, t.l, t.opacity)
    if ((t instanceof _h || (t = xl(t)), !t)) return new vl()
    if (t instanceof vl) return t
    t = t.rgb()
    var e = t.r / 255,
      r = t.g / 255,
      n = t.b / 255,
      i = Math.min(e, r, n),
      a = Math.max(e, r, n),
      s = NaN,
      l = a - i,
      u = (a + i) / 2
    return (
      l
        ? (e === a ? (s = (r - n) / l + (r < n) * 6) : r === a ? (s = (n - e) / l + 2) : (s = (e - r) / l + 4), (l /= u < 0.5 ? a + i : 2 - a - i), (s *= 60))
        : (l = u > 0 && u < 1 ? 0 : s),
      new vl(s, l, u, t.opacity)
    )
  }
  function eH(t, e, r, n) {
    return arguments.length === 1 ? JU(t) : new vl(t, e, r, n ?? 1)
  }
  function vl(t, e, r, n) {
    ;(this.h = +t), (this.s = +e), (this.l = +r), (this.opacity = +n)
  }
  function ZU(t) {
    return (t = (t || 0) % 360), t < 0 ? t + 360 : t
  }
  function t5(t) {
    return Math.max(0, Math.min(1, t || 0))
  }
  function P8(t, e, r) {
    return (t < 60 ? e + ((r - e) * t) / 60 : t < 180 ? r : t < 240 ? e + ((r - e) * (240 - t)) / 60 : e) * 255
  }
  var dv,
    r5,
    R0,
    pv,
    oc,
    pwe,
    mwe,
    gwe,
    ywe,
    vwe,
    xwe,
    bwe,
    WU,
    F8 = N(() => {
      'use strict'
      O8()
      o(_h, 'Color')
      ;(dv = 0.7),
        (r5 = 1 / dv),
        (R0 = '\\s*([+-]?\\d+)\\s*'),
        (pv = '\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*'),
        (oc = '\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*'),
        (pwe = /^#([0-9a-f]{3,8})$/),
        (mwe = new RegExp(`^rgb\\(${R0},${R0},${R0}\\)$`)),
        (gwe = new RegExp(`^rgb\\(${oc},${oc},${oc}\\)$`)),
        (ywe = new RegExp(`^rgba\\(${R0},${R0},${R0},${pv}\\)$`)),
        (vwe = new RegExp(`^rgba\\(${oc},${oc},${oc},${pv}\\)$`)),
        (xwe = new RegExp(`^hsl\\(${pv},${oc},${oc}\\)$`)),
        (bwe = new RegExp(`^hsla\\(${pv},${oc},${oc},${pv}\\)$`)),
        (WU = {
          aliceblue: 15792383,
          antiquewhite: 16444375,
          aqua: 65535,
          aquamarine: 8388564,
          azure: 15794175,
          beige: 16119260,
          bisque: 16770244,
          black: 0,
          blanchedalmond: 16772045,
          blue: 255,
          blueviolet: 9055202,
          brown: 10824234,
          burlywood: 14596231,
          cadetblue: 6266528,
          chartreuse: 8388352,
          chocolate: 13789470,
          coral: 16744272,
          cornflowerblue: 6591981,
          cornsilk: 16775388,
          crimson: 14423100,
          cyan: 65535,
          darkblue: 139,
          darkcyan: 35723,
          darkgoldenrod: 12092939,
          darkgray: 11119017,
          darkgreen: 25600,
          darkgrey: 11119017,
          darkkhaki: 12433259,
          darkmagenta: 9109643,
          darkolivegreen: 5597999,
          darkorange: 16747520,
          darkorchid: 10040012,
          darkred: 9109504,
          darksalmon: 15308410,
          darkseagreen: 9419919,
          darkslateblue: 4734347,
          darkslategray: 3100495,
          darkslategrey: 3100495,
          darkturquoise: 52945,
          darkviolet: 9699539,
          deeppink: 16716947,
          deepskyblue: 49151,
          dimgray: 6908265,
          dimgrey: 6908265,
          dodgerblue: 2003199,
          firebrick: 11674146,
          floralwhite: 16775920,
          forestgreen: 2263842,
          fuchsia: 16711935,
          gainsboro: 14474460,
          ghostwhite: 16316671,
          gold: 16766720,
          goldenrod: 14329120,
          gray: 8421504,
          green: 32768,
          greenyellow: 11403055,
          grey: 8421504,
          honeydew: 15794160,
          hotpink: 16738740,
          indianred: 13458524,
          indigo: 4915330,
          ivory: 16777200,
          khaki: 15787660,
          lavender: 15132410,
          lavenderblush: 16773365,
          lawngreen: 8190976,
          lemonchiffon: 16775885,
          lightblue: 11393254,
          lightcoral: 15761536,
          lightcyan: 14745599,
          lightgoldenrodyellow: 16448210,
          lightgray: 13882323,
          lightgreen: 9498256,
          lightgrey: 13882323,
          lightpink: 16758465,
          lightsalmon: 16752762,
          lightseagreen: 2142890,
          lightskyblue: 8900346,
          lightslategray: 7833753,
          lightslategrey: 7833753,
          lightsteelblue: 11584734,
          lightyellow: 16777184,
          lime: 65280,
          limegreen: 3329330,
          linen: 16445670,
          magenta: 16711935,
          maroon: 8388608,
          mediumaquamarine: 6737322,
          mediumblue: 205,
          mediumorchid: 12211667,
          mediumpurple: 9662683,
          mediumseagreen: 3978097,
          mediumslateblue: 8087790,
          mediumspringgreen: 64154,
          mediumturquoise: 4772300,
          mediumvioletred: 13047173,
          midnightblue: 1644912,
          mintcream: 16121850,
          mistyrose: 16770273,
          moccasin: 16770229,
          navajowhite: 16768685,
          navy: 128,
          oldlace: 16643558,
          olive: 8421376,
          olivedrab: 7048739,
          orange: 16753920,
          orangered: 16729344,
          orchid: 14315734,
          palegoldenrod: 15657130,
          palegreen: 10025880,
          paleturquoise: 11529966,
          palevioletred: 14381203,
          papayawhip: 16773077,
          peachpuff: 16767673,
          peru: 13468991,
          pink: 16761035,
          plum: 14524637,
          powderblue: 11591910,
          purple: 8388736,
          rebeccapurple: 6697881,
          red: 16711680,
          rosybrown: 12357519,
          royalblue: 4286945,
          saddlebrown: 9127187,
          salmon: 16416882,
          sandybrown: 16032864,
          seagreen: 3050327,
          seashell: 16774638,
          sienna: 10506797,
          silver: 12632256,
          skyblue: 8900331,
          slateblue: 6970061,
          slategray: 7372944,
          slategrey: 7372944,
          snow: 16775930,
          springgreen: 65407,
          steelblue: 4620980,
          tan: 13808780,
          teal: 32896,
          thistle: 14204888,
          tomato: 16737095,
          turquoise: 4251856,
          violet: 15631086,
          wheat: 16113331,
          white: 16777215,
          whitesmoke: 16119285,
          yellow: 16776960,
          yellowgreen: 10145074
        })
      Ah(_h, xl, {
        copy(t) {
          return Object.assign(new this.constructor(), this, t)
        },
        displayable() {
          return this.rgb().displayable()
        },
        hex: qU,
        formatHex: qU,
        formatHex8: Twe,
        formatHsl: wwe,
        formatRgb: YU,
        toString: YU
      })
      o(qU, 'color_formatHex')
      o(Twe, 'color_formatHex8')
      o(wwe, 'color_formatHsl')
      o(YU, 'color_formatRgb')
      o(xl, 'color')
      o(XU, 'rgbn')
      o(e5, 'rgba')
      o(B8, 'rgbConvert')
      o(N0, 'rgb')
      o(ca, 'Rgb')
      Ah(
        ca,
        N0,
        L0(_h, {
          brighter(t) {
            return (t = t == null ? r5 : Math.pow(r5, t)), new ca(this.r * t, this.g * t, this.b * t, this.opacity)
          },
          darker(t) {
            return (t = t == null ? dv : Math.pow(dv, t)), new ca(this.r * t, this.g * t, this.b * t, this.opacity)
          },
          rgb() {
            return this
          },
          clamp() {
            return new ca(yd(this.r), yd(this.g), yd(this.b), n5(this.opacity))
          },
          displayable() {
            return -0.5 <= this.r && this.r < 255.5 && -0.5 <= this.g && this.g < 255.5 && -0.5 <= this.b && this.b < 255.5 && 0 <= this.opacity && this.opacity <= 1
          },
          hex: jU,
          formatHex: jU,
          formatHex8: kwe,
          formatRgb: KU,
          toString: KU
        })
      )
      o(jU, 'rgb_formatHex')
      o(kwe, 'rgb_formatHex8')
      o(KU, 'rgb_formatRgb')
      o(n5, 'clampa')
      o(yd, 'clampi')
      o(gd, 'hex')
      o(QU, 'hsla')
      o(JU, 'hslConvert')
      o(eH, 'hsl')
      o(vl, 'Hsl')
      Ah(
        vl,
        eH,
        L0(_h, {
          brighter(t) {
            return (t = t == null ? r5 : Math.pow(r5, t)), new vl(this.h, this.s, this.l * t, this.opacity)
          },
          darker(t) {
            return (t = t == null ? dv : Math.pow(dv, t)), new vl(this.h, this.s, this.l * t, this.opacity)
          },
          rgb() {
            var t = (this.h % 360) + (this.h < 0) * 360,
              e = isNaN(t) || isNaN(this.s) ? 0 : this.s,
              r = this.l,
              n = r + (r < 0.5 ? r : 1 - r) * e,
              i = 2 * r - n
            return new ca(P8(t >= 240 ? t - 240 : t + 120, i, n), P8(t, i, n), P8(t < 120 ? t + 240 : t - 120, i, n), this.opacity)
          },
          clamp() {
            return new vl(ZU(this.h), t5(this.s), t5(this.l), n5(this.opacity))
          },
          displayable() {
            return ((0 <= this.s && this.s <= 1) || isNaN(this.s)) && 0 <= this.l && this.l <= 1 && 0 <= this.opacity && this.opacity <= 1
          },
          formatHsl() {
            let t = n5(this.opacity)
            return `${t === 1 ? 'hsl(' : 'hsla('}${ZU(this.h)}, ${t5(this.s) * 100}%, ${t5(this.l) * 100}%${t === 1 ? ')' : `, ${t})`}`
          }
        })
      )
      o(ZU, 'clamph')
      o(t5, 'clampt')
      o(P8, 'hsl2rgb')
    })
  var tH,
    rH,
    nH = N(() => {
      'use strict'
      ;(tH = Math.PI / 180), (rH = 180 / Math.PI)
    })
  function cH(t) {
    if (t instanceof lc) return new lc(t.l, t.a, t.b, t.opacity)
    if (t instanceof yu) return uH(t)
    t instanceof ca || (t = B8(t))
    var e = V8(t.r),
      r = V8(t.g),
      n = V8(t.b),
      i = $8((0.2225045 * e + 0.7168786 * r + 0.0606169 * n) / aH),
      a,
      s
    return (
      e === r && r === n ? (a = s = i) : ((a = $8((0.4360747 * e + 0.3850649 * r + 0.1430804 * n) / iH)), (s = $8((0.0139322 * e + 0.0971045 * r + 0.7141733 * n) / sH))),
      new lc(116 * i - 16, 500 * (a - i), 200 * (i - s), t.opacity)
    )
  }
  function U8(t, e, r, n) {
    return arguments.length === 1 ? cH(t) : new lc(t, e, r, n ?? 1)
  }
  function lc(t, e, r, n) {
    ;(this.l = +t), (this.a = +e), (this.b = +r), (this.opacity = +n)
  }
  function $8(t) {
    return t > Ewe ? Math.pow(t, 1 / 3) : t / lH + oH
  }
  function z8(t) {
    return t > M0 ? t * t * t : lH * (t - oH)
  }
  function G8(t) {
    return 255 * (t <= 0.0031308 ? 12.92 * t : 1.055 * Math.pow(t, 1 / 2.4) - 0.055)
  }
  function V8(t) {
    return (t /= 255) <= 0.04045 ? t / 12.92 : Math.pow((t + 0.055) / 1.055, 2.4)
  }
  function Swe(t) {
    if (t instanceof yu) return new yu(t.h, t.c, t.l, t.opacity)
    if ((t instanceof lc || (t = cH(t)), t.a === 0 && t.b === 0)) return new yu(NaN, 0 < t.l && t.l < 100 ? 0 : NaN, t.l, t.opacity)
    var e = Math.atan2(t.b, t.a) * rH
    return new yu(e < 0 ? e + 360 : e, Math.sqrt(t.a * t.a + t.b * t.b), t.l, t.opacity)
  }
  function mv(t, e, r, n) {
    return arguments.length === 1 ? Swe(t) : new yu(t, e, r, n ?? 1)
  }
  function yu(t, e, r, n) {
    ;(this.h = +t), (this.c = +e), (this.l = +r), (this.opacity = +n)
  }
  function uH(t) {
    if (isNaN(t.h)) return new lc(t.l, 0, 0, t.opacity)
    var e = t.h * tH
    return new lc(t.l, Math.cos(e) * t.c, Math.sin(e) * t.c, t.opacity)
  }
  var i5,
    iH,
    aH,
    sH,
    oH,
    M0,
    lH,
    Ewe,
    hH = N(() => {
      'use strict'
      O8()
      F8()
      nH()
      ;(i5 = 18), (iH = 0.96422), (aH = 1), (sH = 0.82521), (oH = 4 / 29), (M0 = 6 / 29), (lH = 3 * M0 * M0), (Ewe = M0 * M0 * M0)
      o(cH, 'labConvert')
      o(U8, 'lab')
      o(lc, 'Lab')
      Ah(
        lc,
        U8,
        L0(_h, {
          brighter(t) {
            return new lc(this.l + i5 * (t ?? 1), this.a, this.b, this.opacity)
          },
          darker(t) {
            return new lc(this.l - i5 * (t ?? 1), this.a, this.b, this.opacity)
          },
          rgb() {
            var t = (this.l + 16) / 116,
              e = isNaN(this.a) ? t : t + this.a / 500,
              r = isNaN(this.b) ? t : t - this.b / 200
            return (
              (e = iH * z8(e)),
              (t = aH * z8(t)),
              (r = sH * z8(r)),
              new ca(
                G8(3.1338561 * e - 1.6168667 * t - 0.4906146 * r),
                G8(-0.9787684 * e + 1.9161415 * t + 0.033454 * r),
                G8(0.0719453 * e - 0.2289914 * t + 1.4052427 * r),
                this.opacity
              )
            )
          }
        })
      )
      o($8, 'xyz2lab')
      o(z8, 'lab2xyz')
      o(G8, 'lrgb2rgb')
      o(V8, 'rgb2lrgb')
      o(Swe, 'hclConvert')
      o(mv, 'hcl')
      o(yu, 'Hcl')
      o(uH, 'hcl2lab')
      Ah(
        yu,
        mv,
        L0(_h, {
          brighter(t) {
            return new yu(this.h, this.c, this.l + i5 * (t ?? 1), this.opacity)
          },
          darker(t) {
            return new yu(this.h, this.c, this.l - i5 * (t ?? 1), this.opacity)
          },
          rgb() {
            return uH(this).rgb()
          }
        })
      )
    })
  var I0 = N(() => {
    'use strict'
    F8()
    hH()
  })
  function H8(t, e, r, n, i) {
    var a = t * t,
      s = a * t
    return ((1 - 3 * t + 3 * a - s) * e + (4 - 6 * a + 3 * s) * r + (1 + 3 * t + 3 * a - 3 * s) * n + s * i) / 6
  }
  function W8(t) {
    var e = t.length - 1
    return function (r) {
      var n = r <= 0 ? (r = 0) : r >= 1 ? ((r = 1), e - 1) : Math.floor(r * e),
        i = t[n],
        a = t[n + 1],
        s = n > 0 ? t[n - 1] : 2 * i - a,
        l = n < e - 1 ? t[n + 2] : 2 * a - i
      return H8((r - n / e) * e, s, i, a, l)
    }
  }
  var q8 = N(() => {
    'use strict'
    o(H8, 'basis')
    o(W8, 'default')
  })
  function Y8(t) {
    var e = t.length
    return function (r) {
      var n = Math.floor(((r %= 1) < 0 ? ++r : r) * e),
        i = t[(n + e - 1) % e],
        a = t[n % e],
        s = t[(n + 1) % e],
        l = t[(n + 2) % e]
      return H8((r - n / e) * e, i, a, s, l)
    }
  }
  var fH = N(() => {
    'use strict'
    q8()
    o(Y8, 'default')
  })
  var O0,
    X8 = N(() => {
      'use strict'
      O0 = o(t => () => t, 'default')
    })
  function dH(t, e) {
    return function (r) {
      return t + r * e
    }
  }
  function Cwe(t, e, r) {
    return (
      (t = Math.pow(t, r)),
      (e = Math.pow(e, r) - t),
      (r = 1 / r),
      function (n) {
        return Math.pow(t + n * e, r)
      }
    )
  }
  function pH(t, e) {
    var r = e - t
    return r ? dH(t, r > 180 || r < -180 ? r - 360 * Math.round(r / 360) : r) : O0(isNaN(t) ? e : t)
  }
  function mH(t) {
    return (t = +t) == 1
      ? vu
      : function (e, r) {
          return r - e ? Cwe(e, r, t) : O0(isNaN(e) ? r : e)
        }
  }
  function vu(t, e) {
    var r = e - t
    return r ? dH(t, r) : O0(isNaN(t) ? e : t)
  }
  var j8 = N(() => {
    'use strict'
    X8()
    o(dH, 'linear')
    o(Cwe, 'exponential')
    o(pH, 'hue')
    o(mH, 'gamma')
    o(vu, 'nogamma')
  })
  function gH(t) {
    return function (e) {
      var r = e.length,
        n = new Array(r),
        i = new Array(r),
        a = new Array(r),
        s,
        l
      for (s = 0; s < r; ++s) (l = N0(e[s])), (n[s] = l.r || 0), (i[s] = l.g || 0), (a[s] = l.b || 0)
      return (
        (n = t(n)),
        (i = t(i)),
        (a = t(a)),
        (l.opacity = 1),
        function (u) {
          return (l.r = n(u)), (l.g = i(u)), (l.b = a(u)), l + ''
        }
      )
    }
  }
  var vd,
    Awe,
    _we,
    K8 = N(() => {
      'use strict'
      I0()
      q8()
      fH()
      j8()
      vd = o(function t(e) {
        var r = mH(e)
        function n(i, a) {
          var s = r((i = N0(i)).r, (a = N0(a)).r),
            l = r(i.g, a.g),
            u = r(i.b, a.b),
            h = vu(i.opacity, a.opacity)
          return function (f) {
            return (i.r = s(f)), (i.g = l(f)), (i.b = u(f)), (i.opacity = h(f)), i + ''
          }
        }
        return o(n, 'rgb'), (n.gamma = t), n
      }, 'rgbGamma')(1)
      o(gH, 'rgbSpline')
      ;(Awe = gH(W8)), (_we = gH(Y8))
    })
  function Q8(t, e) {
    e || (e = [])
    var r = t ? Math.min(e.length, t.length) : 0,
      n = e.slice(),
      i
    return function (a) {
      for (i = 0; i < r; ++i) n[i] = t[i] * (1 - a) + e[i] * a
      return n
    }
  }
  function yH(t) {
    return ArrayBuffer.isView(t) && !(t instanceof DataView)
  }
  var vH = N(() => {
    'use strict'
    o(Q8, 'default')
    o(yH, 'isNumberArray')
  })
  function xH(t, e) {
    var r = e ? e.length : 0,
      n = t ? Math.min(r, t.length) : 0,
      i = new Array(n),
      a = new Array(r),
      s
    for (s = 0; s < n; ++s) i[s] = Dh(t[s], e[s])
    for (; s < r; ++s) a[s] = e[s]
    return function (l) {
      for (s = 0; s < n; ++s) a[s] = i[s](l)
      return a
    }
  }
  var bH = N(() => {
    'use strict'
    a5()
    o(xH, 'genericArray')
  })
  function Z8(t, e) {
    var r = new Date()
    return (
      (t = +t),
      (e = +e),
      function (n) {
        return r.setTime(t * (1 - n) + e * n), r
      }
    )
  }
  var TH = N(() => {
    'use strict'
    o(Z8, 'default')
  })
  function Ki(t, e) {
    return (
      (t = +t),
      (e = +e),
      function (r) {
        return t * (1 - r) + e * r
      }
    )
  }
  var gv = N(() => {
    'use strict'
    o(Ki, 'default')
  })
  function J8(t, e) {
    var r = {},
      n = {},
      i
    ;(t === null || typeof t != 'object') && (t = {}), (e === null || typeof e != 'object') && (e = {})
    for (i in e) i in t ? (r[i] = Dh(t[i], e[i])) : (n[i] = e[i])
    return function (a) {
      for (i in r) n[i] = r[i](a)
      return n
    }
  }
  var wH = N(() => {
    'use strict'
    a5()
    o(J8, 'default')
  })
  function Dwe(t) {
    return function () {
      return t
    }
  }
  function Lwe(t) {
    return function (e) {
      return t(e) + ''
    }
  }
  function P0(t, e) {
    var r = (t_.lastIndex = e_.lastIndex = 0),
      n,
      i,
      a,
      s = -1,
      l = [],
      u = []
    for (t = t + '', e = e + ''; (n = t_.exec(t)) && (i = e_.exec(e)); )
      (a = i.index) > r && ((a = e.slice(r, a)), l[s] ? (l[s] += a) : (l[++s] = a)),
        (n = n[0]) === (i = i[0]) ? (l[s] ? (l[s] += i) : (l[++s] = i)) : ((l[++s] = null), u.push({ i: s, x: Ki(n, i) })),
        (r = e_.lastIndex)
    return (
      r < e.length && ((a = e.slice(r)), l[s] ? (l[s] += a) : (l[++s] = a)),
      l.length < 2
        ? u[0]
          ? Lwe(u[0].x)
          : Dwe(e)
        : ((e = u.length),
          function (h) {
            for (var f = 0, d; f < e; ++f) l[(d = u[f]).i] = d.x(h)
            return l.join('')
          })
    )
  }
  var t_,
    e_,
    r_ = N(() => {
      'use strict'
      gv()
      ;(t_ = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g), (e_ = new RegExp(t_.source, 'g'))
      o(Dwe, 'zero')
      o(Lwe, 'one')
      o(P0, 'default')
    })
  function Dh(t, e) {
    var r = typeof e,
      n
    return e == null || r === 'boolean'
      ? O0(e)
      : (r === 'number'
          ? Ki
          : r === 'string'
            ? (n = xl(e))
              ? ((e = n), vd)
              : P0
            : e instanceof xl
              ? vd
              : e instanceof Date
                ? Z8
                : yH(e)
                  ? Q8
                  : Array.isArray(e)
                    ? xH
                    : (typeof e.valueOf != 'function' && typeof e.toString != 'function') || isNaN(e)
                      ? J8
                      : Ki)(t, e)
  }
  var a5 = N(() => {
    'use strict'
    I0()
    K8()
    bH()
    TH()
    gv()
    wH()
    r_()
    X8()
    vH()
    o(Dh, 'default')
  })
  function s5(t, e) {
    return (
      (t = +t),
      (e = +e),
      function (r) {
        return Math.round(t * (1 - r) + e * r)
      }
    )
  }
  var kH = N(() => {
    'use strict'
    o(s5, 'default')
  })
  function l5(t, e, r, n, i, a) {
    var s, l, u
    return (
      (s = Math.sqrt(t * t + e * e)) && ((t /= s), (e /= s)),
      (u = t * r + e * n) && ((r -= t * u), (n -= e * u)),
      (l = Math.sqrt(r * r + n * n)) && ((r /= l), (n /= l), (u /= l)),
      t * n < e * r && ((t = -t), (e = -e), (u = -u), (s = -s)),
      { translateX: i, translateY: a, rotate: Math.atan2(e, t) * EH, skewX: Math.atan(u) * EH, scaleX: s, scaleY: l }
    )
  }
  var EH,
    o5,
    SH = N(() => {
      'use strict'
      ;(EH = 180 / Math.PI), (o5 = { translateX: 0, translateY: 0, rotate: 0, skewX: 0, scaleX: 1, scaleY: 1 })
      o(l5, 'default')
    })
  function CH(t) {
    let e = new (typeof DOMMatrix == 'function' ? DOMMatrix : WebKitCSSMatrix)(t + '')
    return e.isIdentity ? o5 : l5(e.a, e.b, e.c, e.d, e.e, e.f)
  }
  function AH(t) {
    return t == null
      ? o5
      : (c5 || (c5 = document.createElementNS('http://www.w3.org/2000/svg', 'g')),
        c5.setAttribute('transform', t),
        (t = c5.transform.baseVal.consolidate()) ? ((t = t.matrix), l5(t.a, t.b, t.c, t.d, t.e, t.f)) : o5)
  }
  var c5,
    _H = N(() => {
      'use strict'
      SH()
      o(CH, 'parseCss')
      o(AH, 'parseSvg')
    })
  function DH(t, e, r, n) {
    function i(h) {
      return h.length ? h.pop() + ' ' : ''
    }
    o(i, 'pop')
    function a(h, f, d, p, m, g) {
      if (h !== d || f !== p) {
        var y = m.push('translate(', null, e, null, r)
        g.push({ i: y - 4, x: Ki(h, d) }, { i: y - 2, x: Ki(f, p) })
      } else (d || p) && m.push('translate(' + d + e + p + r)
    }
    o(a, 'translate')
    function s(h, f, d, p) {
      h !== f ? (h - f > 180 ? (f += 360) : f - h > 180 && (h += 360), p.push({ i: d.push(i(d) + 'rotate(', null, n) - 2, x: Ki(h, f) })) : f && d.push(i(d) + 'rotate(' + f + n)
    }
    o(s, 'rotate')
    function l(h, f, d, p) {
      h !== f ? p.push({ i: d.push(i(d) + 'skewX(', null, n) - 2, x: Ki(h, f) }) : f && d.push(i(d) + 'skewX(' + f + n)
    }
    o(l, 'skewX')
    function u(h, f, d, p, m, g) {
      if (h !== d || f !== p) {
        var y = m.push(i(m) + 'scale(', null, ',', null, ')')
        g.push({ i: y - 4, x: Ki(h, d) }, { i: y - 2, x: Ki(f, p) })
      } else (d !== 1 || p !== 1) && m.push(i(m) + 'scale(' + d + ',' + p + ')')
    }
    return (
      o(u, 'scale'),
      function (h, f) {
        var d = [],
          p = []
        return (
          (h = t(h)),
          (f = t(f)),
          a(h.translateX, h.translateY, f.translateX, f.translateY, d, p),
          s(h.rotate, f.rotate, d, p),
          l(h.skewX, f.skewX, d, p),
          u(h.scaleX, h.scaleY, f.scaleX, f.scaleY, d, p),
          (h = f = null),
          function (m) {
            for (var g = -1, y = p.length, v; ++g < y; ) d[(v = p[g]).i] = v.x(m)
            return d.join('')
          }
        )
      }
    )
  }
  var n_,
    i_,
    LH = N(() => {
      'use strict'
      gv()
      _H()
      o(DH, 'interpolateTransform')
      ;(n_ = DH(CH, 'px, ', 'px)', 'deg)')), (i_ = DH(AH, ', ', ')', ')'))
    })
  function RH(t) {
    return function (e, r) {
      var n = t((e = mv(e)).h, (r = mv(r)).h),
        i = vu(e.c, r.c),
        a = vu(e.l, r.l),
        s = vu(e.opacity, r.opacity)
      return function (l) {
        return (e.h = n(l)), (e.c = i(l)), (e.l = a(l)), (e.opacity = s(l)), e + ''
      }
    }
  }
  var a_,
    Rwe,
    NH = N(() => {
      'use strict'
      I0()
      j8()
      o(RH, 'hcl')
      ;(a_ = RH(pH)), (Rwe = RH(vu))
    })
  var B0 = N(() => {
    'use strict'
    a5()
    gv()
    kH()
    r_()
    LH()
    K8()
    NH()
  })
  function wv() {
    return xd || (OH(Nwe), (xd = bv.now() + f5))
  }
  function Nwe() {
    xd = 0
  }
  function Tv() {
    this._call = this._time = this._next = null
  }
  function d5(t, e, r) {
    var n = new Tv()
    return n.restart(t, e, r), n
  }
  function PH() {
    wv(), ++F0
    for (var t = u5, e; t; ) (e = xd - t._time) >= 0 && t._call.call(void 0, e), (t = t._next)
    --F0
  }
  function MH() {
    ;(xd = (h5 = bv.now()) + f5), (F0 = vv = 0)
    try {
      PH()
    } finally {
      ;(F0 = 0), Iwe(), (xd = 0)
    }
  }
  function Mwe() {
    var t = bv.now(),
      e = t - h5
    e > IH && ((f5 -= e), (h5 = t))
  }
  function Iwe() {
    for (var t, e = u5, r, n = 1 / 0; e; ) e._call ? (n > e._time && (n = e._time), (t = e), (e = e._next)) : ((r = e._next), (e._next = null), (e = t ? (t._next = r) : (u5 = r)))
    ;(xv = t), s_(n)
  }
  function s_(t) {
    if (!F0) {
      vv && (vv = clearTimeout(vv))
      var e = t - xd
      e > 24 ? (t < 1 / 0 && (vv = setTimeout(MH, t - bv.now() - f5)), yv && (yv = clearInterval(yv))) : (yv || ((h5 = bv.now()), (yv = setInterval(Mwe, IH))), (F0 = 1), OH(MH))
    }
  }
  var F0,
    vv,
    yv,
    IH,
    u5,
    xv,
    h5,
    xd,
    f5,
    bv,
    OH,
    o_ = N(() => {
      'use strict'
      ;(F0 = 0),
        (vv = 0),
        (yv = 0),
        (IH = 1e3),
        (h5 = 0),
        (xd = 0),
        (f5 = 0),
        (bv = typeof performance == 'object' && performance.now ? performance : Date),
        (OH =
          typeof window == 'object' && window.requestAnimationFrame
            ? window.requestAnimationFrame.bind(window)
            : function (t) {
                setTimeout(t, 17)
              })
      o(wv, 'now')
      o(Nwe, 'clearNow')
      o(Tv, 'Timer')
      Tv.prototype = d5.prototype = {
        constructor: Tv,
        restart: o(function (t, e, r) {
          if (typeof t != 'function') throw new TypeError('callback is not a function')
          ;(r = (r == null ? wv() : +r) + (e == null ? 0 : +e)),
            !this._next && xv !== this && (xv ? (xv._next = this) : (u5 = this), (xv = this)),
            (this._call = t),
            (this._time = r),
            s_()
        }, 'restart'),
        stop: o(function () {
          this._call && ((this._call = null), (this._time = 1 / 0), s_())
        }, 'stop')
      }
      o(d5, 'timer')
      o(PH, 'timerFlush')
      o(MH, 'wake')
      o(Mwe, 'poke')
      o(Iwe, 'nap')
      o(s_, 'sleep')
    })
  function kv(t, e, r) {
    var n = new Tv()
    return (
      (e = e == null ? 0 : +e),
      n.restart(
        i => {
          n.stop(), t(i + e)
        },
        e,
        r
      ),
      n
    )
  }
  var BH = N(() => {
    'use strict'
    o_()
    o(kv, 'default')
  })
  var p5 = N(() => {
    'use strict'
    o_()
    BH()
  })
  function xu(t, e, r, n, i, a) {
    var s = t.__transition
    if (!s) t.__transition = {}
    else if (r in s) return
    Bwe(t, r, { name: e, index: n, group: i, on: Owe, tween: Pwe, time: a.time, delay: a.delay, duration: a.duration, ease: a.ease, timer: null, state: zH })
  }
  function Sv(t, e) {
    var r = zi(t, e)
    if (r.state > zH) throw new Error('too late; already scheduled')
    return r
  }
  function ua(t, e) {
    var r = zi(t, e)
    if (r.state > m5) throw new Error('too late; already running')
    return r
  }
  function zi(t, e) {
    var r = t.__transition
    if (!r || !(r = r[e])) throw new Error('transition not found')
    return r
  }
  function Bwe(t, e, r) {
    var n = t.__transition,
      i
    ;(n[e] = r), (r.timer = d5(a, 0, r.time))
    function a(h) {
      ;(r.state = FH), r.timer.restart(s, r.delay, r.time), r.delay <= h && s(h - r.delay)
    }
    o(a, 'schedule')
    function s(h) {
      var f, d, p, m
      if (r.state !== FH) return u()
      for (f in n)
        if (((m = n[f]), m.name === r.name)) {
          if (m.state === m5) return kv(s)
          m.state === $H
            ? ((m.state = Ev), m.timer.stop(), m.on.call('interrupt', t, t.__data__, m.index, m.group), delete n[f])
            : +f < e && ((m.state = Ev), m.timer.stop(), m.on.call('cancel', t, t.__data__, m.index, m.group), delete n[f])
        }
      if (
        (kv(function () {
          r.state === m5 && ((r.state = $H), r.timer.restart(l, r.delay, r.time), l(h))
        }),
        (r.state = g5),
        r.on.call('start', t, t.__data__, r.index, r.group),
        r.state === g5)
      ) {
        for (r.state = m5, i = new Array((p = r.tween.length)), f = 0, d = -1; f < p; ++f) (m = r.tween[f].value.call(t, t.__data__, r.index, r.group)) && (i[++d] = m)
        i.length = d + 1
      }
    }
    o(s, 'start')
    function l(h) {
      for (var f = h < r.duration ? r.ease.call(null, h / r.duration) : (r.timer.restart(u), (r.state = y5), 1), d = -1, p = i.length; ++d < p; ) i[d].call(t, f)
      r.state === y5 && (r.on.call('end', t, t.__data__, r.index, r.group), u())
    }
    o(l, 'tick')
    function u() {
      ;(r.state = Ev), r.timer.stop(), delete n[e]
      for (var h in n) return
      delete t.__transition
    }
    o(u, 'stop')
  }
  var Owe,
    Pwe,
    zH,
    FH,
    g5,
    m5,
    $H,
    y5,
    Ev,
    Ds = N(() => {
      'use strict'
      VA()
      p5()
      ;(Owe = GA('start', 'end', 'cancel', 'interrupt')), (Pwe = []), (zH = 0), (FH = 1), (g5 = 2), (m5 = 3), ($H = 4), (y5 = 5), (Ev = 6)
      o(xu, 'default')
      o(Sv, 'init')
      o(ua, 'set')
      o(zi, 'get')
      o(Bwe, 'create')
    })
  function Cv(t, e) {
    var r = t.__transition,
      n,
      i,
      a = !0,
      s
    if (r) {
      e = e == null ? null : e + ''
      for (s in r) {
        if ((n = r[s]).name !== e) {
          a = !1
          continue
        }
        ;(i = n.state > g5 && n.state < y5), (n.state = Ev), n.timer.stop(), n.on.call(i ? 'interrupt' : 'cancel', t, t.__data__, n.index, n.group), delete r[s]
      }
      a && delete t.__transition
    }
  }
  var GH = N(() => {
    'use strict'
    Ds()
    o(Cv, 'default')
  })
  function l_(t) {
    return this.each(function () {
      Cv(this, t)
    })
  }
  var VH = N(() => {
    'use strict'
    GH()
    o(l_, 'default')
  })
  function Fwe(t, e) {
    var r, n
    return function () {
      var i = ua(this, t),
        a = i.tween
      if (a !== r) {
        n = r = a
        for (var s = 0, l = n.length; s < l; ++s)
          if (n[s].name === e) {
            ;(n = n.slice()), n.splice(s, 1)
            break
          }
      }
      i.tween = n
    }
  }
  function $we(t, e, r) {
    var n, i
    if (typeof r != 'function') throw new Error()
    return function () {
      var a = ua(this, t),
        s = a.tween
      if (s !== n) {
        i = (n = s).slice()
        for (var l = { name: e, value: r }, u = 0, h = i.length; u < h; ++u)
          if (i[u].name === e) {
            i[u] = l
            break
          }
        u === h && i.push(l)
      }
      a.tween = i
    }
  }
  function c_(t, e) {
    var r = this._id
    if (((t += ''), arguments.length < 2)) {
      for (var n = zi(this.node(), r).tween, i = 0, a = n.length, s; i < a; ++i) if ((s = n[i]).name === t) return s.value
      return null
    }
    return this.each((e == null ? Fwe : $we)(r, t, e))
  }
  function $0(t, e, r) {
    var n = t._id
    return (
      t.each(function () {
        var i = ua(this, n)
        ;(i.value || (i.value = {}))[e] = r.apply(this, arguments)
      }),
      function (i) {
        return zi(i, n).value[e]
      }
    )
  }
  var Av = N(() => {
    'use strict'
    Ds()
    o(Fwe, 'tweenRemove')
    o($we, 'tweenFunction')
    o(c_, 'default')
    o($0, 'tweenValue')
  })
  function _v(t, e) {
    var r
    return (typeof e == 'number' ? Ki : e instanceof xl ? vd : (r = xl(e)) ? ((e = r), vd) : P0)(t, e)
  }
  var u_ = N(() => {
    'use strict'
    I0()
    B0()
    o(_v, 'default')
  })
  function zwe(t) {
    return function () {
      this.removeAttribute(t)
    }
  }
  function Gwe(t) {
    return function () {
      this.removeAttributeNS(t.space, t.local)
    }
  }
  function Vwe(t, e, r) {
    var n,
      i = r + '',
      a
    return function () {
      var s = this.getAttribute(t)
      return s === i ? null : s === n ? a : (a = e((n = s), r))
    }
  }
  function Uwe(t, e, r) {
    var n,
      i = r + '',
      a
    return function () {
      var s = this.getAttributeNS(t.space, t.local)
      return s === i ? null : s === n ? a : (a = e((n = s), r))
    }
  }
  function Hwe(t, e, r) {
    var n, i, a
    return function () {
      var s,
        l = r(this),
        u
      return l == null ? void this.removeAttribute(t) : ((s = this.getAttribute(t)), (u = l + ''), s === u ? null : s === n && u === i ? a : ((i = u), (a = e((n = s), l))))
    }
  }
  function Wwe(t, e, r) {
    var n, i, a
    return function () {
      var s,
        l = r(this),
        u
      return l == null
        ? void this.removeAttributeNS(t.space, t.local)
        : ((s = this.getAttributeNS(t.space, t.local)), (u = l + ''), s === u ? null : s === n && u === i ? a : ((i = u), (a = e((n = s), l))))
    }
  }
  function h_(t, e) {
    var r = sc(t),
      n = r === 'transform' ? i_ : _v
    return this.attrTween(t, typeof e == 'function' ? (r.local ? Wwe : Hwe)(r, n, $0(this, 'attr.' + t, e)) : e == null ? (r.local ? Gwe : zwe)(r) : (r.local ? Uwe : Vwe)(r, n, e))
  }
  var UH = N(() => {
    'use strict'
    B0()
    yl()
    Av()
    u_()
    o(zwe, 'attrRemove')
    o(Gwe, 'attrRemoveNS')
    o(Vwe, 'attrConstant')
    o(Uwe, 'attrConstantNS')
    o(Hwe, 'attrFunction')
    o(Wwe, 'attrFunctionNS')
    o(h_, 'default')
  })
  function qwe(t, e) {
    return function (r) {
      this.setAttribute(t, e.call(this, r))
    }
  }
  function Ywe(t, e) {
    return function (r) {
      this.setAttributeNS(t.space, t.local, e.call(this, r))
    }
  }
  function Xwe(t, e) {
    var r, n
    function i() {
      var a = e.apply(this, arguments)
      return a !== n && (r = (n = a) && Ywe(t, a)), r
    }
    return o(i, 'tween'), (i._value = e), i
  }
  function jwe(t, e) {
    var r, n
    function i() {
      var a = e.apply(this, arguments)
      return a !== n && (r = (n = a) && qwe(t, a)), r
    }
    return o(i, 'tween'), (i._value = e), i
  }
  function f_(t, e) {
    var r = 'attr.' + t
    if (arguments.length < 2) return (r = this.tween(r)) && r._value
    if (e == null) return this.tween(r, null)
    if (typeof e != 'function') throw new Error()
    var n = sc(t)
    return this.tween(r, (n.local ? Xwe : jwe)(n, e))
  }
  var HH = N(() => {
    'use strict'
    yl()
    o(qwe, 'attrInterpolate')
    o(Ywe, 'attrInterpolateNS')
    o(Xwe, 'attrTweenNS')
    o(jwe, 'attrTween')
    o(f_, 'default')
  })
  function Kwe(t, e) {
    return function () {
      Sv(this, t).delay = +e.apply(this, arguments)
    }
  }
  function Qwe(t, e) {
    return (
      (e = +e),
      function () {
        Sv(this, t).delay = e
      }
    )
  }
  function d_(t) {
    var e = this._id
    return arguments.length ? this.each((typeof t == 'function' ? Kwe : Qwe)(e, t)) : zi(this.node(), e).delay
  }
  var WH = N(() => {
    'use strict'
    Ds()
    o(Kwe, 'delayFunction')
    o(Qwe, 'delayConstant')
    o(d_, 'default')
  })
  function Zwe(t, e) {
    return function () {
      ua(this, t).duration = +e.apply(this, arguments)
    }
  }
  function Jwe(t, e) {
    return (
      (e = +e),
      function () {
        ua(this, t).duration = e
      }
    )
  }
  function p_(t) {
    var e = this._id
    return arguments.length ? this.each((typeof t == 'function' ? Zwe : Jwe)(e, t)) : zi(this.node(), e).duration
  }
  var qH = N(() => {
    'use strict'
    Ds()
    o(Zwe, 'durationFunction')
    o(Jwe, 'durationConstant')
    o(p_, 'default')
  })
  function eke(t, e) {
    if (typeof e != 'function') throw new Error()
    return function () {
      ua(this, t).ease = e
    }
  }
  function m_(t) {
    var e = this._id
    return arguments.length ? this.each(eke(e, t)) : zi(this.node(), e).ease
  }
  var YH = N(() => {
    'use strict'
    Ds()
    o(eke, 'easeConstant')
    o(m_, 'default')
  })
  function tke(t, e) {
    return function () {
      var r = e.apply(this, arguments)
      if (typeof r != 'function') throw new Error()
      ua(this, t).ease = r
    }
  }
  function g_(t) {
    if (typeof t != 'function') throw new Error()
    return this.each(tke(this._id, t))
  }
  var XH = N(() => {
    'use strict'
    Ds()
    o(tke, 'easeVarying')
    o(g_, 'default')
  })
  function y_(t) {
    typeof t != 'function' && (t = D0(t))
    for (var e = this._groups, r = e.length, n = new Array(r), i = 0; i < r; ++i)
      for (var a = e[i], s = a.length, l = (n[i] = []), u, h = 0; h < s; ++h) (u = a[h]) && t.call(u, u.__data__, h, a) && l.push(u)
    return new as(n, this._parents, this._name, this._id)
  }
  var jH = N(() => {
    'use strict'
    yl()
    bd()
    o(y_, 'default')
  })
  function v_(t) {
    if (t._id !== this._id) throw new Error()
    for (var e = this._groups, r = t._groups, n = e.length, i = r.length, a = Math.min(n, i), s = new Array(n), l = 0; l < a; ++l)
      for (var u = e[l], h = r[l], f = u.length, d = (s[l] = new Array(f)), p, m = 0; m < f; ++m) (p = u[m] || h[m]) && (d[m] = p)
    for (; l < n; ++l) s[l] = e[l]
    return new as(s, this._parents, this._name, this._id)
  }
  var KH = N(() => {
    'use strict'
    bd()
    o(v_, 'default')
  })
  function rke(t) {
    return (t + '')
      .trim()
      .split(/^|\s+/)
      .every(function (e) {
        var r = e.indexOf('.')
        return r >= 0 && (e = e.slice(0, r)), !e || e === 'start'
      })
  }
  function nke(t, e, r) {
    var n,
      i,
      a = rke(e) ? Sv : ua
    return function () {
      var s = a(this, t),
        l = s.on
      l !== n && (i = (n = l).copy()).on(e, r), (s.on = i)
    }
  }
  function x_(t, e) {
    var r = this._id
    return arguments.length < 2 ? zi(this.node(), r).on.on(t) : this.each(nke(r, t, e))
  }
  var QH = N(() => {
    'use strict'
    Ds()
    o(rke, 'start')
    o(nke, 'onFunction')
    o(x_, 'default')
  })
  function ike(t) {
    return function () {
      var e = this.parentNode
      for (var r in this.__transition) if (+r !== t) return
      e && e.removeChild(this)
    }
  }
  function b_() {
    return this.on('end.remove', ike(this._id))
  }
  var ZH = N(() => {
    'use strict'
    o(ike, 'removeFunction')
    o(b_, 'default')
  })
  function T_(t) {
    var e = this._name,
      r = this._id
    typeof t != 'function' && (t = Sh(t))
    for (var n = this._groups, i = n.length, a = new Array(i), s = 0; s < i; ++s)
      for (var l = n[s], u = l.length, h = (a[s] = new Array(u)), f, d, p = 0; p < u; ++p)
        (f = l[p]) && (d = t.call(f, f.__data__, p, l)) && ('__data__' in f && (d.__data__ = f.__data__), (h[p] = d), xu(h[p], e, r, p, h, zi(f, r)))
    return new as(a, this._parents, e, r)
  }
  var JH = N(() => {
    'use strict'
    yl()
    bd()
    Ds()
    o(T_, 'default')
  })
  function w_(t) {
    var e = this._name,
      r = this._id
    typeof t != 'function' && (t = _0(t))
    for (var n = this._groups, i = n.length, a = [], s = [], l = 0; l < i; ++l)
      for (var u = n[l], h = u.length, f, d = 0; d < h; ++d)
        if ((f = u[d])) {
          for (var p = t.call(f, f.__data__, d, u), m, g = zi(f, r), y = 0, v = p.length; y < v; ++y) (m = p[y]) && xu(m, e, r, y, p, g)
          a.push(p), s.push(f)
        }
    return new as(a, s, e, r)
  }
  var eW = N(() => {
    'use strict'
    yl()
    bd()
    Ds()
    o(w_, 'default')
  })
  function k_() {
    return new ake(this._groups, this._parents)
  }
  var ake,
    tW = N(() => {
      'use strict'
      yl()
      ake = gu.prototype.constructor
      o(k_, 'default')
    })
  function ske(t, e) {
    var r, n, i
    return function () {
      var a = Ch(this, t),
        s = (this.style.removeProperty(t), Ch(this, t))
      return a === s ? null : a === r && s === n ? i : (i = e((r = a), (n = s)))
    }
  }
  function rW(t) {
    return function () {
      this.style.removeProperty(t)
    }
  }
  function oke(t, e, r) {
    var n,
      i = r + '',
      a
    return function () {
      var s = Ch(this, t)
      return s === i ? null : s === n ? a : (a = e((n = s), r))
    }
  }
  function lke(t, e, r) {
    var n, i, a
    return function () {
      var s = Ch(this, t),
        l = r(this),
        u = l + ''
      return l == null && (u = l = (this.style.removeProperty(t), Ch(this, t))), s === u ? null : s === n && u === i ? a : ((i = u), (a = e((n = s), l)))
    }
  }
  function cke(t, e) {
    var r,
      n,
      i,
      a = 'style.' + e,
      s = 'end.' + a,
      l
    return function () {
      var u = ua(this, t),
        h = u.on,
        f = u.value[a] == null ? l || (l = rW(e)) : void 0
      ;(h !== r || i !== f) && (n = (r = h).copy()).on(s, (i = f)), (u.on = n)
    }
  }
  function E_(t, e, r) {
    var n = (t += '') == 'transform' ? n_ : _v
    return e == null
      ? this.styleTween(t, ske(t, n)).on('end.style.' + t, rW(t))
      : typeof e == 'function'
        ? this.styleTween(t, lke(t, n, $0(this, 'style.' + t, e))).each(cke(this._id, t))
        : this.styleTween(t, oke(t, n, e), r).on('end.style.' + t, null)
  }
  var nW = N(() => {
    'use strict'
    B0()
    yl()
    Ds()
    Av()
    u_()
    o(ske, 'styleNull')
    o(rW, 'styleRemove')
    o(oke, 'styleConstant')
    o(lke, 'styleFunction')
    o(cke, 'styleMaybeRemove')
    o(E_, 'default')
  })
  function uke(t, e, r) {
    return function (n) {
      this.style.setProperty(t, e.call(this, n), r)
    }
  }
  function hke(t, e, r) {
    var n, i
    function a() {
      var s = e.apply(this, arguments)
      return s !== i && (n = (i = s) && uke(t, s, r)), n
    }
    return o(a, 'tween'), (a._value = e), a
  }
  function S_(t, e, r) {
    var n = 'style.' + (t += '')
    if (arguments.length < 2) return (n = this.tween(n)) && n._value
    if (e == null) return this.tween(n, null)
    if (typeof e != 'function') throw new Error()
    return this.tween(n, hke(t, e, r ?? ''))
  }
  var iW = N(() => {
    'use strict'
    o(uke, 'styleInterpolate')
    o(hke, 'styleTween')
    o(S_, 'default')
  })
  function fke(t) {
    return function () {
      this.textContent = t
    }
  }
  function dke(t) {
    return function () {
      var e = t(this)
      this.textContent = e ?? ''
    }
  }
  function C_(t) {
    return this.tween('text', typeof t == 'function' ? dke($0(this, 'text', t)) : fke(t == null ? '' : t + ''))
  }
  var aW = N(() => {
    'use strict'
    Av()
    o(fke, 'textConstant')
    o(dke, 'textFunction')
    o(C_, 'default')
  })
  function pke(t) {
    return function (e) {
      this.textContent = t.call(this, e)
    }
  }
  function mke(t) {
    var e, r
    function n() {
      var i = t.apply(this, arguments)
      return i !== r && (e = (r = i) && pke(i)), e
    }
    return o(n, 'tween'), (n._value = t), n
  }
  function A_(t) {
    var e = 'text'
    if (arguments.length < 1) return (e = this.tween(e)) && e._value
    if (t == null) return this.tween(e, null)
    if (typeof t != 'function') throw new Error()
    return this.tween(e, mke(t))
  }
  var sW = N(() => {
    'use strict'
    o(pke, 'textInterpolate')
    o(mke, 'textTween')
    o(A_, 'default')
  })
  function __() {
    for (var t = this._name, e = this._id, r = v5(), n = this._groups, i = n.length, a = 0; a < i; ++a)
      for (var s = n[a], l = s.length, u, h = 0; h < l; ++h)
        if ((u = s[h])) {
          var f = zi(u, e)
          xu(u, t, r, h, s, { time: f.time + f.delay + f.duration, delay: 0, duration: f.duration, ease: f.ease })
        }
    return new as(n, this._parents, t, r)
  }
  var oW = N(() => {
    'use strict'
    bd()
    Ds()
    o(__, 'default')
  })
  function D_() {
    var t,
      e,
      r = this,
      n = r._id,
      i = r.size()
    return new Promise(function (a, s) {
      var l = { value: s },
        u = {
          value: o(function () {
            --i === 0 && a()
          }, 'value')
        }
      r.each(function () {
        var h = ua(this, n),
          f = h.on
        f !== t && ((e = (t = f).copy()), e._.cancel.push(l), e._.interrupt.push(l), e._.end.push(u)), (h.on = e)
      }),
        i === 0 && a()
    })
  }
  var lW = N(() => {
    'use strict'
    Ds()
    o(D_, 'default')
  })
  function as(t, e, r, n) {
    ;(this._groups = t), (this._parents = e), (this._name = r), (this._id = n)
  }
  function cW(t) {
    return gu().transition(t)
  }
  function v5() {
    return ++gke
  }
  var gke,
    bu,
    bd = N(() => {
      'use strict'
      yl()
      UH()
      HH()
      WH()
      qH()
      YH()
      XH()
      jH()
      KH()
      QH()
      ZH()
      JH()
      eW()
      tW()
      nW()
      iW()
      aW()
      sW()
      oW()
      Av()
      lW()
      gke = 0
      o(as, 'Transition')
      o(cW, 'transition')
      o(v5, 'newId')
      bu = gu.prototype
      as.prototype = cW.prototype = {
        constructor: as,
        select: T_,
        selectAll: w_,
        selectChild: bu.selectChild,
        selectChildren: bu.selectChildren,
        filter: y_,
        merge: v_,
        selection: k_,
        transition: __,
        call: bu.call,
        nodes: bu.nodes,
        node: bu.node,
        size: bu.size,
        empty: bu.empty,
        each: bu.each,
        on: x_,
        attr: h_,
        attrTween: f_,
        style: E_,
        styleTween: S_,
        text: C_,
        textTween: A_,
        remove: b_,
        tween: c_,
        delay: d_,
        duration: p_,
        ease: m_,
        easeVarying: g_,
        end: D_,
        [Symbol.iterator]: bu[Symbol.iterator]
      }
    })
  function x5(t) {
    return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2
  }
  var uW = N(() => {
    'use strict'
    o(x5, 'cubicInOut')
  })
  var L_ = N(() => {
    'use strict'
    uW()
  })
  function vke(t, e) {
    for (var r; !(r = t.__transition) || !(r = r[e]); ) if (!(t = t.parentNode)) throw new Error(`transition ${e} not found`)
    return r
  }
  function R_(t) {
    var e, r
    t instanceof as ? ((e = t._id), (t = t._name)) : ((e = v5()), ((r = yke).time = wv()), (t = t == null ? null : t + ''))
    for (var n = this._groups, i = n.length, a = 0; a < i; ++a) for (var s = n[a], l = s.length, u, h = 0; h < l; ++h) (u = s[h]) && xu(u, t, e, h, s, r || vke(u, e))
    return new as(n, this._parents, t, e)
  }
  var yke,
    hW = N(() => {
      'use strict'
      bd()
      Ds()
      L_()
      p5()
      yke = { time: null, delay: 0, duration: 250, ease: x5 }
      o(vke, 'inherit')
      o(R_, 'default')
    })
  var fW = N(() => {
    'use strict'
    yl()
    VH()
    hW()
    gu.prototype.interrupt = l_
    gu.prototype.transition = R_
  })
  var b5 = N(() => {
    'use strict'
    fW()
  })
  var dW = N(() => {
    'use strict'
  })
  var pW = N(() => {
    'use strict'
  })
  var mW = N(() => {
    'use strict'
  })
  function gW(t) {
    return [+t[0], +t[1]]
  }
  function xke(t) {
    return [gW(t[0]), gW(t[1])]
  }
  function N_(t) {
    return { type: t }
  }
  var _gt,
    Dgt,
    Lgt,
    Rgt,
    Ngt,
    Mgt,
    yW = N(() => {
      'use strict'
      b5()
      dW()
      pW()
      mW()
      ;({ abs: _gt, max: Dgt, min: Lgt } = Math)
      o(gW, 'number1')
      o(xke, 'number2')
      ;(Rgt = {
        name: 'x',
        handles: ['w', 'e'].map(N_),
        input: o(function (t, e) {
          return t == null
            ? null
            : [
                [+t[0], e[0][1]],
                [+t[1], e[1][1]]
              ]
        }, 'input'),
        output: o(function (t) {
          return t && [t[0][0], t[1][0]]
        }, 'output')
      }),
        (Ngt = {
          name: 'y',
          handles: ['n', 's'].map(N_),
          input: o(function (t, e) {
            return t == null
              ? null
              : [
                  [e[0][0], +t[0]],
                  [e[1][0], +t[1]]
                ]
          }, 'input'),
          output: o(function (t) {
            return t && [t[0][1], t[1][1]]
          }, 'output')
        }),
        (Mgt = {
          name: 'xy',
          handles: ['n', 'w', 'e', 's', 'nw', 'ne', 'sw', 'se'].map(N_),
          input: o(function (t) {
            return t == null ? null : xke(t)
          }, 'input'),
          output: o(function (t) {
            return t
          }, 'output')
        })
      o(N_, 'type')
    })
  var vW = N(() => {
    'use strict'
    yW()
  })
  function xW(t) {
    this._ += t[0]
    for (let e = 1, r = t.length; e < r; ++e) this._ += arguments[e] + t[e]
  }
  function Tke(t) {
    let e = Math.floor(t)
    if (!(e >= 0)) throw new Error(`invalid digits: ${t}`)
    if (e > 15) return xW
    let r = 10 ** e
    return function (n) {
      this._ += n[0]
      for (let i = 1, a = n.length; i < a; ++i) this._ += Math.round(arguments[i] * r) / r + n[i]
    }
  }
  function bW() {
    return new wd()
  }
  var M_,
    I_,
    Td,
    bke,
    wd,
    TW = N(() => {
      'use strict'
      ;(M_ = Math.PI), (I_ = 2 * M_), (Td = 1e-6), (bke = I_ - Td)
      o(xW, 'append')
      o(Tke, 'appendRound')
      wd = class {
        static {
          o(this, 'Path')
        }
        constructor(e) {
          ;(this._x0 = this._y0 = this._x1 = this._y1 = null), (this._ = ''), (this._append = e == null ? xW : Tke(e))
        }
        moveTo(e, r) {
          this._append`M${(this._x0 = this._x1 = +e)},${(this._y0 = this._y1 = +r)}`
        }
        closePath() {
          this._x1 !== null && ((this._x1 = this._x0), (this._y1 = this._y0), this._append`Z`)
        }
        lineTo(e, r) {
          this._append`L${(this._x1 = +e)},${(this._y1 = +r)}`
        }
        quadraticCurveTo(e, r, n, i) {
          this._append`Q${+e},${+r},${(this._x1 = +n)},${(this._y1 = +i)}`
        }
        bezierCurveTo(e, r, n, i, a, s) {
          this._append`C${+e},${+r},${+n},${+i},${(this._x1 = +a)},${(this._y1 = +s)}`
        }
        arcTo(e, r, n, i, a) {
          if (((e = +e), (r = +r), (n = +n), (i = +i), (a = +a), a < 0)) throw new Error(`negative radius: ${a}`)
          let s = this._x1,
            l = this._y1,
            u = n - e,
            h = i - r,
            f = s - e,
            d = l - r,
            p = f * f + d * d
          if (this._x1 === null) this._append`M${(this._x1 = e)},${(this._y1 = r)}`
          else if (p > Td)
            if (!(Math.abs(d * u - h * f) > Td) || !a) this._append`L${(this._x1 = e)},${(this._y1 = r)}`
            else {
              let m = n - s,
                g = i - l,
                y = u * u + h * h,
                v = m * m + g * g,
                x = Math.sqrt(y),
                b = Math.sqrt(p),
                T = a * Math.tan((M_ - Math.acos((y + p - v) / (2 * x * b))) / 2),
                S = T / b,
                w = T / x
              Math.abs(S - 1) > Td && this._append`L${e + S * f},${r + S * d}`, this._append`A${a},${a},0,0,${+(d * m > f * g)},${(this._x1 = e + w * u)},${(this._y1 = r + w * h)}`
            }
        }
        arc(e, r, n, i, a, s) {
          if (((e = +e), (r = +r), (n = +n), (s = !!s), n < 0)) throw new Error(`negative radius: ${n}`)
          let l = n * Math.cos(i),
            u = n * Math.sin(i),
            h = e + l,
            f = r + u,
            d = 1 ^ s,
            p = s ? i - a : a - i
          this._x1 === null ? this._append`M${h},${f}` : (Math.abs(this._x1 - h) > Td || Math.abs(this._y1 - f) > Td) && this._append`L${h},${f}`,
            n &&
              (p < 0 && (p = (p % I_) + I_),
              p > bke
                ? this._append`A${n},${n},0,1,${d},${e - l},${r - u}A${n},${n},0,1,${d},${(this._x1 = h)},${(this._y1 = f)}`
                : p > Td && this._append`A${n},${n},0,${+(p >= M_)},${d},${(this._x1 = e + n * Math.cos(a))},${(this._y1 = r + n * Math.sin(a))}`)
        }
        rect(e, r, n, i) {
          this._append`M${(this._x0 = this._x1 = +e)},${(this._y0 = this._y1 = +r)}h${(n = +n)}v${+i}h${-n}Z`
        }
        toString() {
          return this._
        }
      }
      o(bW, 'path')
      bW.prototype = wd.prototype
    })
  var O_ = N(() => {
    'use strict'
    TW()
  })
  var wW = N(() => {
    'use strict'
  })
  var kW = N(() => {
    'use strict'
  })
  var EW = N(() => {
    'use strict'
  })
  var SW = N(() => {
    'use strict'
  })
  var CW = N(() => {
    'use strict'
  })
  var AW = N(() => {
    'use strict'
  })
  var _W = N(() => {
    'use strict'
  })
  function P_(t) {
    return Math.abs((t = Math.round(t))) >= 1e21 ? t.toLocaleString('en').replace(/,/g, '') : t.toString(10)
  }
  function kd(t, e) {
    if ((r = (t = e ? t.toExponential(e - 1) : t.toExponential()).indexOf('e')) < 0) return null
    var r,
      n = t.slice(0, r)
    return [n.length > 1 ? n[0] + n.slice(2) : n, +t.slice(r + 1)]
  }
  var Dv = N(() => {
    'use strict'
    o(P_, 'default')
    o(kd, 'formatDecimalParts')
  })
  function bl(t) {
    return (t = kd(Math.abs(t))), t ? t[1] : NaN
  }
  var Lv = N(() => {
    'use strict'
    Dv()
    o(bl, 'default')
  })
  function B_(t, e) {
    return function (r, n) {
      for (
        var i = r.length, a = [], s = 0, l = t[0], u = 0;
        i > 0 && l > 0 && (u + l + 1 > n && (l = Math.max(1, n - u)), a.push(r.substring((i -= l), i + l)), !((u += l + 1) > n));

      )
        l = t[(s = (s + 1) % t.length)]
      return a.reverse().join(e)
    }
  }
  var DW = N(() => {
    'use strict'
    o(B_, 'default')
  })
  function F_(t) {
    return function (e) {
      return e.replace(/[0-9]/g, function (r) {
        return t[+r]
      })
    }
  }
  var LW = N(() => {
    'use strict'
    o(F_, 'default')
  })
  function Lh(t) {
    if (!(e = wke.exec(t))) throw new Error('invalid format: ' + t)
    var e
    return new T5({ fill: e[1], align: e[2], sign: e[3], symbol: e[4], zero: e[5], width: e[6], comma: e[7], precision: e[8] && e[8].slice(1), trim: e[9], type: e[10] })
  }
  function T5(t) {
    ;(this.fill = t.fill === void 0 ? ' ' : t.fill + ''),
      (this.align = t.align === void 0 ? '>' : t.align + ''),
      (this.sign = t.sign === void 0 ? '-' : t.sign + ''),
      (this.symbol = t.symbol === void 0 ? '' : t.symbol + ''),
      (this.zero = !!t.zero),
      (this.width = t.width === void 0 ? void 0 : +t.width),
      (this.comma = !!t.comma),
      (this.precision = t.precision === void 0 ? void 0 : +t.precision),
      (this.trim = !!t.trim),
      (this.type = t.type === void 0 ? '' : t.type + '')
  }
  var wke,
    $_ = N(() => {
      'use strict'
      wke = /^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i
      o(Lh, 'formatSpecifier')
      Lh.prototype = T5.prototype
      o(T5, 'FormatSpecifier')
      T5.prototype.toString = function () {
        return (
          this.fill +
          this.align +
          this.sign +
          this.symbol +
          (this.zero ? '0' : '') +
          (this.width === void 0 ? '' : Math.max(1, this.width | 0)) +
          (this.comma ? ',' : '') +
          (this.precision === void 0 ? '' : '.' + Math.max(0, this.precision | 0)) +
          (this.trim ? '~' : '') +
          this.type
        )
      }
    })
  function z_(t) {
    e: for (var e = t.length, r = 1, n = -1, i; r < e; ++r)
      switch (t[r]) {
        case '.':
          n = i = r
          break
        case '0':
          n === 0 && (n = r), (i = r)
          break
        default:
          if (!+t[r]) break e
          n > 0 && (n = 0)
          break
      }
    return n > 0 ? t.slice(0, n) + t.slice(i + 1) : t
  }
  var RW = N(() => {
    'use strict'
    o(z_, 'default')
  })
  function V_(t, e) {
    var r = kd(t, e)
    if (!r) return t + ''
    var n = r[0],
      i = r[1],
      a = i - (G_ = Math.max(-8, Math.min(8, Math.floor(i / 3))) * 3) + 1,
      s = n.length
    return a === s
      ? n
      : a > s
        ? n + new Array(a - s + 1).join('0')
        : a > 0
          ? n.slice(0, a) + '.' + n.slice(a)
          : '0.' + new Array(1 - a).join('0') + kd(t, Math.max(0, e + a - 1))[0]
  }
  var G_,
    U_ = N(() => {
      'use strict'
      Dv()
      o(V_, 'default')
    })
  function w5(t, e) {
    var r = kd(t, e)
    if (!r) return t + ''
    var n = r[0],
      i = r[1]
    return i < 0 ? '0.' + new Array(-i).join('0') + n : n.length > i + 1 ? n.slice(0, i + 1) + '.' + n.slice(i + 1) : n + new Array(i - n.length + 2).join('0')
  }
  var NW = N(() => {
    'use strict'
    Dv()
    o(w5, 'default')
  })
  var H_,
    MW = N(() => {
      'use strict'
      Dv()
      U_()
      NW()
      H_ = {
        '%': o((t, e) => (t * 100).toFixed(e), '%'),
        b: o(t => Math.round(t).toString(2), 'b'),
        c: o(t => t + '', 'c'),
        d: P_,
        e: o((t, e) => t.toExponential(e), 'e'),
        f: o((t, e) => t.toFixed(e), 'f'),
        g: o((t, e) => t.toPrecision(e), 'g'),
        o: o(t => Math.round(t).toString(8), 'o'),
        p: o((t, e) => w5(t * 100, e), 'p'),
        r: w5,
        s: V_,
        X: o(t => Math.round(t).toString(16).toUpperCase(), 'X'),
        x: o(t => Math.round(t).toString(16), 'x')
      }
    })
  function k5(t) {
    return t
  }
  var IW = N(() => {
    'use strict'
    o(k5, 'default')
  })
  function W_(t) {
    var e = t.grouping === void 0 || t.thousands === void 0 ? k5 : B_(OW.call(t.grouping, Number), t.thousands + ''),
      r = t.currency === void 0 ? '' : t.currency[0] + '',
      n = t.currency === void 0 ? '' : t.currency[1] + '',
      i = t.decimal === void 0 ? '.' : t.decimal + '',
      a = t.numerals === void 0 ? k5 : F_(OW.call(t.numerals, String)),
      s = t.percent === void 0 ? '%' : t.percent + '',
      l = t.minus === void 0 ? '\u2212' : t.minus + '',
      u = t.nan === void 0 ? 'NaN' : t.nan + ''
    function h(d) {
      d = Lh(d)
      var p = d.fill,
        m = d.align,
        g = d.sign,
        y = d.symbol,
        v = d.zero,
        x = d.width,
        b = d.comma,
        T = d.precision,
        S = d.trim,
        w = d.type
      w === 'n' ? ((b = !0), (w = 'g')) : H_[w] || (T === void 0 && (T = 12), (S = !0), (w = 'g')), (v || (p === '0' && m === '=')) && ((v = !0), (p = '0'), (m = '='))
      var E = y === '$' ? r : y === '#' && /[boxX]/.test(w) ? '0' + w.toLowerCase() : '',
        _ = y === '$' ? n : /[%p]/.test(w) ? s : '',
        C = H_[w],
        D = /[defgprs%]/.test(w)
      T = T === void 0 ? 6 : /[gprs]/.test(w) ? Math.max(1, Math.min(21, T)) : Math.max(0, Math.min(20, T))
      function O(R) {
        var k = E,
          L = _,
          A,
          I,
          M
        if (w === 'c') (L = C(R) + L), (R = '')
        else {
          R = +R
          var P = R < 0 || 1 / R < 0
          if (
            ((R = isNaN(R) ? u : C(Math.abs(R), T)),
            S && (R = z_(R)),
            P && +R == 0 && g !== '+' && (P = !1),
            (k = (P ? (g === '(' ? g : l) : g === '-' || g === '(' ? '' : g) + k),
            (L = (w === 's' ? PW[8 + G_ / 3] : '') + L + (P && g === '(' ? ')' : '')),
            D)
          ) {
            for (A = -1, I = R.length; ++A < I; )
              if (((M = R.charCodeAt(A)), 48 > M || M > 57)) {
                ;(L = (M === 46 ? i + R.slice(A + 1) : R.slice(A)) + L), (R = R.slice(0, A))
                break
              }
          }
        }
        b && !v && (R = e(R, 1 / 0))
        var B = k.length + R.length + L.length,
          F = B < x ? new Array(x - B + 1).join(p) : ''
        switch ((b && v && ((R = e(F + R, F.length ? x - L.length : 1 / 0)), (F = '')), m)) {
          case '<':
            R = k + R + L + F
            break
          case '=':
            R = k + F + R + L
            break
          case '^':
            R = F.slice(0, (B = F.length >> 1)) + k + R + L + F.slice(B)
            break
          default:
            R = F + k + R + L
            break
        }
        return a(R)
      }
      return (
        o(O, 'format'),
        (O.toString = function () {
          return d + ''
        }),
        O
      )
    }
    o(h, 'newFormat')
    function f(d, p) {
      var m = h(((d = Lh(d)), (d.type = 'f'), d)),
        g = Math.max(-8, Math.min(8, Math.floor(bl(p) / 3))) * 3,
        y = Math.pow(10, -g),
        v = PW[8 + g / 3]
      return function (x) {
        return m(y * x) + v
      }
    }
    return o(f, 'formatPrefix'), { format: h, formatPrefix: f }
  }
  var OW,
    PW,
    BW = N(() => {
      'use strict'
      Lv()
      DW()
      LW()
      $_()
      RW()
      MW()
      U_()
      IW()
      ;(OW = Array.prototype.map), (PW = ['y', 'z', 'a', 'f', 'p', 'n', '\xB5', 'm', '', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y'])
      o(W_, 'default')
    })
  function q_(t) {
    return (E5 = W_(t)), (cc = E5.format), (S5 = E5.formatPrefix), E5
  }
  var E5,
    cc,
    S5,
    FW = N(() => {
      'use strict'
      BW()
      q_({ thousands: ',', grouping: [3], currency: ['$', ''] })
      o(q_, 'defaultLocale')
    })
  function C5(t) {
    return Math.max(0, -bl(Math.abs(t)))
  }
  var $W = N(() => {
    'use strict'
    Lv()
    o(C5, 'default')
  })
  function A5(t, e) {
    return Math.max(0, Math.max(-8, Math.min(8, Math.floor(bl(e) / 3))) * 3 - bl(Math.abs(t)))
  }
  var zW = N(() => {
    'use strict'
    Lv()
    o(A5, 'default')
  })
  function _5(t, e) {
    return (t = Math.abs(t)), (e = Math.abs(e) - t), Math.max(0, bl(e) - bl(t)) + 1
  }
  var GW = N(() => {
    'use strict'
    Lv()
    o(_5, 'default')
  })
  var Y_ = N(() => {
    'use strict'
    FW()
    $_()
    $W()
    zW()
    GW()
  })
  var VW = N(() => {
    'use strict'
  })
  function kke(t) {
    var e = 0,
      r = t.children,
      n = r && r.length
    if (!n) e = 1
    else for (; --n >= 0; ) e += r[n].value
    t.value = e
  }
  function X_() {
    return this.eachAfter(kke)
  }
  var UW = N(() => {
    'use strict'
    o(kke, 'count')
    o(X_, 'default')
  })
  function j_(t, e) {
    let r = -1
    for (let n of this) t.call(e, n, ++r, this)
    return this
  }
  var HW = N(() => {
    'use strict'
    o(j_, 'default')
  })
  function K_(t, e) {
    for (var r = this, n = [r], i, a, s = -1; (r = n.pop()); ) if ((t.call(e, r, ++s, this), (i = r.children))) for (a = i.length - 1; a >= 0; --a) n.push(i[a])
    return this
  }
  var WW = N(() => {
    'use strict'
    o(K_, 'default')
  })
  function Q_(t, e) {
    for (var r = this, n = [r], i = [], a, s, l, u = -1; (r = n.pop()); ) if ((i.push(r), (a = r.children))) for (s = 0, l = a.length; s < l; ++s) n.push(a[s])
    for (; (r = i.pop()); ) t.call(e, r, ++u, this)
    return this
  }
  var qW = N(() => {
    'use strict'
    o(Q_, 'default')
  })
  function Z_(t, e) {
    let r = -1
    for (let n of this) if (t.call(e, n, ++r, this)) return n
  }
  var YW = N(() => {
    'use strict'
    o(Z_, 'default')
  })
  function J_(t) {
    return this.eachAfter(function (e) {
      for (var r = +t(e.data) || 0, n = e.children, i = n && n.length; --i >= 0; ) r += n[i].value
      e.value = r
    })
  }
  var XW = N(() => {
    'use strict'
    o(J_, 'default')
  })
  function eD(t) {
    return this.eachBefore(function (e) {
      e.children && e.children.sort(t)
    })
  }
  var jW = N(() => {
    'use strict'
    o(eD, 'default')
  })
  function tD(t) {
    for (var e = this, r = Eke(e, t), n = [e]; e !== r; ) (e = e.parent), n.push(e)
    for (var i = n.length; t !== r; ) n.splice(i, 0, t), (t = t.parent)
    return n
  }
  function Eke(t, e) {
    if (t === e) return t
    var r = t.ancestors(),
      n = e.ancestors(),
      i = null
    for (t = r.pop(), e = n.pop(); t === e; ) (i = t), (t = r.pop()), (e = n.pop())
    return i
  }
  var KW = N(() => {
    'use strict'
    o(tD, 'default')
    o(Eke, 'leastCommonAncestor')
  })
  function rD() {
    for (var t = this, e = [t]; (t = t.parent); ) e.push(t)
    return e
  }
  var QW = N(() => {
    'use strict'
    o(rD, 'default')
  })
  function nD() {
    return Array.from(this)
  }
  var ZW = N(() => {
    'use strict'
    o(nD, 'default')
  })
  function iD() {
    var t = []
    return (
      this.eachBefore(function (e) {
        e.children || t.push(e)
      }),
      t
    )
  }
  var JW = N(() => {
    'use strict'
    o(iD, 'default')
  })
  function aD() {
    var t = this,
      e = []
    return (
      t.each(function (r) {
        r !== t && e.push({ source: r.parent, target: r })
      }),
      e
    )
  }
  var eq = N(() => {
    'use strict'
    o(aD, 'default')
  })
  function* sD() {
    var t = this,
      e,
      r = [t],
      n,
      i,
      a
    do for (e = r.reverse(), r = []; (t = e.pop()); ) if ((yield t, (n = t.children))) for (i = 0, a = n.length; i < a; ++i) r.push(n[i])
    while (r.length)
  }
  var tq = N(() => {
    'use strict'
    o(sD, 'default')
  })
  function z0(t, e) {
    t instanceof Map ? ((t = [void 0, t]), e === void 0 && (e = Ake)) : e === void 0 && (e = Cke)
    for (var r = new Rv(t), n, i = [r], a, s, l, u; (n = i.pop()); )
      if ((s = e(n.data)) && (u = (s = Array.from(s)).length))
        for (n.children = s, l = u - 1; l >= 0; --l) i.push((a = s[l] = new Rv(s[l]))), (a.parent = n), (a.depth = n.depth + 1)
    return r.eachBefore(Dke)
  }
  function Ske() {
    return z0(this).eachBefore(_ke)
  }
  function Cke(t) {
    return t.children
  }
  function Ake(t) {
    return Array.isArray(t) ? t[1] : null
  }
  function _ke(t) {
    t.data.value !== void 0 && (t.value = t.data.value), (t.data = t.data.data)
  }
  function Dke(t) {
    var e = 0
    do t.height = e
    while ((t = t.parent) && t.height < ++e)
  }
  function Rv(t) {
    ;(this.data = t), (this.depth = this.height = 0), (this.parent = null)
  }
  var rq = N(() => {
    'use strict'
    UW()
    HW()
    WW()
    qW()
    YW()
    XW()
    jW()
    KW()
    QW()
    ZW()
    JW()
    eq()
    tq()
    o(z0, 'hierarchy')
    o(Ske, 'node_copy')
    o(Cke, 'objectChildren')
    o(Ake, 'mapChildren')
    o(_ke, 'copyData')
    o(Dke, 'computeHeight')
    o(Rv, 'Node')
    Rv.prototype = z0.prototype = {
      constructor: Rv,
      count: X_,
      each: j_,
      eachAfter: Q_,
      eachBefore: K_,
      find: Z_,
      sum: J_,
      sort: eD,
      path: tD,
      ancestors: rD,
      descendants: nD,
      leaves: iD,
      links: aD,
      copy: Ske,
      [Symbol.iterator]: sD
    }
  })
  function nq(t) {
    if (typeof t != 'function') throw new Error()
    return t
  }
  var iq = N(() => {
    'use strict'
    o(nq, 'required')
  })
  function G0() {
    return 0
  }
  function Ed(t) {
    return function () {
      return t
    }
  }
  var aq = N(() => {
    'use strict'
    o(G0, 'constantZero')
    o(Ed, 'default')
  })
  function oD(t) {
    ;(t.x0 = Math.round(t.x0)), (t.y0 = Math.round(t.y0)), (t.x1 = Math.round(t.x1)), (t.y1 = Math.round(t.y1))
  }
  var sq = N(() => {
    'use strict'
    o(oD, 'default')
  })
  function lD(t, e, r, n, i) {
    for (var a = t.children, s, l = -1, u = a.length, h = t.value && (n - e) / t.value; ++l < u; ) (s = a[l]), (s.y0 = r), (s.y1 = i), (s.x0 = e), (s.x1 = e += s.value * h)
  }
  var oq = N(() => {
    'use strict'
    o(lD, 'default')
  })
  function cD(t, e, r, n, i) {
    for (var a = t.children, s, l = -1, u = a.length, h = t.value && (i - r) / t.value; ++l < u; ) (s = a[l]), (s.x0 = e), (s.x1 = n), (s.y0 = r), (s.y1 = r += s.value * h)
  }
  var lq = N(() => {
    'use strict'
    o(cD, 'default')
  })
  function Rke(t, e, r, n, i, a) {
    for (var s = [], l = e.children, u, h, f = 0, d = 0, p = l.length, m, g, y = e.value, v, x, b, T, S, w, E; f < p; ) {
      ;(m = i - r), (g = a - n)
      do v = l[d++].value
      while (!v && d < p)
      for (x = b = v, w = Math.max(g / m, m / g) / (y * t), E = v * v * w, S = Math.max(b / E, E / x); d < p; ++d) {
        if (((v += h = l[d].value), h < x && (x = h), h > b && (b = h), (E = v * v * w), (T = Math.max(b / E, E / x)), T > S)) {
          v -= h
          break
        }
        S = T
      }
      s.push((u = { value: v, dice: m < g, children: l.slice(f, d) })),
        u.dice ? lD(u, r, n, i, y ? (n += (g * v) / y) : a) : cD(u, r, n, y ? (r += (m * v) / y) : i, a),
        (y -= v),
        (f = d)
    }
    return s
  }
  var Lke,
    cq,
    uq = N(() => {
      'use strict'
      oq()
      lq()
      Lke = (1 + Math.sqrt(5)) / 2
      o(Rke, 'squarifyRatio')
      cq = o(function t(e) {
        function r(n, i, a, s, l) {
          Rke(e, n, i, a, s, l)
        }
        return (
          o(r, 'squarify'),
          (r.ratio = function (n) {
            return t((n = +n) > 1 ? n : 1)
          }),
          r
        )
      }, 'custom')(Lke)
    })
  function D5() {
    var t = cq,
      e = !1,
      r = 1,
      n = 1,
      i = [0],
      a = G0,
      s = G0,
      l = G0,
      u = G0,
      h = G0
    function f(p) {
      return (p.x0 = p.y0 = 0), (p.x1 = r), (p.y1 = n), p.eachBefore(d), (i = [0]), e && p.eachBefore(oD), p
    }
    o(f, 'treemap')
    function d(p) {
      var m = i[p.depth],
        g = p.x0 + m,
        y = p.y0 + m,
        v = p.x1 - m,
        x = p.y1 - m
      v < g && (g = v = (g + v) / 2),
        x < y && (y = x = (y + x) / 2),
        (p.x0 = g),
        (p.y0 = y),
        (p.x1 = v),
        (p.y1 = x),
        p.children &&
          ((m = i[p.depth + 1] = a(p) / 2),
          (g += h(p) - m),
          (y += s(p) - m),
          (v -= l(p) - m),
          (x -= u(p) - m),
          v < g && (g = v = (g + v) / 2),
          x < y && (y = x = (y + x) / 2),
          t(p, g, y, v, x))
    }
    return (
      o(d, 'positionNode'),
      (f.round = function (p) {
        return arguments.length ? ((e = !!p), f) : e
      }),
      (f.size = function (p) {
        return arguments.length ? ((r = +p[0]), (n = +p[1]), f) : [r, n]
      }),
      (f.tile = function (p) {
        return arguments.length ? ((t = nq(p)), f) : t
      }),
      (f.padding = function (p) {
        return arguments.length ? f.paddingInner(p).paddingOuter(p) : f.paddingInner()
      }),
      (f.paddingInner = function (p) {
        return arguments.length ? ((a = typeof p == 'function' ? p : Ed(+p)), f) : a
      }),
      (f.paddingOuter = function (p) {
        return arguments.length ? f.paddingTop(p).paddingRight(p).paddingBottom(p).paddingLeft(p) : f.paddingTop()
      }),
      (f.paddingTop = function (p) {
        return arguments.length ? ((s = typeof p == 'function' ? p : Ed(+p)), f) : s
      }),
      (f.paddingRight = function (p) {
        return arguments.length ? ((l = typeof p == 'function' ? p : Ed(+p)), f) : l
      }),
      (f.paddingBottom = function (p) {
        return arguments.length ? ((u = typeof p == 'function' ? p : Ed(+p)), f) : u
      }),
      (f.paddingLeft = function (p) {
        return arguments.length ? ((h = typeof p == 'function' ? p : Ed(+p)), f) : h
      }),
      f
    )
  }
  var hq = N(() => {
    'use strict'
    sq()
    uq()
    iq()
    aq()
    o(D5, 'default')
  })
  var fq = N(() => {
    'use strict'
    rq()
    hq()
  })
  var dq = N(() => {
    'use strict'
  })
  var pq = N(() => {
    'use strict'
  })
  function Rh(t, e) {
    switch (arguments.length) {
      case 0:
        break
      case 1:
        this.range(t)
        break
      default:
        this.range(e).domain(t)
        break
    }
    return this
  }
  var Nv = N(() => {
    'use strict'
    o(Rh, 'initRange')
  })
  function Js() {
    var t = new C0(),
      e = [],
      r = [],
      n = uD
    function i(a) {
      let s = t.get(a)
      if (s === void 0) {
        if (n !== uD) return n
        t.set(a, (s = e.push(a) - 1))
      }
      return r[s % r.length]
    }
    return (
      o(i, 'scale'),
      (i.domain = function (a) {
        if (!arguments.length) return e.slice()
        ;(e = []), (t = new C0())
        for (let s of a) t.has(s) || t.set(s, e.push(s) - 1)
        return i
      }),
      (i.range = function (a) {
        return arguments.length ? ((r = Array.from(a)), i) : r.slice()
      }),
      (i.unknown = function (a) {
        return arguments.length ? ((n = a), i) : n
      }),
      (i.copy = function () {
        return Js(e, r).unknown(n)
      }),
      Rh.apply(i, arguments),
      i
    )
  }
  var uD,
    hD = N(() => {
      'use strict'
      Eh()
      Nv()
      uD = Symbol('implicit')
      o(Js, 'ordinal')
    })
  function V0() {
    var t = Js().unknown(void 0),
      e = t.domain,
      r = t.range,
      n = 0,
      i = 1,
      a,
      s,
      l = !1,
      u = 0,
      h = 0,
      f = 0.5
    delete t.unknown
    function d() {
      var p = e().length,
        m = i < n,
        g = m ? i : n,
        y = m ? n : i
      ;(a = (y - g) / Math.max(1, p - u + h * 2)), l && (a = Math.floor(a)), (g += (y - g - a * (p - u)) * f), (s = a * (1 - u)), l && ((g = Math.round(g)), (s = Math.round(s)))
      var v = q3(p).map(function (x) {
        return g + a * x
      })
      return r(m ? v.reverse() : v)
    }
    return (
      o(d, 'rescale'),
      (t.domain = function (p) {
        return arguments.length ? (e(p), d()) : e()
      }),
      (t.range = function (p) {
        return arguments.length ? (([n, i] = p), (n = +n), (i = +i), d()) : [n, i]
      }),
      (t.rangeRound = function (p) {
        return ([n, i] = p), (n = +n), (i = +i), (l = !0), d()
      }),
      (t.bandwidth = function () {
        return s
      }),
      (t.step = function () {
        return a
      }),
      (t.round = function (p) {
        return arguments.length ? ((l = !!p), d()) : l
      }),
      (t.padding = function (p) {
        return arguments.length ? ((u = Math.min(1, (h = +p))), d()) : u
      }),
      (t.paddingInner = function (p) {
        return arguments.length ? ((u = Math.min(1, p)), d()) : u
      }),
      (t.paddingOuter = function (p) {
        return arguments.length ? ((h = +p), d()) : h
      }),
      (t.align = function (p) {
        return arguments.length ? ((f = Math.max(0, Math.min(1, p))), d()) : f
      }),
      (t.copy = function () {
        return V0(e(), [n, i]).round(l).paddingInner(u).paddingOuter(h).align(f)
      }),
      Rh.apply(d(), arguments)
    )
  }
  var mq = N(() => {
    'use strict'
    Eh()
    Nv()
    hD()
    o(V0, 'band')
  })
  function fD(t) {
    return function () {
      return t
    }
  }
  var gq = N(() => {
    'use strict'
    o(fD, 'constants')
  })
  function dD(t) {
    return +t
  }
  var yq = N(() => {
    'use strict'
    o(dD, 'number')
  })
  function U0(t) {
    return t
  }
  function pD(t, e) {
    return (e -= t = +t)
      ? function (r) {
          return (r - t) / e
        }
      : fD(isNaN(e) ? NaN : 0.5)
  }
  function Nke(t, e) {
    var r
    return (
      t > e && ((r = t), (t = e), (e = r)),
      function (n) {
        return Math.max(t, Math.min(e, n))
      }
    )
  }
  function Mke(t, e, r) {
    var n = t[0],
      i = t[1],
      a = e[0],
      s = e[1]
    return (
      i < n ? ((n = pD(i, n)), (a = r(s, a))) : ((n = pD(n, i)), (a = r(a, s))),
      function (l) {
        return a(n(l))
      }
    )
  }
  function Ike(t, e, r) {
    var n = Math.min(t.length, e.length) - 1,
      i = new Array(n),
      a = new Array(n),
      s = -1
    for (t[n] < t[0] && ((t = t.slice().reverse()), (e = e.slice().reverse())); ++s < n; ) (i[s] = pD(t[s], t[s + 1])), (a[s] = r(e[s], e[s + 1]))
    return function (l) {
      var u = OA(t, l, 1, n) - 1
      return a[u](i[u](l))
    }
  }
  function L5(t, e) {
    return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())
  }
  function Oke() {
    var t = vq,
      e = vq,
      r = Dh,
      n,
      i,
      a,
      s = U0,
      l,
      u,
      h
    function f() {
      var p = Math.min(t.length, e.length)
      return s !== U0 && (s = Nke(t[0], t[p - 1])), (l = p > 2 ? Ike : Mke), (u = h = null), d
    }
    o(f, 'rescale')
    function d(p) {
      return p == null || isNaN((p = +p)) ? a : (u || (u = l(t.map(n), e, r)))(n(s(p)))
    }
    return (
      o(d, 'scale'),
      (d.invert = function (p) {
        return s(i((h || (h = l(e, t.map(n), Ki)))(p)))
      }),
      (d.domain = function (p) {
        return arguments.length ? ((t = Array.from(p, dD)), f()) : t.slice()
      }),
      (d.range = function (p) {
        return arguments.length ? ((e = Array.from(p)), f()) : e.slice()
      }),
      (d.rangeRound = function (p) {
        return (e = Array.from(p)), (r = s5), f()
      }),
      (d.clamp = function (p) {
        return arguments.length ? ((s = p ? !0 : U0), f()) : s !== U0
      }),
      (d.interpolate = function (p) {
        return arguments.length ? ((r = p), f()) : r
      }),
      (d.unknown = function (p) {
        return arguments.length ? ((a = p), d) : a
      }),
      function (p, m) {
        return (n = p), (i = m), f()
      }
    )
  }
  function Mv() {
    return Oke()(U0, U0)
  }
  var vq,
    mD = N(() => {
      'use strict'
      Eh()
      B0()
      gq()
      yq()
      vq = [0, 1]
      o(U0, 'identity')
      o(pD, 'normalize')
      o(Nke, 'clamper')
      o(Mke, 'bimap')
      o(Ike, 'polymap')
      o(L5, 'copy')
      o(Oke, 'transformer')
      o(Mv, 'continuous')
    })
  function gD(t, e, r, n) {
    var i = A0(t, e, r),
      a
    switch (((n = Lh(n ?? ',f')), n.type)) {
      case 's': {
        var s = Math.max(Math.abs(t), Math.abs(e))
        return n.precision == null && !isNaN((a = A5(i, s))) && (n.precision = a), S5(n, s)
      }
      case '':
      case 'e':
      case 'g':
      case 'p':
      case 'r': {
        n.precision == null && !isNaN((a = _5(i, Math.max(Math.abs(t), Math.abs(e))))) && (n.precision = a - (n.type === 'e'))
        break
      }
      case 'f':
      case '%': {
        n.precision == null && !isNaN((a = C5(i))) && (n.precision = a - (n.type === '%') * 2)
        break
      }
    }
    return cc(n)
  }
  var xq = N(() => {
    'use strict'
    Eh()
    Y_()
    o(gD, 'tickFormat')
  })
  function Pke(t) {
    var e = t.domain
    return (
      (t.ticks = function (r) {
        var n = e()
        return U3(n[0], n[n.length - 1], r ?? 10)
      }),
      (t.tickFormat = function (r, n) {
        var i = e()
        return gD(i[0], i[i.length - 1], r ?? 10, n)
      }),
      (t.nice = function (r) {
        r == null && (r = 10)
        var n = e(),
          i = 0,
          a = n.length - 1,
          s = n[i],
          l = n[a],
          u,
          h,
          f = 10
        for (l < s && ((h = s), (s = l), (l = h), (h = i), (i = a), (a = h)); f-- > 0; ) {
          if (((h = ov(s, l, r)), h === u)) return (n[i] = s), (n[a] = l), e(n)
          if (h > 0) (s = Math.floor(s / h) * h), (l = Math.ceil(l / h) * h)
          else if (h < 0) (s = Math.ceil(s * h) / h), (l = Math.floor(l * h) / h)
          else break
          u = h
        }
        return t
      }),
      t
    )
  }
  function Tl() {
    var t = Mv()
    return (
      (t.copy = function () {
        return L5(t, Tl())
      }),
      Rh.apply(t, arguments),
      Pke(t)
    )
  }
  var bq = N(() => {
    'use strict'
    Eh()
    mD()
    Nv()
    xq()
    o(Pke, 'linearish')
    o(Tl, 'linear')
  })
  function yD(t, e) {
    t = t.slice()
    var r = 0,
      n = t.length - 1,
      i = t[r],
      a = t[n],
      s
    return a < i && ((s = r), (r = n), (n = s), (s = i), (i = a), (a = s)), (t[r] = e.floor(i)), (t[n] = e.ceil(a)), t
  }
  var Tq = N(() => {
    'use strict'
    o(yD, 'nice')
  })
  function xn(t, e, r, n) {
    function i(a) {
      return t((a = arguments.length === 0 ? new Date() : new Date(+a))), a
    }
    return (
      o(i, 'interval'),
      (i.floor = a => (t((a = new Date(+a))), a)),
      (i.ceil = a => (t((a = new Date(a - 1))), e(a, 1), t(a), a)),
      (i.round = a => {
        let s = i(a),
          l = i.ceil(a)
        return a - s < l - a ? s : l
      }),
      (i.offset = (a, s) => (e((a = new Date(+a)), s == null ? 1 : Math.floor(s)), a)),
      (i.range = (a, s, l) => {
        let u = []
        if (((a = i.ceil(a)), (l = l == null ? 1 : Math.floor(l)), !(a < s) || !(l > 0))) return u
        let h
        do u.push((h = new Date(+a))), e(a, l), t(a)
        while (h < a && a < s)
        return u
      }),
      (i.filter = a =>
        xn(
          s => {
            if (s >= s) for (; t(s), !a(s); ) s.setTime(s - 1)
          },
          (s, l) => {
            if (s >= s)
              if (l < 0) for (; ++l <= 0; ) for (; e(s, -1), !a(s); );
              else for (; --l >= 0; ) for (; e(s, 1), !a(s); );
          }
        )),
      r &&
        ((i.count = (a, s) => (vD.setTime(+a), xD.setTime(+s), t(vD), t(xD), Math.floor(r(vD, xD)))),
        (i.every = a => ((a = Math.floor(a)), !isFinite(a) || !(a > 0) ? null : a > 1 ? i.filter(n ? s => n(s) % a === 0 : s => i.count(0, s) % a === 0) : i))),
      i
    )
  }
  var vD,
    xD,
    Tu = N(() => {
      'use strict'
      ;(vD = new Date()), (xD = new Date())
      o(xn, 'timeInterval')
    })
  var uc,
    wq,
    bD = N(() => {
      'use strict'
      Tu()
      uc = xn(
        () => {},
        (t, e) => {
          t.setTime(+t + e)
        },
        (t, e) => e - t
      )
      uc.every = t => (
        (t = Math.floor(t)),
        !isFinite(t) || !(t > 0)
          ? null
          : t > 1
            ? xn(
                e => {
                  e.setTime(Math.floor(e / t) * t)
                },
                (e, r) => {
                  e.setTime(+e + r * t)
                },
                (e, r) => (r - e) / t
              )
            : uc
      )
      wq = uc.range
    })
  var eo,
    kq,
    TD = N(() => {
      'use strict'
      Tu()
      ;(eo = xn(
        t => {
          t.setTime(t - t.getMilliseconds())
        },
        (t, e) => {
          t.setTime(+t + e * 1e3)
        },
        (t, e) => (e - t) / 1e3,
        t => t.getUTCSeconds()
      )),
        (kq = eo.range)
    })
  var wu,
    Bke,
    R5,
    Fke,
    wD = N(() => {
      'use strict'
      Tu()
      ;(wu = xn(
        t => {
          t.setTime(t - t.getMilliseconds() - t.getSeconds() * 1e3)
        },
        (t, e) => {
          t.setTime(+t + e * 6e4)
        },
        (t, e) => (e - t) / 6e4,
        t => t.getMinutes()
      )),
        (Bke = wu.range),
        (R5 = xn(
          t => {
            t.setUTCSeconds(0, 0)
          },
          (t, e) => {
            t.setTime(+t + e * 6e4)
          },
          (t, e) => (e - t) / 6e4,
          t => t.getUTCMinutes()
        )),
        (Fke = R5.range)
    })
  var ku,
    $ke,
    N5,
    zke,
    kD = N(() => {
      'use strict'
      Tu()
      ;(ku = xn(
        t => {
          t.setTime(t - t.getMilliseconds() - t.getSeconds() * 1e3 - t.getMinutes() * 6e4)
        },
        (t, e) => {
          t.setTime(+t + e * 36e5)
        },
        (t, e) => (e - t) / 36e5,
        t => t.getHours()
      )),
        ($ke = ku.range),
        (N5 = xn(
          t => {
            t.setUTCMinutes(0, 0, 0)
          },
          (t, e) => {
            t.setTime(+t + e * 36e5)
          },
          (t, e) => (e - t) / 36e5,
          t => t.getUTCHours()
        )),
        (zke = N5.range)
    })
  var Ro,
    Gke,
    Ov,
    Vke,
    M5,
    Uke,
    ED = N(() => {
      'use strict'
      Tu()
      ;(Ro = xn(
        t => t.setHours(0, 0, 0, 0),
        (t, e) => t.setDate(t.getDate() + e),
        (t, e) => (e - t - (e.getTimezoneOffset() - t.getTimezoneOffset()) * 6e4) / 864e5,
        t => t.getDate() - 1
      )),
        (Gke = Ro.range),
        (Ov = xn(
          t => {
            t.setUTCHours(0, 0, 0, 0)
          },
          (t, e) => {
            t.setUTCDate(t.getUTCDate() + e)
          },
          (t, e) => (e - t) / 864e5,
          t => t.getUTCDate() - 1
        )),
        (Vke = Ov.range),
        (M5 = xn(
          t => {
            t.setUTCHours(0, 0, 0, 0)
          },
          (t, e) => {
            t.setUTCDate(t.getUTCDate() + e)
          },
          (t, e) => (e - t) / 864e5,
          t => Math.floor(t / 864e5)
        )),
        (Uke = M5.range)
    })
  function Ad(t) {
    return xn(
      e => {
        e.setDate(e.getDate() - ((e.getDay() + 7 - t) % 7)), e.setHours(0, 0, 0, 0)
      },
      (e, r) => {
        e.setDate(e.getDate() + r * 7)
      },
      (e, r) => (r - e - (r.getTimezoneOffset() - e.getTimezoneOffset()) * 6e4) / 6048e5
    )
  }
  function _d(t) {
    return xn(
      e => {
        e.setUTCDate(e.getUTCDate() - ((e.getUTCDay() + 7 - t) % 7)), e.setUTCHours(0, 0, 0, 0)
      },
      (e, r) => {
        e.setUTCDate(e.getUTCDate() + r * 7)
      },
      (e, r) => (r - e) / 6048e5
    )
  }
  var wl,
    Nh,
    I5,
    O5,
    fc,
    P5,
    B5,
    Sq,
    Hke,
    Wke,
    qke,
    Yke,
    Xke,
    jke,
    Dd,
    H0,
    Cq,
    Aq,
    Mh,
    _q,
    Dq,
    Lq,
    Kke,
    Qke,
    Zke,
    Jke,
    eEe,
    tEe,
    SD = N(() => {
      'use strict'
      Tu()
      o(Ad, 'timeWeekday')
      ;(wl = Ad(0)),
        (Nh = Ad(1)),
        (I5 = Ad(2)),
        (O5 = Ad(3)),
        (fc = Ad(4)),
        (P5 = Ad(5)),
        (B5 = Ad(6)),
        (Sq = wl.range),
        (Hke = Nh.range),
        (Wke = I5.range),
        (qke = O5.range),
        (Yke = fc.range),
        (Xke = P5.range),
        (jke = B5.range)
      o(_d, 'utcWeekday')
      ;(Dd = _d(0)),
        (H0 = _d(1)),
        (Cq = _d(2)),
        (Aq = _d(3)),
        (Mh = _d(4)),
        (_q = _d(5)),
        (Dq = _d(6)),
        (Lq = Dd.range),
        (Kke = H0.range),
        (Qke = Cq.range),
        (Zke = Aq.range),
        (Jke = Mh.range),
        (eEe = _q.range),
        (tEe = Dq.range)
    })
  var Eu,
    rEe,
    F5,
    nEe,
    CD = N(() => {
      'use strict'
      Tu()
      ;(Eu = xn(
        t => {
          t.setDate(1), t.setHours(0, 0, 0, 0)
        },
        (t, e) => {
          t.setMonth(t.getMonth() + e)
        },
        (t, e) => e.getMonth() - t.getMonth() + (e.getFullYear() - t.getFullYear()) * 12,
        t => t.getMonth()
      )),
        (rEe = Eu.range),
        (F5 = xn(
          t => {
            t.setUTCDate(1), t.setUTCHours(0, 0, 0, 0)
          },
          (t, e) => {
            t.setUTCMonth(t.getUTCMonth() + e)
          },
          (t, e) => e.getUTCMonth() - t.getUTCMonth() + (e.getUTCFullYear() - t.getUTCFullYear()) * 12,
          t => t.getUTCMonth()
        )),
        (nEe = F5.range)
    })
  var to,
    iEe,
    kl,
    aEe,
    AD = N(() => {
      'use strict'
      Tu()
      to = xn(
        t => {
          t.setMonth(0, 1), t.setHours(0, 0, 0, 0)
        },
        (t, e) => {
          t.setFullYear(t.getFullYear() + e)
        },
        (t, e) => e.getFullYear() - t.getFullYear(),
        t => t.getFullYear()
      )
      to.every = t =>
        !isFinite((t = Math.floor(t))) || !(t > 0)
          ? null
          : xn(
              e => {
                e.setFullYear(Math.floor(e.getFullYear() / t) * t), e.setMonth(0, 1), e.setHours(0, 0, 0, 0)
              },
              (e, r) => {
                e.setFullYear(e.getFullYear() + r * t)
              }
            )
      ;(iEe = to.range),
        (kl = xn(
          t => {
            t.setUTCMonth(0, 1), t.setUTCHours(0, 0, 0, 0)
          },
          (t, e) => {
            t.setUTCFullYear(t.getUTCFullYear() + e)
          },
          (t, e) => e.getUTCFullYear() - t.getUTCFullYear(),
          t => t.getUTCFullYear()
        ))
      kl.every = t =>
        !isFinite((t = Math.floor(t))) || !(t > 0)
          ? null
          : xn(
              e => {
                e.setUTCFullYear(Math.floor(e.getUTCFullYear() / t) * t), e.setUTCMonth(0, 1), e.setUTCHours(0, 0, 0, 0)
              },
              (e, r) => {
                e.setUTCFullYear(e.getUTCFullYear() + r * t)
              }
            )
      aEe = kl.range
    })
  function Nq(t, e, r, n, i, a) {
    let s = [
      [eo, 1, 1e3],
      [eo, 5, 5 * 1e3],
      [eo, 15, 15 * 1e3],
      [eo, 30, 30 * 1e3],
      [a, 1, 6e4],
      [a, 5, 5 * 6e4],
      [a, 15, 15 * 6e4],
      [a, 30, 30 * 6e4],
      [i, 1, 36e5],
      [i, 3, 3 * 36e5],
      [i, 6, 6 * 36e5],
      [i, 12, 12 * 36e5],
      [n, 1, 864e5],
      [n, 2, 2 * 864e5],
      [r, 1, 6048e5],
      [e, 1, 2592e6],
      [e, 3, 3 * 2592e6],
      [t, 1, 31536e6]
    ]
    function l(h, f, d) {
      let p = f < h
      p && ([h, f] = [f, h])
      let m = d && typeof d.range == 'function' ? d : u(h, f, d),
        g = m ? m.range(h, +f + 1) : []
      return p ? g.reverse() : g
    }
    o(l, 'ticks')
    function u(h, f, d) {
      let p = Math.abs(f - h) / d,
        m = md(([, , v]) => v).right(s, p)
      if (m === s.length) return t.every(A0(h / 31536e6, f / 31536e6, d))
      if (m === 0) return uc.every(Math.max(A0(h, f, d), 1))
      let [g, y] = s[p / s[m - 1][2] < s[m][2] / p ? m - 1 : m]
      return g.every(y)
    }
    return o(u, 'tickInterval'), [l, u]
  }
  var oEe,
    lEe,
    _D,
    DD,
    Mq = N(() => {
      'use strict'
      Eh()
      bD()
      TD()
      wD()
      kD()
      ED()
      SD()
      CD()
      AD()
      o(Nq, 'ticker')
      ;([oEe, lEe] = Nq(kl, F5, Dd, M5, N5, R5)), ([_D, DD] = Nq(to, Eu, wl, Ro, ku, wu))
    })
  var $5 = N(() => {
    'use strict'
    bD()
    TD()
    wD()
    kD()
    ED()
    SD()
    CD()
    AD()
    Mq()
  })
  function LD(t) {
    if (0 <= t.y && t.y < 100) {
      var e = new Date(-1, t.m, t.d, t.H, t.M, t.S, t.L)
      return e.setFullYear(t.y), e
    }
    return new Date(t.y, t.m, t.d, t.H, t.M, t.S, t.L)
  }
  function RD(t) {
    if (0 <= t.y && t.y < 100) {
      var e = new Date(Date.UTC(-1, t.m, t.d, t.H, t.M, t.S, t.L))
      return e.setUTCFullYear(t.y), e
    }
    return new Date(Date.UTC(t.y, t.m, t.d, t.H, t.M, t.S, t.L))
  }
  function Pv(t, e, r) {
    return { y: t, m: e, d: r, H: 0, M: 0, S: 0, L: 0 }
  }
  function ND(t) {
    var e = t.dateTime,
      r = t.date,
      n = t.time,
      i = t.periods,
      a = t.days,
      s = t.shortDays,
      l = t.months,
      u = t.shortMonths,
      h = Bv(i),
      f = Fv(i),
      d = Bv(a),
      p = Fv(a),
      m = Bv(s),
      g = Fv(s),
      y = Bv(l),
      v = Fv(l),
      x = Bv(u),
      b = Fv(u),
      T = {
        a: P,
        A: B,
        b: F,
        B: z,
        c: null,
        d: $q,
        e: $q,
        f: REe,
        g: GEe,
        G: UEe,
        H: _Ee,
        I: DEe,
        j: LEe,
        L: Hq,
        m: NEe,
        M: MEe,
        p: $,
        q: U,
        Q: Vq,
        s: Uq,
        S: IEe,
        u: OEe,
        U: PEe,
        V: BEe,
        w: FEe,
        W: $Ee,
        x: null,
        X: null,
        y: zEe,
        Y: VEe,
        Z: HEe,
        '%': Gq
      },
      S = {
        a: K,
        A: ee,
        b: Y,
        B: ce,
        c: null,
        d: zq,
        e: zq,
        f: XEe,
        g: iSe,
        G: sSe,
        H: WEe,
        I: qEe,
        j: YEe,
        L: qq,
        m: jEe,
        M: KEe,
        p: Z,
        q: ue,
        Q: Vq,
        s: Uq,
        S: QEe,
        u: ZEe,
        U: JEe,
        V: eSe,
        w: tSe,
        W: rSe,
        x: null,
        X: null,
        y: nSe,
        Y: aSe,
        Z: oSe,
        '%': Gq
      },
      w = {
        a: O,
        A: R,
        b: k,
        B: L,
        c: A,
        d: Bq,
        e: Bq,
        f: EEe,
        g: Pq,
        G: Oq,
        H: Fq,
        I: Fq,
        j: bEe,
        L: kEe,
        m: xEe,
        M: TEe,
        p: D,
        q: vEe,
        Q: CEe,
        s: AEe,
        S: wEe,
        u: dEe,
        U: pEe,
        V: mEe,
        w: fEe,
        W: gEe,
        x: I,
        X: M,
        y: Pq,
        Y: Oq,
        Z: yEe,
        '%': SEe
      }
    ;(T.x = E(r, T)), (T.X = E(n, T)), (T.c = E(e, T)), (S.x = E(r, S)), (S.X = E(n, S)), (S.c = E(e, S))
    function E(Q, j) {
      return function (ne) {
        var te = [],
          he = -1,
          le = 0,
          J = Q.length,
          Se,
          se,
          ae
        for (ne instanceof Date || (ne = new Date(+ne)); ++he < J; )
          Q.charCodeAt(he) === 37 &&
            (te.push(Q.slice(le, he)),
            (se = Iq[(Se = Q.charAt(++he))]) != null ? (Se = Q.charAt(++he)) : (se = Se === 'e' ? ' ' : '0'),
            (ae = j[Se]) && (Se = ae(ne, se)),
            te.push(Se),
            (le = he + 1))
        return te.push(Q.slice(le, he)), te.join('')
      }
    }
    o(E, 'newFormat')
    function _(Q, j) {
      return function (ne) {
        var te = Pv(1900, void 0, 1),
          he = C(te, Q, (ne += ''), 0),
          le,
          J
        if (he != ne.length) return null
        if ('Q' in te) return new Date(te.Q)
        if ('s' in te) return new Date(te.s * 1e3 + ('L' in te ? te.L : 0))
        if ((j && !('Z' in te) && (te.Z = 0), 'p' in te && (te.H = (te.H % 12) + te.p * 12), te.m === void 0 && (te.m = 'q' in te ? te.q : 0), 'V' in te)) {
          if (te.V < 1 || te.V > 53) return null
          'w' in te || (te.w = 1),
            'Z' in te
              ? ((le = RD(Pv(te.y, 0, 1))),
                (J = le.getUTCDay()),
                (le = J > 4 || J === 0 ? H0.ceil(le) : H0(le)),
                (le = Ov.offset(le, (te.V - 1) * 7)),
                (te.y = le.getUTCFullYear()),
                (te.m = le.getUTCMonth()),
                (te.d = le.getUTCDate() + ((te.w + 6) % 7)))
              : ((le = LD(Pv(te.y, 0, 1))),
                (J = le.getDay()),
                (le = J > 4 || J === 0 ? Nh.ceil(le) : Nh(le)),
                (le = Ro.offset(le, (te.V - 1) * 7)),
                (te.y = le.getFullYear()),
                (te.m = le.getMonth()),
                (te.d = le.getDate() + ((te.w + 6) % 7)))
        } else
          ('W' in te || 'U' in te) &&
            ('w' in te || (te.w = 'u' in te ? te.u % 7 : 'W' in te ? 1 : 0),
            (J = 'Z' in te ? RD(Pv(te.y, 0, 1)).getUTCDay() : LD(Pv(te.y, 0, 1)).getDay()),
            (te.m = 0),
            (te.d = 'W' in te ? ((te.w + 6) % 7) + te.W * 7 - ((J + 5) % 7) : te.w + te.U * 7 - ((J + 6) % 7)))
        return 'Z' in te ? ((te.H += (te.Z / 100) | 0), (te.M += te.Z % 100), RD(te)) : LD(te)
      }
    }
    o(_, 'newParse')
    function C(Q, j, ne, te) {
      for (var he = 0, le = j.length, J = ne.length, Se, se; he < le; ) {
        if (te >= J) return -1
        if (((Se = j.charCodeAt(he++)), Se === 37)) {
          if (((Se = j.charAt(he++)), (se = w[Se in Iq ? j.charAt(he++) : Se]), !se || (te = se(Q, ne, te)) < 0)) return -1
        } else if (Se != ne.charCodeAt(te++)) return -1
      }
      return te
    }
    o(C, 'parseSpecifier')
    function D(Q, j, ne) {
      var te = h.exec(j.slice(ne))
      return te ? ((Q.p = f.get(te[0].toLowerCase())), ne + te[0].length) : -1
    }
    o(D, 'parsePeriod')
    function O(Q, j, ne) {
      var te = m.exec(j.slice(ne))
      return te ? ((Q.w = g.get(te[0].toLowerCase())), ne + te[0].length) : -1
    }
    o(O, 'parseShortWeekday')
    function R(Q, j, ne) {
      var te = d.exec(j.slice(ne))
      return te ? ((Q.w = p.get(te[0].toLowerCase())), ne + te[0].length) : -1
    }
    o(R, 'parseWeekday')
    function k(Q, j, ne) {
      var te = x.exec(j.slice(ne))
      return te ? ((Q.m = b.get(te[0].toLowerCase())), ne + te[0].length) : -1
    }
    o(k, 'parseShortMonth')
    function L(Q, j, ne) {
      var te = y.exec(j.slice(ne))
      return te ? ((Q.m = v.get(te[0].toLowerCase())), ne + te[0].length) : -1
    }
    o(L, 'parseMonth')
    function A(Q, j, ne) {
      return C(Q, e, j, ne)
    }
    o(A, 'parseLocaleDateTime')
    function I(Q, j, ne) {
      return C(Q, r, j, ne)
    }
    o(I, 'parseLocaleDate')
    function M(Q, j, ne) {
      return C(Q, n, j, ne)
    }
    o(M, 'parseLocaleTime')
    function P(Q) {
      return s[Q.getDay()]
    }
    o(P, 'formatShortWeekday')
    function B(Q) {
      return a[Q.getDay()]
    }
    o(B, 'formatWeekday')
    function F(Q) {
      return u[Q.getMonth()]
    }
    o(F, 'formatShortMonth')
    function z(Q) {
      return l[Q.getMonth()]
    }
    o(z, 'formatMonth')
    function $(Q) {
      return i[+(Q.getHours() >= 12)]
    }
    o($, 'formatPeriod')
    function U(Q) {
      return 1 + ~~(Q.getMonth() / 3)
    }
    o(U, 'formatQuarter')
    function K(Q) {
      return s[Q.getUTCDay()]
    }
    o(K, 'formatUTCShortWeekday')
    function ee(Q) {
      return a[Q.getUTCDay()]
    }
    o(ee, 'formatUTCWeekday')
    function Y(Q) {
      return u[Q.getUTCMonth()]
    }
    o(Y, 'formatUTCShortMonth')
    function ce(Q) {
      return l[Q.getUTCMonth()]
    }
    o(ce, 'formatUTCMonth')
    function Z(Q) {
      return i[+(Q.getUTCHours() >= 12)]
    }
    o(Z, 'formatUTCPeriod')
    function ue(Q) {
      return 1 + ~~(Q.getUTCMonth() / 3)
    }
    return (
      o(ue, 'formatUTCQuarter'),
      {
        format: o(function (Q) {
          var j = E((Q += ''), T)
          return (
            (j.toString = function () {
              return Q
            }),
            j
          )
        }, 'format'),
        parse: o(function (Q) {
          var j = _((Q += ''), !1)
          return (
            (j.toString = function () {
              return Q
            }),
            j
          )
        }, 'parse'),
        utcFormat: o(function (Q) {
          var j = E((Q += ''), S)
          return (
            (j.toString = function () {
              return Q
            }),
            j
          )
        }, 'utcFormat'),
        utcParse: o(function (Q) {
          var j = _((Q += ''), !0)
          return (
            (j.toString = function () {
              return Q
            }),
            j
          )
        }, 'utcParse')
      }
    )
  }
  function Wr(t, e, r) {
    var n = t < 0 ? '-' : '',
      i = (n ? -t : t) + '',
      a = i.length
    return n + (a < r ? new Array(r - a + 1).join(e) + i : i)
  }
  function hEe(t) {
    return t.replace(uEe, '\\$&')
  }
  function Bv(t) {
    return new RegExp('^(?:' + t.map(hEe).join('|') + ')', 'i')
  }
  function Fv(t) {
    return new Map(t.map((e, r) => [e.toLowerCase(), r]))
  }
  function fEe(t, e, r) {
    var n = Qi.exec(e.slice(r, r + 1))
    return n ? ((t.w = +n[0]), r + n[0].length) : -1
  }
  function dEe(t, e, r) {
    var n = Qi.exec(e.slice(r, r + 1))
    return n ? ((t.u = +n[0]), r + n[0].length) : -1
  }
  function pEe(t, e, r) {
    var n = Qi.exec(e.slice(r, r + 2))
    return n ? ((t.U = +n[0]), r + n[0].length) : -1
  }
  function mEe(t, e, r) {
    var n = Qi.exec(e.slice(r, r + 2))
    return n ? ((t.V = +n[0]), r + n[0].length) : -1
  }
  function gEe(t, e, r) {
    var n = Qi.exec(e.slice(r, r + 2))
    return n ? ((t.W = +n[0]), r + n[0].length) : -1
  }
  function Oq(t, e, r) {
    var n = Qi.exec(e.slice(r, r + 4))
    return n ? ((t.y = +n[0]), r + n[0].length) : -1
  }
  function Pq(t, e, r) {
    var n = Qi.exec(e.slice(r, r + 2))
    return n ? ((t.y = +n[0] + (+n[0] > 68 ? 1900 : 2e3)), r + n[0].length) : -1
  }
  function yEe(t, e, r) {
    var n = /^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(r, r + 6))
    return n ? ((t.Z = n[1] ? 0 : -(n[2] + (n[3] || '00'))), r + n[0].length) : -1
  }
  function vEe(t, e, r) {
    var n = Qi.exec(e.slice(r, r + 1))
    return n ? ((t.q = n[0] * 3 - 3), r + n[0].length) : -1
  }
  function xEe(t, e, r) {
    var n = Qi.exec(e.slice(r, r + 2))
    return n ? ((t.m = n[0] - 1), r + n[0].length) : -1
  }
  function Bq(t, e, r) {
    var n = Qi.exec(e.slice(r, r + 2))
    return n ? ((t.d = +n[0]), r + n[0].length) : -1
  }
  function bEe(t, e, r) {
    var n = Qi.exec(e.slice(r, r + 3))
    return n ? ((t.m = 0), (t.d = +n[0]), r + n[0].length) : -1
  }
  function Fq(t, e, r) {
    var n = Qi.exec(e.slice(r, r + 2))
    return n ? ((t.H = +n[0]), r + n[0].length) : -1
  }
  function TEe(t, e, r) {
    var n = Qi.exec(e.slice(r, r + 2))
    return n ? ((t.M = +n[0]), r + n[0].length) : -1
  }
  function wEe(t, e, r) {
    var n = Qi.exec(e.slice(r, r + 2))
    return n ? ((t.S = +n[0]), r + n[0].length) : -1
  }
  function kEe(t, e, r) {
    var n = Qi.exec(e.slice(r, r + 3))
    return n ? ((t.L = +n[0]), r + n[0].length) : -1
  }
  function EEe(t, e, r) {
    var n = Qi.exec(e.slice(r, r + 6))
    return n ? ((t.L = Math.floor(n[0] / 1e3)), r + n[0].length) : -1
  }
  function SEe(t, e, r) {
    var n = cEe.exec(e.slice(r, r + 1))
    return n ? r + n[0].length : -1
  }
  function CEe(t, e, r) {
    var n = Qi.exec(e.slice(r))
    return n ? ((t.Q = +n[0]), r + n[0].length) : -1
  }
  function AEe(t, e, r) {
    var n = Qi.exec(e.slice(r))
    return n ? ((t.s = +n[0]), r + n[0].length) : -1
  }
  function $q(t, e) {
    return Wr(t.getDate(), e, 2)
  }
  function _Ee(t, e) {
    return Wr(t.getHours(), e, 2)
  }
  function DEe(t, e) {
    return Wr(t.getHours() % 12 || 12, e, 2)
  }
  function LEe(t, e) {
    return Wr(1 + Ro.count(to(t), t), e, 3)
  }
  function Hq(t, e) {
    return Wr(t.getMilliseconds(), e, 3)
  }
  function REe(t, e) {
    return Hq(t, e) + '000'
  }
  function NEe(t, e) {
    return Wr(t.getMonth() + 1, e, 2)
  }
  function MEe(t, e) {
    return Wr(t.getMinutes(), e, 2)
  }
  function IEe(t, e) {
    return Wr(t.getSeconds(), e, 2)
  }
  function OEe(t) {
    var e = t.getDay()
    return e === 0 ? 7 : e
  }
  function PEe(t, e) {
    return Wr(wl.count(to(t) - 1, t), e, 2)
  }
  function Wq(t) {
    var e = t.getDay()
    return e >= 4 || e === 0 ? fc(t) : fc.ceil(t)
  }
  function BEe(t, e) {
    return (t = Wq(t)), Wr(fc.count(to(t), t) + (to(t).getDay() === 4), e, 2)
  }
  function FEe(t) {
    return t.getDay()
  }
  function $Ee(t, e) {
    return Wr(Nh.count(to(t) - 1, t), e, 2)
  }
  function zEe(t, e) {
    return Wr(t.getFullYear() % 100, e, 2)
  }
  function GEe(t, e) {
    return (t = Wq(t)), Wr(t.getFullYear() % 100, e, 2)
  }
  function VEe(t, e) {
    return Wr(t.getFullYear() % 1e4, e, 4)
  }
  function UEe(t, e) {
    var r = t.getDay()
    return (t = r >= 4 || r === 0 ? fc(t) : fc.ceil(t)), Wr(t.getFullYear() % 1e4, e, 4)
  }
  function HEe(t) {
    var e = t.getTimezoneOffset()
    return (e > 0 ? '-' : ((e *= -1), '+')) + Wr((e / 60) | 0, '0', 2) + Wr(e % 60, '0', 2)
  }
  function zq(t, e) {
    return Wr(t.getUTCDate(), e, 2)
  }
  function WEe(t, e) {
    return Wr(t.getUTCHours(), e, 2)
  }
  function qEe(t, e) {
    return Wr(t.getUTCHours() % 12 || 12, e, 2)
  }
  function YEe(t, e) {
    return Wr(1 + Ov.count(kl(t), t), e, 3)
  }
  function qq(t, e) {
    return Wr(t.getUTCMilliseconds(), e, 3)
  }
  function XEe(t, e) {
    return qq(t, e) + '000'
  }
  function jEe(t, e) {
    return Wr(t.getUTCMonth() + 1, e, 2)
  }
  function KEe(t, e) {
    return Wr(t.getUTCMinutes(), e, 2)
  }
  function QEe(t, e) {
    return Wr(t.getUTCSeconds(), e, 2)
  }
  function ZEe(t) {
    var e = t.getUTCDay()
    return e === 0 ? 7 : e
  }
  function JEe(t, e) {
    return Wr(Dd.count(kl(t) - 1, t), e, 2)
  }
  function Yq(t) {
    var e = t.getUTCDay()
    return e >= 4 || e === 0 ? Mh(t) : Mh.ceil(t)
  }
  function eSe(t, e) {
    return (t = Yq(t)), Wr(Mh.count(kl(t), t) + (kl(t).getUTCDay() === 4), e, 2)
  }
  function tSe(t) {
    return t.getUTCDay()
  }
  function rSe(t, e) {
    return Wr(H0.count(kl(t) - 1, t), e, 2)
  }
  function nSe(t, e) {
    return Wr(t.getUTCFullYear() % 100, e, 2)
  }
  function iSe(t, e) {
    return (t = Yq(t)), Wr(t.getUTCFullYear() % 100, e, 2)
  }
  function aSe(t, e) {
    return Wr(t.getUTCFullYear() % 1e4, e, 4)
  }
  function sSe(t, e) {
    var r = t.getUTCDay()
    return (t = r >= 4 || r === 0 ? Mh(t) : Mh.ceil(t)), Wr(t.getUTCFullYear() % 1e4, e, 4)
  }
  function oSe() {
    return '+0000'
  }
  function Gq() {
    return '%'
  }
  function Vq(t) {
    return +t
  }
  function Uq(t) {
    return Math.floor(+t / 1e3)
  }
  var Iq,
    Qi,
    cEe,
    uEe,
    Xq = N(() => {
      'use strict'
      $5()
      o(LD, 'localDate')
      o(RD, 'utcDate')
      o(Pv, 'newDate')
      o(ND, 'formatLocale')
      ;(Iq = { '-': '', _: ' ', 0: '0' }), (Qi = /^\s*\d+/), (cEe = /^%/), (uEe = /[\\^$*+?|[\]().{}]/g)
      o(Wr, 'pad')
      o(hEe, 'requote')
      o(Bv, 'formatRe')
      o(Fv, 'formatLookup')
      o(fEe, 'parseWeekdayNumberSunday')
      o(dEe, 'parseWeekdayNumberMonday')
      o(pEe, 'parseWeekNumberSunday')
      o(mEe, 'parseWeekNumberISO')
      o(gEe, 'parseWeekNumberMonday')
      o(Oq, 'parseFullYear')
      o(Pq, 'parseYear')
      o(yEe, 'parseZone')
      o(vEe, 'parseQuarter')
      o(xEe, 'parseMonthNumber')
      o(Bq, 'parseDayOfMonth')
      o(bEe, 'parseDayOfYear')
      o(Fq, 'parseHour24')
      o(TEe, 'parseMinutes')
      o(wEe, 'parseSeconds')
      o(kEe, 'parseMilliseconds')
      o(EEe, 'parseMicroseconds')
      o(SEe, 'parseLiteralPercent')
      o(CEe, 'parseUnixTimestamp')
      o(AEe, 'parseUnixTimestampSeconds')
      o($q, 'formatDayOfMonth')
      o(_Ee, 'formatHour24')
      o(DEe, 'formatHour12')
      o(LEe, 'formatDayOfYear')
      o(Hq, 'formatMilliseconds')
      o(REe, 'formatMicroseconds')
      o(NEe, 'formatMonthNumber')
      o(MEe, 'formatMinutes')
      o(IEe, 'formatSeconds')
      o(OEe, 'formatWeekdayNumberMonday')
      o(PEe, 'formatWeekNumberSunday')
      o(Wq, 'dISO')
      o(BEe, 'formatWeekNumberISO')
      o(FEe, 'formatWeekdayNumberSunday')
      o($Ee, 'formatWeekNumberMonday')
      o(zEe, 'formatYear')
      o(GEe, 'formatYearISO')
      o(VEe, 'formatFullYear')
      o(UEe, 'formatFullYearISO')
      o(HEe, 'formatZone')
      o(zq, 'formatUTCDayOfMonth')
      o(WEe, 'formatUTCHour24')
      o(qEe, 'formatUTCHour12')
      o(YEe, 'formatUTCDayOfYear')
      o(qq, 'formatUTCMilliseconds')
      o(XEe, 'formatUTCMicroseconds')
      o(jEe, 'formatUTCMonthNumber')
      o(KEe, 'formatUTCMinutes')
      o(QEe, 'formatUTCSeconds')
      o(ZEe, 'formatUTCWeekdayNumberMonday')
      o(JEe, 'formatUTCWeekNumberSunday')
      o(Yq, 'UTCdISO')
      o(eSe, 'formatUTCWeekNumberISO')
      o(tSe, 'formatUTCWeekdayNumberSunday')
      o(rSe, 'formatUTCWeekNumberMonday')
      o(nSe, 'formatUTCYear')
      o(iSe, 'formatUTCYearISO')
      o(aSe, 'formatUTCFullYear')
      o(sSe, 'formatUTCFullYearISO')
      o(oSe, 'formatUTCZone')
      o(Gq, 'formatLiteralPercent')
      o(Vq, 'formatUnixTimestamp')
      o(Uq, 'formatUnixTimestampSeconds')
    })
  function MD(t) {
    return (W0 = ND(t)), (Ld = W0.format), (jq = W0.parse), (Kq = W0.utcFormat), (Qq = W0.utcParse), W0
  }
  var W0,
    Ld,
    jq,
    Kq,
    Qq,
    Zq = N(() => {
      'use strict'
      Xq()
      MD({
        dateTime: '%x, %X',
        date: '%-m/%-d/%Y',
        time: '%-I:%M:%S %p',
        periods: ['AM', 'PM'],
        days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
        shortDays: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
        months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
        shortMonths: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
      })
      o(MD, 'defaultLocale')
    })
  var ID = N(() => {
    'use strict'
    Zq()
  })
  function lSe(t) {
    return new Date(t)
  }
  function cSe(t) {
    return t instanceof Date ? +t : +new Date(+t)
  }
  function Jq(t, e, r, n, i, a, s, l, u, h) {
    var f = Mv(),
      d = f.invert,
      p = f.domain,
      m = h('.%L'),
      g = h(':%S'),
      y = h('%I:%M'),
      v = h('%I %p'),
      x = h('%a %d'),
      b = h('%b %d'),
      T = h('%B'),
      S = h('%Y')
    function w(E) {
      return (u(E) < E ? m : l(E) < E ? g : s(E) < E ? y : a(E) < E ? v : n(E) < E ? (i(E) < E ? x : b) : r(E) < E ? T : S)(E)
    }
    return (
      o(w, 'tickFormat'),
      (f.invert = function (E) {
        return new Date(d(E))
      }),
      (f.domain = function (E) {
        return arguments.length ? p(Array.from(E, cSe)) : p().map(lSe)
      }),
      (f.ticks = function (E) {
        var _ = p()
        return t(_[0], _[_.length - 1], E ?? 10)
      }),
      (f.tickFormat = function (E, _) {
        return _ == null ? w : h(_)
      }),
      (f.nice = function (E) {
        var _ = p()
        return (!E || typeof E.range != 'function') && (E = e(_[0], _[_.length - 1], E ?? 10)), E ? p(yD(_, E)) : f
      }),
      (f.copy = function () {
        return L5(f, Jq(t, e, r, n, i, a, s, l, u, h))
      }),
      f
    )
  }
  function z5() {
    return Rh.apply(Jq(_D, DD, to, Eu, wl, Ro, ku, wu, eo, Ld).domain([new Date(2e3, 0, 1), new Date(2e3, 0, 2)]), arguments)
  }
  var eY = N(() => {
    'use strict'
    $5()
    ID()
    mD()
    Nv()
    Tq()
    o(lSe, 'date')
    o(cSe, 'number')
    o(Jq, 'calendar')
    o(z5, 'time')
  })
  var tY = N(() => {
    'use strict'
    mq()
    bq()
    hD()
    eY()
  })
  function OD(t) {
    for (var e = (t.length / 6) | 0, r = new Array(e), n = 0; n < e; ) r[n] = '#' + t.slice(n * 6, ++n * 6)
    return r
  }
  var rY = N(() => {
    'use strict'
    o(OD, 'default')
  })
  var PD,
    nY = N(() => {
      'use strict'
      rY()
      PD = OD('4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab')
    })
  var iY = N(() => {
    'use strict'
    nY()
  })
  function Bn(t) {
    return o(function () {
      return t
    }, 'constant')
  }
  var G5 = N(() => {
    'use strict'
    o(Bn, 'default')
  })
  function sY(t) {
    return t > 1 ? 0 : t < -1 ? q0 : Math.acos(t)
  }
  function FD(t) {
    return t >= 1 ? $v : t <= -1 ? -$v : Math.asin(t)
  }
  var BD,
    ha,
    Ih,
    aY,
    V5,
    El,
    Rd,
    Zi,
    q0,
    $v,
    Y0,
    U5 = N(() => {
      'use strict'
      ;(BD = Math.abs),
        (ha = Math.atan2),
        (Ih = Math.cos),
        (aY = Math.max),
        (V5 = Math.min),
        (El = Math.sin),
        (Rd = Math.sqrt),
        (Zi = 1e-12),
        (q0 = Math.PI),
        ($v = q0 / 2),
        (Y0 = 2 * q0)
      o(sY, 'acos')
      o(FD, 'asin')
    })
  function H5(t) {
    let e = 3
    return (
      (t.digits = function (r) {
        if (!arguments.length) return e
        if (r == null) e = null
        else {
          let n = Math.floor(r)
          if (!(n >= 0)) throw new RangeError(`invalid digits: ${r}`)
          e = n
        }
        return t
      }),
      () => new wd(e)
    )
  }
  var $D = N(() => {
    'use strict'
    O_()
    o(H5, 'withPath')
  })
  function uSe(t) {
    return t.innerRadius
  }
  function hSe(t) {
    return t.outerRadius
  }
  function fSe(t) {
    return t.startAngle
  }
  function dSe(t) {
    return t.endAngle
  }
  function pSe(t) {
    return t && t.padAngle
  }
  function mSe(t, e, r, n, i, a, s, l) {
    var u = r - t,
      h = n - e,
      f = s - i,
      d = l - a,
      p = d * u - f * h
    if (!(p * p < Zi)) return (p = (f * (e - a) - d * (t - i)) / p), [t + p * u, e + p * h]
  }
  function W5(t, e, r, n, i, a, s) {
    var l = t - r,
      u = e - n,
      h = (s ? a : -a) / Rd(l * l + u * u),
      f = h * u,
      d = -h * l,
      p = t + f,
      m = e + d,
      g = r + f,
      y = n + d,
      v = (p + g) / 2,
      x = (m + y) / 2,
      b = g - p,
      T = y - m,
      S = b * b + T * T,
      w = i - a,
      E = p * y - g * m,
      _ = (T < 0 ? -1 : 1) * Rd(aY(0, w * w * S - E * E)),
      C = (E * T - b * _) / S,
      D = (-E * b - T * _) / S,
      O = (E * T + b * _) / S,
      R = (-E * b + T * _) / S,
      k = C - v,
      L = D - x,
      A = O - v,
      I = R - x
    return k * k + L * L > A * A + I * I && ((C = O), (D = R)), { cx: C, cy: D, x01: -f, y01: -d, x11: C * (i / w - 1), y11: D * (i / w - 1) }
  }
  function Sl() {
    var t = uSe,
      e = hSe,
      r = Bn(0),
      n = null,
      i = fSe,
      a = dSe,
      s = pSe,
      l = null,
      u = H5(h)
    function h() {
      var f,
        d,
        p = +t.apply(this, arguments),
        m = +e.apply(this, arguments),
        g = i.apply(this, arguments) - $v,
        y = a.apply(this, arguments) - $v,
        v = BD(y - g),
        x = y > g
      if ((l || (l = f = u()), m < p && ((d = m), (m = p), (p = d)), !(m > Zi))) l.moveTo(0, 0)
      else if (v > Y0 - Zi) l.moveTo(m * Ih(g), m * El(g)), l.arc(0, 0, m, g, y, !x), p > Zi && (l.moveTo(p * Ih(y), p * El(y)), l.arc(0, 0, p, y, g, x))
      else {
        var b = g,
          T = y,
          S = g,
          w = y,
          E = v,
          _ = v,
          C = s.apply(this, arguments) / 2,
          D = C > Zi && (n ? +n.apply(this, arguments) : Rd(p * p + m * m)),
          O = V5(BD(m - p) / 2, +r.apply(this, arguments)),
          R = O,
          k = O,
          L,
          A
        if (D > Zi) {
          var I = FD((D / p) * El(C)),
            M = FD((D / m) * El(C))
          ;(E -= I * 2) > Zi ? ((I *= x ? 1 : -1), (S += I), (w -= I)) : ((E = 0), (S = w = (g + y) / 2)),
            (_ -= M * 2) > Zi ? ((M *= x ? 1 : -1), (b += M), (T -= M)) : ((_ = 0), (b = T = (g + y) / 2))
        }
        var P = m * Ih(b),
          B = m * El(b),
          F = p * Ih(w),
          z = p * El(w)
        if (O > Zi) {
          var $ = m * Ih(T),
            U = m * El(T),
            K = p * Ih(S),
            ee = p * El(S),
            Y
          if (v < q0)
            if ((Y = mSe(P, B, K, ee, $, U, F, z))) {
              var ce = P - Y[0],
                Z = B - Y[1],
                ue = $ - Y[0],
                Q = U - Y[1],
                j = 1 / El(sY((ce * ue + Z * Q) / (Rd(ce * ce + Z * Z) * Rd(ue * ue + Q * Q))) / 2),
                ne = Rd(Y[0] * Y[0] + Y[1] * Y[1])
              ;(R = V5(O, (p - ne) / (j - 1))), (k = V5(O, (m - ne) / (j + 1)))
            } else R = k = 0
        }
        _ > Zi
          ? k > Zi
            ? ((L = W5(K, ee, P, B, m, k, x)),
              (A = W5($, U, F, z, m, k, x)),
              l.moveTo(L.cx + L.x01, L.cy + L.y01),
              k < O
                ? l.arc(L.cx, L.cy, k, ha(L.y01, L.x01), ha(A.y01, A.x01), !x)
                : (l.arc(L.cx, L.cy, k, ha(L.y01, L.x01), ha(L.y11, L.x11), !x),
                  l.arc(0, 0, m, ha(L.cy + L.y11, L.cx + L.x11), ha(A.cy + A.y11, A.cx + A.x11), !x),
                  l.arc(A.cx, A.cy, k, ha(A.y11, A.x11), ha(A.y01, A.x01), !x)))
            : (l.moveTo(P, B), l.arc(0, 0, m, b, T, !x))
          : l.moveTo(P, B),
          !(p > Zi) || !(E > Zi)
            ? l.lineTo(F, z)
            : R > Zi
              ? ((L = W5(F, z, $, U, p, -R, x)),
                (A = W5(P, B, K, ee, p, -R, x)),
                l.lineTo(L.cx + L.x01, L.cy + L.y01),
                R < O
                  ? l.arc(L.cx, L.cy, R, ha(L.y01, L.x01), ha(A.y01, A.x01), !x)
                  : (l.arc(L.cx, L.cy, R, ha(L.y01, L.x01), ha(L.y11, L.x11), !x),
                    l.arc(0, 0, p, ha(L.cy + L.y11, L.cx + L.x11), ha(A.cy + A.y11, A.cx + A.x11), x),
                    l.arc(A.cx, A.cy, R, ha(A.y11, A.x11), ha(A.y01, A.x01), !x)))
              : l.arc(0, 0, p, w, S, x)
      }
      if ((l.closePath(), f)) return (l = null), f + '' || null
    }
    return (
      o(h, 'arc'),
      (h.centroid = function () {
        var f = (+t.apply(this, arguments) + +e.apply(this, arguments)) / 2,
          d = (+i.apply(this, arguments) + +a.apply(this, arguments)) / 2 - q0 / 2
        return [Ih(d) * f, El(d) * f]
      }),
      (h.innerRadius = function (f) {
        return arguments.length ? ((t = typeof f == 'function' ? f : Bn(+f)), h) : t
      }),
      (h.outerRadius = function (f) {
        return arguments.length ? ((e = typeof f == 'function' ? f : Bn(+f)), h) : e
      }),
      (h.cornerRadius = function (f) {
        return arguments.length ? ((r = typeof f == 'function' ? f : Bn(+f)), h) : r
      }),
      (h.padRadius = function (f) {
        return arguments.length ? ((n = f == null ? null : typeof f == 'function' ? f : Bn(+f)), h) : n
      }),
      (h.startAngle = function (f) {
        return arguments.length ? ((i = typeof f == 'function' ? f : Bn(+f)), h) : i
      }),
      (h.endAngle = function (f) {
        return arguments.length ? ((a = typeof f == 'function' ? f : Bn(+f)), h) : a
      }),
      (h.padAngle = function (f) {
        return arguments.length ? ((s = typeof f == 'function' ? f : Bn(+f)), h) : s
      }),
      (h.context = function (f) {
        return arguments.length ? ((l = f ?? null), h) : l
      }),
      h
    )
  }
  var oY = N(() => {
    'use strict'
    G5()
    U5()
    $D()
    o(uSe, 'arcInnerRadius')
    o(hSe, 'arcOuterRadius')
    o(fSe, 'arcStartAngle')
    o(dSe, 'arcEndAngle')
    o(pSe, 'arcPadAngle')
    o(mSe, 'intersect')
    o(W5, 'cornerTangents')
    o(Sl, 'default')
  })
  function zv(t) {
    return typeof t == 'object' && 'length' in t ? t : Array.from(t)
  }
  var yxt,
    zD = N(() => {
      'use strict'
      yxt = Array.prototype.slice
      o(zv, 'default')
    })
  function lY(t) {
    this._context = t
  }
  function Su(t) {
    return new lY(t)
  }
  var GD = N(() => {
    'use strict'
    o(lY, 'Linear')
    lY.prototype = {
      areaStart: o(function () {
        this._line = 0
      }, 'areaStart'),
      areaEnd: o(function () {
        this._line = NaN
      }, 'areaEnd'),
      lineStart: o(function () {
        this._point = 0
      }, 'lineStart'),
      lineEnd: o(function () {
        ;(this._line || (this._line !== 0 && this._point === 1)) && this._context.closePath(), (this._line = 1 - this._line)
      }, 'lineEnd'),
      point: o(function (t, e) {
        switch (((t = +t), (e = +e), this._point)) {
          case 0:
            ;(this._point = 1), this._line ? this._context.lineTo(t, e) : this._context.moveTo(t, e)
            break
          case 1:
            this._point = 2
          default:
            this._context.lineTo(t, e)
            break
        }
      }, 'point')
    }
    o(Su, 'default')
  })
  function cY(t) {
    return t[0]
  }
  function uY(t) {
    return t[1]
  }
  var hY = N(() => {
    'use strict'
    o(cY, 'x')
    o(uY, 'y')
  })
  function Cl(t, e) {
    var r = Bn(!0),
      n = null,
      i = Su,
      a = null,
      s = H5(l)
    ;(t = typeof t == 'function' ? t : t === void 0 ? cY : Bn(t)), (e = typeof e == 'function' ? e : e === void 0 ? uY : Bn(e))
    function l(u) {
      var h,
        f = (u = zv(u)).length,
        d,
        p = !1,
        m
      for (n == null && (a = i((m = s()))), h = 0; h <= f; ++h)
        !(h < f && r((d = u[h]), h, u)) === p && ((p = !p) ? a.lineStart() : a.lineEnd()), p && a.point(+t(d, h, u), +e(d, h, u))
      if (m) return (a = null), m + '' || null
    }
    return (
      o(l, 'line'),
      (l.x = function (u) {
        return arguments.length ? ((t = typeof u == 'function' ? u : Bn(+u)), l) : t
      }),
      (l.y = function (u) {
        return arguments.length ? ((e = typeof u == 'function' ? u : Bn(+u)), l) : e
      }),
      (l.defined = function (u) {
        return arguments.length ? ((r = typeof u == 'function' ? u : Bn(!!u)), l) : r
      }),
      (l.curve = function (u) {
        return arguments.length ? ((i = u), n != null && (a = i(n)), l) : i
      }),
      (l.context = function (u) {
        return arguments.length ? (u == null ? (n = a = null) : (a = i((n = u))), l) : n
      }),
      l
    )
  }
  var fY = N(() => {
    'use strict'
    zD()
    G5()
    GD()
    $D()
    hY()
    o(Cl, 'default')
  })
  function VD(t, e) {
    return e < t ? -1 : e > t ? 1 : e >= t ? 0 : NaN
  }
  var dY = N(() => {
    'use strict'
    o(VD, 'default')
  })
  function UD(t) {
    return t
  }
  var pY = N(() => {
    'use strict'
    o(UD, 'default')
  })
  function q5() {
    var t = UD,
      e = VD,
      r = null,
      n = Bn(0),
      i = Bn(Y0),
      a = Bn(0)
    function s(l) {
      var u,
        h = (l = zv(l)).length,
        f,
        d,
        p = 0,
        m = new Array(h),
        g = new Array(h),
        y = +n.apply(this, arguments),
        v = Math.min(Y0, Math.max(-Y0, i.apply(this, arguments) - y)),
        x,
        b = Math.min(Math.abs(v) / h, a.apply(this, arguments)),
        T = b * (v < 0 ? -1 : 1),
        S
      for (u = 0; u < h; ++u) (S = g[(m[u] = u)] = +t(l[u], u, l)) > 0 && (p += S)
      for (
        e != null
          ? m.sort(function (w, E) {
              return e(g[w], g[E])
            })
          : r != null &&
            m.sort(function (w, E) {
              return r(l[w], l[E])
            }),
          u = 0,
          d = p ? (v - h * T) / p : 0;
        u < h;
        ++u, y = x
      )
        (f = m[u]), (S = g[f]), (x = y + (S > 0 ? S * d : 0) + T), (g[f] = { data: l[f], index: u, value: S, startAngle: y, endAngle: x, padAngle: b })
      return g
    }
    return (
      o(s, 'pie'),
      (s.value = function (l) {
        return arguments.length ? ((t = typeof l == 'function' ? l : Bn(+l)), s) : t
      }),
      (s.sortValues = function (l) {
        return arguments.length ? ((e = l), (r = null), s) : e
      }),
      (s.sort = function (l) {
        return arguments.length ? ((r = l), (e = null), s) : r
      }),
      (s.startAngle = function (l) {
        return arguments.length ? ((n = typeof l == 'function' ? l : Bn(+l)), s) : n
      }),
      (s.endAngle = function (l) {
        return arguments.length ? ((i = typeof l == 'function' ? l : Bn(+l)), s) : i
      }),
      (s.padAngle = function (l) {
        return arguments.length ? ((a = typeof l == 'function' ? l : Bn(+l)), s) : a
      }),
      s
    )
  }
  var mY = N(() => {
    'use strict'
    zD()
    G5()
    dY()
    pY()
    U5()
    o(q5, 'default')
  })
  function Gv(t) {
    return new Y5(t, !0)
  }
  function Vv(t) {
    return new Y5(t, !1)
  }
  var Y5,
    gY = N(() => {
      'use strict'
      Y5 = class {
        static {
          o(this, 'Bump')
        }
        constructor(e, r) {
          ;(this._context = e), (this._x = r)
        }
        areaStart() {
          this._line = 0
        }
        areaEnd() {
          this._line = NaN
        }
        lineStart() {
          this._point = 0
        }
        lineEnd() {
          ;(this._line || (this._line !== 0 && this._point === 1)) && this._context.closePath(), (this._line = 1 - this._line)
        }
        point(e, r) {
          switch (((e = +e), (r = +r), this._point)) {
            case 0: {
              ;(this._point = 1), this._line ? this._context.lineTo(e, r) : this._context.moveTo(e, r)
              break
            }
            case 1:
              this._point = 2
            default: {
              this._x
                ? this._context.bezierCurveTo((this._x0 = (this._x0 + e) / 2), this._y0, this._x0, r, e, r)
                : this._context.bezierCurveTo(this._x0, (this._y0 = (this._y0 + r) / 2), e, this._y0, e, r)
              break
            }
          }
          ;(this._x0 = e), (this._y0 = r)
        }
      }
      o(Gv, 'bumpX')
      o(Vv, 'bumpY')
    })
  function ro() {}
  var Uv = N(() => {
    'use strict'
    o(ro, 'default')
  })
  function X0(t, e, r) {
    t._context.bezierCurveTo(
      (2 * t._x0 + t._x1) / 3,
      (2 * t._y0 + t._y1) / 3,
      (t._x0 + 2 * t._x1) / 3,
      (t._y0 + 2 * t._y1) / 3,
      (t._x0 + 4 * t._x1 + e) / 6,
      (t._y0 + 4 * t._y1 + r) / 6
    )
  }
  function Hv(t) {
    this._context = t
  }
  function No(t) {
    return new Hv(t)
  }
  var Wv = N(() => {
    'use strict'
    o(X0, 'point')
    o(Hv, 'Basis')
    Hv.prototype = {
      areaStart: o(function () {
        this._line = 0
      }, 'areaStart'),
      areaEnd: o(function () {
        this._line = NaN
      }, 'areaEnd'),
      lineStart: o(function () {
        ;(this._x0 = this._x1 = this._y0 = this._y1 = NaN), (this._point = 0)
      }, 'lineStart'),
      lineEnd: o(function () {
        switch (this._point) {
          case 3:
            X0(this, this._x1, this._y1)
          case 2:
            this._context.lineTo(this._x1, this._y1)
            break
        }
        ;(this._line || (this._line !== 0 && this._point === 1)) && this._context.closePath(), (this._line = 1 - this._line)
      }, 'lineEnd'),
      point: o(function (t, e) {
        switch (((t = +t), (e = +e), this._point)) {
          case 0:
            ;(this._point = 1), this._line ? this._context.lineTo(t, e) : this._context.moveTo(t, e)
            break
          case 1:
            this._point = 2
            break
          case 2:
            ;(this._point = 3), this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6)
          default:
            X0(this, t, e)
            break
        }
        ;(this._x0 = this._x1), (this._x1 = t), (this._y0 = this._y1), (this._y1 = e)
      }, 'point')
    }
    o(No, 'default')
  })
  function yY(t) {
    this._context = t
  }
  function X5(t) {
    return new yY(t)
  }
  var vY = N(() => {
    'use strict'
    Uv()
    Wv()
    o(yY, 'BasisClosed')
    yY.prototype = {
      areaStart: ro,
      areaEnd: ro,
      lineStart: o(function () {
        ;(this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN), (this._point = 0)
      }, 'lineStart'),
      lineEnd: o(function () {
        switch (this._point) {
          case 1: {
            this._context.moveTo(this._x2, this._y2), this._context.closePath()
            break
          }
          case 2: {
            this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3),
              this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3),
              this._context.closePath()
            break
          }
          case 3: {
            this.point(this._x2, this._y2), this.point(this._x3, this._y3), this.point(this._x4, this._y4)
            break
          }
        }
      }, 'lineEnd'),
      point: o(function (t, e) {
        switch (((t = +t), (e = +e), this._point)) {
          case 0:
            ;(this._point = 1), (this._x2 = t), (this._y2 = e)
            break
          case 1:
            ;(this._point = 2), (this._x3 = t), (this._y3 = e)
            break
          case 2:
            ;(this._point = 3), (this._x4 = t), (this._y4 = e), this._context.moveTo((this._x0 + 4 * this._x1 + t) / 6, (this._y0 + 4 * this._y1 + e) / 6)
            break
          default:
            X0(this, t, e)
            break
        }
        ;(this._x0 = this._x1), (this._x1 = t), (this._y0 = this._y1), (this._y1 = e)
      }, 'point')
    }
    o(X5, 'default')
  })
  function xY(t) {
    this._context = t
  }
  function j5(t) {
    return new xY(t)
  }
  var bY = N(() => {
    'use strict'
    Wv()
    o(xY, 'BasisOpen')
    xY.prototype = {
      areaStart: o(function () {
        this._line = 0
      }, 'areaStart'),
      areaEnd: o(function () {
        this._line = NaN
      }, 'areaEnd'),
      lineStart: o(function () {
        ;(this._x0 = this._x1 = this._y0 = this._y1 = NaN), (this._point = 0)
      }, 'lineStart'),
      lineEnd: o(function () {
        ;(this._line || (this._line !== 0 && this._point === 3)) && this._context.closePath(), (this._line = 1 - this._line)
      }, 'lineEnd'),
      point: o(function (t, e) {
        switch (((t = +t), (e = +e), this._point)) {
          case 0:
            this._point = 1
            break
          case 1:
            this._point = 2
            break
          case 2:
            this._point = 3
            var r = (this._x0 + 4 * this._x1 + t) / 6,
              n = (this._y0 + 4 * this._y1 + e) / 6
            this._line ? this._context.lineTo(r, n) : this._context.moveTo(r, n)
            break
          case 3:
            this._point = 4
          default:
            X0(this, t, e)
            break
        }
        ;(this._x0 = this._x1), (this._x1 = t), (this._y0 = this._y1), (this._y1 = e)
      }, 'point')
    }
    o(j5, 'default')
  })
  function TY(t, e) {
    ;(this._basis = new Hv(t)), (this._beta = e)
  }
  var HD,
    wY = N(() => {
      'use strict'
      Wv()
      o(TY, 'Bundle')
      TY.prototype = {
        lineStart: o(function () {
          ;(this._x = []), (this._y = []), this._basis.lineStart()
        }, 'lineStart'),
        lineEnd: o(function () {
          var t = this._x,
            e = this._y,
            r = t.length - 1
          if (r > 0)
            for (var n = t[0], i = e[0], a = t[r] - n, s = e[r] - i, l = -1, u; ++l <= r; )
              (u = l / r), this._basis.point(this._beta * t[l] + (1 - this._beta) * (n + u * a), this._beta * e[l] + (1 - this._beta) * (i + u * s))
          ;(this._x = this._y = null), this._basis.lineEnd()
        }, 'lineEnd'),
        point: o(function (t, e) {
          this._x.push(+t), this._y.push(+e)
        }, 'point')
      }
      HD = o(function t(e) {
        function r(n) {
          return e === 1 ? new Hv(n) : new TY(n, e)
        }
        return (
          o(r, 'bundle'),
          (r.beta = function (n) {
            return t(+n)
          }),
          r
        )
      }, 'custom')(0.85)
    })
  function j0(t, e, r) {
    t._context.bezierCurveTo(t._x1 + t._k * (t._x2 - t._x0), t._y1 + t._k * (t._y2 - t._y0), t._x2 + t._k * (t._x1 - e), t._y2 + t._k * (t._y1 - r), t._x2, t._y2)
  }
  function K5(t, e) {
    ;(this._context = t), (this._k = (1 - e) / 6)
  }
  var qv,
    Yv = N(() => {
      'use strict'
      o(j0, 'point')
      o(K5, 'Cardinal')
      K5.prototype = {
        areaStart: o(function () {
          this._line = 0
        }, 'areaStart'),
        areaEnd: o(function () {
          this._line = NaN
        }, 'areaEnd'),
        lineStart: o(function () {
          ;(this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN), (this._point = 0)
        }, 'lineStart'),
        lineEnd: o(function () {
          switch (this._point) {
            case 2:
              this._context.lineTo(this._x2, this._y2)
              break
            case 3:
              j0(this, this._x1, this._y1)
              break
          }
          ;(this._line || (this._line !== 0 && this._point === 1)) && this._context.closePath(), (this._line = 1 - this._line)
        }, 'lineEnd'),
        point: o(function (t, e) {
          switch (((t = +t), (e = +e), this._point)) {
            case 0:
              ;(this._point = 1), this._line ? this._context.lineTo(t, e) : this._context.moveTo(t, e)
              break
            case 1:
              ;(this._point = 2), (this._x1 = t), (this._y1 = e)
              break
            case 2:
              this._point = 3
            default:
              j0(this, t, e)
              break
          }
          ;(this._x0 = this._x1), (this._x1 = this._x2), (this._x2 = t), (this._y0 = this._y1), (this._y1 = this._y2), (this._y2 = e)
        }, 'point')
      }
      qv = o(function t(e) {
        function r(n) {
          return new K5(n, e)
        }
        return (
          o(r, 'cardinal'),
          (r.tension = function (n) {
            return t(+n)
          }),
          r
        )
      }, 'custom')(0)
    })
  function Q5(t, e) {
    ;(this._context = t), (this._k = (1 - e) / 6)
  }
  var WD,
    qD = N(() => {
      'use strict'
      Uv()
      Yv()
      o(Q5, 'CardinalClosed')
      Q5.prototype = {
        areaStart: ro,
        areaEnd: ro,
        lineStart: o(function () {
          ;(this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN), (this._point = 0)
        }, 'lineStart'),
        lineEnd: o(function () {
          switch (this._point) {
            case 1: {
              this._context.moveTo(this._x3, this._y3), this._context.closePath()
              break
            }
            case 2: {
              this._context.lineTo(this._x3, this._y3), this._context.closePath()
              break
            }
            case 3: {
              this.point(this._x3, this._y3), this.point(this._x4, this._y4), this.point(this._x5, this._y5)
              break
            }
          }
        }, 'lineEnd'),
        point: o(function (t, e) {
          switch (((t = +t), (e = +e), this._point)) {
            case 0:
              ;(this._point = 1), (this._x3 = t), (this._y3 = e)
              break
            case 1:
              ;(this._point = 2), this._context.moveTo((this._x4 = t), (this._y4 = e))
              break
            case 2:
              ;(this._point = 3), (this._x5 = t), (this._y5 = e)
              break
            default:
              j0(this, t, e)
              break
          }
          ;(this._x0 = this._x1), (this._x1 = this._x2), (this._x2 = t), (this._y0 = this._y1), (this._y1 = this._y2), (this._y2 = e)
        }, 'point')
      }
      WD = o(function t(e) {
        function r(n) {
          return new Q5(n, e)
        }
        return (
          o(r, 'cardinal'),
          (r.tension = function (n) {
            return t(+n)
          }),
          r
        )
      }, 'custom')(0)
    })
  function Z5(t, e) {
    ;(this._context = t), (this._k = (1 - e) / 6)
  }
  var YD,
    XD = N(() => {
      'use strict'
      Yv()
      o(Z5, 'CardinalOpen')
      Z5.prototype = {
        areaStart: o(function () {
          this._line = 0
        }, 'areaStart'),
        areaEnd: o(function () {
          this._line = NaN
        }, 'areaEnd'),
        lineStart: o(function () {
          ;(this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN), (this._point = 0)
        }, 'lineStart'),
        lineEnd: o(function () {
          ;(this._line || (this._line !== 0 && this._point === 3)) && this._context.closePath(), (this._line = 1 - this._line)
        }, 'lineEnd'),
        point: o(function (t, e) {
          switch (((t = +t), (e = +e), this._point)) {
            case 0:
              this._point = 1
              break
            case 1:
              this._point = 2
              break
            case 2:
              ;(this._point = 3), this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2)
              break
            case 3:
              this._point = 4
            default:
              j0(this, t, e)
              break
          }
          ;(this._x0 = this._x1), (this._x1 = this._x2), (this._x2 = t), (this._y0 = this._y1), (this._y1 = this._y2), (this._y2 = e)
        }, 'point')
      }
      YD = o(function t(e) {
        function r(n) {
          return new Z5(n, e)
        }
        return (
          o(r, 'cardinal'),
          (r.tension = function (n) {
            return t(+n)
          }),
          r
        )
      }, 'custom')(0)
    })
  function Xv(t, e, r) {
    var n = t._x1,
      i = t._y1,
      a = t._x2,
      s = t._y2
    if (t._l01_a > Zi) {
      var l = 2 * t._l01_2a + 3 * t._l01_a * t._l12_a + t._l12_2a,
        u = 3 * t._l01_a * (t._l01_a + t._l12_a)
      ;(n = (n * l - t._x0 * t._l12_2a + t._x2 * t._l01_2a) / u), (i = (i * l - t._y0 * t._l12_2a + t._y2 * t._l01_2a) / u)
    }
    if (t._l23_a > Zi) {
      var h = 2 * t._l23_2a + 3 * t._l23_a * t._l12_a + t._l12_2a,
        f = 3 * t._l23_a * (t._l23_a + t._l12_a)
      ;(a = (a * h + t._x1 * t._l23_2a - e * t._l12_2a) / f), (s = (s * h + t._y1 * t._l23_2a - r * t._l12_2a) / f)
    }
    t._context.bezierCurveTo(n, i, a, s, t._x2, t._y2)
  }
  function kY(t, e) {
    ;(this._context = t), (this._alpha = e)
  }
  var jv,
    J5 = N(() => {
      'use strict'
      U5()
      Yv()
      o(Xv, 'point')
      o(kY, 'CatmullRom')
      kY.prototype = {
        areaStart: o(function () {
          this._line = 0
        }, 'areaStart'),
        areaEnd: o(function () {
          this._line = NaN
        }, 'areaEnd'),
        lineStart: o(function () {
          ;(this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN),
            (this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0)
        }, 'lineStart'),
        lineEnd: o(function () {
          switch (this._point) {
            case 2:
              this._context.lineTo(this._x2, this._y2)
              break
            case 3:
              this.point(this._x2, this._y2)
              break
          }
          ;(this._line || (this._line !== 0 && this._point === 1)) && this._context.closePath(), (this._line = 1 - this._line)
        }, 'lineEnd'),
        point: o(function (t, e) {
          if (((t = +t), (e = +e), this._point)) {
            var r = this._x2 - t,
              n = this._y2 - e
            this._l23_a = Math.sqrt((this._l23_2a = Math.pow(r * r + n * n, this._alpha)))
          }
          switch (this._point) {
            case 0:
              ;(this._point = 1), this._line ? this._context.lineTo(t, e) : this._context.moveTo(t, e)
              break
            case 1:
              this._point = 2
              break
            case 2:
              this._point = 3
            default:
              Xv(this, t, e)
              break
          }
          ;(this._l01_a = this._l12_a),
            (this._l12_a = this._l23_a),
            (this._l01_2a = this._l12_2a),
            (this._l12_2a = this._l23_2a),
            (this._x0 = this._x1),
            (this._x1 = this._x2),
            (this._x2 = t),
            (this._y0 = this._y1),
            (this._y1 = this._y2),
            (this._y2 = e)
        }, 'point')
      }
      jv = o(function t(e) {
        function r(n) {
          return e ? new kY(n, e) : new K5(n, 0)
        }
        return (
          o(r, 'catmullRom'),
          (r.alpha = function (n) {
            return t(+n)
          }),
          r
        )
      }, 'custom')(0.5)
    })
  function EY(t, e) {
    ;(this._context = t), (this._alpha = e)
  }
  var jD,
    SY = N(() => {
      'use strict'
      qD()
      Uv()
      J5()
      o(EY, 'CatmullRomClosed')
      EY.prototype = {
        areaStart: ro,
        areaEnd: ro,
        lineStart: o(function () {
          ;(this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 = this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN),
            (this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0)
        }, 'lineStart'),
        lineEnd: o(function () {
          switch (this._point) {
            case 1: {
              this._context.moveTo(this._x3, this._y3), this._context.closePath()
              break
            }
            case 2: {
              this._context.lineTo(this._x3, this._y3), this._context.closePath()
              break
            }
            case 3: {
              this.point(this._x3, this._y3), this.point(this._x4, this._y4), this.point(this._x5, this._y5)
              break
            }
          }
        }, 'lineEnd'),
        point: o(function (t, e) {
          if (((t = +t), (e = +e), this._point)) {
            var r = this._x2 - t,
              n = this._y2 - e
            this._l23_a = Math.sqrt((this._l23_2a = Math.pow(r * r + n * n, this._alpha)))
          }
          switch (this._point) {
            case 0:
              ;(this._point = 1), (this._x3 = t), (this._y3 = e)
              break
            case 1:
              ;(this._point = 2), this._context.moveTo((this._x4 = t), (this._y4 = e))
              break
            case 2:
              ;(this._point = 3), (this._x5 = t), (this._y5 = e)
              break
            default:
              Xv(this, t, e)
              break
          }
          ;(this._l01_a = this._l12_a),
            (this._l12_a = this._l23_a),
            (this._l01_2a = this._l12_2a),
            (this._l12_2a = this._l23_2a),
            (this._x0 = this._x1),
            (this._x1 = this._x2),
            (this._x2 = t),
            (this._y0 = this._y1),
            (this._y1 = this._y2),
            (this._y2 = e)
        }, 'point')
      }
      jD = o(function t(e) {
        function r(n) {
          return e ? new EY(n, e) : new Q5(n, 0)
        }
        return (
          o(r, 'catmullRom'),
          (r.alpha = function (n) {
            return t(+n)
          }),
          r
        )
      }, 'custom')(0.5)
    })
  function CY(t, e) {
    ;(this._context = t), (this._alpha = e)
  }
  var KD,
    AY = N(() => {
      'use strict'
      XD()
      J5()
      o(CY, 'CatmullRomOpen')
      CY.prototype = {
        areaStart: o(function () {
          this._line = 0
        }, 'areaStart'),
        areaEnd: o(function () {
          this._line = NaN
        }, 'areaEnd'),
        lineStart: o(function () {
          ;(this._x0 = this._x1 = this._x2 = this._y0 = this._y1 = this._y2 = NaN),
            (this._l01_a = this._l12_a = this._l23_a = this._l01_2a = this._l12_2a = this._l23_2a = this._point = 0)
        }, 'lineStart'),
        lineEnd: o(function () {
          ;(this._line || (this._line !== 0 && this._point === 3)) && this._context.closePath(), (this._line = 1 - this._line)
        }, 'lineEnd'),
        point: o(function (t, e) {
          if (((t = +t), (e = +e), this._point)) {
            var r = this._x2 - t,
              n = this._y2 - e
            this._l23_a = Math.sqrt((this._l23_2a = Math.pow(r * r + n * n, this._alpha)))
          }
          switch (this._point) {
            case 0:
              this._point = 1
              break
            case 1:
              this._point = 2
              break
            case 2:
              ;(this._point = 3), this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2)
              break
            case 3:
              this._point = 4
            default:
              Xv(this, t, e)
              break
          }
          ;(this._l01_a = this._l12_a),
            (this._l12_a = this._l23_a),
            (this._l01_2a = this._l12_2a),
            (this._l12_2a = this._l23_2a),
            (this._x0 = this._x1),
            (this._x1 = this._x2),
            (this._x2 = t),
            (this._y0 = this._y1),
            (this._y1 = this._y2),
            (this._y2 = e)
        }, 'point')
      }
      KD = o(function t(e) {
        function r(n) {
          return e ? new CY(n, e) : new Z5(n, 0)
        }
        return (
          o(r, 'catmullRom'),
          (r.alpha = function (n) {
            return t(+n)
          }),
          r
        )
      }, 'custom')(0.5)
    })
  function _Y(t) {
    this._context = t
  }
  function eT(t) {
    return new _Y(t)
  }
  var DY = N(() => {
    'use strict'
    Uv()
    o(_Y, 'LinearClosed')
    _Y.prototype = {
      areaStart: ro,
      areaEnd: ro,
      lineStart: o(function () {
        this._point = 0
      }, 'lineStart'),
      lineEnd: o(function () {
        this._point && this._context.closePath()
      }, 'lineEnd'),
      point: o(function (t, e) {
        ;(t = +t), (e = +e), this._point ? this._context.lineTo(t, e) : ((this._point = 1), this._context.moveTo(t, e))
      }, 'point')
    }
    o(eT, 'default')
  })
  function LY(t) {
    return t < 0 ? -1 : 1
  }
  function RY(t, e, r) {
    var n = t._x1 - t._x0,
      i = e - t._x1,
      a = (t._y1 - t._y0) / (n || (i < 0 && -0)),
      s = (r - t._y1) / (i || (n < 0 && -0)),
      l = (a * i + s * n) / (n + i)
    return (LY(a) + LY(s)) * Math.min(Math.abs(a), Math.abs(s), 0.5 * Math.abs(l)) || 0
  }
  function NY(t, e) {
    var r = t._x1 - t._x0
    return r ? ((3 * (t._y1 - t._y0)) / r - e) / 2 : e
  }
  function QD(t, e, r) {
    var n = t._x0,
      i = t._y0,
      a = t._x1,
      s = t._y1,
      l = (a - n) / 3
    t._context.bezierCurveTo(n + l, i + l * e, a - l, s - l * r, a, s)
  }
  function tT(t) {
    this._context = t
  }
  function MY(t) {
    this._context = new IY(t)
  }
  function IY(t) {
    this._context = t
  }
  function Kv(t) {
    return new tT(t)
  }
  function Qv(t) {
    return new MY(t)
  }
  var OY = N(() => {
    'use strict'
    o(LY, 'sign')
    o(RY, 'slope3')
    o(NY, 'slope2')
    o(QD, 'point')
    o(tT, 'MonotoneX')
    tT.prototype = {
      areaStart: o(function () {
        this._line = 0
      }, 'areaStart'),
      areaEnd: o(function () {
        this._line = NaN
      }, 'areaEnd'),
      lineStart: o(function () {
        ;(this._x0 = this._x1 = this._y0 = this._y1 = this._t0 = NaN), (this._point = 0)
      }, 'lineStart'),
      lineEnd: o(function () {
        switch (this._point) {
          case 2:
            this._context.lineTo(this._x1, this._y1)
            break
          case 3:
            QD(this, this._t0, NY(this, this._t0))
            break
        }
        ;(this._line || (this._line !== 0 && this._point === 1)) && this._context.closePath(), (this._line = 1 - this._line)
      }, 'lineEnd'),
      point: o(function (t, e) {
        var r = NaN
        if (((t = +t), (e = +e), !(t === this._x1 && e === this._y1))) {
          switch (this._point) {
            case 0:
              ;(this._point = 1), this._line ? this._context.lineTo(t, e) : this._context.moveTo(t, e)
              break
            case 1:
              this._point = 2
              break
            case 2:
              ;(this._point = 3), QD(this, NY(this, (r = RY(this, t, e))), r)
              break
            default:
              QD(this, this._t0, (r = RY(this, t, e)))
              break
          }
          ;(this._x0 = this._x1), (this._x1 = t), (this._y0 = this._y1), (this._y1 = e), (this._t0 = r)
        }
      }, 'point')
    }
    o(MY, 'MonotoneY')
    ;(MY.prototype = Object.create(tT.prototype)).point = function (t, e) {
      tT.prototype.point.call(this, e, t)
    }
    o(IY, 'ReflectContext')
    IY.prototype = {
      moveTo: o(function (t, e) {
        this._context.moveTo(e, t)
      }, 'moveTo'),
      closePath: o(function () {
        this._context.closePath()
      }, 'closePath'),
      lineTo: o(function (t, e) {
        this._context.lineTo(e, t)
      }, 'lineTo'),
      bezierCurveTo: o(function (t, e, r, n, i, a) {
        this._context.bezierCurveTo(e, t, n, r, a, i)
      }, 'bezierCurveTo')
    }
    o(Kv, 'monotoneX')
    o(Qv, 'monotoneY')
  })
  function BY(t) {
    this._context = t
  }
  function PY(t) {
    var e,
      r = t.length - 1,
      n,
      i = new Array(r),
      a = new Array(r),
      s = new Array(r)
    for (i[0] = 0, a[0] = 2, s[0] = t[0] + 2 * t[1], e = 1; e < r - 1; ++e) (i[e] = 1), (a[e] = 4), (s[e] = 4 * t[e] + 2 * t[e + 1])
    for (i[r - 1] = 2, a[r - 1] = 7, s[r - 1] = 8 * t[r - 1] + t[r], e = 1; e < r; ++e) (n = i[e] / a[e - 1]), (a[e] -= n), (s[e] -= n * s[e - 1])
    for (i[r - 1] = s[r - 1] / a[r - 1], e = r - 2; e >= 0; --e) i[e] = (s[e] - i[e + 1]) / a[e]
    for (a[r - 1] = (t[r] + i[r - 1]) / 2, e = 0; e < r - 1; ++e) a[e] = 2 * t[e + 1] - i[e + 1]
    return [i, a]
  }
  function K0(t) {
    return new BY(t)
  }
  var FY = N(() => {
    'use strict'
    o(BY, 'Natural')
    BY.prototype = {
      areaStart: o(function () {
        this._line = 0
      }, 'areaStart'),
      areaEnd: o(function () {
        this._line = NaN
      }, 'areaEnd'),
      lineStart: o(function () {
        ;(this._x = []), (this._y = [])
      }, 'lineStart'),
      lineEnd: o(function () {
        var t = this._x,
          e = this._y,
          r = t.length
        if (r)
          if ((this._line ? this._context.lineTo(t[0], e[0]) : this._context.moveTo(t[0], e[0]), r === 2)) this._context.lineTo(t[1], e[1])
          else for (var n = PY(t), i = PY(e), a = 0, s = 1; s < r; ++a, ++s) this._context.bezierCurveTo(n[0][a], i[0][a], n[1][a], i[1][a], t[s], e[s])
        ;(this._line || (this._line !== 0 && r === 1)) && this._context.closePath(), (this._line = 1 - this._line), (this._x = this._y = null)
      }, 'lineEnd'),
      point: o(function (t, e) {
        this._x.push(+t), this._y.push(+e)
      }, 'point')
    }
    o(PY, 'controlPoints')
    o(K0, 'default')
  })
  function rT(t, e) {
    ;(this._context = t), (this._t = e)
  }
  function Q0(t) {
    return new rT(t, 0.5)
  }
  function Zv(t) {
    return new rT(t, 0)
  }
  function Jv(t) {
    return new rT(t, 1)
  }
  var $Y = N(() => {
    'use strict'
    o(rT, 'Step')
    rT.prototype = {
      areaStart: o(function () {
        this._line = 0
      }, 'areaStart'),
      areaEnd: o(function () {
        this._line = NaN
      }, 'areaEnd'),
      lineStart: o(function () {
        ;(this._x = this._y = NaN), (this._point = 0)
      }, 'lineStart'),
      lineEnd: o(function () {
        0 < this._t && this._t < 1 && this._point === 2 && this._context.lineTo(this._x, this._y),
          (this._line || (this._line !== 0 && this._point === 1)) && this._context.closePath(),
          this._line >= 0 && ((this._t = 1 - this._t), (this._line = 1 - this._line))
      }, 'lineEnd'),
      point: o(function (t, e) {
        switch (((t = +t), (e = +e), this._point)) {
          case 0:
            ;(this._point = 1), this._line ? this._context.lineTo(t, e) : this._context.moveTo(t, e)
            break
          case 1:
            this._point = 2
          default: {
            if (this._t <= 0) this._context.lineTo(this._x, e), this._context.lineTo(t, e)
            else {
              var r = this._x * (1 - this._t) + t * this._t
              this._context.lineTo(r, this._y), this._context.lineTo(r, e)
            }
            break
          }
        }
        ;(this._x = t), (this._y = e)
      }, 'point')
    }
    o(Q0, 'default')
    o(Zv, 'stepBefore')
    o(Jv, 'stepAfter')
  })
  var zY = N(() => {
    'use strict'
    oY()
    fY()
    mY()
    vY()
    bY()
    Wv()
    gY()
    wY()
    qD()
    XD()
    Yv()
    SY()
    AY()
    J5()
    DY()
    GD()
    OY()
    FY()
    $Y()
  })
  var GY = N(() => {
    'use strict'
  })
  var VY = N(() => {
    'use strict'
  })
  function Oh(t, e, r) {
    ;(this.k = t), (this.x = e), (this.y = r)
  }
  function JD(t) {
    for (; !t.__zoom; ) if (!(t = t.parentNode)) return ZD
    return t.__zoom
  }
  var ZD,
    e9 = N(() => {
      'use strict'
      o(Oh, 'Transform')
      Oh.prototype = {
        constructor: Oh,
        scale: o(function (t) {
          return t === 1 ? this : new Oh(this.k * t, this.x, this.y)
        }, 'scale'),
        translate: o(function (t, e) {
          return (t === 0) & (e === 0) ? this : new Oh(this.k, this.x + this.k * t, this.y + this.k * e)
        }, 'translate'),
        apply: o(function (t) {
          return [t[0] * this.k + this.x, t[1] * this.k + this.y]
        }, 'apply'),
        applyX: o(function (t) {
          return t * this.k + this.x
        }, 'applyX'),
        applyY: o(function (t) {
          return t * this.k + this.y
        }, 'applyY'),
        invert: o(function (t) {
          return [(t[0] - this.x) / this.k, (t[1] - this.y) / this.k]
        }, 'invert'),
        invertX: o(function (t) {
          return (t - this.x) / this.k
        }, 'invertX'),
        invertY: o(function (t) {
          return (t - this.y) / this.k
        }, 'invertY'),
        rescaleX: o(function (t) {
          return t.copy().domain(t.range().map(this.invertX, this).map(t.invert, t))
        }, 'rescaleX'),
        rescaleY: o(function (t) {
          return t.copy().domain(t.range().map(this.invertY, this).map(t.invert, t))
        }, 'rescaleY'),
        toString: o(function () {
          return 'translate(' + this.x + ',' + this.y + ') scale(' + this.k + ')'
        }, 'toString')
      }
      ZD = new Oh(1, 0, 0)
      JD.prototype = Oh.prototype
      o(JD, 'transform')
    })
  var UY = N(() => {
    'use strict'
  })
  var HY = N(() => {
    'use strict'
    b5()
    GY()
    VY()
    e9()
    UY()
  })
  var WY = N(() => {
    'use strict'
    HY()
    e9()
  })
  var fr = N(() => {
    'use strict'
    Eh()
    JV()
    vW()
    wW()
    I0()
    kW()
    EW()
    VA()
    HU()
    SW()
    L_()
    CW()
    _W()
    Y_()
    VW()
    fq()
    B0()
    O_()
    dq()
    AW()
    pq()
    tY()
    iY()
    yl()
    zY()
    $5()
    ID()
    p5()
    b5()
    WY()
  })
  var qY = Pi(Ji => {
    'use strict'
    Object.defineProperty(Ji, '__esModule', { value: !0 })
    Ji.BLANK_URL =
      Ji.relativeFirstCharacters =
      Ji.whitespaceEscapeCharsRegex =
      Ji.urlSchemeRegex =
      Ji.ctrlCharactersRegex =
      Ji.htmlCtrlEntityRegex =
      Ji.htmlEntitiesRegex =
      Ji.invalidProtocolRegex =
        void 0
    Ji.invalidProtocolRegex = /^([^\w]*)(javascript|data|vbscript)/im
    Ji.htmlEntitiesRegex = /&#(\w+)(^\w|;)?/g
    Ji.htmlCtrlEntityRegex = /&(newline|tab);/gi
    Ji.ctrlCharactersRegex = /[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim
    Ji.urlSchemeRegex = /^.+(:|&colon;)/gim
    Ji.whitespaceEscapeCharsRegex = /(\\|%5[cC])((%(6[eE]|72|74))|[nrt])/g
    Ji.relativeFirstCharacters = ['.', '/']
    Ji.BLANK_URL = 'about:blank'
  })
  var Z0 = Pi(nT => {
    'use strict'
    Object.defineProperty(nT, '__esModule', { value: !0 })
    nT.sanitizeUrl = void 0
    var La = qY()
    function gSe(t) {
      return La.relativeFirstCharacters.indexOf(t[0]) > -1
    }
    o(gSe, 'isRelativeUrlWithoutProtocol')
    function ySe(t) {
      var e = t.replace(La.ctrlCharactersRegex, '')
      return e.replace(La.htmlEntitiesRegex, function (r, n) {
        return String.fromCharCode(n)
      })
    }
    o(ySe, 'decodeHtmlCharacters')
    function vSe(t) {
      return URL.canParse(t)
    }
    o(vSe, 'isValidUrl')
    function YY(t) {
      try {
        return decodeURIComponent(t)
      } catch {
        return t
      }
    }
    o(YY, 'decodeURI')
    function xSe(t) {
      if (!t) return La.BLANK_URL
      var e,
        r = YY(t.trim())
      do
        (r = ySe(r).replace(La.htmlCtrlEntityRegex, '').replace(La.ctrlCharactersRegex, '').replace(La.whitespaceEscapeCharsRegex, '').trim()),
          (r = YY(r)),
          (e = r.match(La.ctrlCharactersRegex) || r.match(La.htmlEntitiesRegex) || r.match(La.htmlCtrlEntityRegex) || r.match(La.whitespaceEscapeCharsRegex))
      while (e && e.length > 0)
      var n = r
      if (!n) return La.BLANK_URL
      if (gSe(n)) return n
      var i = n.trimStart(),
        a = i.match(La.urlSchemeRegex)
      if (!a) return n
      var s = a[0].toLowerCase().trim()
      if (La.invalidProtocolRegex.test(s)) return La.BLANK_URL
      var l = i.replace(/\\/g, '/')
      if (s === 'mailto:' || s.includes('://')) return l
      if (s === 'http:' || s === 'https:') {
        if (!vSe(l)) return La.BLANK_URL
        var u = new URL(l)
        return (u.protocol = u.protocol.toLowerCase()), (u.hostname = u.hostname.toLowerCase()), u.toString()
      }
      return l
    }
    o(xSe, 'sanitizeUrl')
    nT.sanitizeUrl = xSe
  })
  var t9,
    Nd,
    iT,
    XY,
    jY,
    KY,
    Al,
    e2,
    t2 = N(() => {
      'use strict'
      t9 = Aa(Z0(), 1)
      pr()
      ;(Nd = o((t, e) => {
        let r = t.append('rect')
        if (
          (r.attr('x', e.x),
          r.attr('y', e.y),
          r.attr('fill', e.fill),
          r.attr('stroke', e.stroke),
          r.attr('width', e.width),
          r.attr('height', e.height),
          e.name && r.attr('name', e.name),
          e.rx && r.attr('rx', e.rx),
          e.ry && r.attr('ry', e.ry),
          e.attrs !== void 0)
        )
          for (let n in e.attrs) r.attr(n, e.attrs[n])
        return e.class && r.attr('class', e.class), r
      }, 'drawRect')),
        (iT = o((t, e) => {
          let r = { x: e.startx, y: e.starty, width: e.stopx - e.startx, height: e.stopy - e.starty, fill: e.fill, stroke: e.stroke, class: 'rect' }
          Nd(t, r).lower()
        }, 'drawBackgroundRect')),
        (XY = o((t, e) => {
          let r = e.text.replace(ud, ' '),
            n = t.append('text')
          n.attr('x', e.x), n.attr('y', e.y), n.attr('class', 'legend'), n.style('text-anchor', e.anchor), e.class && n.attr('class', e.class)
          let i = n.append('tspan')
          return i.attr('x', e.x + e.textMargin * 2), i.text(r), n
        }, 'drawText')),
        (jY = o((t, e, r, n) => {
          let i = t.append('image')
          i.attr('x', e), i.attr('y', r)
          let a = (0, t9.sanitizeUrl)(n)
          i.attr('xlink:href', a)
        }, 'drawImage')),
        (KY = o((t, e, r, n) => {
          let i = t.append('use')
          i.attr('x', e), i.attr('y', r)
          let a = (0, t9.sanitizeUrl)(n)
          i.attr('xlink:href', `#${a}`)
        }, 'drawEmbeddedImage')),
        (Al = o(() => ({ x: 0, y: 0, width: 100, height: 100, fill: '#EDF2AE', stroke: '#666', anchor: 'start', rx: 0, ry: 0 }), 'getNoteRect')),
        (e2 = o(() => ({ x: 0, y: 0, width: 100, height: 100, 'text-anchor': 'start', style: '#666', textMargin: 0, rx: 0, ry: 0, tspan: !0 }), 'getTextObj'))
    })
  var QY,
    r9,
    ZY,
    bSe,
    TSe,
    wSe,
    kSe,
    ESe,
    SSe,
    CSe,
    ASe,
    _Se,
    DSe,
    LSe,
    RSe,
    Cu,
    _l,
    JY = N(() => {
      'use strict'
      pr()
      t2()
      ;(QY = Aa(Z0(), 1)),
        (r9 = o(function (t, e) {
          return Nd(t, e)
        }, 'drawRect')),
        (ZY = o(function (t, e, r, n, i, a) {
          let s = t.append('image')
          s.attr('width', e), s.attr('height', r), s.attr('x', n), s.attr('y', i)
          let l = a.startsWith('data:image/png;base64') ? a : (0, QY.sanitizeUrl)(a)
          s.attr('xlink:href', l)
        }, 'drawImage')),
        (bSe = o((t, e, r) => {
          let n = t.append('g'),
            i = 0
          for (let a of e) {
            let s = a.textColor ? a.textColor : '#444444',
              l = a.lineColor ? a.lineColor : '#444444',
              u = a.offsetX ? parseInt(a.offsetX) : 0,
              h = a.offsetY ? parseInt(a.offsetY) : 0,
              f = ''
            if (i === 0) {
              let p = n.append('line')
              p.attr('x1', a.startPoint.x),
                p.attr('y1', a.startPoint.y),
                p.attr('x2', a.endPoint.x),
                p.attr('y2', a.endPoint.y),
                p.attr('stroke-width', '1'),
                p.attr('stroke', l),
                p.style('fill', 'none'),
                a.type !== 'rel_b' && p.attr('marker-end', 'url(' + f + '#arrowhead)'),
                (a.type === 'birel' || a.type === 'rel_b') && p.attr('marker-start', 'url(' + f + '#arrowend)'),
                (i = -1)
            } else {
              let p = n.append('path')
              p
                .attr('fill', 'none')
                .attr('stroke-width', '1')
                .attr('stroke', l)
                .attr(
                  'd',
                  'Mstartx,starty Qcontrolx,controly stopx,stopy '
                    .replaceAll('startx', a.startPoint.x)
                    .replaceAll('starty', a.startPoint.y)
                    .replaceAll('controlx', a.startPoint.x + (a.endPoint.x - a.startPoint.x) / 2 - (a.endPoint.x - a.startPoint.x) / 4)
                    .replaceAll('controly', a.startPoint.y + (a.endPoint.y - a.startPoint.y) / 2)
                    .replaceAll('stopx', a.endPoint.x)
                    .replaceAll('stopy', a.endPoint.y)
                ),
                a.type !== 'rel_b' && p.attr('marker-end', 'url(' + f + '#arrowhead)'),
                (a.type === 'birel' || a.type === 'rel_b') && p.attr('marker-start', 'url(' + f + '#arrowend)')
            }
            let d = r.messageFont()
            Cu(r)(
              a.label.text,
              n,
              Math.min(a.startPoint.x, a.endPoint.x) + Math.abs(a.endPoint.x - a.startPoint.x) / 2 + u,
              Math.min(a.startPoint.y, a.endPoint.y) + Math.abs(a.endPoint.y - a.startPoint.y) / 2 + h,
              a.label.width,
              a.label.height,
              { fill: s },
              d
            ),
              a.techn &&
                a.techn.text !== '' &&
                ((d = r.messageFont()),
                Cu(r)(
                  '[' + a.techn.text + ']',
                  n,
                  Math.min(a.startPoint.x, a.endPoint.x) + Math.abs(a.endPoint.x - a.startPoint.x) / 2 + u,
                  Math.min(a.startPoint.y, a.endPoint.y) + Math.abs(a.endPoint.y - a.startPoint.y) / 2 + r.messageFontSize + 5 + h,
                  Math.max(a.label.width, a.techn.width),
                  a.techn.height,
                  { fill: s, 'font-style': 'italic' },
                  d
                ))
          }
        }, 'drawRels')),
        (TSe = o(function (t, e, r) {
          let n = t.append('g'),
            i = e.bgColor ? e.bgColor : 'none',
            a = e.borderColor ? e.borderColor : '#444444',
            s = e.fontColor ? e.fontColor : 'black',
            l = { 'stroke-width': 1, 'stroke-dasharray': '7.0,7.0' }
          e.nodeType && (l = { 'stroke-width': 1 })
          let u = { x: e.x, y: e.y, fill: i, stroke: a, width: e.width, height: e.height, rx: 2.5, ry: 2.5, attrs: l }
          r9(n, u)
          let h = r.boundaryFont()
          ;(h.fontWeight = 'bold'),
            (h.fontSize = h.fontSize + 2),
            (h.fontColor = s),
            Cu(r)(e.label.text, n, e.x, e.y + e.label.Y, e.width, e.height, { fill: '#444444' }, h),
            e.type && e.type.text !== '' && ((h = r.boundaryFont()), (h.fontColor = s), Cu(r)(e.type.text, n, e.x, e.y + e.type.Y, e.width, e.height, { fill: '#444444' }, h)),
            e.descr &&
              e.descr.text !== '' &&
              ((h = r.boundaryFont()), (h.fontSize = h.fontSize - 2), (h.fontColor = s), Cu(r)(e.descr.text, n, e.x, e.y + e.descr.Y, e.width, e.height, { fill: '#444444' }, h))
        }, 'drawBoundary')),
        (wSe = o(function (t, e, r) {
          let n = e.bgColor ? e.bgColor : r[e.typeC4Shape.text + '_bg_color'],
            i = e.borderColor ? e.borderColor : r[e.typeC4Shape.text + '_border_color'],
            a = e.fontColor ? e.fontColor : '#FFFFFF',
            s =
              'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII='
          switch (e.typeC4Shape.text) {
            case 'person':
              s =
                'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII='
              break
            case 'external_person':
              s =
                'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII='
              break
          }
          let l = t.append('g')
          l.attr('class', 'person-man')
          let u = Al()
          switch (e.typeC4Shape.text) {
            case 'person':
            case 'external_person':
            case 'system':
            case 'external_system':
            case 'container':
            case 'external_container':
            case 'component':
            case 'external_component':
              ;(u.x = e.x),
                (u.y = e.y),
                (u.fill = n),
                (u.width = e.width),
                (u.height = e.height),
                (u.stroke = i),
                (u.rx = 2.5),
                (u.ry = 2.5),
                (u.attrs = { 'stroke-width': 0.5 }),
                r9(l, u)
              break
            case 'system_db':
            case 'external_system_db':
            case 'container_db':
            case 'external_container_db':
            case 'component_db':
            case 'external_component_db':
              l
                .append('path')
                .attr('fill', n)
                .attr('stroke-width', '0.5')
                .attr('stroke', i)
                .attr(
                  'd',
                  'Mstartx,startyc0,-10 half,-10 half,-10c0,0 half,0 half,10l0,heightc0,10 -half,10 -half,10c0,0 -half,0 -half,-10l0,-height'
                    .replaceAll('startx', e.x)
                    .replaceAll('starty', e.y)
                    .replaceAll('half', e.width / 2)
                    .replaceAll('height', e.height)
                ),
                l
                  .append('path')
                  .attr('fill', 'none')
                  .attr('stroke-width', '0.5')
                  .attr('stroke', i)
                  .attr(
                    'd',
                    'Mstartx,startyc0,10 half,10 half,10c0,0 half,0 half,-10'
                      .replaceAll('startx', e.x)
                      .replaceAll('starty', e.y)
                      .replaceAll('half', e.width / 2)
                  )
              break
            case 'system_queue':
            case 'external_system_queue':
            case 'container_queue':
            case 'external_container_queue':
            case 'component_queue':
            case 'external_component_queue':
              l
                .append('path')
                .attr('fill', n)
                .attr('stroke-width', '0.5')
                .attr('stroke', i)
                .attr(
                  'd',
                  'Mstartx,startylwidth,0c5,0 5,half 5,halfc0,0 0,half -5,halfl-width,0c-5,0 -5,-half -5,-halfc0,0 0,-half 5,-half'
                    .replaceAll('startx', e.x)
                    .replaceAll('starty', e.y)
                    .replaceAll('width', e.width)
                    .replaceAll('half', e.height / 2)
                ),
                l
                  .append('path')
                  .attr('fill', 'none')
                  .attr('stroke-width', '0.5')
                  .attr('stroke', i)
                  .attr(
                    'd',
                    'Mstartx,startyc-5,0 -5,half -5,halfc0,half 5,half 5,half'
                      .replaceAll('startx', e.x + e.width)
                      .replaceAll('starty', e.y)
                      .replaceAll('half', e.height / 2)
                  )
              break
          }
          let h = RSe(r, e.typeC4Shape.text)
          switch (
            (l
              .append('text')
              .attr('fill', a)
              .attr('font-family', h.fontFamily)
              .attr('font-size', h.fontSize - 2)
              .attr('font-style', 'italic')
              .attr('lengthAdjust', 'spacing')
              .attr('textLength', e.typeC4Shape.width)
              .attr('x', e.x + e.width / 2 - e.typeC4Shape.width / 2)
              .attr('y', e.y + e.typeC4Shape.Y)
              .text('<<' + e.typeC4Shape.text + '>>'),
            e.typeC4Shape.text)
          ) {
            case 'person':
            case 'external_person':
              ZY(l, 48, 48, e.x + e.width / 2 - 24, e.y + e.image.Y, s)
              break
          }
          let f = r[e.typeC4Shape.text + 'Font']()
          return (
            (f.fontWeight = 'bold'),
            (f.fontSize = f.fontSize + 2),
            (f.fontColor = a),
            Cu(r)(e.label.text, l, e.x, e.y + e.label.Y, e.width, e.height, { fill: a }, f),
            (f = r[e.typeC4Shape.text + 'Font']()),
            (f.fontColor = a),
            e.techn && e.techn?.text !== ''
              ? Cu(r)(e.techn.text, l, e.x, e.y + e.techn.Y, e.width, e.height, { fill: a, 'font-style': 'italic' }, f)
              : e.type && e.type.text !== '' && Cu(r)(e.type.text, l, e.x, e.y + e.type.Y, e.width, e.height, { fill: a, 'font-style': 'italic' }, f),
            e.descr && e.descr.text !== '' && ((f = r.personFont()), (f.fontColor = a), Cu(r)(e.descr.text, l, e.x, e.y + e.descr.Y, e.width, e.height, { fill: a }, f)),
            e.height
          )
        }, 'drawC4Shape')),
        (kSe = o(function (t) {
          t.append('defs')
            .append('symbol')
            .attr('id', 'database')
            .attr('fill-rule', 'evenodd')
            .attr('clip-rule', 'evenodd')
            .append('path')
            .attr('transform', 'scale(.5)')
            .attr(
              'd',
              'M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z'
            )
        }, 'insertDatabaseIcon')),
        (ESe = o(function (t) {
          t.append('defs')
            .append('symbol')
            .attr('id', 'computer')
            .attr('width', '24')
            .attr('height', '24')
            .append('path')
            .attr('transform', 'scale(.5)')
            .attr('d', 'M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z')
        }, 'insertComputerIcon')),
        (SSe = o(function (t) {
          t.append('defs')
            .append('symbol')
            .attr('id', 'clock')
            .attr('width', '24')
            .attr('height', '24')
            .append('path')
            .attr('transform', 'scale(.5)')
            .attr(
              'd',
              'M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z'
            )
        }, 'insertClockIcon')),
        (CSe = o(function (t) {
          t.append('defs')
            .append('marker')
            .attr('id', 'arrowhead')
            .attr('refX', 9)
            .attr('refY', 5)
            .attr('markerUnits', 'userSpaceOnUse')
            .attr('markerWidth', 12)
            .attr('markerHeight', 12)
            .attr('orient', 'auto')
            .append('path')
            .attr('d', 'M 0 0 L 10 5 L 0 10 z')
        }, 'insertArrowHead')),
        (ASe = o(function (t) {
          t.append('defs')
            .append('marker')
            .attr('id', 'arrowend')
            .attr('refX', 1)
            .attr('refY', 5)
            .attr('markerUnits', 'userSpaceOnUse')
            .attr('markerWidth', 12)
            .attr('markerHeight', 12)
            .attr('orient', 'auto')
            .append('path')
            .attr('d', 'M 10 0 L 0 5 L 10 10 z')
        }, 'insertArrowEnd')),
        (_Se = o(function (t) {
          t.append('defs')
            .append('marker')
            .attr('id', 'filled-head')
            .attr('refX', 18)
            .attr('refY', 7)
            .attr('markerWidth', 20)
            .attr('markerHeight', 28)
            .attr('orient', 'auto')
            .append('path')
            .attr('d', 'M 18,7 L9,13 L14,7 L9,1 Z')
        }, 'insertArrowFilledHead')),
        (DSe = o(function (t) {
          t.append('defs')
            .append('marker')
            .attr('id', 'sequencenumber')
            .attr('refX', 15)
            .attr('refY', 15)
            .attr('markerWidth', 60)
            .attr('markerHeight', 40)
            .attr('orient', 'auto')
            .append('circle')
            .attr('cx', 15)
            .attr('cy', 15)
            .attr('r', 6)
        }, 'insertDynamicNumber')),
        (LSe = o(function (t) {
          let r = t.append('defs').append('marker').attr('id', 'crosshead').attr('markerWidth', 15).attr('markerHeight', 8).attr('orient', 'auto').attr('refX', 16).attr('refY', 4)
          r.append('path').attr('fill', 'black').attr('stroke', '#000000').style('stroke-dasharray', '0, 0').attr('stroke-width', '1px').attr('d', 'M 9,2 V 6 L16,4 Z'),
            r.append('path').attr('fill', 'none').attr('stroke', '#000000').style('stroke-dasharray', '0, 0').attr('stroke-width', '1px').attr('d', 'M 0,1 L 6,7 M 6,1 L 0,7')
        }, 'insertArrowCrossHead')),
        (RSe = o((t, e) => ({ fontFamily: t[e + 'FontFamily'], fontSize: t[e + 'FontSize'], fontWeight: t[e + 'FontWeight'] }), 'getC4ShapeFont')),
        (Cu = (function () {
          function t(i, a, s, l, u, h, f) {
            let d = a
              .append('text')
              .attr('x', s + u / 2)
              .attr('y', l + h / 2 + 5)
              .style('text-anchor', 'middle')
              .text(i)
            n(d, f)
          }
          o(t, 'byText')
          function e(i, a, s, l, u, h, f, d) {
            let { fontSize: p, fontFamily: m, fontWeight: g } = d,
              y = i.split(Ze.lineBreakRegex)
            for (let v = 0; v < y.length; v++) {
              let x = v * p - (p * (y.length - 1)) / 2,
                b = a
                  .append('text')
                  .attr('x', s + u / 2)
                  .attr('y', l)
                  .style('text-anchor', 'middle')
                  .attr('dominant-baseline', 'middle')
                  .style('font-size', p)
                  .style('font-weight', g)
                  .style('font-family', m)
              b.append('tspan').attr('dy', x).text(y[v]).attr('alignment-baseline', 'mathematical'), n(b, f)
            }
          }
          o(e, 'byTspan')
          function r(i, a, s, l, u, h, f, d) {
            let p = a.append('switch'),
              g = p
                .append('foreignObject')
                .attr('x', s)
                .attr('y', l)
                .attr('width', u)
                .attr('height', h)
                .append('xhtml:div')
                .style('display', 'table')
                .style('height', '100%')
                .style('width', '100%')
            g.append('div').style('display', 'table-cell').style('text-align', 'center').style('vertical-align', 'middle').text(i), e(i, p, s, l, u, h, f, d), n(g, f)
          }
          o(r, 'byFo')
          function n(i, a) {
            for (let s in a) a.hasOwnProperty(s) && i.attr(s, a[s])
          }
          return (
            o(n, '_setTextAttrs'),
            function (i) {
              return i.textPlacement === 'fo' ? r : i.textPlacement === 'old' ? t : e
            }
          )
        })()),
        (_l = {
          drawRect: r9,
          drawBoundary: TSe,
          drawC4Shape: wSe,
          drawRels: bSe,
          drawImage: ZY,
          insertArrowHead: CSe,
          insertArrowEnd: ASe,
          insertArrowFilledHead: _Se,
          insertDynamicNumber: DSe,
          insertArrowCrossHead: LSe,
          insertDatabaseIcon: kSe,
          insertComputerIcon: ESe,
          insertClockIcon: SSe
        })
    })
  var NSe,
    sT,
    n9 = N(() => {
      'use strict'
      ;(NSe = typeof global == 'object' && global && global.Object === Object && global), (sT = NSe)
    })
  var MSe,
    ISe,
    hi,
    Mo = N(() => {
      'use strict'
      n9()
      ;(MSe = typeof self == 'object' && self && self.Object === Object && self), (ISe = sT || MSe || Function('return this')()), (hi = ISe)
    })
  var OSe,
    ea,
    Md = N(() => {
      'use strict'
      Mo()
      ;(OSe = hi.Symbol), (ea = OSe)
    })
  function FSe(t) {
    var e = PSe.call(t, r2),
      r = t[r2]
    try {
      t[r2] = void 0
      var n = !0
    } catch {}
    var i = BSe.call(t)
    return n && (e ? (t[r2] = r) : delete t[r2]), i
  }
  var eX,
    PSe,
    BSe,
    r2,
    tX,
    rX = N(() => {
      'use strict'
      Md()
      ;(eX = Object.prototype), (PSe = eX.hasOwnProperty), (BSe = eX.toString), (r2 = ea ? ea.toStringTag : void 0)
      o(FSe, 'getRawTag')
      tX = FSe
    })
  function GSe(t) {
    return zSe.call(t)
  }
  var $Se,
    zSe,
    nX,
    iX = N(() => {
      'use strict'
      ;($Se = Object.prototype), (zSe = $Se.toString)
      o(GSe, 'objectToString')
      nX = GSe
    })
  function HSe(t) {
    return t == null ? (t === void 0 ? USe : VSe) : aX && aX in Object(t) ? tX(t) : nX(t)
  }
  var VSe,
    USe,
    aX,
    fa,
    Au = N(() => {
      'use strict'
      Md()
      rX()
      iX()
      ;(VSe = '[object Null]'), (USe = '[object Undefined]'), (aX = ea ? ea.toStringTag : void 0)
      o(HSe, 'baseGetTag')
      fa = HSe
    })
  function WSe(t) {
    var e = typeof t
    return t != null && (e == 'object' || e == 'function')
  }
  var bn,
    no = N(() => {
      'use strict'
      o(WSe, 'isObject')
      bn = WSe
    })
  function KSe(t) {
    if (!bn(t)) return !1
    var e = fa(t)
    return e == YSe || e == XSe || e == qSe || e == jSe
  }
  var qSe,
    YSe,
    XSe,
    jSe,
    Ai,
    n2 = N(() => {
      'use strict'
      Au()
      no()
      ;(qSe = '[object AsyncFunction]'), (YSe = '[object Function]'), (XSe = '[object GeneratorFunction]'), (jSe = '[object Proxy]')
      o(KSe, 'isFunction')
      Ai = KSe
    })
  var QSe,
    oT,
    sX = N(() => {
      'use strict'
      Mo()
      ;(QSe = hi['__core-js_shared__']), (oT = QSe)
    })
  function ZSe(t) {
    return !!oX && oX in t
  }
  var oX,
    lX,
    cX = N(() => {
      'use strict'
      sX()
      oX = (function () {
        var t = /[^.]+$/.exec((oT && oT.keys && oT.keys.IE_PROTO) || '')
        return t ? 'Symbol(src)_1.' + t : ''
      })()
      o(ZSe, 'isMasked')
      lX = ZSe
    })
  function t6e(t) {
    if (t != null) {
      try {
        return e6e.call(t)
      } catch {}
      try {
        return t + ''
      } catch {}
    }
    return ''
  }
  var JSe,
    e6e,
    _u,
    i9 = N(() => {
      'use strict'
      ;(JSe = Function.prototype), (e6e = JSe.toString)
      o(t6e, 'toSource')
      _u = t6e
    })
  function c6e(t) {
    if (!bn(t) || lX(t)) return !1
    var e = Ai(t) ? l6e : n6e
    return e.test(_u(t))
  }
  var r6e,
    n6e,
    i6e,
    a6e,
    s6e,
    o6e,
    l6e,
    uX,
    hX = N(() => {
      'use strict'
      n2()
      cX()
      no()
      i9()
      ;(r6e = /[\\^$.*+?()[\]{}|]/g),
        (n6e = /^\[object .+?Constructor\]$/),
        (i6e = Function.prototype),
        (a6e = Object.prototype),
        (s6e = i6e.toString),
        (o6e = a6e.hasOwnProperty),
        (l6e = RegExp(
          '^' +
            s6e
              .call(o6e)
              .replace(r6e, '\\$&')
              .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') +
            '$'
        ))
      o(c6e, 'baseIsNative')
      uX = c6e
    })
  function u6e(t, e) {
    return t?.[e]
  }
  var fX,
    dX = N(() => {
      'use strict'
      o(u6e, 'getValue')
      fX = u6e
    })
  function h6e(t, e) {
    var r = fX(t, e)
    return uX(r) ? r : void 0
  }
  var Ls,
    Ph = N(() => {
      'use strict'
      hX()
      dX()
      o(h6e, 'getNative')
      Ls = h6e
    })
  var f6e,
    Du,
    i2 = N(() => {
      'use strict'
      Ph()
      ;(f6e = Ls(Object, 'create')), (Du = f6e)
    })
  function d6e() {
    ;(this.__data__ = Du ? Du(null) : {}), (this.size = 0)
  }
  var pX,
    mX = N(() => {
      'use strict'
      i2()
      o(d6e, 'hashClear')
      pX = d6e
    })
  function p6e(t) {
    var e = this.has(t) && delete this.__data__[t]
    return (this.size -= e ? 1 : 0), e
  }
  var gX,
    yX = N(() => {
      'use strict'
      o(p6e, 'hashDelete')
      gX = p6e
    })
  function v6e(t) {
    var e = this.__data__
    if (Du) {
      var r = e[t]
      return r === m6e ? void 0 : r
    }
    return y6e.call(e, t) ? e[t] : void 0
  }
  var m6e,
    g6e,
    y6e,
    vX,
    xX = N(() => {
      'use strict'
      i2()
      ;(m6e = '__lodash_hash_undefined__'), (g6e = Object.prototype), (y6e = g6e.hasOwnProperty)
      o(v6e, 'hashGet')
      vX = v6e
    })
  function T6e(t) {
    var e = this.__data__
    return Du ? e[t] !== void 0 : b6e.call(e, t)
  }
  var x6e,
    b6e,
    bX,
    TX = N(() => {
      'use strict'
      i2()
      ;(x6e = Object.prototype), (b6e = x6e.hasOwnProperty)
      o(T6e, 'hashHas')
      bX = T6e
    })
  function k6e(t, e) {
    var r = this.__data__
    return (this.size += this.has(t) ? 0 : 1), (r[t] = Du && e === void 0 ? w6e : e), this
  }
  var w6e,
    wX,
    kX = N(() => {
      'use strict'
      i2()
      w6e = '__lodash_hash_undefined__'
      o(k6e, 'hashSet')
      wX = k6e
    })
  function J0(t) {
    var e = -1,
      r = t == null ? 0 : t.length
    for (this.clear(); ++e < r; ) {
      var n = t[e]
      this.set(n[0], n[1])
    }
  }
  var a9,
    EX = N(() => {
      'use strict'
      mX()
      yX()
      xX()
      TX()
      kX()
      o(J0, 'Hash')
      J0.prototype.clear = pX
      J0.prototype.delete = gX
      J0.prototype.get = vX
      J0.prototype.has = bX
      J0.prototype.set = wX
      a9 = J0
    })
  function E6e() {
    ;(this.__data__ = []), (this.size = 0)
  }
  var SX,
    CX = N(() => {
      'use strict'
      o(E6e, 'listCacheClear')
      SX = E6e
    })
  function S6e(t, e) {
    return t === e || (t !== t && e !== e)
  }
  var Io,
    Id = N(() => {
      'use strict'
      o(S6e, 'eq')
      Io = S6e
    })
  function C6e(t, e) {
    for (var r = t.length; r--; ) if (Io(t[r][0], e)) return r
    return -1
  }
  var Bh,
    a2 = N(() => {
      'use strict'
      Id()
      o(C6e, 'assocIndexOf')
      Bh = C6e
    })
  function D6e(t) {
    var e = this.__data__,
      r = Bh(e, t)
    if (r < 0) return !1
    var n = e.length - 1
    return r == n ? e.pop() : _6e.call(e, r, 1), --this.size, !0
  }
  var A6e,
    _6e,
    AX,
    _X = N(() => {
      'use strict'
      a2()
      ;(A6e = Array.prototype), (_6e = A6e.splice)
      o(D6e, 'listCacheDelete')
      AX = D6e
    })
  function L6e(t) {
    var e = this.__data__,
      r = Bh(e, t)
    return r < 0 ? void 0 : e[r][1]
  }
  var DX,
    LX = N(() => {
      'use strict'
      a2()
      o(L6e, 'listCacheGet')
      DX = L6e
    })
  function R6e(t) {
    return Bh(this.__data__, t) > -1
  }
  var RX,
    NX = N(() => {
      'use strict'
      a2()
      o(R6e, 'listCacheHas')
      RX = R6e
    })
  function N6e(t, e) {
    var r = this.__data__,
      n = Bh(r, t)
    return n < 0 ? (++this.size, r.push([t, e])) : (r[n][1] = e), this
  }
  var MX,
    IX = N(() => {
      'use strict'
      a2()
      o(N6e, 'listCacheSet')
      MX = N6e
    })
  function em(t) {
    var e = -1,
      r = t == null ? 0 : t.length
    for (this.clear(); ++e < r; ) {
      var n = t[e]
      this.set(n[0], n[1])
    }
  }
  var Fh,
    s2 = N(() => {
      'use strict'
      CX()
      _X()
      LX()
      NX()
      IX()
      o(em, 'ListCache')
      em.prototype.clear = SX
      em.prototype.delete = AX
      em.prototype.get = DX
      em.prototype.has = RX
      em.prototype.set = MX
      Fh = em
    })
  var M6e,
    $h,
    lT = N(() => {
      'use strict'
      Ph()
      Mo()
      ;(M6e = Ls(hi, 'Map')), ($h = M6e)
    })
  function I6e() {
    ;(this.size = 0), (this.__data__ = { hash: new a9(), map: new ($h || Fh)(), string: new a9() })
  }
  var OX,
    PX = N(() => {
      'use strict'
      EX()
      s2()
      lT()
      o(I6e, 'mapCacheClear')
      OX = I6e
    })
  function O6e(t) {
    var e = typeof t
    return e == 'string' || e == 'number' || e == 'symbol' || e == 'boolean' ? t !== '__proto__' : t === null
  }
  var BX,
    FX = N(() => {
      'use strict'
      o(O6e, 'isKeyable')
      BX = O6e
    })
  function P6e(t, e) {
    var r = t.__data__
    return BX(e) ? r[typeof e == 'string' ? 'string' : 'hash'] : r.map
  }
  var zh,
    o2 = N(() => {
      'use strict'
      FX()
      o(P6e, 'getMapData')
      zh = P6e
    })
  function B6e(t) {
    var e = zh(this, t).delete(t)
    return (this.size -= e ? 1 : 0), e
  }
  var $X,
    zX = N(() => {
      'use strict'
      o2()
      o(B6e, 'mapCacheDelete')
      $X = B6e
    })
  function F6e(t) {
    return zh(this, t).get(t)
  }
  var GX,
    VX = N(() => {
      'use strict'
      o2()
      o(F6e, 'mapCacheGet')
      GX = F6e
    })
  function $6e(t) {
    return zh(this, t).has(t)
  }
  var UX,
    HX = N(() => {
      'use strict'
      o2()
      o($6e, 'mapCacheHas')
      UX = $6e
    })
  function z6e(t, e) {
    var r = zh(this, t),
      n = r.size
    return r.set(t, e), (this.size += r.size == n ? 0 : 1), this
  }
  var WX,
    qX = N(() => {
      'use strict'
      o2()
      o(z6e, 'mapCacheSet')
      WX = z6e
    })
  function tm(t) {
    var e = -1,
      r = t == null ? 0 : t.length
    for (this.clear(); ++e < r; ) {
      var n = t[e]
      this.set(n[0], n[1])
    }
  }
  var Od,
    cT = N(() => {
      'use strict'
      PX()
      zX()
      VX()
      HX()
      qX()
      o(tm, 'MapCache')
      tm.prototype.clear = OX
      tm.prototype.delete = $X
      tm.prototype.get = GX
      tm.prototype.has = UX
      tm.prototype.set = WX
      Od = tm
    })
  function s9(t, e) {
    if (typeof t != 'function' || (e != null && typeof e != 'function')) throw new TypeError(G6e)
    var r = o(function () {
      var n = arguments,
        i = e ? e.apply(this, n) : n[0],
        a = r.cache
      if (a.has(i)) return a.get(i)
      var s = t.apply(this, n)
      return (r.cache = a.set(i, s) || a), s
    }, 'memoized')
    return (r.cache = new (s9.Cache || Od)()), r
  }
  var G6e,
    rm,
    o9 = N(() => {
      'use strict'
      cT()
      G6e = 'Expected a function'
      o(s9, 'memoize')
      s9.Cache = Od
      rm = s9
    })
  function V6e() {
    ;(this.__data__ = new Fh()), (this.size = 0)
  }
  var YX,
    XX = N(() => {
      'use strict'
      s2()
      o(V6e, 'stackClear')
      YX = V6e
    })
  function U6e(t) {
    var e = this.__data__,
      r = e.delete(t)
    return (this.size = e.size), r
  }
  var jX,
    KX = N(() => {
      'use strict'
      o(U6e, 'stackDelete')
      jX = U6e
    })
  function H6e(t) {
    return this.__data__.get(t)
  }
  var QX,
    ZX = N(() => {
      'use strict'
      o(H6e, 'stackGet')
      QX = H6e
    })
  function W6e(t) {
    return this.__data__.has(t)
  }
  var JX,
    ej = N(() => {
      'use strict'
      o(W6e, 'stackHas')
      JX = W6e
    })
  function Y6e(t, e) {
    var r = this.__data__
    if (r instanceof Fh) {
      var n = r.__data__
      if (!$h || n.length < q6e - 1) return n.push([t, e]), (this.size = ++r.size), this
      r = this.__data__ = new Od(n)
    }
    return r.set(t, e), (this.size = r.size), this
  }
  var q6e,
    tj,
    rj = N(() => {
      'use strict'
      s2()
      lT()
      cT()
      q6e = 200
      o(Y6e, 'stackSet')
      tj = Y6e
    })
  function nm(t) {
    var e = (this.__data__ = new Fh(t))
    this.size = e.size
  }
  var dc,
    l2 = N(() => {
      'use strict'
      s2()
      XX()
      KX()
      ZX()
      ej()
      rj()
      o(nm, 'Stack')
      nm.prototype.clear = YX
      nm.prototype.delete = jX
      nm.prototype.get = QX
      nm.prototype.has = JX
      nm.prototype.set = tj
      dc = nm
    })
  var X6e,
    im,
    l9 = N(() => {
      'use strict'
      Ph()
      ;(X6e = (function () {
        try {
          var t = Ls(Object, 'defineProperty')
          return t({}, '', {}), t
        } catch {}
      })()),
        (im = X6e)
    })
  function j6e(t, e, r) {
    e == '__proto__' && im ? im(t, e, { configurable: !0, enumerable: !0, value: r, writable: !0 }) : (t[e] = r)
  }
  var pc,
    am = N(() => {
      'use strict'
      l9()
      o(j6e, 'baseAssignValue')
      pc = j6e
    })
  function K6e(t, e, r) {
    ;((r !== void 0 && !Io(t[e], r)) || (r === void 0 && !(e in t))) && pc(t, e, r)
  }
  var c2,
    c9 = N(() => {
      'use strict'
      am()
      Id()
      o(K6e, 'assignMergeValue')
      c2 = K6e
    })
  function Q6e(t) {
    return function (e, r, n) {
      for (var i = -1, a = Object(e), s = n(e), l = s.length; l--; ) {
        var u = s[t ? l : ++i]
        if (r(a[u], u, a) === !1) break
      }
      return e
    }
  }
  var nj,
    ij = N(() => {
      'use strict'
      o(Q6e, 'createBaseFor')
      nj = Q6e
    })
  var Z6e,
    sm,
    uT = N(() => {
      'use strict'
      ij()
      ;(Z6e = nj()), (sm = Z6e)
    })
  function eCe(t, e) {
    if (e) return t.slice()
    var r = t.length,
      n = oj ? oj(r) : new t.constructor(r)
    return t.copy(n), n
  }
  var lj,
    aj,
    J6e,
    sj,
    oj,
    hT,
    u9 = N(() => {
      'use strict'
      Mo()
      ;(lj = typeof exports == 'object' && exports && !exports.nodeType && exports),
        (aj = lj && typeof module == 'object' && module && !module.nodeType && module),
        (J6e = aj && aj.exports === lj),
        (sj = J6e ? hi.Buffer : void 0),
        (oj = sj ? sj.allocUnsafe : void 0)
      o(eCe, 'cloneBuffer')
      hT = eCe
    })
  var tCe,
    om,
    h9 = N(() => {
      'use strict'
      Mo()
      ;(tCe = hi.Uint8Array), (om = tCe)
    })
  function rCe(t) {
    var e = new t.constructor(t.byteLength)
    return new om(e).set(new om(t)), e
  }
  var lm,
    fT = N(() => {
      'use strict'
      h9()
      o(rCe, 'cloneArrayBuffer')
      lm = rCe
    })
  function nCe(t, e) {
    var r = e ? lm(t.buffer) : t.buffer
    return new t.constructor(r, t.byteOffset, t.length)
  }
  var dT,
    f9 = N(() => {
      'use strict'
      fT()
      o(nCe, 'cloneTypedArray')
      dT = nCe
    })
  function iCe(t, e) {
    var r = -1,
      n = t.length
    for (e || (e = Array(n)); ++r < n; ) e[r] = t[r]
    return e
  }
  var pT,
    d9 = N(() => {
      'use strict'
      o(iCe, 'copyArray')
      pT = iCe
    })
  var cj,
    aCe,
    uj,
    hj = N(() => {
      'use strict'
      no()
      ;(cj = Object.create),
        (aCe = (function () {
          function t() {}
          return (
            o(t, 'object'),
            function (e) {
              if (!bn(e)) return {}
              if (cj) return cj(e)
              t.prototype = e
              var r = new t()
              return (t.prototype = void 0), r
            }
          )
        })()),
        (uj = aCe)
    })
  function sCe(t, e) {
    return function (r) {
      return t(e(r))
    }
  }
  var mT,
    p9 = N(() => {
      'use strict'
      o(sCe, 'overArg')
      mT = sCe
    })
  var oCe,
    cm,
    gT = N(() => {
      'use strict'
      p9()
      ;(oCe = mT(Object.getPrototypeOf, Object)), (cm = oCe)
    })
  function cCe(t) {
    var e = t && t.constructor,
      r = (typeof e == 'function' && e.prototype) || lCe
    return t === r
  }
  var lCe,
    mc,
    um = N(() => {
      'use strict'
      lCe = Object.prototype
      o(cCe, 'isPrototype')
      mc = cCe
    })
  function uCe(t) {
    return typeof t.constructor == 'function' && !mc(t) ? uj(cm(t)) : {}
  }
  var yT,
    m9 = N(() => {
      'use strict'
      hj()
      gT()
      um()
      o(uCe, 'initCloneObject')
      yT = uCe
    })
  function hCe(t) {
    return t != null && typeof t == 'object'
  }
  var ii,
    Oo = N(() => {
      'use strict'
      o(hCe, 'isObjectLike')
      ii = hCe
    })
  function dCe(t) {
    return ii(t) && fa(t) == fCe
  }
  var fCe,
    g9,
    fj = N(() => {
      'use strict'
      Au()
      Oo()
      fCe = '[object Arguments]'
      o(dCe, 'baseIsArguments')
      g9 = dCe
    })
  var dj,
    pCe,
    mCe,
    gCe,
    Dl,
    hm = N(() => {
      'use strict'
      fj()
      Oo()
      ;(dj = Object.prototype),
        (pCe = dj.hasOwnProperty),
        (mCe = dj.propertyIsEnumerable),
        (gCe = g9(
          (function () {
            return arguments
          })()
        )
          ? g9
          : function (t) {
              return ii(t) && pCe.call(t, 'callee') && !mCe.call(t, 'callee')
            }),
        (Dl = gCe)
    })
  var yCe,
    Pt,
    Wn = N(() => {
      'use strict'
      ;(yCe = Array.isArray), (Pt = yCe)
    })
  function xCe(t) {
    return typeof t == 'number' && t > -1 && t % 1 == 0 && t <= vCe
  }
  var vCe,
    fm,
    vT = N(() => {
      'use strict'
      vCe = 9007199254740991
      o(xCe, 'isLength')
      fm = xCe
    })
  function bCe(t) {
    return t != null && fm(t.length) && !Ai(t)
  }
  var fi,
    Po = N(() => {
      'use strict'
      n2()
      vT()
      o(bCe, 'isArrayLike')
      fi = bCe
    })
  function TCe(t) {
    return ii(t) && fi(t)
  }
  var Pd,
    xT = N(() => {
      'use strict'
      Po()
      Oo()
      o(TCe, 'isArrayLikeObject')
      Pd = TCe
    })
  function wCe() {
    return !1
  }
  var pj,
    mj = N(() => {
      'use strict'
      o(wCe, 'stubFalse')
      pj = wCe
    })
  var vj,
    gj,
    kCe,
    yj,
    ECe,
    SCe,
    Ll,
    dm = N(() => {
      'use strict'
      Mo()
      mj()
      ;(vj = typeof exports == 'object' && exports && !exports.nodeType && exports),
        (gj = vj && typeof module == 'object' && module && !module.nodeType && module),
        (kCe = gj && gj.exports === vj),
        (yj = kCe ? hi.Buffer : void 0),
        (ECe = yj ? yj.isBuffer : void 0),
        (SCe = ECe || pj),
        (Ll = SCe)
    })
  function RCe(t) {
    if (!ii(t) || fa(t) != CCe) return !1
    var e = cm(t)
    if (e === null) return !0
    var r = DCe.call(e, 'constructor') && e.constructor
    return typeof r == 'function' && r instanceof r && xj.call(r) == LCe
  }
  var CCe,
    ACe,
    _Ce,
    xj,
    DCe,
    LCe,
    bj,
    Tj = N(() => {
      'use strict'
      Au()
      gT()
      Oo()
      ;(CCe = '[object Object]'), (ACe = Function.prototype), (_Ce = Object.prototype), (xj = ACe.toString), (DCe = _Ce.hasOwnProperty), (LCe = xj.call(Object))
      o(RCe, 'isPlainObject')
      bj = RCe
    })
  function r7e(t) {
    return ii(t) && fm(t.length) && !!Fn[fa(t)]
  }
  var NCe,
    MCe,
    ICe,
    OCe,
    PCe,
    BCe,
    FCe,
    $Ce,
    zCe,
    GCe,
    VCe,
    UCe,
    HCe,
    WCe,
    qCe,
    YCe,
    XCe,
    jCe,
    KCe,
    QCe,
    ZCe,
    JCe,
    e7e,
    t7e,
    Fn,
    wj,
    kj = N(() => {
      'use strict'
      Au()
      vT()
      Oo()
      ;(NCe = '[object Arguments]'),
        (MCe = '[object Array]'),
        (ICe = '[object Boolean]'),
        (OCe = '[object Date]'),
        (PCe = '[object Error]'),
        (BCe = '[object Function]'),
        (FCe = '[object Map]'),
        ($Ce = '[object Number]'),
        (zCe = '[object Object]'),
        (GCe = '[object RegExp]'),
        (VCe = '[object Set]'),
        (UCe = '[object String]'),
        (HCe = '[object WeakMap]'),
        (WCe = '[object ArrayBuffer]'),
        (qCe = '[object DataView]'),
        (YCe = '[object Float32Array]'),
        (XCe = '[object Float64Array]'),
        (jCe = '[object Int8Array]'),
        (KCe = '[object Int16Array]'),
        (QCe = '[object Int32Array]'),
        (ZCe = '[object Uint8Array]'),
        (JCe = '[object Uint8ClampedArray]'),
        (e7e = '[object Uint16Array]'),
        (t7e = '[object Uint32Array]'),
        (Fn = {})
      Fn[YCe] = Fn[XCe] = Fn[jCe] = Fn[KCe] = Fn[QCe] = Fn[ZCe] = Fn[JCe] = Fn[e7e] = Fn[t7e] = !0
      Fn[NCe] = Fn[MCe] = Fn[WCe] = Fn[ICe] = Fn[qCe] = Fn[OCe] = Fn[PCe] = Fn[BCe] = Fn[FCe] = Fn[$Ce] = Fn[zCe] = Fn[GCe] = Fn[VCe] = Fn[UCe] = Fn[HCe] = !1
      o(r7e, 'baseIsTypedArray')
      wj = r7e
    })
  function n7e(t) {
    return function (e) {
      return t(e)
    }
  }
  var Bo,
    Bd = N(() => {
      'use strict'
      o(n7e, 'baseUnary')
      Bo = n7e
    })
  var Ej,
    u2,
    i7e,
    y9,
    a7e,
    Fo,
    h2 = N(() => {
      'use strict'
      n9()
      ;(Ej = typeof exports == 'object' && exports && !exports.nodeType && exports),
        (u2 = Ej && typeof module == 'object' && module && !module.nodeType && module),
        (i7e = u2 && u2.exports === Ej),
        (y9 = i7e && sT.process),
        (a7e = (function () {
          try {
            var t = u2 && u2.require && u2.require('util').types
            return t || (y9 && y9.binding && y9.binding('util'))
          } catch {}
        })()),
        (Fo = a7e)
    })
  var Sj,
    s7e,
    Gh,
    f2 = N(() => {
      'use strict'
      kj()
      Bd()
      h2()
      ;(Sj = Fo && Fo.isTypedArray), (s7e = Sj ? Bo(Sj) : wj), (Gh = s7e)
    })
  function o7e(t, e) {
    if (!(e === 'constructor' && typeof t[e] == 'function') && e != '__proto__') return t[e]
  }
  var d2,
    v9 = N(() => {
      'use strict'
      o(o7e, 'safeGet')
      d2 = o7e
    })
  function u7e(t, e, r) {
    var n = t[e]
    ;(!(c7e.call(t, e) && Io(n, r)) || (r === void 0 && !(e in t))) && pc(t, e, r)
  }
  var l7e,
    c7e,
    gc,
    pm = N(() => {
      'use strict'
      am()
      Id()
      ;(l7e = Object.prototype), (c7e = l7e.hasOwnProperty)
      o(u7e, 'assignValue')
      gc = u7e
    })
  function h7e(t, e, r, n) {
    var i = !r
    r || (r = {})
    for (var a = -1, s = e.length; ++a < s; ) {
      var l = e[a],
        u = n ? n(r[l], t[l], l, r, t) : void 0
      u === void 0 && (u = t[l]), i ? pc(r, l, u) : gc(r, l, u)
    }
    return r
  }
  var $o,
    Fd = N(() => {
      'use strict'
      pm()
      am()
      o(h7e, 'copyObject')
      $o = h7e
    })
  function f7e(t, e) {
    for (var r = -1, n = Array(t); ++r < t; ) n[r] = e(r)
    return n
  }
  var Cj,
    Aj = N(() => {
      'use strict'
      o(f7e, 'baseTimes')
      Cj = f7e
    })
  function m7e(t, e) {
    var r = typeof t
    return (e = e ?? d7e), !!e && (r == 'number' || (r != 'symbol' && p7e.test(t))) && t > -1 && t % 1 == 0 && t < e
  }
  var d7e,
    p7e,
    Vh,
    p2 = N(() => {
      'use strict'
      ;(d7e = 9007199254740991), (p7e = /^(?:0|[1-9]\d*)$/)
      o(m7e, 'isIndex')
      Vh = m7e
    })
  function v7e(t, e) {
    var r = Pt(t),
      n = !r && Dl(t),
      i = !r && !n && Ll(t),
      a = !r && !n && !i && Gh(t),
      s = r || n || i || a,
      l = s ? Cj(t.length, String) : [],
      u = l.length
    for (var h in t)
      (e || y7e.call(t, h)) &&
        !(s && (h == 'length' || (i && (h == 'offset' || h == 'parent')) || (a && (h == 'buffer' || h == 'byteLength' || h == 'byteOffset')) || Vh(h, u))) &&
        l.push(h)
    return l
  }
  var g7e,
    y7e,
    bT,
    x9 = N(() => {
      'use strict'
      Aj()
      hm()
      Wn()
      dm()
      p2()
      f2()
      ;(g7e = Object.prototype), (y7e = g7e.hasOwnProperty)
      o(v7e, 'arrayLikeKeys')
      bT = v7e
    })
  function x7e(t) {
    var e = []
    if (t != null) for (var r in Object(t)) e.push(r)
    return e
  }
  var _j,
    Dj = N(() => {
      'use strict'
      o(x7e, 'nativeKeysIn')
      _j = x7e
    })
  function w7e(t) {
    if (!bn(t)) return _j(t)
    var e = mc(t),
      r = []
    for (var n in t) (n == 'constructor' && (e || !T7e.call(t, n))) || r.push(n)
    return r
  }
  var b7e,
    T7e,
    Lj,
    Rj = N(() => {
      'use strict'
      no()
      um()
      Dj()
      ;(b7e = Object.prototype), (T7e = b7e.hasOwnProperty)
      o(w7e, 'baseKeysIn')
      Lj = w7e
    })
  function k7e(t) {
    return fi(t) ? bT(t, !0) : Lj(t)
  }
  var Rs,
    Uh = N(() => {
      'use strict'
      x9()
      Rj()
      Po()
      o(k7e, 'keysIn')
      Rs = k7e
    })
  function E7e(t) {
    return $o(t, Rs(t))
  }
  var Nj,
    Mj = N(() => {
      'use strict'
      Fd()
      Uh()
      o(E7e, 'toPlainObject')
      Nj = E7e
    })
  function S7e(t, e, r, n, i, a, s) {
    var l = d2(t, r),
      u = d2(e, r),
      h = s.get(u)
    if (h) {
      c2(t, r, h)
      return
    }
    var f = a ? a(l, u, r + '', t, e, s) : void 0,
      d = f === void 0
    if (d) {
      var p = Pt(u),
        m = !p && Ll(u),
        g = !p && !m && Gh(u)
      ;(f = u),
        p || m || g
          ? Pt(l)
            ? (f = l)
            : Pd(l)
              ? (f = pT(l))
              : m
                ? ((d = !1), (f = hT(u, !0)))
                : g
                  ? ((d = !1), (f = dT(u, !0)))
                  : (f = [])
          : bj(u) || Dl(u)
            ? ((f = l), Dl(l) ? (f = Nj(l)) : (!bn(l) || Ai(l)) && (f = yT(u)))
            : (d = !1)
    }
    d && (s.set(u, f), i(f, u, n, a, s), s.delete(u)), c2(t, r, f)
  }
  var Ij,
    Oj = N(() => {
      'use strict'
      c9()
      u9()
      f9()
      d9()
      m9()
      hm()
      Wn()
      xT()
      dm()
      n2()
      no()
      Tj()
      f2()
      v9()
      Mj()
      o(S7e, 'baseMergeDeep')
      Ij = S7e
    })
  function Pj(t, e, r, n, i) {
    t !== e &&
      sm(
        e,
        function (a, s) {
          if ((i || (i = new dc()), bn(a))) Ij(t, e, s, r, Pj, n, i)
          else {
            var l = n ? n(d2(t, s), a, s + '', t, e, i) : void 0
            l === void 0 && (l = a), c2(t, s, l)
          }
        },
        Rs
      )
  }
  var Bj,
    Fj = N(() => {
      'use strict'
      l2()
      c9()
      uT()
      Oj()
      no()
      Uh()
      v9()
      o(Pj, 'baseMerge')
      Bj = Pj
    })
  function C7e(t) {
    return t
  }
  var ta,
    Lu = N(() => {
      'use strict'
      o(C7e, 'identity')
      ta = C7e
    })
  function A7e(t, e, r) {
    switch (r.length) {
      case 0:
        return t.call(e)
      case 1:
        return t.call(e, r[0])
      case 2:
        return t.call(e, r[0], r[1])
      case 3:
        return t.call(e, r[0], r[1], r[2])
    }
    return t.apply(e, r)
  }
  var $j,
    zj = N(() => {
      'use strict'
      o(A7e, 'apply')
      $j = A7e
    })
  function _7e(t, e, r) {
    return (
      (e = Gj(e === void 0 ? t.length - 1 : e, 0)),
      function () {
        for (var n = arguments, i = -1, a = Gj(n.length - e, 0), s = Array(a); ++i < a; ) s[i] = n[e + i]
        i = -1
        for (var l = Array(e + 1); ++i < e; ) l[i] = n[i]
        return (l[e] = r(s)), $j(t, this, l)
      }
    )
  }
  var Gj,
    TT,
    b9 = N(() => {
      'use strict'
      zj()
      Gj = Math.max
      o(_7e, 'overRest')
      TT = _7e
    })
  function D7e(t) {
    return function () {
      return t
    }
  }
  var Ns,
    T9 = N(() => {
      'use strict'
      o(D7e, 'constant')
      Ns = D7e
    })
  var L7e,
    Vj,
    Uj = N(() => {
      'use strict'
      T9()
      l9()
      Lu()
      ;(L7e = im
        ? function (t, e) {
            return im(t, 'toString', { configurable: !0, enumerable: !1, value: Ns(e), writable: !0 })
          }
        : ta),
        (Vj = L7e)
    })
  function I7e(t) {
    var e = 0,
      r = 0
    return function () {
      var n = M7e(),
        i = N7e - (n - r)
      if (((r = n), i > 0)) {
        if (++e >= R7e) return arguments[0]
      } else e = 0
      return t.apply(void 0, arguments)
    }
  }
  var R7e,
    N7e,
    M7e,
    Hj,
    Wj = N(() => {
      'use strict'
      ;(R7e = 800), (N7e = 16), (M7e = Date.now)
      o(I7e, 'shortOut')
      Hj = I7e
    })
  var O7e,
    wT,
    w9 = N(() => {
      'use strict'
      Uj()
      Wj()
      ;(O7e = Hj(Vj)), (wT = O7e)
    })
  function P7e(t, e) {
    return wT(TT(t, e, ta), t + '')
  }
  var yc,
    mm = N(() => {
      'use strict'
      Lu()
      b9()
      w9()
      o(P7e, 'baseRest')
      yc = P7e
    })
  function B7e(t, e, r) {
    if (!bn(r)) return !1
    var n = typeof e
    return (n == 'number' ? fi(r) && Vh(e, r.length) : n == 'string' && e in r) ? Io(r[e], t) : !1
  }
  var io,
    $d = N(() => {
      'use strict'
      Id()
      Po()
      p2()
      no()
      o(B7e, 'isIterateeCall')
      io = B7e
    })
  function F7e(t) {
    return yc(function (e, r) {
      var n = -1,
        i = r.length,
        a = i > 1 ? r[i - 1] : void 0,
        s = i > 2 ? r[2] : void 0
      for (a = t.length > 3 && typeof a == 'function' ? (i--, a) : void 0, s && io(r[0], r[1], s) && ((a = i < 3 ? void 0 : a), (i = 1)), e = Object(e); ++n < i; ) {
        var l = r[n]
        l && t(e, l, n, a)
      }
      return e
    })
  }
  var kT,
    k9 = N(() => {
      'use strict'
      mm()
      $d()
      o(F7e, 'createAssigner')
      kT = F7e
    })
  var $7e,
    Hh,
    E9 = N(() => {
      'use strict'
      Fj()
      k9()
      ;($7e = kT(function (t, e, r) {
        Bj(t, e, r)
      })),
        (Hh = $7e)
    })
  function A9(t, e) {
    if (!t) return e
    let r = `curve${t.charAt(0).toUpperCase() + t.slice(1)}`
    return z7e[r] ?? e
  }
  function H7e(t, e) {
    let r = t.trim()
    if (r) return e.securityLevel !== 'loose' ? (0, Xj.sanitizeUrl)(r) : r
  }
  function Qj(t, e) {
    return !t || !e ? 0 : Math.sqrt(Math.pow(e.x - t.x, 2) + Math.pow(e.y - t.y, 2))
  }
  function q7e(t) {
    let e,
      r = 0
    t.forEach(i => {
      ;(r += Qj(i, e)), (e = i)
    })
    let n = r / 2
    return _9(t, n)
  }
  function Y7e(t) {
    return t.length === 1 ? t[0] : q7e(t)
  }
  function j7e(t, e, r) {
    let n = structuredClone(r)
    X.info('our points', n), e !== 'start_left' && e !== 'start_right' && n.reverse()
    let i = 25 + t,
      a = _9(n, i),
      s = 10 + t * 0.5,
      l = Math.atan2(n[0].y - a.y, n[0].x - a.x),
      u = { x: 0, y: 0 }
    return (
      e === 'start_left'
        ? ((u.x = Math.sin(l + Math.PI) * s + (n[0].x + a.x) / 2), (u.y = -Math.cos(l + Math.PI) * s + (n[0].y + a.y) / 2))
        : e === 'end_right'
          ? ((u.x = Math.sin(l - Math.PI) * s + (n[0].x + a.x) / 2 - 5), (u.y = -Math.cos(l - Math.PI) * s + (n[0].y + a.y) / 2 - 5))
          : e === 'end_left'
            ? ((u.x = Math.sin(l) * s + (n[0].x + a.x) / 2 - 5), (u.y = -Math.cos(l) * s + (n[0].y + a.y) / 2 - 5))
            : ((u.x = Math.sin(l) * s + (n[0].x + a.x) / 2), (u.y = -Math.cos(l) * s + (n[0].y + a.y) / 2)),
      u
    )
  }
  function D9(t) {
    let e = '',
      r = ''
    for (let n of t) n !== void 0 && (n.startsWith('color:') || n.startsWith('text-align:') ? (r = r + n + ';') : (e = e + n + ';'))
    return { style: e, labelStyle: r }
  }
  function K7e(t) {
    let e = '',
      r = '0123456789abcdef',
      n = r.length
    for (let i = 0; i < t; i++) e += r.charAt(Math.floor(Math.random() * n))
    return e
  }
  function ST(t, e) {
    return M9(t, e).height
  }
  function ra(t, e) {
    return M9(t, e).width
  }
  function I9(t) {
    return 'str' in t
  }
  function $n(t, e) {
    return Hh({}, t, e)
  }
  function zn(t) {
    return t ?? null
  }
  var Xj,
    C9,
    z7e,
    G7e,
    V7e,
    jj,
    Kj,
    U7e,
    W7e,
    qj,
    _9,
    X7e,
    Yj,
    L9,
    R9,
    Q7e,
    Z7e,
    N9,
    J7e,
    M9,
    S9,
    ET,
    eAe,
    tAe,
    zo,
    Vt,
    Zj,
    na,
    Wh,
    er = N(() => {
      'use strict'
      Xj = Aa(Z0(), 1)
      fr()
      pr()
      b7()
      yt()
      rd()
      g0()
      o9()
      E9()
      Q4()
      ;(C9 = '\u200B'),
        (z7e = {
          curveBasis: No,
          curveBasisClosed: X5,
          curveBasisOpen: j5,
          curveBumpX: Gv,
          curveBumpY: Vv,
          curveBundle: HD,
          curveCardinalClosed: WD,
          curveCardinalOpen: YD,
          curveCardinal: qv,
          curveCatmullRomClosed: jD,
          curveCatmullRomOpen: KD,
          curveCatmullRom: jv,
          curveLinear: Su,
          curveLinearClosed: eT,
          curveMonotoneX: Kv,
          curveMonotoneY: Qv,
          curveNatural: K0,
          curveStep: Q0,
          curveStepAfter: Jv,
          curveStepBefore: Zv
        }),
        (G7e = /\s*(?:(\w+)(?=:):|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi),
        (V7e = o(function (t, e) {
          let r = jj(t, /(?:init\b)|(?:initialize\b)/),
            n = {}
          if (Array.isArray(r)) {
            let s = r.map(l => l.args)
            v0(s), (n = Un(n, [...s]))
          } else n = r.args
          if (!n) return
          let i = m0(t, e),
            a = 'config'
          return n[a] !== void 0 && (i === 'flowchart-v2' && (i = 'flowchart'), (n[i] = n[a]), delete n[a]), n
        }, 'detectInit')),
        (jj = o(function (t, e = null) {
          try {
            let r = new RegExp(
              `[%]{2}(?![{]${G7e.source})(?=[}][%]{2}).*
`,
              'ig'
            )
            ;(t = t.trim().replace(r, '').replace(/'/gm, '"')), X.debug(`Detecting diagram directive${e !== null ? ' type:' + e : ''} based on the text:${t}`)
            let n,
              i = []
            for (; (n = td.exec(t)) !== null; )
              if ((n.index === td.lastIndex && td.lastIndex++, (n && !e) || (e && n[1]?.match(e)) || (e && n[2]?.match(e)))) {
                let a = n[1] ? n[1] : n[2],
                  s = n[3] ? n[3].trim() : n[4] ? JSON.parse(n[4].trim()) : null
                i.push({ type: a, args: s })
              }
            return i.length === 0 ? { type: t, args: null } : i.length === 1 ? i[0] : i
          } catch (r) {
            return X.error(`ERROR: ${r.message} - Unable to parse directive type: '${e}' based on the text: '${t}'`), { type: void 0, args: null }
          }
        }, 'detectDirective')),
        (Kj = o(function (t) {
          return t.replace(td, '')
        }, 'removeDirectives')),
        (U7e = o(function (t, e) {
          for (let [r, n] of e.entries()) if (n.match(t)) return r
          return -1
        }, 'isSubstringInArray'))
      o(A9, 'interpolateToCurve')
      o(H7e, 'formatUrl')
      W7e = o((t, ...e) => {
        let r = t.split('.'),
          n = r.length - 1,
          i = r[n],
          a = window
        for (let s = 0; s < n; s++)
          if (((a = a[r[s]]), !a)) {
            X.error(`Function name: ${t} not found in window`)
            return
          }
        a[i](...e)
      }, 'runFunc')
      o(Qj, 'distance')
      o(q7e, 'traverseEdge')
      o(Y7e, 'calcLabelPosition')
      ;(qj = o((t, e = 2) => {
        let r = Math.pow(10, e)
        return Math.round(t * r) / r
      }, 'roundNumber')),
        (_9 = o((t, e) => {
          let r,
            n = e
          for (let i of t) {
            if (r) {
              let a = Qj(i, r)
              if (a === 0) return r
              if (a < n) n -= a
              else {
                let s = n / a
                if (s <= 0) return r
                if (s >= 1) return { x: i.x, y: i.y }
                if (s > 0 && s < 1) return { x: qj((1 - s) * r.x + s * i.x, 5), y: qj((1 - s) * r.y + s * i.y, 5) }
              }
            }
            r = i
          }
          throw new Error('Could not find a suitable point for the given distance')
        }, 'calculatePoint')),
        (X7e = o((t, e, r) => {
          X.info(`our points ${JSON.stringify(e)}`), e[0] !== r && (e = e.reverse())
          let i = _9(e, 25),
            a = t ? 10 : 5,
            s = Math.atan2(e[0].y - i.y, e[0].x - i.x),
            l = { x: 0, y: 0 }
          return (l.x = Math.sin(s) * a + (e[0].x + i.x) / 2), (l.y = -Math.cos(s) * a + (e[0].y + i.y) / 2), l
        }, 'calcCardinalityPosition'))
      o(j7e, 'calcTerminalLabelPosition')
      o(D9, 'getStylesFromArray')
      ;(Yj = 0), (L9 = o(() => (Yj++, 'id-' + Math.random().toString(36).substr(2, 12) + '-' + Yj), 'generateId'))
      o(K7e, 'makeRandomHex')
      ;(R9 = o(t => K7e(t.length), 'random')),
        (Q7e = o(function () {
          return { x: 0, y: 0, fill: void 0, anchor: 'start', style: '#666', width: 100, height: 100, textMargin: 0, rx: 0, ry: 0, valign: void 0, text: '' }
        }, 'getTextObj')),
        (Z7e = o(function (t, e) {
          let r = e.text.replace(Ze.lineBreakRegex, ' '),
            [, n] = zo(e.fontSize),
            i = t.append('text')
          i.attr('x', e.x),
            i.attr('y', e.y),
            i.style('text-anchor', e.anchor),
            i.style('font-family', e.fontFamily),
            i.style('font-size', n),
            i.style('font-weight', e.fontWeight),
            i.attr('fill', e.fill),
            e.class !== void 0 && i.attr('class', e.class)
          let a = i.append('tspan')
          return a.attr('x', e.x + e.textMargin * 2), a.attr('fill', e.fill), a.text(r), i
        }, 'drawSimpleText')),
        (N9 = rm(
          (t, e, r) => {
            if (!t || ((r = Object.assign({ fontSize: 12, fontWeight: 400, fontFamily: 'Arial', joinWith: '<br/>' }, r)), Ze.lineBreakRegex.test(t))) return t
            let n = t.split(' ').filter(Boolean),
              i = [],
              a = ''
            return (
              n.forEach((s, l) => {
                let u = ra(`${s} `, r),
                  h = ra(a, r)
                if (u > e) {
                  let { hyphenatedStrings: p, remainingWord: m } = J7e(s, e, '-', r)
                  i.push(a, ...p), (a = m)
                } else h + u >= e ? (i.push(a), (a = s)) : (a = [a, s].filter(Boolean).join(' '))
                l + 1 === n.length && i.push(a)
              }),
              i.filter(s => s !== '').join(r.joinWith)
            )
          },
          (t, e, r) => `${t}${e}${r.fontSize}${r.fontWeight}${r.fontFamily}${r.joinWith}`
        )),
        (J7e = rm(
          (t, e, r = '-', n) => {
            n = Object.assign({ fontSize: 12, fontWeight: 400, fontFamily: 'Arial', margin: 0 }, n)
            let i = [...t],
              a = [],
              s = ''
            return (
              i.forEach((l, u) => {
                let h = `${s}${l}`
                if (ra(h, n) >= e) {
                  let d = u + 1,
                    p = i.length === d,
                    m = `${h}${r}`
                  a.push(p ? h : m), (s = '')
                } else s = h
              }),
              { hyphenatedStrings: a, remainingWord: s }
            )
          },
          (t, e, r = '-', n) => `${t}${e}${r}${n.fontSize}${n.fontWeight}${n.fontFamily}`
        ))
      o(ST, 'calculateTextHeight')
      o(ra, 'calculateTextWidth')
      ;(M9 = rm(
        (t, e) => {
          let { fontSize: r = 12, fontFamily: n = 'Arial', fontWeight: i = 400 } = e
          if (!t) return { width: 0, height: 0 }
          let [, a] = zo(r),
            s = ['sans-serif', n],
            l = t.split(Ze.lineBreakRegex),
            u = [],
            h = Ge('body')
          if (!h.remove) return { width: 0, height: 0, lineHeight: 0 }
          let f = h.append('svg')
          for (let p of s) {
            let m = 0,
              g = { width: 0, height: 0, lineHeight: 0 }
            for (let y of l) {
              let v = Q7e()
              v.text = y || C9
              let x = Z7e(f, v).style('font-size', a).style('font-weight', i).style('font-family', p),
                b = (x._groups || x)[0][0].getBBox()
              if (b.width === 0 && b.height === 0) throw new Error('svg element not in render tree')
              ;(g.width = Math.round(Math.max(g.width, b.width))), (m = Math.round(b.height)), (g.height += m), (g.lineHeight = Math.round(Math.max(g.lineHeight, m)))
            }
            u.push(g)
          }
          f.remove()
          let d =
            isNaN(u[1].height) || isNaN(u[1].width) || isNaN(u[1].lineHeight) || (u[0].height > u[1].height && u[0].width > u[1].width && u[0].lineHeight > u[1].lineHeight) ? 0 : 1
          return u[d]
        },
        (t, e) => `${t}${e.fontSize}${e.fontWeight}${e.fontFamily}`
      )),
        (S9 = class {
          constructor(e = !1, r) {
            this.count = 0
            ;(this.count = r ? r.length : 0), (this.next = e ? () => this.count++ : () => Date.now())
          }
          static {
            o(this, 'InitIDGenerator')
          }
        }),
        (eAe = o(function (t) {
          return (
            (ET = ET || document.createElement('div')), (t = escape(t).replace(/%26/g, '&').replace(/%23/g, '#').replace(/%3B/g, ';')), (ET.innerHTML = t), unescape(ET.textContent)
          )
        }, 'entityDecode'))
      o(I9, 'isDetailedError')
      ;(tAe = o((t, e, r, n) => {
        if (!n) return
        let i = t.node()?.getBBox()
        i &&
          t
            .append('text')
            .text(n)
            .attr('text-anchor', 'middle')
            .attr('x', i.x + i.width / 2)
            .attr('y', -r)
            .attr('class', e)
      }, 'insertTitle')),
        (zo = o(t => {
          if (typeof t == 'number') return [t, t + 'px']
          let e = parseInt(t ?? '', 10)
          return Number.isNaN(e) ? [void 0, void 0] : t === String(e) ? [e, t + 'px'] : [e, t]
        }, 'parseFontSize'))
      o($n, 'cleanAndMerge')
      ;(Vt = {
        assignWithDepth: Un,
        wrapLabel: N9,
        calculateTextHeight: ST,
        calculateTextWidth: ra,
        calculateTextDimensions: M9,
        cleanAndMerge: $n,
        detectInit: V7e,
        detectDirective: jj,
        isSubstringInArray: U7e,
        interpolateToCurve: A9,
        calcLabelPosition: Y7e,
        calcCardinalityPosition: X7e,
        calcTerminalLabelPosition: j7e,
        formatUrl: H7e,
        getStylesFromArray: D9,
        generateId: L9,
        random: R9,
        runFunc: W7e,
        entityDecode: eAe,
        insertTitle: tAe,
        parseFontSize: zo,
        InitIDGenerator: S9
      }),
        (Zj = o(function (t) {
          let e = t
          return (
            (e = e.replace(/style.*:\S*#.*;/g, function (r) {
              return r.substring(0, r.length - 1)
            })),
            (e = e.replace(/classDef.*:\S*#.*;/g, function (r) {
              return r.substring(0, r.length - 1)
            })),
            (e = e.replace(/#\w+;/g, function (r) {
              let n = r.substring(1, r.length - 1)
              return /^\+?\d+$/.test(n) ? '\uFB02\xB0\xB0' + n + '\xB6\xDF' : '\uFB02\xB0' + n + '\xB6\xDF'
            })),
            e
          )
        }, 'encodeEntities')),
        (na = o(function (t) {
          return t.replace(/ﬂ°°/g, '&#').replace(/ﬂ°/g, '&').replace(/¶ß/g, ';')
        }, 'decodeEntities')),
        (Wh = o((t, e, { counter: r = 0, prefix: n, suffix: i }, a) => a || `${n ? `${n}_` : ''}${t}_${e}_${r}${i ? `_${i}` : ''}`, 'getEdgeId'))
      o(zn, 'handleUndefinedAttr')
    })
  function Rl(t, e, r, n, i) {
    if (!e[t].width)
      if (r) (e[t].text = N9(e[t].text, i, n)), (e[t].textLines = e[t].text.split(Ze.lineBreakRegex).length), (e[t].width = i), (e[t].height = ST(e[t].text, n))
      else {
        let a = e[t].text.split(Ze.lineBreakRegex)
        e[t].textLines = a.length
        let s = 0
        ;(e[t].height = 0), (e[t].width = 0)
        for (let l of a) (e[t].width = Math.max(ra(l, n), e[t].width)), (s = ST(l, n)), (e[t].height = e[t].height + s)
      }
  }
  function nK(t, e, r, n, i) {
    let a = new DT(i)
    a.data.widthLimit = r.data.widthLimit / Math.min(O9, n.length)
    for (let [s, l] of n.entries()) {
      let u = 0
      ;(l.image = { width: 0, height: 0, Y: 0 }), l.sprite && ((l.image.width = 48), (l.image.height = 48), (l.image.Y = u), (u = l.image.Y + l.image.height))
      let h = l.wrap && Ut.wrap,
        f = CT(Ut)
      if (
        ((f.fontSize = f.fontSize + 2),
        (f.fontWeight = 'bold'),
        Rl('label', l, h, f, a.data.widthLimit),
        (l.label.Y = u + 8),
        (u = l.label.Y + l.label.height),
        l.type && l.type.text !== '')
      ) {
        l.type.text = '[' + l.type.text + ']'
        let g = CT(Ut)
        Rl('type', l, h, g, a.data.widthLimit), (l.type.Y = u + 5), (u = l.type.Y + l.type.height)
      }
      if (l.descr && l.descr.text !== '') {
        let g = CT(Ut)
        ;(g.fontSize = g.fontSize - 2), Rl('descr', l, h, g, a.data.widthLimit), (l.descr.Y = u + 20), (u = l.descr.Y + l.descr.height)
      }
      if (s == 0 || s % O9 === 0) {
        let g = r.data.startx + Ut.diagramMarginX,
          y = r.data.stopy + Ut.diagramMarginY + u
        a.setData(g, g, y, y)
      } else {
        let g = a.data.stopx !== a.data.startx ? a.data.stopx + Ut.diagramMarginX : a.data.startx,
          y = a.data.starty
        a.setData(g, g, y, y)
      }
      a.name = l.alias
      let d = i.db.getC4ShapeArray(l.alias),
        p = i.db.getC4ShapeKeys(l.alias)
      p.length > 0 && rK(a, t, d, p), (e = l.alias)
      let m = i.db.getBoundaries(e)
      m.length > 0 && nK(t, e, a, m, i),
        l.alias !== 'global' && tK(t, l, a),
        (r.data.stopy = Math.max(a.data.stopy + Ut.c4ShapeMargin, r.data.stopy)),
        (r.data.stopx = Math.max(a.data.stopx + Ut.c4ShapeMargin, r.data.stopx)),
        (AT = Math.max(AT, r.data.stopx)),
        (_T = Math.max(_T, r.data.stopy))
    }
  }
  var AT,
    _T,
    eK,
    O9,
    Ut,
    DT,
    P9,
    m2,
    CT,
    rAe,
    tK,
    rK,
    Ms,
    Jj,
    nAe,
    iAe,
    aAe,
    B9,
    iK = N(() => {
      'use strict'
      fr()
      JY()
      yt()
      a7()
      pr()
      LA()
      Gt()
      g0()
      er()
      xi()
      ;(AT = 0), (_T = 0), (eK = 4), (O9 = 2)
      Ry.yy = sv
      ;(Ut = {}),
        (DT = class {
          static {
            o(this, 'Bounds')
          }
          constructor(e) {
            ;(this.name = ''),
              (this.data = {}),
              (this.data.startx = void 0),
              (this.data.stopx = void 0),
              (this.data.starty = void 0),
              (this.data.stopy = void 0),
              (this.data.widthLimit = void 0),
              (this.nextData = {}),
              (this.nextData.startx = void 0),
              (this.nextData.stopx = void 0),
              (this.nextData.starty = void 0),
              (this.nextData.stopy = void 0),
              (this.nextData.cnt = 0),
              P9(e.db.getConfig())
          }
          setData(e, r, n, i) {
            ;(this.nextData.startx = this.data.startx = e),
              (this.nextData.stopx = this.data.stopx = r),
              (this.nextData.starty = this.data.starty = n),
              (this.nextData.stopy = this.data.stopy = i)
          }
          updateVal(e, r, n, i) {
            e[r] === void 0 ? (e[r] = n) : (e[r] = i(n, e[r]))
          }
          insert(e) {
            this.nextData.cnt = this.nextData.cnt + 1
            let r = this.nextData.startx === this.nextData.stopx ? this.nextData.stopx + e.margin : this.nextData.stopx + e.margin * 2,
              n = r + e.width,
              i = this.nextData.starty + e.margin * 2,
              a = i + e.height
            ;(r >= this.data.widthLimit || n >= this.data.widthLimit || this.nextData.cnt > eK) &&
              ((r = this.nextData.startx + e.margin + Ut.nextLinePaddingX),
              (i = this.nextData.stopy + e.margin * 2),
              (this.nextData.stopx = n = r + e.width),
              (this.nextData.starty = this.nextData.stopy),
              (this.nextData.stopy = a = i + e.height),
              (this.nextData.cnt = 1)),
              (e.x = r),
              (e.y = i),
              this.updateVal(this.data, 'startx', r, Math.min),
              this.updateVal(this.data, 'starty', i, Math.min),
              this.updateVal(this.data, 'stopx', n, Math.max),
              this.updateVal(this.data, 'stopy', a, Math.max),
              this.updateVal(this.nextData, 'startx', r, Math.min),
              this.updateVal(this.nextData, 'starty', i, Math.min),
              this.updateVal(this.nextData, 'stopx', n, Math.max),
              this.updateVal(this.nextData, 'stopy', a, Math.max)
          }
          init(e) {
            ;(this.name = ''),
              (this.data = { startx: void 0, stopx: void 0, starty: void 0, stopy: void 0, widthLimit: void 0 }),
              (this.nextData = { startx: void 0, stopx: void 0, starty: void 0, stopy: void 0, cnt: 0 }),
              P9(e.db.getConfig())
          }
          bumpLastMargin(e) {
            ;(this.data.stopx += e), (this.data.stopy += e)
          }
        }),
        (P9 = o(function (t) {
          Un(Ut, t),
            t.fontFamily && (Ut.personFontFamily = Ut.systemFontFamily = Ut.messageFontFamily = t.fontFamily),
            t.fontSize && (Ut.personFontSize = Ut.systemFontSize = Ut.messageFontSize = t.fontSize),
            t.fontWeight && (Ut.personFontWeight = Ut.systemFontWeight = Ut.messageFontWeight = t.fontWeight)
        }, 'setConf')),
        (m2 = o((t, e) => ({ fontFamily: t[e + 'FontFamily'], fontSize: t[e + 'FontSize'], fontWeight: t[e + 'FontWeight'] }), 'c4ShapeFont')),
        (CT = o(t => ({ fontFamily: t.boundaryFontFamily, fontSize: t.boundaryFontSize, fontWeight: t.boundaryFontWeight }), 'boundaryFont')),
        (rAe = o(t => ({ fontFamily: t.messageFontFamily, fontSize: t.messageFontSize, fontWeight: t.messageFontWeight }), 'messageFont'))
      o(Rl, 'calcC4ShapeTextWH')
      ;(tK = o(function (t, e, r) {
        ;(e.x = r.data.startx), (e.y = r.data.starty), (e.width = r.data.stopx - r.data.startx), (e.height = r.data.stopy - r.data.starty), (e.label.y = Ut.c4ShapeMargin - 35)
        let n = e.wrap && Ut.wrap,
          i = CT(Ut)
        ;(i.fontSize = i.fontSize + 2), (i.fontWeight = 'bold')
        let a = ra(e.label.text, i)
        Rl('label', e, n, i, a), _l.drawBoundary(t, e, Ut)
      }, 'drawBoundary')),
        (rK = o(function (t, e, r, n) {
          let i = 0
          for (let a of n) {
            i = 0
            let s = r[a],
              l = m2(Ut, s.typeC4Shape.text)
            switch (
              ((l.fontSize = l.fontSize - 2),
              (s.typeC4Shape.width = ra('\xAB' + s.typeC4Shape.text + '\xBB', l)),
              (s.typeC4Shape.height = l.fontSize + 2),
              (s.typeC4Shape.Y = Ut.c4ShapePadding),
              (i = s.typeC4Shape.Y + s.typeC4Shape.height - 4),
              (s.image = { width: 0, height: 0, Y: 0 }),
              s.typeC4Shape.text)
            ) {
              case 'person':
              case 'external_person':
                ;(s.image.width = 48), (s.image.height = 48), (s.image.Y = i), (i = s.image.Y + s.image.height)
                break
            }
            s.sprite && ((s.image.width = 48), (s.image.height = 48), (s.image.Y = i), (i = s.image.Y + s.image.height))
            let u = s.wrap && Ut.wrap,
              h = Ut.width - Ut.c4ShapePadding * 2,
              f = m2(Ut, s.typeC4Shape.text)
            if (
              ((f.fontSize = f.fontSize + 2), (f.fontWeight = 'bold'), Rl('label', s, u, f, h), (s.label.Y = i + 8), (i = s.label.Y + s.label.height), s.type && s.type.text !== '')
            ) {
              s.type.text = '[' + s.type.text + ']'
              let m = m2(Ut, s.typeC4Shape.text)
              Rl('type', s, u, m, h), (s.type.Y = i + 5), (i = s.type.Y + s.type.height)
            } else if (s.techn && s.techn.text !== '') {
              s.techn.text = '[' + s.techn.text + ']'
              let m = m2(Ut, s.techn.text)
              Rl('techn', s, u, m, h), (s.techn.Y = i + 5), (i = s.techn.Y + s.techn.height)
            }
            let d = i,
              p = s.label.width
            if (s.descr && s.descr.text !== '') {
              let m = m2(Ut, s.typeC4Shape.text)
              Rl('descr', s, u, m, h), (s.descr.Y = i + 20), (i = s.descr.Y + s.descr.height), (p = Math.max(s.label.width, s.descr.width)), (d = i - s.descr.textLines * 5)
            }
            ;(p = p + Ut.c4ShapePadding),
              (s.width = Math.max(s.width || Ut.width, p, Ut.width)),
              (s.height = Math.max(s.height || Ut.height, d, Ut.height)),
              (s.margin = s.margin || Ut.c4ShapeMargin),
              t.insert(s),
              _l.drawC4Shape(e, s, Ut)
          }
          t.bumpLastMargin(Ut.c4ShapeMargin)
        }, 'drawC4ShapeArray')),
        (Ms = class {
          static {
            o(this, 'Point')
          }
          constructor(e, r) {
            ;(this.x = e), (this.y = r)
          }
        }),
        (Jj = o(function (t, e) {
          let r = t.x,
            n = t.y,
            i = e.x,
            a = e.y,
            s = r + t.width / 2,
            l = n + t.height / 2,
            u = Math.abs(r - i),
            h = Math.abs(n - a),
            f = h / u,
            d = t.height / t.width,
            p = null
          return (
            n == a && r < i
              ? (p = new Ms(r + t.width, l))
              : n == a && r > i
                ? (p = new Ms(r, l))
                : r == i && n < a
                  ? (p = new Ms(s, n + t.height))
                  : r == i && n > a && (p = new Ms(s, n)),
            r > i && n < a
              ? d >= f
                ? (p = new Ms(r, l + (f * t.width) / 2))
                : (p = new Ms(s - ((u / h) * t.height) / 2, n + t.height))
              : r < i && n < a
                ? d >= f
                  ? (p = new Ms(r + t.width, l + (f * t.width) / 2))
                  : (p = new Ms(s + ((u / h) * t.height) / 2, n + t.height))
                : r < i && n > a
                  ? d >= f
                    ? (p = new Ms(r + t.width, l - (f * t.width) / 2))
                    : (p = new Ms(s + ((t.height / 2) * u) / h, n))
                  : r > i && n > a && (d >= f ? (p = new Ms(r, l - (t.width / 2) * f)) : (p = new Ms(s - ((t.height / 2) * u) / h, n))),
            p
          )
        }, 'getIntersectPoint')),
        (nAe = o(function (t, e) {
          let r = { x: 0, y: 0 }
          ;(r.x = e.x + e.width / 2), (r.y = e.y + e.height / 2)
          let n = Jj(t, r)
          ;(r.x = t.x + t.width / 2), (r.y = t.y + t.height / 2)
          let i = Jj(e, r)
          return { startPoint: n, endPoint: i }
        }, 'getIntersectPoints')),
        (iAe = o(function (t, e, r, n) {
          let i = 0
          for (let a of e) {
            i = i + 1
            let s = a.wrap && Ut.wrap,
              l = rAe(Ut)
            n.db.getC4Type() === 'C4Dynamic' && (a.label.text = i + ': ' + a.label.text)
            let h = ra(a.label.text, l)
            Rl('label', a, s, l, h),
              a.techn && a.techn.text !== '' && ((h = ra(a.techn.text, l)), Rl('techn', a, s, l, h)),
              a.descr && a.descr.text !== '' && ((h = ra(a.descr.text, l)), Rl('descr', a, s, l, h))
            let f = r(a.from),
              d = r(a.to),
              p = nAe(f, d)
            ;(a.startPoint = p.startPoint), (a.endPoint = p.endPoint)
          }
          _l.drawRels(t, e, Ut)
        }, 'drawRels'))
      o(nK, 'drawInsideBoundary')
      ;(aAe = o(function (t, e, r, n) {
        Ut = me().c4
        let i = me().securityLevel,
          a
        i === 'sandbox' && (a = Ge('#i' + e))
        let s = i === 'sandbox' ? Ge(a.nodes()[0].contentDocument.body) : Ge('body'),
          l = n.db
        n.db.setWrap(Ut.wrap), (eK = l.getC4ShapeInRow()), (O9 = l.getC4BoundaryInRow()), X.debug(`C:${JSON.stringify(Ut, null, 2)}`)
        let u = i === 'sandbox' ? s.select(`[id="${e}"]`) : Ge(`[id="${e}"]`)
        _l.insertComputerIcon(u), _l.insertDatabaseIcon(u), _l.insertClockIcon(u)
        let h = new DT(n)
        h.setData(Ut.diagramMarginX, Ut.diagramMarginX, Ut.diagramMarginY, Ut.diagramMarginY),
          (h.data.widthLimit = screen.availWidth),
          (AT = Ut.diagramMarginX),
          (_T = Ut.diagramMarginY)
        let f = n.db.getTitle(),
          d = n.db.getBoundaries('')
        nK(u, '', h, d, n),
          _l.insertArrowHead(u),
          _l.insertArrowEnd(u),
          _l.insertArrowCrossHead(u),
          _l.insertArrowFilledHead(u),
          iAe(u, n.db.getRels(), n.db.getC4Shape, n),
          (h.data.stopx = AT),
          (h.data.stopy = _T)
        let p = h.data,
          g = p.stopy - p.starty + 2 * Ut.diagramMarginY,
          v = p.stopx - p.startx + 2 * Ut.diagramMarginX
        f &&
          u
            .append('text')
            .text(f)
            .attr('x', (p.stopx - p.startx) / 2 - 4 * Ut.diagramMarginX)
            .attr('y', p.starty + Ut.diagramMarginY),
          fn(u, g, v, Ut.useMaxWidth)
        let x = f ? 60 : 0
        u.attr('viewBox', p.startx - Ut.diagramMarginX + ' -' + (Ut.diagramMarginY + x) + ' ' + v + ' ' + (g + x)), X.debug('models:', p)
      }, 'draw')),
        (B9 = { drawPersonOrSystemArray: rK, drawBoundary: tK, setConf: P9, draw: aAe })
    })
  var sAe,
    aK,
    sK = N(() => {
      'use strict'
      ;(sAe = o(
        t => `.person {
    stroke: ${t.personBorder};
    fill: ${t.personBkg};
  }
`,
        'getStyles'
      )),
        (aK = sAe)
    })
  var oK = {}
  ur(oK, { diagram: () => oAe })
  var oAe,
    lK = N(() => {
      'use strict'
      a7()
      LA()
      iK()
      sK()
      oAe = {
        parser: G$,
        db: sv,
        renderer: B9,
        styles: aK,
        init: o(({ c4: t, wrap: e }) => {
          B9.setConf(t), sv.setWrap(e)
        }, 'init')
      }
    })
  function CK(t) {
    return typeof t > 'u' || t === null
  }
  function hAe(t) {
    return typeof t == 'object' && t !== null
  }
  function fAe(t) {
    return Array.isArray(t) ? t : CK(t) ? [] : [t]
  }
  function dAe(t, e) {
    var r, n, i, a
    if (e) for (a = Object.keys(e), r = 0, n = a.length; r < n; r += 1) (i = a[r]), (t[i] = e[i])
    return t
  }
  function pAe(t, e) {
    var r = '',
      n
    for (n = 0; n < e; n += 1) r += t
    return r
  }
  function mAe(t) {
    return t === 0 && Number.NEGATIVE_INFINITY === 1 / t
  }
  function AK(t, e) {
    var r = '',
      n = t.reason || '(unknown reason)'
    return t.mark
      ? (t.mark.name && (r += 'in "' + t.mark.name + '" '),
        (r += '(' + (t.mark.line + 1) + ':' + (t.mark.column + 1) + ')'),
        !e &&
          t.mark.snippet &&
          (r +=
            `

` + t.mark.snippet),
        n + ' ' + r)
      : n
  }
  function y2(t, e) {
    Error.call(this),
      (this.name = 'YAMLException'),
      (this.reason = t),
      (this.mark = e),
      (this.message = AK(this, !1)),
      Error.captureStackTrace ? Error.captureStackTrace(this, this.constructor) : (this.stack = new Error().stack || '')
  }
  function F9(t, e, r, n, i) {
    var a = '',
      s = '',
      l = Math.floor(i / 2) - 1
    return (
      n - e > l && ((a = ' ... '), (e = n - l + a.length)),
      r - n > l && ((s = ' ...'), (r = n + l - s.length)),
      { str: a + t.slice(e, r).replace(/\t/g, '\u2192') + s, pos: n - e + a.length }
    )
  }
  function $9(t, e) {
    return Gi.repeat(' ', e - t.length) + t
  }
  function wAe(t, e) {
    if (((e = Object.create(e || null)), !t.buffer)) return null
    e.maxLength || (e.maxLength = 79),
      typeof e.indent != 'number' && (e.indent = 1),
      typeof e.linesBefore != 'number' && (e.linesBefore = 3),
      typeof e.linesAfter != 'number' && (e.linesAfter = 2)
    for (var r = /\r?\n|\r|\0/g, n = [0], i = [], a, s = -1; (a = r.exec(t.buffer)); )
      i.push(a.index), n.push(a.index + a[0].length), t.position <= a.index && s < 0 && (s = n.length - 2)
    s < 0 && (s = n.length - 1)
    var l = '',
      u,
      h,
      f = Math.min(t.line + e.linesAfter, i.length).toString().length,
      d = e.maxLength - (e.indent + f + 3)
    for (u = 1; u <= e.linesBefore && !(s - u < 0); u++)
      (h = F9(t.buffer, n[s - u], i[s - u], t.position - (n[s] - n[s - u]), d)),
        (l =
          Gi.repeat(' ', e.indent) +
          $9((t.line - u + 1).toString(), f) +
          ' | ' +
          h.str +
          `
` +
          l)
    for (
      h = F9(t.buffer, n[s], i[s], t.position, d),
        l +=
          Gi.repeat(' ', e.indent) +
          $9((t.line + 1).toString(), f) +
          ' | ' +
          h.str +
          `
`,
        l +=
          Gi.repeat('-', e.indent + f + 3 + h.pos) +
          `^
`,
        u = 1;
      u <= e.linesAfter && !(s + u >= i.length);
      u++
    )
      (h = F9(t.buffer, n[s + u], i[s + u], t.position - (n[s] - n[s + u]), d)),
        (l +=
          Gi.repeat(' ', e.indent) +
          $9((t.line + u + 1).toString(), f) +
          ' | ' +
          h.str +
          `
`)
    return l.replace(/\n$/, '')
  }
  function CAe(t) {
    var e = {}
    return (
      t !== null &&
        Object.keys(t).forEach(function (r) {
          t[r].forEach(function (n) {
            e[String(n)] = r
          })
        }),
      e
    )
  }
  function AAe(t, e) {
    if (
      ((e = e || {}),
      Object.keys(e).forEach(function (r) {
        if (EAe.indexOf(r) === -1) throw new Is('Unknown option "' + r + '" is met in definition of "' + t + '" YAML type.')
      }),
      (this.options = e),
      (this.tag = t),
      (this.kind = e.kind || null),
      (this.resolve =
        e.resolve ||
        function () {
          return !0
        }),
      (this.construct =
        e.construct ||
        function (r) {
          return r
        }),
      (this.instanceOf = e.instanceOf || null),
      (this.predicate = e.predicate || null),
      (this.represent = e.represent || null),
      (this.representName = e.representName || null),
      (this.defaultStyle = e.defaultStyle || null),
      (this.multi = e.multi || !1),
      (this.styleAliases = CAe(e.styleAliases || null)),
      SAe.indexOf(this.kind) === -1)
    )
      throw new Is('Unknown kind "' + this.kind + '" is specified for "' + t + '" YAML type.')
  }
  function hK(t, e) {
    var r = []
    return (
      t[e].forEach(function (n) {
        var i = r.length
        r.forEach(function (a, s) {
          a.tag === n.tag && a.kind === n.kind && a.multi === n.multi && (i = s)
        }),
          (r[i] = n)
      }),
      r
    )
  }
  function _Ae() {
    var t = { scalar: {}, sequence: {}, mapping: {}, fallback: {}, multi: { scalar: [], sequence: [], mapping: [], fallback: [] } },
      e,
      r
    function n(i) {
      i.multi ? (t.multi[i.kind].push(i), t.multi.fallback.push(i)) : (t[i.kind][i.tag] = t.fallback[i.tag] = i)
    }
    for (o(n, 'collectType'), e = 0, r = arguments.length; e < r; e += 1) arguments[e].forEach(n)
    return t
  }
  function G9(t) {
    return this.extend(t)
  }
  function IAe(t) {
    if (t === null) return !0
    var e = t.length
    return (e === 1 && t === '~') || (e === 4 && (t === 'null' || t === 'Null' || t === 'NULL'))
  }
  function OAe() {
    return null
  }
  function PAe(t) {
    return t === null
  }
  function FAe(t) {
    if (t === null) return !1
    var e = t.length
    return (e === 4 && (t === 'true' || t === 'True' || t === 'TRUE')) || (e === 5 && (t === 'false' || t === 'False' || t === 'FALSE'))
  }
  function $Ae(t) {
    return t === 'true' || t === 'True' || t === 'TRUE'
  }
  function zAe(t) {
    return Object.prototype.toString.call(t) === '[object Boolean]'
  }
  function VAe(t) {
    return (48 <= t && t <= 57) || (65 <= t && t <= 70) || (97 <= t && t <= 102)
  }
  function UAe(t) {
    return 48 <= t && t <= 55
  }
  function HAe(t) {
    return 48 <= t && t <= 57
  }
  function WAe(t) {
    if (t === null) return !1
    var e = t.length,
      r = 0,
      n = !1,
      i
    if (!e) return !1
    if (((i = t[r]), (i === '-' || i === '+') && (i = t[++r]), i === '0')) {
      if (r + 1 === e) return !0
      if (((i = t[++r]), i === 'b')) {
        for (r++; r < e; r++)
          if (((i = t[r]), i !== '_')) {
            if (i !== '0' && i !== '1') return !1
            n = !0
          }
        return n && i !== '_'
      }
      if (i === 'x') {
        for (r++; r < e; r++)
          if (((i = t[r]), i !== '_')) {
            if (!VAe(t.charCodeAt(r))) return !1
            n = !0
          }
        return n && i !== '_'
      }
      if (i === 'o') {
        for (r++; r < e; r++)
          if (((i = t[r]), i !== '_')) {
            if (!UAe(t.charCodeAt(r))) return !1
            n = !0
          }
        return n && i !== '_'
      }
    }
    if (i === '_') return !1
    for (; r < e; r++)
      if (((i = t[r]), i !== '_')) {
        if (!HAe(t.charCodeAt(r))) return !1
        n = !0
      }
    return !(!n || i === '_')
  }
  function qAe(t) {
    var e = t,
      r = 1,
      n
    if ((e.indexOf('_') !== -1 && (e = e.replace(/_/g, '')), (n = e[0]), (n === '-' || n === '+') && (n === '-' && (r = -1), (e = e.slice(1)), (n = e[0])), e === '0')) return 0
    if (n === '0') {
      if (e[1] === 'b') return r * parseInt(e.slice(2), 2)
      if (e[1] === 'x') return r * parseInt(e.slice(2), 16)
      if (e[1] === 'o') return r * parseInt(e.slice(2), 8)
    }
    return r * parseInt(e, 10)
  }
  function YAe(t) {
    return Object.prototype.toString.call(t) === '[object Number]' && t % 1 === 0 && !Gi.isNegativeZero(t)
  }
  function KAe(t) {
    return !(t === null || !jAe.test(t) || t[t.length - 1] === '_')
  }
  function QAe(t) {
    var e, r
    return (
      (e = t.replace(/_/g, '').toLowerCase()),
      (r = e[0] === '-' ? -1 : 1),
      '+-'.indexOf(e[0]) >= 0 && (e = e.slice(1)),
      e === '.inf' ? (r === 1 ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY) : e === '.nan' ? NaN : r * parseFloat(e, 10)
    )
  }
  function JAe(t, e) {
    var r
    if (isNaN(t))
      switch (e) {
        case 'lowercase':
          return '.nan'
        case 'uppercase':
          return '.NAN'
        case 'camelcase':
          return '.NaN'
      }
    else if (Number.POSITIVE_INFINITY === t)
      switch (e) {
        case 'lowercase':
          return '.inf'
        case 'uppercase':
          return '.INF'
        case 'camelcase':
          return '.Inf'
      }
    else if (Number.NEGATIVE_INFINITY === t)
      switch (e) {
        case 'lowercase':
          return '-.inf'
        case 'uppercase':
          return '-.INF'
        case 'camelcase':
          return '-.Inf'
      }
    else if (Gi.isNegativeZero(t)) return '-0.0'
    return (r = t.toString(10)), ZAe.test(r) ? r.replace('e', '.e') : r
  }
  function e8e(t) {
    return Object.prototype.toString.call(t) === '[object Number]' && (t % 1 !== 0 || Gi.isNegativeZero(t))
  }
  function n8e(t) {
    return t === null ? !1 : DK.exec(t) !== null || LK.exec(t) !== null
  }
  function i8e(t) {
    var e,
      r,
      n,
      i,
      a,
      s,
      l,
      u = 0,
      h = null,
      f,
      d,
      p
    if (((e = DK.exec(t)), e === null && (e = LK.exec(t)), e === null)) throw new Error('Date resolve error')
    if (((r = +e[1]), (n = +e[2] - 1), (i = +e[3]), !e[4])) return new Date(Date.UTC(r, n, i))
    if (((a = +e[4]), (s = +e[5]), (l = +e[6]), e[7])) {
      for (u = e[7].slice(0, 3); u.length < 3; ) u += '0'
      u = +u
    }
    return (
      e[9] && ((f = +e[10]), (d = +(e[11] || 0)), (h = (f * 60 + d) * 6e4), e[9] === '-' && (h = -h)),
      (p = new Date(Date.UTC(r, n, i, a, s, l, u))),
      h && p.setTime(p.getTime() - h),
      p
    )
  }
  function a8e(t) {
    return t.toISOString()
  }
  function o8e(t) {
    return t === '<<' || t === null
  }
  function c8e(t) {
    if (t === null) return !1
    var e,
      r,
      n = 0,
      i = t.length,
      a = q9
    for (r = 0; r < i; r++)
      if (((e = a.indexOf(t.charAt(r))), !(e > 64))) {
        if (e < 0) return !1
        n += 6
      }
    return n % 8 === 0
  }
  function u8e(t) {
    var e,
      r,
      n = t.replace(/[\r\n=]/g, ''),
      i = n.length,
      a = q9,
      s = 0,
      l = []
    for (e = 0; e < i; e++) e % 4 === 0 && e && (l.push((s >> 16) & 255), l.push((s >> 8) & 255), l.push(s & 255)), (s = (s << 6) | a.indexOf(n.charAt(e)))
    return (
      (r = (i % 4) * 6),
      r === 0
        ? (l.push((s >> 16) & 255), l.push((s >> 8) & 255), l.push(s & 255))
        : r === 18
          ? (l.push((s >> 10) & 255), l.push((s >> 2) & 255))
          : r === 12 && l.push((s >> 4) & 255),
      new Uint8Array(l)
    )
  }
  function h8e(t) {
    var e = '',
      r = 0,
      n,
      i,
      a = t.length,
      s = q9
    for (n = 0; n < a; n++) n % 3 === 0 && n && ((e += s[(r >> 18) & 63]), (e += s[(r >> 12) & 63]), (e += s[(r >> 6) & 63]), (e += s[r & 63])), (r = (r << 8) + t[n])
    return (
      (i = a % 3),
      i === 0
        ? ((e += s[(r >> 18) & 63]), (e += s[(r >> 12) & 63]), (e += s[(r >> 6) & 63]), (e += s[r & 63]))
        : i === 2
          ? ((e += s[(r >> 10) & 63]), (e += s[(r >> 4) & 63]), (e += s[(r << 2) & 63]), (e += s[64]))
          : i === 1 && ((e += s[(r >> 2) & 63]), (e += s[(r << 4) & 63]), (e += s[64]), (e += s[64])),
      e
    )
  }
  function f8e(t) {
    return Object.prototype.toString.call(t) === '[object Uint8Array]'
  }
  function g8e(t) {
    if (t === null) return !0
    var e = [],
      r,
      n,
      i,
      a,
      s,
      l = t
    for (r = 0, n = l.length; r < n; r += 1) {
      if (((i = l[r]), (s = !1), m8e.call(i) !== '[object Object]')) return !1
      for (a in i)
        if (p8e.call(i, a))
          if (!s) s = !0
          else return !1
      if (!s) return !1
      if (e.indexOf(a) === -1) e.push(a)
      else return !1
    }
    return !0
  }
  function y8e(t) {
    return t !== null ? t : []
  }
  function b8e(t) {
    if (t === null) return !0
    var e,
      r,
      n,
      i,
      a,
      s = t
    for (a = new Array(s.length), e = 0, r = s.length; e < r; e += 1) {
      if (((n = s[e]), x8e.call(n) !== '[object Object]' || ((i = Object.keys(n)), i.length !== 1))) return !1
      a[e] = [i[0], n[i[0]]]
    }
    return !0
  }
  function T8e(t) {
    if (t === null) return []
    var e,
      r,
      n,
      i,
      a,
      s = t
    for (a = new Array(s.length), e = 0, r = s.length; e < r; e += 1) (n = s[e]), (i = Object.keys(n)), (a[e] = [i[0], n[i[0]]])
    return a
  }
  function E8e(t) {
    if (t === null) return !0
    var e,
      r = t
    for (e in r) if (k8e.call(r, e) && r[e] !== null) return !1
    return !0
  }
  function S8e(t) {
    return t !== null ? t : {}
  }
  function dK(t) {
    return Object.prototype.toString.call(t)
  }
  function vc(t) {
    return t === 10 || t === 13
  }
  function Gd(t) {
    return t === 9 || t === 32
  }
  function Os(t) {
    return t === 9 || t === 32 || t === 10 || t === 13
  }
  function ym(t) {
    return t === 44 || t === 91 || t === 93 || t === 123 || t === 125
  }
  function R8e(t) {
    var e
    return 48 <= t && t <= 57 ? t - 48 : ((e = t | 32), 97 <= e && e <= 102 ? e - 97 + 10 : -1)
  }
  function N8e(t) {
    return t === 120 ? 2 : t === 117 ? 4 : t === 85 ? 8 : 0
  }
  function M8e(t) {
    return 48 <= t && t <= 57 ? t - 48 : -1
  }
  function pK(t) {
    return t === 48
      ? '\0'
      : t === 97
        ? '\x07'
        : t === 98
          ? '\b'
          : t === 116 || t === 9
            ? '	'
            : t === 110
              ? `
`
              : t === 118
                ? '\v'
                : t === 102
                  ? '\f'
                  : t === 114
                    ? '\r'
                    : t === 101
                      ? '\x1B'
                      : t === 32
                        ? ' '
                        : t === 34
                          ? '"'
                          : t === 47
                            ? '/'
                            : t === 92
                              ? '\\'
                              : t === 78
                                ? '\x85'
                                : t === 95
                                  ? '\xA0'
                                  : t === 76
                                    ? '\u2028'
                                    : t === 80
                                      ? '\u2029'
                                      : ''
  }
  function I8e(t) {
    return t <= 65535 ? String.fromCharCode(t) : String.fromCharCode(((t - 65536) >> 10) + 55296, ((t - 65536) & 1023) + 56320)
  }
  function O8e(t, e) {
    ;(this.input = t),
      (this.filename = e.filename || null),
      (this.schema = e.schema || RK),
      (this.onWarning = e.onWarning || null),
      (this.legacy = e.legacy || !1),
      (this.json = e.json || !1),
      (this.listener = e.listener || null),
      (this.implicitTypes = this.schema.compiledImplicit),
      (this.typeMap = this.schema.compiledTypeMap),
      (this.length = t.length),
      (this.position = 0),
      (this.line = 0),
      (this.lineStart = 0),
      (this.lineIndent = 0),
      (this.firstTabInLine = -1),
      (this.documents = [])
  }
  function FK(t, e) {
    var r = { name: t.filename, buffer: t.input.slice(0, -1), position: t.position, line: t.line, column: t.position - t.lineStart }
    return (r.snippet = kAe(r)), new Is(e, r)
  }
  function Qt(t, e) {
    throw FK(t, e)
  }
  function NT(t, e) {
    t.onWarning && t.onWarning.call(null, FK(t, e))
  }
  function qh(t, e, r, n) {
    var i, a, s, l
    if (e < r) {
      if (((l = t.input.slice(e, r)), n))
        for (i = 0, a = l.length; i < a; i += 1) (s = l.charCodeAt(i)), s === 9 || (32 <= s && s <= 1114111) || Qt(t, 'expected valid JSON character')
      else _8e.test(l) && Qt(t, 'the stream contains non-printable characters')
      t.result += l
    }
  }
  function gK(t, e, r, n) {
    var i, a, s, l
    for (Gi.isObject(r) || Qt(t, 'cannot merge mappings; the provided source object is unacceptable'), i = Object.keys(r), s = 0, l = i.length; s < l; s += 1)
      (a = i[s]), Yh.call(e, a) || ((e[a] = r[a]), (n[a] = !0))
  }
  function vm(t, e, r, n, i, a, s, l, u) {
    var h, f
    if (Array.isArray(i))
      for (i = Array.prototype.slice.call(i), h = 0, f = i.length; h < f; h += 1)
        Array.isArray(i[h]) && Qt(t, 'nested arrays are not supported inside keys'), typeof i == 'object' && dK(i[h]) === '[object Object]' && (i[h] = '[object Object]')
    if ((typeof i == 'object' && dK(i) === '[object Object]' && (i = '[object Object]'), (i = String(i)), e === null && (e = {}), n === 'tag:yaml.org,2002:merge'))
      if (Array.isArray(a)) for (h = 0, f = a.length; h < f; h += 1) gK(t, e, a[h], r)
      else gK(t, e, a, r)
    else
      !t.json && !Yh.call(r, i) && Yh.call(e, i) && ((t.line = s || t.line), (t.lineStart = l || t.lineStart), (t.position = u || t.position), Qt(t, 'duplicated mapping key')),
        i === '__proto__' ? Object.defineProperty(e, i, { configurable: !0, enumerable: !0, writable: !0, value: a }) : (e[i] = a),
        delete r[i]
    return e
  }
  function Y9(t) {
    var e
    ;(e = t.input.charCodeAt(t.position)),
      e === 10 ? t.position++ : e === 13 ? (t.position++, t.input.charCodeAt(t.position) === 10 && t.position++) : Qt(t, 'a line break is expected'),
      (t.line += 1),
      (t.lineStart = t.position),
      (t.firstTabInLine = -1)
  }
  function _i(t, e, r) {
    for (var n = 0, i = t.input.charCodeAt(t.position); i !== 0; ) {
      for (; Gd(i); ) i === 9 && t.firstTabInLine === -1 && (t.firstTabInLine = t.position), (i = t.input.charCodeAt(++t.position))
      if (e && i === 35)
        do i = t.input.charCodeAt(++t.position)
        while (i !== 10 && i !== 13 && i !== 0)
      if (vc(i)) for (Y9(t), i = t.input.charCodeAt(t.position), n++, t.lineIndent = 0; i === 32; ) t.lineIndent++, (i = t.input.charCodeAt(++t.position))
      else break
    }
    return r !== -1 && n !== 0 && t.lineIndent < r && NT(t, 'deficient indentation'), n
  }
  function OT(t) {
    var e = t.position,
      r
    return (
      (r = t.input.charCodeAt(e)),
      !!((r === 45 || r === 46) && r === t.input.charCodeAt(e + 1) && r === t.input.charCodeAt(e + 2) && ((e += 3), (r = t.input.charCodeAt(e)), r === 0 || Os(r)))
    )
  }
  function X9(t, e) {
    e === 1
      ? (t.result += ' ')
      : e > 1 &&
        (t.result += Gi.repeat(
          `
`,
          e - 1
        ))
  }
  function P8e(t, e, r) {
    var n,
      i,
      a,
      s,
      l,
      u,
      h,
      f,
      d = t.kind,
      p = t.result,
      m
    if (
      ((m = t.input.charCodeAt(t.position)),
      Os(m) ||
        ym(m) ||
        m === 35 ||
        m === 38 ||
        m === 42 ||
        m === 33 ||
        m === 124 ||
        m === 62 ||
        m === 39 ||
        m === 34 ||
        m === 37 ||
        m === 64 ||
        m === 96 ||
        ((m === 63 || m === 45) && ((i = t.input.charCodeAt(t.position + 1)), Os(i) || (r && ym(i)))))
    )
      return !1
    for (t.kind = 'scalar', t.result = '', a = s = t.position, l = !1; m !== 0; ) {
      if (m === 58) {
        if (((i = t.input.charCodeAt(t.position + 1)), Os(i) || (r && ym(i)))) break
      } else if (m === 35) {
        if (((n = t.input.charCodeAt(t.position - 1)), Os(n))) break
      } else {
        if ((t.position === t.lineStart && OT(t)) || (r && ym(m))) break
        if (vc(m))
          if (((u = t.line), (h = t.lineStart), (f = t.lineIndent), _i(t, !1, -1), t.lineIndent >= e)) {
            ;(l = !0), (m = t.input.charCodeAt(t.position))
            continue
          } else {
            ;(t.position = s), (t.line = u), (t.lineStart = h), (t.lineIndent = f)
            break
          }
      }
      l && (qh(t, a, s, !1), X9(t, t.line - u), (a = s = t.position), (l = !1)), Gd(m) || (s = t.position + 1), (m = t.input.charCodeAt(++t.position))
    }
    return qh(t, a, s, !1), t.result ? !0 : ((t.kind = d), (t.result = p), !1)
  }
  function B8e(t, e) {
    var r, n, i
    if (((r = t.input.charCodeAt(t.position)), r !== 39)) return !1
    for (t.kind = 'scalar', t.result = '', t.position++, n = i = t.position; (r = t.input.charCodeAt(t.position)) !== 0; )
      if (r === 39)
        if ((qh(t, n, t.position, !0), (r = t.input.charCodeAt(++t.position)), r === 39)) (n = t.position), t.position++, (i = t.position)
        else return !0
      else
        vc(r)
          ? (qh(t, n, i, !0), X9(t, _i(t, !1, e)), (n = i = t.position))
          : t.position === t.lineStart && OT(t)
            ? Qt(t, 'unexpected end of the document within a single quoted scalar')
            : (t.position++, (i = t.position))
    Qt(t, 'unexpected end of the stream within a single quoted scalar')
  }
  function F8e(t, e) {
    var r, n, i, a, s, l
    if (((l = t.input.charCodeAt(t.position)), l !== 34)) return !1
    for (t.kind = 'scalar', t.result = '', t.position++, r = n = t.position; (l = t.input.charCodeAt(t.position)) !== 0; ) {
      if (l === 34) return qh(t, r, t.position, !0), t.position++, !0
      if (l === 92) {
        if ((qh(t, r, t.position, !0), (l = t.input.charCodeAt(++t.position)), vc(l))) _i(t, !1, e)
        else if (l < 256 && PK[l]) (t.result += BK[l]), t.position++
        else if ((s = N8e(l)) > 0) {
          for (i = s, a = 0; i > 0; i--) (l = t.input.charCodeAt(++t.position)), (s = R8e(l)) >= 0 ? (a = (a << 4) + s) : Qt(t, 'expected hexadecimal character')
          ;(t.result += I8e(a)), t.position++
        } else Qt(t, 'unknown escape sequence')
        r = n = t.position
      } else
        vc(l)
          ? (qh(t, r, n, !0), X9(t, _i(t, !1, e)), (r = n = t.position))
          : t.position === t.lineStart && OT(t)
            ? Qt(t, 'unexpected end of the document within a double quoted scalar')
            : (t.position++, (n = t.position))
    }
    Qt(t, 'unexpected end of the stream within a double quoted scalar')
  }
  function $8e(t, e) {
    var r = !0,
      n,
      i,
      a,
      s = t.tag,
      l,
      u = t.anchor,
      h,
      f,
      d,
      p,
      m,
      g = Object.create(null),
      y,
      v,
      x,
      b
    if (((b = t.input.charCodeAt(t.position)), b === 91)) (f = 93), (m = !1), (l = [])
    else if (b === 123) (f = 125), (m = !0), (l = {})
    else return !1
    for (t.anchor !== null && (t.anchorMap[t.anchor] = l), b = t.input.charCodeAt(++t.position); b !== 0; ) {
      if ((_i(t, !0, e), (b = t.input.charCodeAt(t.position)), b === f)) return t.position++, (t.tag = s), (t.anchor = u), (t.kind = m ? 'mapping' : 'sequence'), (t.result = l), !0
      r ? b === 44 && Qt(t, "expected the node content, but found ','") : Qt(t, 'missed comma between flow collection entries'),
        (v = y = x = null),
        (d = p = !1),
        b === 63 && ((h = t.input.charCodeAt(t.position + 1)), Os(h) && ((d = p = !0), t.position++, _i(t, !0, e))),
        (n = t.line),
        (i = t.lineStart),
        (a = t.position),
        xm(t, e, LT, !1, !0),
        (v = t.tag),
        (y = t.result),
        _i(t, !0, e),
        (b = t.input.charCodeAt(t.position)),
        (p || t.line === n) && b === 58 && ((d = !0), (b = t.input.charCodeAt(++t.position)), _i(t, !0, e), xm(t, e, LT, !1, !0), (x = t.result)),
        m ? vm(t, l, g, v, y, x, n, i, a) : d ? l.push(vm(t, null, g, v, y, x, n, i, a)) : l.push(y),
        _i(t, !0, e),
        (b = t.input.charCodeAt(t.position)),
        b === 44 ? ((r = !0), (b = t.input.charCodeAt(++t.position))) : (r = !1)
    }
    Qt(t, 'unexpected end of the stream within a flow collection')
  }
  function z8e(t, e) {
    var r,
      n,
      i = z9,
      a = !1,
      s = !1,
      l = e,
      u = 0,
      h = !1,
      f,
      d
    if (((d = t.input.charCodeAt(t.position)), d === 124)) n = !1
    else if (d === 62) n = !0
    else return !1
    for (t.kind = 'scalar', t.result = ''; d !== 0; )
      if (((d = t.input.charCodeAt(++t.position)), d === 43 || d === 45)) z9 === i ? (i = d === 43 ? fK : A8e) : Qt(t, 'repeat of a chomping mode identifier')
      else if ((f = M8e(d)) >= 0)
        f === 0
          ? Qt(t, 'bad explicit indentation width of a block scalar; it cannot be less than one')
          : s
            ? Qt(t, 'repeat of an indentation width identifier')
            : ((l = e + f - 1), (s = !0))
      else break
    if (Gd(d)) {
      do d = t.input.charCodeAt(++t.position)
      while (Gd(d))
      if (d === 35)
        do d = t.input.charCodeAt(++t.position)
        while (!vc(d) && d !== 0)
    }
    for (; d !== 0; ) {
      for (Y9(t), t.lineIndent = 0, d = t.input.charCodeAt(t.position); (!s || t.lineIndent < l) && d === 32; ) t.lineIndent++, (d = t.input.charCodeAt(++t.position))
      if ((!s && t.lineIndent > l && (l = t.lineIndent), vc(d))) {
        u++
        continue
      }
      if (t.lineIndent < l) {
        i === fK
          ? (t.result += Gi.repeat(
              `
`,
              a ? 1 + u : u
            ))
          : i === z9 &&
            a &&
            (t.result += `
`)
        break
      }
      for (
        n
          ? Gd(d)
            ? ((h = !0),
              (t.result += Gi.repeat(
                `
`,
                a ? 1 + u : u
              )))
            : h
              ? ((h = !1),
                (t.result += Gi.repeat(
                  `
`,
                  u + 1
                )))
              : u === 0
                ? a && (t.result += ' ')
                : (t.result += Gi.repeat(
                    `
`,
                    u
                  ))
          : (t.result += Gi.repeat(
              `
`,
              a ? 1 + u : u
            )),
          a = !0,
          s = !0,
          u = 0,
          r = t.position;
        !vc(d) && d !== 0;

      )
        d = t.input.charCodeAt(++t.position)
      qh(t, r, t.position, !1)
    }
    return !0
  }
  function yK(t, e) {
    var r,
      n = t.tag,
      i = t.anchor,
      a = [],
      s,
      l = !1,
      u
    if (t.firstTabInLine !== -1) return !1
    for (
      t.anchor !== null && (t.anchorMap[t.anchor] = a), u = t.input.charCodeAt(t.position);
      u !== 0 &&
      (t.firstTabInLine !== -1 && ((t.position = t.firstTabInLine), Qt(t, 'tab characters must not be used in indentation')),
      !(u !== 45 || ((s = t.input.charCodeAt(t.position + 1)), !Os(s))));

    ) {
      if (((l = !0), t.position++, _i(t, !0, -1) && t.lineIndent <= e)) {
        a.push(null), (u = t.input.charCodeAt(t.position))
        continue
      }
      if (((r = t.line), xm(t, e, MK, !1, !0), a.push(t.result), _i(t, !0, -1), (u = t.input.charCodeAt(t.position)), (t.line === r || t.lineIndent > e) && u !== 0))
        Qt(t, 'bad indentation of a sequence entry')
      else if (t.lineIndent < e) break
    }
    return l ? ((t.tag = n), (t.anchor = i), (t.kind = 'sequence'), (t.result = a), !0) : !1
  }
  function G8e(t, e, r) {
    var n,
      i,
      a,
      s,
      l,
      u,
      h = t.tag,
      f = t.anchor,
      d = {},
      p = Object.create(null),
      m = null,
      g = null,
      y = null,
      v = !1,
      x = !1,
      b
    if (t.firstTabInLine !== -1) return !1
    for (t.anchor !== null && (t.anchorMap[t.anchor] = d), b = t.input.charCodeAt(t.position); b !== 0; ) {
      if (
        (!v && t.firstTabInLine !== -1 && ((t.position = t.firstTabInLine), Qt(t, 'tab characters must not be used in indentation')),
        (n = t.input.charCodeAt(t.position + 1)),
        (a = t.line),
        (b === 63 || b === 58) && Os(n))
      )
        b === 63
          ? (v && (vm(t, d, p, m, g, null, s, l, u), (m = g = y = null)), (x = !0), (v = !0), (i = !0))
          : v
            ? ((v = !1), (i = !0))
            : Qt(t, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line'),
          (t.position += 1),
          (b = n)
      else {
        if (((s = t.line), (l = t.lineStart), (u = t.position), !xm(t, r, NK, !1, !0))) break
        if (t.line === a) {
          for (b = t.input.charCodeAt(t.position); Gd(b); ) b = t.input.charCodeAt(++t.position)
          if (b === 58)
            (b = t.input.charCodeAt(++t.position)),
              Os(b) || Qt(t, 'a whitespace character is expected after the key-value separator within a block mapping'),
              v && (vm(t, d, p, m, g, null, s, l, u), (m = g = y = null)),
              (x = !0),
              (v = !1),
              (i = !1),
              (m = t.tag),
              (g = t.result)
          else if (x) Qt(t, 'can not read an implicit mapping pair; a colon is missed')
          else return (t.tag = h), (t.anchor = f), !0
        } else if (x) Qt(t, 'can not read a block mapping entry; a multiline key may not be an implicit key')
        else return (t.tag = h), (t.anchor = f), !0
      }
      if (
        ((t.line === a || t.lineIndent > e) &&
          (v && ((s = t.line), (l = t.lineStart), (u = t.position)),
          xm(t, e, RT, !0, i) && (v ? (g = t.result) : (y = t.result)),
          v || (vm(t, d, p, m, g, y, s, l, u), (m = g = y = null)),
          _i(t, !0, -1),
          (b = t.input.charCodeAt(t.position))),
        (t.line === a || t.lineIndent > e) && b !== 0)
      )
        Qt(t, 'bad indentation of a mapping entry')
      else if (t.lineIndent < e) break
    }
    return v && vm(t, d, p, m, g, null, s, l, u), x && ((t.tag = h), (t.anchor = f), (t.kind = 'mapping'), (t.result = d)), x
  }
  function V8e(t) {
    var e,
      r = !1,
      n = !1,
      i,
      a,
      s
    if (((s = t.input.charCodeAt(t.position)), s !== 33)) return !1
    if (
      (t.tag !== null && Qt(t, 'duplication of a tag property'),
      (s = t.input.charCodeAt(++t.position)),
      s === 60 ? ((r = !0), (s = t.input.charCodeAt(++t.position))) : s === 33 ? ((n = !0), (i = '!!'), (s = t.input.charCodeAt(++t.position))) : (i = '!'),
      (e = t.position),
      r)
    ) {
      do s = t.input.charCodeAt(++t.position)
      while (s !== 0 && s !== 62)
      t.position < t.length ? ((a = t.input.slice(e, t.position)), (s = t.input.charCodeAt(++t.position))) : Qt(t, 'unexpected end of the stream within a verbatim tag')
    } else {
      for (; s !== 0 && !Os(s); )
        s === 33 &&
          (n
            ? Qt(t, 'tag suffix cannot contain exclamation marks')
            : ((i = t.input.slice(e - 1, t.position + 1)), IK.test(i) || Qt(t, 'named tag handle cannot contain such characters'), (n = !0), (e = t.position + 1))),
          (s = t.input.charCodeAt(++t.position))
      ;(a = t.input.slice(e, t.position)), L8e.test(a) && Qt(t, 'tag suffix cannot contain flow indicator characters')
    }
    a && !OK.test(a) && Qt(t, 'tag name cannot contain such characters: ' + a)
    try {
      a = decodeURIComponent(a)
    } catch {
      Qt(t, 'tag name is malformed: ' + a)
    }
    return (
      r
        ? (t.tag = a)
        : Yh.call(t.tagMap, i)
          ? (t.tag = t.tagMap[i] + a)
          : i === '!'
            ? (t.tag = '!' + a)
            : i === '!!'
              ? (t.tag = 'tag:yaml.org,2002:' + a)
              : Qt(t, 'undeclared tag handle "' + i + '"'),
      !0
    )
  }
  function U8e(t) {
    var e, r
    if (((r = t.input.charCodeAt(t.position)), r !== 38)) return !1
    for (t.anchor !== null && Qt(t, 'duplication of an anchor property'), r = t.input.charCodeAt(++t.position), e = t.position; r !== 0 && !Os(r) && !ym(r); )
      r = t.input.charCodeAt(++t.position)
    return t.position === e && Qt(t, 'name of an anchor node must contain at least one character'), (t.anchor = t.input.slice(e, t.position)), !0
  }
  function H8e(t) {
    var e, r, n
    if (((n = t.input.charCodeAt(t.position)), n !== 42)) return !1
    for (n = t.input.charCodeAt(++t.position), e = t.position; n !== 0 && !Os(n) && !ym(n); ) n = t.input.charCodeAt(++t.position)
    return (
      t.position === e && Qt(t, 'name of an alias node must contain at least one character'),
      (r = t.input.slice(e, t.position)),
      Yh.call(t.anchorMap, r) || Qt(t, 'unidentified alias "' + r + '"'),
      (t.result = t.anchorMap[r]),
      _i(t, !0, -1),
      !0
    )
  }
  function xm(t, e, r, n, i) {
    var a,
      s,
      l,
      u = 1,
      h = !1,
      f = !1,
      d,
      p,
      m,
      g,
      y,
      v
    if (
      (t.listener !== null && t.listener('open', t),
      (t.tag = null),
      (t.anchor = null),
      (t.kind = null),
      (t.result = null),
      (a = s = l = RT === r || MK === r),
      n && _i(t, !0, -1) && ((h = !0), t.lineIndent > e ? (u = 1) : t.lineIndent === e ? (u = 0) : t.lineIndent < e && (u = -1)),
      u === 1)
    )
      for (; V8e(t) || U8e(t); ) _i(t, !0, -1) ? ((h = !0), (l = a), t.lineIndent > e ? (u = 1) : t.lineIndent === e ? (u = 0) : t.lineIndent < e && (u = -1)) : (l = !1)
    if (
      (l && (l = h || i),
      (u === 1 || RT === r) &&
        (LT === r || NK === r ? (y = e) : (y = e + 1),
        (v = t.position - t.lineStart),
        u === 1
          ? (l && (yK(t, v) || G8e(t, v, y))) || $8e(t, y)
            ? (f = !0)
            : ((s && z8e(t, y)) || B8e(t, y) || F8e(t, y)
                ? (f = !0)
                : H8e(t)
                  ? ((f = !0), (t.tag !== null || t.anchor !== null) && Qt(t, 'alias node should not have any properties'))
                  : P8e(t, y, LT === r) && ((f = !0), t.tag === null && (t.tag = '?')),
              t.anchor !== null && (t.anchorMap[t.anchor] = t.result))
          : u === 0 && (f = l && yK(t, v))),
      t.tag === null)
    )
      t.anchor !== null && (t.anchorMap[t.anchor] = t.result)
    else if (t.tag === '?') {
      for (
        t.result !== null && t.kind !== 'scalar' && Qt(t, 'unacceptable node kind for !<?> tag; it should be "scalar", not "' + t.kind + '"'), d = 0, p = t.implicitTypes.length;
        d < p;
        d += 1
      )
        if (((g = t.implicitTypes[d]), g.resolve(t.result))) {
          ;(t.result = g.construct(t.result)), (t.tag = g.tag), t.anchor !== null && (t.anchorMap[t.anchor] = t.result)
          break
        }
    } else if (t.tag !== '!') {
      if (Yh.call(t.typeMap[t.kind || 'fallback'], t.tag)) g = t.typeMap[t.kind || 'fallback'][t.tag]
      else
        for (g = null, m = t.typeMap.multi[t.kind || 'fallback'], d = 0, p = m.length; d < p; d += 1)
          if (t.tag.slice(0, m[d].tag.length) === m[d].tag) {
            g = m[d]
            break
          }
      g || Qt(t, 'unknown tag !<' + t.tag + '>'),
        t.result !== null && g.kind !== t.kind && Qt(t, 'unacceptable node kind for !<' + t.tag + '> tag; it should be "' + g.kind + '", not "' + t.kind + '"'),
        g.resolve(t.result, t.tag)
          ? ((t.result = g.construct(t.result, t.tag)), t.anchor !== null && (t.anchorMap[t.anchor] = t.result))
          : Qt(t, 'cannot resolve a node with !<' + t.tag + '> explicit tag')
    }
    return t.listener !== null && t.listener('close', t), t.tag !== null || t.anchor !== null || f
  }
  function W8e(t) {
    var e = t.position,
      r,
      n,
      i,
      a = !1,
      s
    for (
      t.version = null, t.checkLineBreaks = t.legacy, t.tagMap = Object.create(null), t.anchorMap = Object.create(null);
      (s = t.input.charCodeAt(t.position)) !== 0 && (_i(t, !0, -1), (s = t.input.charCodeAt(t.position)), !(t.lineIndent > 0 || s !== 37));

    ) {
      for (a = !0, s = t.input.charCodeAt(++t.position), r = t.position; s !== 0 && !Os(s); ) s = t.input.charCodeAt(++t.position)
      for (n = t.input.slice(r, t.position), i = [], n.length < 1 && Qt(t, 'directive name must not be less than one character in length'); s !== 0; ) {
        for (; Gd(s); ) s = t.input.charCodeAt(++t.position)
        if (s === 35) {
          do s = t.input.charCodeAt(++t.position)
          while (s !== 0 && !vc(s))
          break
        }
        if (vc(s)) break
        for (r = t.position; s !== 0 && !Os(s); ) s = t.input.charCodeAt(++t.position)
        i.push(t.input.slice(r, t.position))
      }
      s !== 0 && Y9(t), Yh.call(mK, n) ? mK[n](t, n, i) : NT(t, 'unknown document directive "' + n + '"')
    }
    if (
      (_i(t, !0, -1),
      t.lineIndent === 0 && t.input.charCodeAt(t.position) === 45 && t.input.charCodeAt(t.position + 1) === 45 && t.input.charCodeAt(t.position + 2) === 45
        ? ((t.position += 3), _i(t, !0, -1))
        : a && Qt(t, 'directives end mark is expected'),
      xm(t, t.lineIndent - 1, RT, !1, !0),
      _i(t, !0, -1),
      t.checkLineBreaks && D8e.test(t.input.slice(e, t.position)) && NT(t, 'non-ASCII line breaks are interpreted as content'),
      t.documents.push(t.result),
      t.position === t.lineStart && OT(t))
    ) {
      t.input.charCodeAt(t.position) === 46 && ((t.position += 3), _i(t, !0, -1))
      return
    }
    if (t.position < t.length - 1) Qt(t, 'end of the stream or a document separator is expected')
    else return
  }
  function $K(t, e) {
    ;(t = String(t)),
      (e = e || {}),
      t.length !== 0 &&
        (t.charCodeAt(t.length - 1) !== 10 &&
          t.charCodeAt(t.length - 1) !== 13 &&
          (t += `
`),
        t.charCodeAt(0) === 65279 && (t = t.slice(1)))
    var r = new O8e(t, e),
      n = t.indexOf('\0')
    for (n !== -1 && ((r.position = n), Qt(r, 'null byte is not allowed in input')), r.input += '\0'; r.input.charCodeAt(r.position) === 32; )
      (r.lineIndent += 1), (r.position += 1)
    for (; r.position < r.length - 1; ) W8e(r)
    return r.documents
  }
  function q8e(t, e, r) {
    e !== null && typeof e == 'object' && typeof r > 'u' && ((r = e), (e = null))
    var n = $K(t, r)
    if (typeof e != 'function') return n
    for (var i = 0, a = n.length; i < a; i += 1) e(n[i])
  }
  function Y8e(t, e) {
    var r = $K(t, e)
    if (r.length !== 0) {
      if (r.length === 1) return r[0]
      throw new Is('expected a single document in the stream, but found more')
    }
  }
  function p_e(t, e) {
    var r, n, i, a, s, l, u
    if (e === null) return {}
    for (r = {}, n = Object.keys(e), i = 0, a = n.length; i < a; i += 1)
      (s = n[i]),
        (l = String(e[s])),
        s.slice(0, 2) === '!!' && (s = 'tag:yaml.org,2002:' + s.slice(2)),
        (u = t.compiledTypeMap.fallback[s]),
        u && VK.call(u.styleAliases, l) && (l = u.styleAliases[l]),
        (r[s] = l)
    return r
  }
  function m_e(t) {
    var e, r, n
    if (((e = t.toString(16).toUpperCase()), t <= 255)) (r = 'x'), (n = 2)
    else if (t <= 65535) (r = 'u'), (n = 4)
    else if (t <= 4294967295) (r = 'U'), (n = 8)
    else throw new Is('code point within a string may not be greater than 0xFFFFFFFF')
    return '\\' + r + Gi.repeat('0', n - e.length) + e
  }
  function y_e(t) {
    ;(this.schema = t.schema || RK),
      (this.indent = Math.max(1, t.indent || 2)),
      (this.noArrayIndent = t.noArrayIndent || !1),
      (this.skipInvalid = t.skipInvalid || !1),
      (this.flowLevel = Gi.isNothing(t.flowLevel) ? -1 : t.flowLevel),
      (this.styleMap = p_e(this.schema, t.styles || null)),
      (this.sortKeys = t.sortKeys || !1),
      (this.lineWidth = t.lineWidth || 80),
      (this.noRefs = t.noRefs || !1),
      (this.noCompatMode = t.noCompatMode || !1),
      (this.condenseFlow = t.condenseFlow || !1),
      (this.quotingType = t.quotingType === '"' ? x2 : g_e),
      (this.forceQuotes = t.forceQuotes || !1),
      (this.replacer = typeof t.replacer == 'function' ? t.replacer : null),
      (this.implicitTypes = this.schema.compiledImplicit),
      (this.explicitTypes = this.schema.compiledExplicit),
      (this.tag = null),
      (this.result = ''),
      (this.duplicates = []),
      (this.usedDuplicates = null)
  }
  function vK(t, e) {
    for (var r = Gi.repeat(' ', e), n = 0, i = -1, a = '', s, l = t.length; n < l; )
      (i = t.indexOf(
        `
`,
        n
      )),
        i === -1 ? ((s = t.slice(n)), (n = l)) : ((s = t.slice(n, i + 1)), (n = i + 1)),
        s.length &&
          s !==
            `
` &&
          (a += r),
        (a += s)
    return a
  }
  function U9(t, e) {
    return (
      `
` + Gi.repeat(' ', t.indent * e)
    )
  }
  function v_e(t, e) {
    var r, n, i
    for (r = 0, n = t.implicitTypes.length; r < n; r += 1) if (((i = t.implicitTypes[r]), i.resolve(e))) return !0
    return !1
  }
  function IT(t) {
    return t === Z8e || t === K8e
  }
  function b2(t) {
    return (32 <= t && t <= 126) || (161 <= t && t <= 55295 && t !== 8232 && t !== 8233) || (57344 <= t && t <= 65533 && t !== j9) || (65536 <= t && t <= 1114111)
  }
  function xK(t) {
    return b2(t) && t !== j9 && t !== Q8e && t !== v2
  }
  function bK(t, e, r) {
    var n = xK(t),
      i = n && !IT(t)
    return ((r ? n : n && t !== UK && t !== HK && t !== WK && t !== qK && t !== YK) && t !== V9 && !(e === MT && !i)) || (xK(e) && !IT(e) && t === V9) || (e === MT && i)
  }
  function x_e(t) {
    return (
      b2(t) &&
      t !== j9 &&
      !IT(t) &&
      t !== a_e &&
      t !== l_e &&
      t !== MT &&
      t !== UK &&
      t !== HK &&
      t !== WK &&
      t !== qK &&
      t !== YK &&
      t !== V9 &&
      t !== r_e &&
      t !== i_e &&
      t !== J8e &&
      t !== h_e &&
      t !== s_e &&
      t !== o_e &&
      t !== n_e &&
      t !== e_e &&
      t !== t_e &&
      t !== c_e &&
      t !== u_e
    )
  }
  function b_e(t) {
    return !IT(t) && t !== MT
  }
  function g2(t, e) {
    var r = t.charCodeAt(e),
      n
    return r >= 55296 && r <= 56319 && e + 1 < t.length && ((n = t.charCodeAt(e + 1)), n >= 56320 && n <= 57343) ? (r - 55296) * 1024 + n - 56320 + 65536 : r
  }
  function XK(t) {
    var e = /^\n* /
    return e.test(t)
  }
  function T_e(t, e, r, n, i, a, s, l) {
    var u,
      h = 0,
      f = null,
      d = !1,
      p = !1,
      m = n !== -1,
      g = -1,
      y = x_e(g2(t, 0)) && b_e(g2(t, t.length - 1))
    if (e || s)
      for (u = 0; u < t.length; h >= 65536 ? (u += 2) : u++) {
        if (((h = g2(t, u)), !b2(h))) return gm
        ;(y = y && bK(h, f, l)), (f = h)
      }
    else {
      for (u = 0; u < t.length; h >= 65536 ? (u += 2) : u++) {
        if (((h = g2(t, u)), h === v2)) (d = !0), m && ((p = p || (u - g - 1 > n && t[g + 1] !== ' ')), (g = u))
        else if (!b2(h)) return gm
        ;(y = y && bK(h, f, l)), (f = h)
      }
      p = p || (m && u - g - 1 > n && t[g + 1] !== ' ')
    }
    return !d && !p ? (y && !s && !i(t) ? jK : a === x2 ? gm : H9) : r > 9 && XK(t) ? gm : s ? (a === x2 ? gm : H9) : p ? QK : KK
  }
  function w_e(t, e, r, n, i) {
    t.dump = (function () {
      if (e.length === 0) return t.quotingType === x2 ? '""' : "''"
      if (!t.noCompatMode && (f_e.indexOf(e) !== -1 || d_e.test(e))) return t.quotingType === x2 ? '"' + e + '"' : "'" + e + "'"
      var a = t.indent * Math.max(1, r),
        s = t.lineWidth === -1 ? -1 : Math.max(Math.min(t.lineWidth, 40), t.lineWidth - a),
        l = n || (t.flowLevel > -1 && r >= t.flowLevel)
      function u(h) {
        return v_e(t, h)
      }
      switch ((o(u, 'testAmbiguity'), T_e(e, l, t.indent, s, u, t.quotingType, t.forceQuotes && !n, i))) {
        case jK:
          return e
        case H9:
          return "'" + e.replace(/'/g, "''") + "'"
        case KK:
          return '|' + TK(e, t.indent) + wK(vK(e, a))
        case QK:
          return '>' + TK(e, t.indent) + wK(vK(k_e(e, s), a))
        case gm:
          return '"' + E_e(e) + '"'
        default:
          throw new Is('impossible error: invalid scalar style')
      }
    })()
  }
  function TK(t, e) {
    var r = XK(t) ? String(e) : '',
      n =
        t[t.length - 1] ===
        `
`,
      i =
        n &&
        (t[t.length - 2] ===
          `
` ||
          t ===
            `
`),
      a = i ? '+' : n ? '' : '-'
    return (
      r +
      a +
      `
`
    )
  }
  function wK(t) {
    return t[t.length - 1] ===
      `
`
      ? t.slice(0, -1)
      : t
  }
  function k_e(t, e) {
    for (
      var r = /(\n+)([^\n]*)/g,
        n = (function () {
          var h = t.indexOf(`
`)
          return (h = h !== -1 ? h : t.length), (r.lastIndex = h), kK(t.slice(0, h), e)
        })(),
        i =
          t[0] ===
            `
` || t[0] === ' ',
        a,
        s;
      (s = r.exec(t));

    ) {
      var l = s[1],
        u = s[2]
      ;(a = u[0] === ' '),
        (n +=
          l +
          (!i && !a && u !== ''
            ? `
`
            : '') +
          kK(u, e)),
        (i = a)
    }
    return n
  }
  function kK(t, e) {
    if (t === '' || t[0] === ' ') return t
    for (var r = / [^ ]/g, n, i = 0, a, s = 0, l = 0, u = ''; (n = r.exec(t)); )
      (l = n.index),
        l - i > e &&
          ((a = s > i ? s : l),
          (u +=
            `
` + t.slice(i, a)),
          (i = a + 1)),
        (s = l)
    return (
      (u += `
`),
      t.length - i > e && s > i
        ? (u +=
            t.slice(i, s) +
            `
` +
            t.slice(s + 1))
        : (u += t.slice(i)),
      u.slice(1)
    )
  }
  function E_e(t) {
    for (var e = '', r = 0, n, i = 0; i < t.length; r >= 65536 ? (i += 2) : i++)
      (r = g2(t, i)), (n = Na[r]), !n && b2(r) ? ((e += t[i]), r >= 65536 && (e += t[i + 1])) : (e += n || m_e(r))
    return e
  }
  function S_e(t, e, r) {
    var n = '',
      i = t.tag,
      a,
      s,
      l
    for (a = 0, s = r.length; a < s; a += 1)
      (l = r[a]),
        t.replacer && (l = t.replacer.call(r, String(a), l)),
        (Ru(t, e, l, !1, !1) || (typeof l > 'u' && Ru(t, e, null, !1, !1))) && (n !== '' && (n += ',' + (t.condenseFlow ? '' : ' ')), (n += t.dump))
    ;(t.tag = i), (t.dump = '[' + n + ']')
  }
  function EK(t, e, r, n) {
    var i = '',
      a = t.tag,
      s,
      l,
      u
    for (s = 0, l = r.length; s < l; s += 1)
      (u = r[s]),
        t.replacer && (u = t.replacer.call(r, String(s), u)),
        (Ru(t, e + 1, u, !0, !0, !1, !0) || (typeof u > 'u' && Ru(t, e + 1, null, !0, !0, !1, !0))) &&
          ((!n || i !== '') && (i += U9(t, e)), t.dump && v2 === t.dump.charCodeAt(0) ? (i += '-') : (i += '- '), (i += t.dump))
    ;(t.tag = a), (t.dump = i || '[]')
  }
  function C_e(t, e, r) {
    var n = '',
      i = t.tag,
      a = Object.keys(r),
      s,
      l,
      u,
      h,
      f
    for (s = 0, l = a.length; s < l; s += 1)
      (f = ''),
        n !== '' && (f += ', '),
        t.condenseFlow && (f += '"'),
        (u = a[s]),
        (h = r[u]),
        t.replacer && (h = t.replacer.call(r, u, h)),
        Ru(t, e, u, !1, !1) &&
          (t.dump.length > 1024 && (f += '? '), (f += t.dump + (t.condenseFlow ? '"' : '') + ':' + (t.condenseFlow ? '' : ' ')), Ru(t, e, h, !1, !1) && ((f += t.dump), (n += f)))
    ;(t.tag = i), (t.dump = '{' + n + '}')
  }
  function A_e(t, e, r, n) {
    var i = '',
      a = t.tag,
      s = Object.keys(r),
      l,
      u,
      h,
      f,
      d,
      p
    if (t.sortKeys === !0) s.sort()
    else if (typeof t.sortKeys == 'function') s.sort(t.sortKeys)
    else if (t.sortKeys) throw new Is('sortKeys must be a boolean or a function')
    for (l = 0, u = s.length; l < u; l += 1)
      (p = ''),
        (!n || i !== '') && (p += U9(t, e)),
        (h = s[l]),
        (f = r[h]),
        t.replacer && (f = t.replacer.call(r, h, f)),
        Ru(t, e + 1, h, !0, !0, !0) &&
          ((d = (t.tag !== null && t.tag !== '?') || (t.dump && t.dump.length > 1024)),
          d && (t.dump && v2 === t.dump.charCodeAt(0) ? (p += '?') : (p += '? ')),
          (p += t.dump),
          d && (p += U9(t, e)),
          Ru(t, e + 1, f, !0, d) && (t.dump && v2 === t.dump.charCodeAt(0) ? (p += ':') : (p += ': '), (p += t.dump), (i += p)))
    ;(t.tag = a), (t.dump = i || '{}')
  }
  function SK(t, e, r) {
    var n, i, a, s, l, u
    for (i = r ? t.explicitTypes : t.implicitTypes, a = 0, s = i.length; a < s; a += 1)
      if (((l = i[a]), (l.instanceOf || l.predicate) && (!l.instanceOf || (typeof e == 'object' && e instanceof l.instanceOf)) && (!l.predicate || l.predicate(e)))) {
        if ((r ? (l.multi && l.representName ? (t.tag = l.representName(e)) : (t.tag = l.tag)) : (t.tag = '?'), l.represent)) {
          if (((u = t.styleMap[l.tag] || l.defaultStyle), GK.call(l.represent) === '[object Function]')) n = l.represent(e, u)
          else if (VK.call(l.represent, u)) n = l.represent[u](e, u)
          else throw new Is('!<' + l.tag + '> tag resolver accepts not "' + u + '" style')
          t.dump = n
        }
        return !0
      }
    return !1
  }
  function Ru(t, e, r, n, i, a, s) {
    ;(t.tag = null), (t.dump = r), SK(t, r, !1) || SK(t, r, !0)
    var l = GK.call(t.dump),
      u = n,
      h
    n && (n = t.flowLevel < 0 || t.flowLevel > e)
    var f = l === '[object Object]' || l === '[object Array]',
      d,
      p
    if ((f && ((d = t.duplicates.indexOf(r)), (p = d !== -1)), ((t.tag !== null && t.tag !== '?') || p || (t.indent !== 2 && e > 0)) && (i = !1), p && t.usedDuplicates[d]))
      t.dump = '*ref_' + d
    else {
      if ((f && p && !t.usedDuplicates[d] && (t.usedDuplicates[d] = !0), l === '[object Object]'))
        n && Object.keys(t.dump).length !== 0 ? (A_e(t, e, t.dump, i), p && (t.dump = '&ref_' + d + t.dump)) : (C_e(t, e, t.dump), p && (t.dump = '&ref_' + d + ' ' + t.dump))
      else if (l === '[object Array]')
        n && t.dump.length !== 0
          ? (t.noArrayIndent && !s && e > 0 ? EK(t, e - 1, t.dump, i) : EK(t, e, t.dump, i), p && (t.dump = '&ref_' + d + t.dump))
          : (S_e(t, e, t.dump), p && (t.dump = '&ref_' + d + ' ' + t.dump))
      else if (l === '[object String]') t.tag !== '?' && w_e(t, t.dump, e, a, u)
      else {
        if (l === '[object Undefined]') return !1
        if (t.skipInvalid) return !1
        throw new Is('unacceptable kind of an object to dump ' + l)
      }
      t.tag !== null &&
        t.tag !== '?' &&
        ((h = encodeURI(t.tag[0] === '!' ? t.tag.slice(1) : t.tag).replace(/!/g, '%21')),
        t.tag[0] === '!' ? (h = '!' + h) : h.slice(0, 18) === 'tag:yaml.org,2002:' ? (h = '!!' + h.slice(18)) : (h = '!<' + h + '>'),
        (t.dump = h + ' ' + t.dump))
    }
    return !0
  }
  function __e(t, e) {
    var r = [],
      n = [],
      i,
      a
    for (W9(t, r, n), i = 0, a = n.length; i < a; i += 1) e.duplicates.push(r[n[i]])
    e.usedDuplicates = new Array(a)
  }
  function W9(t, e, r) {
    var n, i, a
    if (t !== null && typeof t == 'object')
      if (((i = e.indexOf(t)), i !== -1)) r.indexOf(i) === -1 && r.push(i)
      else if ((e.push(t), Array.isArray(t))) for (i = 0, a = t.length; i < a; i += 1) W9(t[i], e, r)
      else for (n = Object.keys(t), i = 0, a = n.length; i < a; i += 1) W9(t[n[i]], e, r)
  }
  function D_e(t, e) {
    e = e || {}
    var r = new y_e(e)
    r.noRefs || __e(t, r)
    var n = t
    return (
      r.replacer && (n = r.replacer.call({ '': n }, '', n)),
      Ru(r, 0, n, !0, !0)
        ? r.dump +
          `
`
        : ''
    )
  }
  function K9(t, e) {
    return function () {
      throw new Error('Function yaml.' + t + ' is removed in js-yaml 4. Use yaml.' + e + ' instead, which is now safe by default.')
    }
  }
  var gAe,
    yAe,
    vAe,
    xAe,
    bAe,
    TAe,
    Gi,
    Is,
    kAe,
    EAe,
    SAe,
    Ra,
    DAe,
    LAe,
    RAe,
    NAe,
    MAe,
    BAe,
    GAe,
    XAe,
    jAe,
    ZAe,
    t8e,
    _K,
    r8e,
    DK,
    LK,
    s8e,
    l8e,
    q9,
    d8e,
    p8e,
    m8e,
    v8e,
    x8e,
    w8e,
    k8e,
    C8e,
    RK,
    Yh,
    LT,
    NK,
    MK,
    RT,
    z9,
    A8e,
    fK,
    _8e,
    D8e,
    L8e,
    IK,
    OK,
    PK,
    BK,
    zd,
    mK,
    X8e,
    j8e,
    zK,
    GK,
    VK,
    j9,
    K8e,
    v2,
    Q8e,
    Z8e,
    J8e,
    e_e,
    V9,
    t_e,
    r_e,
    n_e,
    i_e,
    UK,
    a_e,
    MT,
    s_e,
    o_e,
    l_e,
    c_e,
    HK,
    WK,
    u_e,
    qK,
    h_e,
    YK,
    Na,
    f_e,
    d_e,
    g_e,
    x2,
    jK,
    H9,
    KK,
    QK,
    gm,
    L_e,
    R_e,
    bm,
    Tm,
    qSt,
    YSt,
    XSt,
    jSt,
    KSt,
    PT = N(() => {
      'use strict'
      o(CK, 'isNothing')
      o(hAe, 'isObject')
      o(fAe, 'toArray')
      o(dAe, 'extend')
      o(pAe, 'repeat')
      o(mAe, 'isNegativeZero')
      ;(gAe = CK),
        (yAe = hAe),
        (vAe = fAe),
        (xAe = pAe),
        (bAe = mAe),
        (TAe = dAe),
        (Gi = { isNothing: gAe, isObject: yAe, toArray: vAe, repeat: xAe, isNegativeZero: bAe, extend: TAe })
      o(AK, 'formatError')
      o(y2, 'YAMLException$1')
      y2.prototype = Object.create(Error.prototype)
      y2.prototype.constructor = y2
      y2.prototype.toString = o(function (e) {
        return this.name + ': ' + AK(this, e)
      }, 'toString')
      Is = y2
      o(F9, 'getLine')
      o($9, 'padStart')
      o(wAe, 'makeSnippet')
      ;(kAe = wAe),
        (EAe = ['kind', 'multi', 'resolve', 'construct', 'instanceOf', 'predicate', 'represent', 'representName', 'defaultStyle', 'styleAliases']),
        (SAe = ['scalar', 'sequence', 'mapping'])
      o(CAe, 'compileStyleAliases')
      o(AAe, 'Type$1')
      Ra = AAe
      o(hK, 'compileList')
      o(_Ae, 'compileMap')
      o(G9, 'Schema$1')
      G9.prototype.extend = o(function (e) {
        var r = [],
          n = []
        if (e instanceof Ra) n.push(e)
        else if (Array.isArray(e)) n = n.concat(e)
        else if (e && (Array.isArray(e.implicit) || Array.isArray(e.explicit))) e.implicit && (r = r.concat(e.implicit)), e.explicit && (n = n.concat(e.explicit))
        else throw new Is('Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })')
        r.forEach(function (a) {
          if (!(a instanceof Ra)) throw new Is('Specified list of YAML types (or a single Type object) contains a non-Type object.')
          if (a.loadKind && a.loadKind !== 'scalar') throw new Is('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.')
          if (a.multi) throw new Is('There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.')
        }),
          n.forEach(function (a) {
            if (!(a instanceof Ra)) throw new Is('Specified list of YAML types (or a single Type object) contains a non-Type object.')
          })
        var i = Object.create(G9.prototype)
        return (
          (i.implicit = (this.implicit || []).concat(r)),
          (i.explicit = (this.explicit || []).concat(n)),
          (i.compiledImplicit = hK(i, 'implicit')),
          (i.compiledExplicit = hK(i, 'explicit')),
          (i.compiledTypeMap = _Ae(i.compiledImplicit, i.compiledExplicit)),
          i
        )
      }, 'extend')
      ;(DAe = G9),
        (LAe = new Ra('tag:yaml.org,2002:str', {
          kind: 'scalar',
          construct: o(function (t) {
            return t !== null ? t : ''
          }, 'construct')
        })),
        (RAe = new Ra('tag:yaml.org,2002:seq', {
          kind: 'sequence',
          construct: o(function (t) {
            return t !== null ? t : []
          }, 'construct')
        })),
        (NAe = new Ra('tag:yaml.org,2002:map', {
          kind: 'mapping',
          construct: o(function (t) {
            return t !== null ? t : {}
          }, 'construct')
        })),
        (MAe = new DAe({ explicit: [LAe, RAe, NAe] }))
      o(IAe, 'resolveYamlNull')
      o(OAe, 'constructYamlNull')
      o(PAe, 'isNull')
      BAe = new Ra('tag:yaml.org,2002:null', {
        kind: 'scalar',
        resolve: IAe,
        construct: OAe,
        predicate: PAe,
        represent: {
          canonical: o(function () {
            return '~'
          }, 'canonical'),
          lowercase: o(function () {
            return 'null'
          }, 'lowercase'),
          uppercase: o(function () {
            return 'NULL'
          }, 'uppercase'),
          camelcase: o(function () {
            return 'Null'
          }, 'camelcase'),
          empty: o(function () {
            return ''
          }, 'empty')
        },
        defaultStyle: 'lowercase'
      })
      o(FAe, 'resolveYamlBoolean')
      o($Ae, 'constructYamlBoolean')
      o(zAe, 'isBoolean')
      GAe = new Ra('tag:yaml.org,2002:bool', {
        kind: 'scalar',
        resolve: FAe,
        construct: $Ae,
        predicate: zAe,
        represent: {
          lowercase: o(function (t) {
            return t ? 'true' : 'false'
          }, 'lowercase'),
          uppercase: o(function (t) {
            return t ? 'TRUE' : 'FALSE'
          }, 'uppercase'),
          camelcase: o(function (t) {
            return t ? 'True' : 'False'
          }, 'camelcase')
        },
        defaultStyle: 'lowercase'
      })
      o(VAe, 'isHexCode')
      o(UAe, 'isOctCode')
      o(HAe, 'isDecCode')
      o(WAe, 'resolveYamlInteger')
      o(qAe, 'constructYamlInteger')
      o(YAe, 'isInteger')
      ;(XAe = new Ra('tag:yaml.org,2002:int', {
        kind: 'scalar',
        resolve: WAe,
        construct: qAe,
        predicate: YAe,
        represent: {
          binary: o(function (t) {
            return t >= 0 ? '0b' + t.toString(2) : '-0b' + t.toString(2).slice(1)
          }, 'binary'),
          octal: o(function (t) {
            return t >= 0 ? '0o' + t.toString(8) : '-0o' + t.toString(8).slice(1)
          }, 'octal'),
          decimal: o(function (t) {
            return t.toString(10)
          }, 'decimal'),
          hexadecimal: o(function (t) {
            return t >= 0 ? '0x' + t.toString(16).toUpperCase() : '-0x' + t.toString(16).toUpperCase().slice(1)
          }, 'hexadecimal')
        },
        defaultStyle: 'decimal',
        styleAliases: { binary: [2, 'bin'], octal: [8, 'oct'], decimal: [10, 'dec'], hexadecimal: [16, 'hex'] }
      })),
        (jAe = new RegExp('^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$'))
      o(KAe, 'resolveYamlFloat')
      o(QAe, 'constructYamlFloat')
      ZAe = /^[-+]?[0-9]+e/
      o(JAe, 'representYamlFloat')
      o(e8e, 'isFloat')
      ;(t8e = new Ra('tag:yaml.org,2002:float', { kind: 'scalar', resolve: KAe, construct: QAe, predicate: e8e, represent: JAe, defaultStyle: 'lowercase' })),
        (_K = MAe.extend({ implicit: [BAe, GAe, XAe, t8e] })),
        (r8e = _K),
        (DK = new RegExp('^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$')),
        (LK = new RegExp(
          '^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$'
        ))
      o(n8e, 'resolveYamlTimestamp')
      o(i8e, 'constructYamlTimestamp')
      o(a8e, 'representYamlTimestamp')
      s8e = new Ra('tag:yaml.org,2002:timestamp', { kind: 'scalar', resolve: n8e, construct: i8e, instanceOf: Date, represent: a8e })
      o(o8e, 'resolveYamlMerge')
      ;(l8e = new Ra('tag:yaml.org,2002:merge', { kind: 'scalar', resolve: o8e })),
        (q9 = `ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=
\r`)
      o(c8e, 'resolveYamlBinary')
      o(u8e, 'constructYamlBinary')
      o(h8e, 'representYamlBinary')
      o(f8e, 'isBinary')
      ;(d8e = new Ra('tag:yaml.org,2002:binary', { kind: 'scalar', resolve: c8e, construct: u8e, predicate: f8e, represent: h8e })),
        (p8e = Object.prototype.hasOwnProperty),
        (m8e = Object.prototype.toString)
      o(g8e, 'resolveYamlOmap')
      o(y8e, 'constructYamlOmap')
      ;(v8e = new Ra('tag:yaml.org,2002:omap', { kind: 'sequence', resolve: g8e, construct: y8e })), (x8e = Object.prototype.toString)
      o(b8e, 'resolveYamlPairs')
      o(T8e, 'constructYamlPairs')
      ;(w8e = new Ra('tag:yaml.org,2002:pairs', { kind: 'sequence', resolve: b8e, construct: T8e })), (k8e = Object.prototype.hasOwnProperty)
      o(E8e, 'resolveYamlSet')
      o(S8e, 'constructYamlSet')
      ;(C8e = new Ra('tag:yaml.org,2002:set', { kind: 'mapping', resolve: E8e, construct: S8e })),
        (RK = r8e.extend({ implicit: [s8e, l8e], explicit: [d8e, v8e, w8e, C8e] })),
        (Yh = Object.prototype.hasOwnProperty),
        (LT = 1),
        (NK = 2),
        (MK = 3),
        (RT = 4),
        (z9 = 1),
        (A8e = 2),
        (fK = 3),
        (_8e = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/),
        (D8e = /[\x85\u2028\u2029]/),
        (L8e = /[,\[\]\{\}]/),
        (IK = /^(?:!|!!|![a-z\-]+!)$/i),
        (OK = /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i)
      o(dK, '_class')
      o(vc, 'is_EOL')
      o(Gd, 'is_WHITE_SPACE')
      o(Os, 'is_WS_OR_EOL')
      o(ym, 'is_FLOW_INDICATOR')
      o(R8e, 'fromHexCode')
      o(N8e, 'escapedHexLen')
      o(M8e, 'fromDecimalCode')
      o(pK, 'simpleEscapeSequence')
      o(I8e, 'charFromCodepoint')
      ;(PK = new Array(256)), (BK = new Array(256))
      for (zd = 0; zd < 256; zd++) (PK[zd] = pK(zd) ? 1 : 0), (BK[zd] = pK(zd))
      o(O8e, 'State$1')
      o(FK, 'generateError')
      o(Qt, 'throwError')
      o(NT, 'throwWarning')
      mK = {
        YAML: o(function (e, r, n) {
          var i, a, s
          e.version !== null && Qt(e, 'duplication of %YAML directive'),
            n.length !== 1 && Qt(e, 'YAML directive accepts exactly one argument'),
            (i = /^([0-9]+)\.([0-9]+)$/.exec(n[0])),
            i === null && Qt(e, 'ill-formed argument of the YAML directive'),
            (a = parseInt(i[1], 10)),
            (s = parseInt(i[2], 10)),
            a !== 1 && Qt(e, 'unacceptable YAML version of the document'),
            (e.version = n[0]),
            (e.checkLineBreaks = s < 2),
            s !== 1 && s !== 2 && NT(e, 'unsupported YAML version of the document')
        }, 'handleYamlDirective'),
        TAG: o(function (e, r, n) {
          var i, a
          n.length !== 2 && Qt(e, 'TAG directive accepts exactly two arguments'),
            (i = n[0]),
            (a = n[1]),
            IK.test(i) || Qt(e, 'ill-formed tag handle (first argument) of the TAG directive'),
            Yh.call(e.tagMap, i) && Qt(e, 'there is a previously declared suffix for "' + i + '" tag handle'),
            OK.test(a) || Qt(e, 'ill-formed tag prefix (second argument) of the TAG directive')
          try {
            a = decodeURIComponent(a)
          } catch {
            Qt(e, 'tag prefix is malformed: ' + a)
          }
          e.tagMap[i] = a
        }, 'handleTagDirective')
      }
      o(qh, 'captureSegment')
      o(gK, 'mergeMappings')
      o(vm, 'storeMappingPair')
      o(Y9, 'readLineBreak')
      o(_i, 'skipSeparationSpace')
      o(OT, 'testDocumentSeparator')
      o(X9, 'writeFoldedLines')
      o(P8e, 'readPlainScalar')
      o(B8e, 'readSingleQuotedScalar')
      o(F8e, 'readDoubleQuotedScalar')
      o($8e, 'readFlowCollection')
      o(z8e, 'readBlockScalar')
      o(yK, 'readBlockSequence')
      o(G8e, 'readBlockMapping')
      o(V8e, 'readTagProperty')
      o(U8e, 'readAnchorProperty')
      o(H8e, 'readAlias')
      o(xm, 'composeNode')
      o(W8e, 'readDocument')
      o($K, 'loadDocuments')
      o(q8e, 'loadAll$1')
      o(Y8e, 'load$1')
      ;(X8e = q8e),
        (j8e = Y8e),
        (zK = { loadAll: X8e, load: j8e }),
        (GK = Object.prototype.toString),
        (VK = Object.prototype.hasOwnProperty),
        (j9 = 65279),
        (K8e = 9),
        (v2 = 10),
        (Q8e = 13),
        (Z8e = 32),
        (J8e = 33),
        (e_e = 34),
        (V9 = 35),
        (t_e = 37),
        (r_e = 38),
        (n_e = 39),
        (i_e = 42),
        (UK = 44),
        (a_e = 45),
        (MT = 58),
        (s_e = 61),
        (o_e = 62),
        (l_e = 63),
        (c_e = 64),
        (HK = 91),
        (WK = 93),
        (u_e = 96),
        (qK = 123),
        (h_e = 124),
        (YK = 125),
        (Na = {})
      Na[0] = '\\0'
      Na[7] = '\\a'
      Na[8] = '\\b'
      Na[9] = '\\t'
      Na[10] = '\\n'
      Na[11] = '\\v'
      Na[12] = '\\f'
      Na[13] = '\\r'
      Na[27] = '\\e'
      Na[34] = '\\"'
      Na[92] = '\\\\'
      Na[133] = '\\N'
      Na[160] = '\\_'
      Na[8232] = '\\L'
      Na[8233] = '\\P'
      ;(f_e = ['y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON', 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF']), (d_e = /^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/)
      o(p_e, 'compileStyleMap')
      o(m_e, 'encodeHex')
      ;(g_e = 1), (x2 = 2)
      o(y_e, 'State')
      o(vK, 'indentString')
      o(U9, 'generateNextLine')
      o(v_e, 'testImplicitResolving')
      o(IT, 'isWhitespace')
      o(b2, 'isPrintable')
      o(xK, 'isNsCharOrWhitespace')
      o(bK, 'isPlainSafe')
      o(x_e, 'isPlainSafeFirst')
      o(b_e, 'isPlainSafeLast')
      o(g2, 'codePointAt')
      o(XK, 'needIndentIndicator')
      ;(jK = 1), (H9 = 2), (KK = 3), (QK = 4), (gm = 5)
      o(T_e, 'chooseScalarStyle')
      o(w_e, 'writeScalar')
      o(TK, 'blockHeader')
      o(wK, 'dropEndingNewline')
      o(k_e, 'foldString')
      o(kK, 'foldLine')
      o(E_e, 'escapeString')
      o(S_e, 'writeFlowSequence')
      o(EK, 'writeBlockSequence')
      o(C_e, 'writeFlowMapping')
      o(A_e, 'writeBlockMapping')
      o(SK, 'detectType')
      o(Ru, 'writeNode')
      o(__e, 'getDuplicateReferences')
      o(W9, 'inspectNode')
      o(D_e, 'dump$1')
      ;(L_e = D_e), (R_e = { dump: L_e })
      o(K9, 'renamed')
      ;(bm = _K), (Tm = zK.load), (qSt = zK.loadAll), (YSt = R_e.dump), (XSt = K9('safeLoad', 'load')), (jSt = K9('safeLoadAll', 'loadAll')), (KSt = K9('safeDump', 'dump'))
    })
  function tL() {
    return { async: !1, breaks: !1, extensions: null, gfm: !0, hooks: null, pedantic: !1, renderer: null, silent: !1, tokenizer: null, walkTokens: null }
  }
  function nQ(t) {
    Ud = t
  }
  function nn(t, e = '') {
    let r = typeof t == 'string' ? t : t.source,
      n = {
        replace: o((i, a) => {
          let s = typeof a == 'string' ? a : a.source
          return (s = s.replace(ss.caret, '$1')), (r = r.replace(i, s)), n
        }, 'replace'),
        getRegex: o(() => new RegExp(r, e), 'getRegex')
      }
    return n
  }
  function xc(t, e) {
    if (e) {
      if (ss.escapeTest.test(t)) return t.replace(ss.escapeReplace, JK)
    } else if (ss.escapeTestNoEncode.test(t)) return t.replace(ss.escapeReplaceNoEncode, JK)
    return t
  }
  function eQ(t) {
    try {
      t = encodeURI(t).replace(ss.percentDecode, '%')
    } catch {
      return null
    }
    return t
  }
  function tQ(t, e) {
    let r = t.replace(ss.findPipe, (a, s, l) => {
        let u = !1,
          h = s
        for (; --h >= 0 && l[h] === '\\'; ) u = !u
        return u ? '|' : ' |'
      }),
      n = r.split(ss.splitPipe),
      i = 0
    if ((n[0].trim() || n.shift(), n.length > 0 && !n.at(-1)?.trim() && n.pop(), e))
      if (n.length > e) n.splice(e)
      else for (; n.length < e; ) n.push('')
    for (; i < n.length; i++) n[i] = n[i].trim().replace(ss.slashPipe, '|')
    return n
  }
  function w2(t, e, r) {
    let n = t.length
    if (n === 0) return ''
    let i = 0
    for (; i < n; ) {
      let a = t.charAt(n - i - 1)
      if (a === e && !r) i++
      else if (a !== e && r) i++
      else break
    }
    return t.slice(0, n - i)
  }
  function hDe(t, e) {
    if (t.indexOf(e[1]) === -1) return -1
    let r = 0
    for (let n = 0; n < t.length; n++)
      if (t[n] === '\\') n++
      else if (t[n] === e[0]) r++
      else if (t[n] === e[1] && (r--, r < 0)) return n
    return r > 0 ? -2 : -1
  }
  function rQ(t, e, r, n, i) {
    let a = e.href,
      s = e.title || null,
      l = t[1].replace(i.other.outputLinkReplace, '$1')
    n.state.inLink = !0
    let u = { type: t[0].charAt(0) === '!' ? 'image' : 'link', raw: r, href: a, title: s, text: l, tokens: n.inlineTokens(l) }
    return (n.state.inLink = !1), u
  }
  function fDe(t, e, r) {
    let n = t.match(r.other.indentCodeCompensation)
    if (n === null) return e
    let i = n[1]
    return e
      .split(
        `
`
      )
      .map(a => {
        let s = a.match(r.other.beginningSpace)
        if (s === null) return a
        let [l] = s
        return l.length >= i.length ? a.slice(i.length) : a
      }).join(`
`)
  }
  function Jr(t, e) {
    return Vd.parse(t, e)
  }
  var Ud,
    k2,
    ss,
    N_e,
    M_e,
    I_e,
    E2,
    O_e,
    rL,
    iQ,
    aQ,
    P_e,
    nL,
    B_e,
    iL,
    F_e,
    $_e,
    VT,
    aL,
    z_e,
    sQ,
    G_e,
    sL,
    ZK,
    V_e,
    U_e,
    H_e,
    W_e,
    oQ,
    q_e,
    UT,
    oL,
    lQ,
    Y_e,
    cQ,
    X_e,
    j_e,
    K_e,
    uQ,
    Q_e,
    Z_e,
    hQ,
    J_e,
    eDe,
    tDe,
    rDe,
    nDe,
    iDe,
    aDe,
    $T,
    sDe,
    fQ,
    dQ,
    oDe,
    lL,
    lDe,
    Z9,
    cDe,
    BT,
    T2,
    uDe,
    JK,
    zT,
    Nu,
    GT,
    cL,
    Mu,
    FT,
    dDe,
    Vd,
    ZSt,
    JSt,
    e6t,
    t6t,
    r6t,
    n6t,
    i6t,
    pQ = N(() => {
      'use strict'
      o(tL, 'M')
      Ud = tL()
      o(nQ, 'H')
      k2 = { exec: o(() => null, 'exec') }
      o(nn, 'h')
      ;(ss = {
        codeRemoveIndent: /^(?: {1,4}| {0,3}\t)/gm,
        outputLinkReplace: /\\([\[\]])/g,
        indentCodeCompensation: /^(\s+)(?:```)/,
        beginningSpace: /^\s+/,
        endingHash: /#$/,
        startingSpaceChar: /^ /,
        endingSpaceChar: / $/,
        nonSpaceChar: /[^ ]/,
        newLineCharGlobal: /\n/g,
        tabCharGlobal: /\t/g,
        multipleSpaceGlobal: /\s+/g,
        blankLine: /^[ \t]*$/,
        doubleBlankLine: /\n[ \t]*\n[ \t]*$/,
        blockquoteStart: /^ {0,3}>/,
        blockquoteSetextReplace: /\n {0,3}((?:=+|-+) *)(?=\n|$)/g,
        blockquoteSetextReplace2: /^ {0,3}>[ \t]?/gm,
        listReplaceTabs: /^\t+/,
        listReplaceNesting: /^ {1,4}(?=( {4})*[^ ])/g,
        listIsTask: /^\[[ xX]\] /,
        listReplaceTask: /^\[[ xX]\] +/,
        anyLine: /\n.*\n/,
        hrefBrackets: /^<(.*)>$/,
        tableDelimiter: /[:|]/,
        tableAlignChars: /^\||\| *$/g,
        tableRowBlankLine: /\n[ \t]*$/,
        tableAlignRight: /^ *-+: *$/,
        tableAlignCenter: /^ *:-+: *$/,
        tableAlignLeft: /^ *:-+ *$/,
        startATag: /^<a /i,
        endATag: /^<\/a>/i,
        startPreScriptTag: /^<(pre|code|kbd|script)(\s|>)/i,
        endPreScriptTag: /^<\/(pre|code|kbd|script)(\s|>)/i,
        startAngleBracket: /^</,
        endAngleBracket: />$/,
        pedanticHrefTitle: /^([^'"]*[^\s])\s+(['"])(.*)\2/,
        unicodeAlphaNumeric: /[\p{L}\p{N}]/u,
        escapeTest: /[&<>"']/,
        escapeReplace: /[&<>"']/g,
        escapeTestNoEncode: /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,
        escapeReplaceNoEncode: /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,
        unescapeTest: /&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi,
        caret: /(^|[^\[])\^/g,
        percentDecode: /%25/g,
        findPipe: /\|/g,
        splitPipe: / \|/,
        slashPipe: /\\\|/g,
        carriageReturn: /\r\n|\r/g,
        spaceLine: /^ +$/gm,
        notSpaceStart: /^\S*/,
        endingNewline: /\n$/,
        listItemRegex: o(t => new RegExp(`^( {0,3}${t})((?:[	 ][^\\n]*)?(?:\\n|$))`), 'listItemRegex'),
        nextBulletRegex: o(t => new RegExp(`^ {0,${Math.min(3, t - 1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ 	][^\\n]*)?(?:\\n|$))`), 'nextBulletRegex'),
        hrRegex: o(t => new RegExp(`^ {0,${Math.min(3, t - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`), 'hrRegex'),
        fencesBeginRegex: o(t => new RegExp(`^ {0,${Math.min(3, t - 1)}}(?:\`\`\`|~~~)`), 'fencesBeginRegex'),
        headingBeginRegex: o(t => new RegExp(`^ {0,${Math.min(3, t - 1)}}#`), 'headingBeginRegex'),
        htmlBeginRegex: o(t => new RegExp(`^ {0,${Math.min(3, t - 1)}}<(?:[a-z].*>|!--)`, 'i'), 'htmlBeginRegex')
      }),
        (N_e = /^(?:[ \t]*(?:\n|$))+/),
        (M_e = /^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/),
        (I_e = /^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/),
        (E2 = /^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/),
        (O_e = /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/),
        (rL = /(?:[*+-]|\d{1,9}[.)])/),
        (iQ = /^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/),
        (aQ = nn(iQ)
          .replace(/bull/g, rL)
          .replace(/blockCode/g, /(?: {4}| {0,3}\t)/)
          .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/)
          .replace(/blockquote/g, / {0,3}>/)
          .replace(/heading/g, / {0,3}#{1,6}/)
          .replace(/html/g, / {0,3}<[^\n>]+>\n/)
          .replace(/\|table/g, '')
          .getRegex()),
        (P_e = nn(iQ)
          .replace(/bull/g, rL)
          .replace(/blockCode/g, /(?: {4}| {0,3}\t)/)
          .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/)
          .replace(/blockquote/g, / {0,3}>/)
          .replace(/heading/g, / {0,3}#{1,6}/)
          .replace(/html/g, / {0,3}<[^\n>]+>\n/)
          .replace(/table/g, / {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/)
          .getRegex()),
        (nL = /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/),
        (B_e = /^[^\n]+/),
        (iL = /(?!\s*\])(?:\\.|[^\[\]\\])+/),
        (F_e = nn(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/)
          .replace('label', iL)
          .replace('title', /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/)
          .getRegex()),
        ($_e = nn(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/)
          .replace(/bull/g, rL)
          .getRegex()),
        (VT =
          'address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul'),
        (aL = /<!--(?:-?>|[\s\S]*?(?:-->|$))/),
        (z_e = nn(
          '^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ 	]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ 	]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ 	]*)+\\n|$))',
          'i'
        )
          .replace('comment', aL)
          .replace('tag', VT)
          .replace('attribute', / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/)
          .getRegex()),
        (sQ = nn(nL)
          .replace('hr', E2)
          .replace('heading', ' {0,3}#{1,6}(?:\\s|$)')
          .replace('|lheading', '')
          .replace('|table', '')
          .replace('blockquote', ' {0,3}>')
          .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n')
          .replace('list', ' {0,3}(?:[*+-]|1[.)]) ')
          .replace('html', '</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)')
          .replace('tag', VT)
          .getRegex()),
        (G_e = nn(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/)
          .replace('paragraph', sQ)
          .getRegex()),
        (sL = { blockquote: G_e, code: M_e, def: F_e, fences: I_e, heading: O_e, hr: E2, html: z_e, lheading: aQ, list: $_e, newline: N_e, paragraph: sQ, table: k2, text: B_e }),
        (ZK = nn('^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)')
          .replace('hr', E2)
          .replace('heading', ' {0,3}#{1,6}(?:\\s|$)')
          .replace('blockquote', ' {0,3}>')
          .replace('code', '(?: {4}| {0,3}	)[^\\n]')
          .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n')
          .replace('list', ' {0,3}(?:[*+-]|1[.)]) ')
          .replace('html', '</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)')
          .replace('tag', VT)
          .getRegex()),
        (V_e = {
          ...sL,
          lheading: P_e,
          table: ZK,
          paragraph: nn(nL)
            .replace('hr', E2)
            .replace('heading', ' {0,3}#{1,6}(?:\\s|$)')
            .replace('|lheading', '')
            .replace('table', ZK)
            .replace('blockquote', ' {0,3}>')
            .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n')
            .replace('list', ' {0,3}(?:[*+-]|1[.)]) ')
            .replace('html', '</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)')
            .replace('tag', VT)
            .getRegex()
        }),
        (U_e = {
          ...sL,
          html: nn(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`)
            .replace('comment', aL)
            .replace(
              /tag/g,
              '(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b'
            )
            .getRegex(),
          def: /^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,
          heading: /^(#{1,6})(.*)(?:\n+|$)/,
          fences: k2,
          lheading: /^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,
          paragraph: nn(nL)
            .replace('hr', E2)
            .replace(
              'heading',
              ` *#{1,6} *[^
]`
            )
            .replace('lheading', aQ)
            .replace('|table', '')
            .replace('blockquote', ' {0,3}>')
            .replace('|fences', '')
            .replace('|list', '')
            .replace('|html', '')
            .replace('|tag', '')
            .getRegex()
        }),
        (H_e = /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/),
        (W_e = /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/),
        (oQ = /^( {2,}|\\)\n(?!\s*$)/),
        (q_e = /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/),
        (UT = /[\p{P}\p{S}]/u),
        (oL = /[\s\p{P}\p{S}]/u),
        (lQ = /[^\s\p{P}\p{S}]/u),
        (Y_e = nn(/^((?![*_])punctSpace)/, 'u')
          .replace(/punctSpace/g, oL)
          .getRegex()),
        (cQ = /(?!~)[\p{P}\p{S}]/u),
        (X_e = /(?!~)[\s\p{P}\p{S}]/u),
        (j_e = /(?:[^\s\p{P}\p{S}]|~)/u),
        (K_e = /\[[^[\]]*?\]\((?:\\.|[^\\\(\)]|\((?:\\.|[^\\\(\)])*\))*\)|`[^`]*?`|<[^<>]*?>/g),
        (uQ = /^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/),
        (Q_e = nn(uQ, 'u').replace(/punct/g, UT).getRegex()),
        (Z_e = nn(uQ, 'u').replace(/punct/g, cQ).getRegex()),
        (hQ =
          '^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)'),
        (J_e = nn(hQ, 'gu')
          .replace(/notPunctSpace/g, lQ)
          .replace(/punctSpace/g, oL)
          .replace(/punct/g, UT)
          .getRegex()),
        (eDe = nn(hQ, 'gu')
          .replace(/notPunctSpace/g, j_e)
          .replace(/punctSpace/g, X_e)
          .replace(/punct/g, cQ)
          .getRegex()),
        (tDe = nn(
          '^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)',
          'gu'
        )
          .replace(/notPunctSpace/g, lQ)
          .replace(/punctSpace/g, oL)
          .replace(/punct/g, UT)
          .getRegex()),
        (rDe = nn(/\\(punct)/, 'gu')
          .replace(/punct/g, UT)
          .getRegex()),
        (nDe = nn(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/)
          .replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/)
          .replace('email', /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/)
          .getRegex()),
        (iDe = nn(aL).replace('(?:-->|$)', '-->').getRegex()),
        (aDe = nn('^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>')
          .replace('comment', iDe)
          .replace('attribute', /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/)
          .getRegex()),
        ($T = /(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/),
        (sDe = nn(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/)
          .replace('label', $T)
          .replace('href', /<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/)
          .replace('title', /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/)
          .getRegex()),
        (fQ = nn(/^!?\[(label)\]\[(ref)\]/)
          .replace('label', $T)
          .replace('ref', iL)
          .getRegex()),
        (dQ = nn(/^!?\[(ref)\](?:\[\])?/)
          .replace('ref', iL)
          .getRegex()),
        (oDe = nn('reflink|nolink(?!\\()', 'g').replace('reflink', fQ).replace('nolink', dQ).getRegex()),
        (lL = {
          _backpedal: k2,
          anyPunctuation: rDe,
          autolink: nDe,
          blockSkip: K_e,
          br: oQ,
          code: W_e,
          del: k2,
          emStrongLDelim: Q_e,
          emStrongRDelimAst: J_e,
          emStrongRDelimUnd: tDe,
          escape: H_e,
          link: sDe,
          nolink: dQ,
          punctuation: Y_e,
          reflink: fQ,
          reflinkSearch: oDe,
          tag: aDe,
          text: q_e,
          url: k2
        }),
        (lDe = {
          ...lL,
          link: nn(/^!?\[(label)\]\((.*?)\)/)
            .replace('label', $T)
            .getRegex(),
          reflink: nn(/^!?\[(label)\]\s*\[([^\]]*)\]/)
            .replace('label', $T)
            .getRegex()
        }),
        (Z9 = {
          ...lL,
          emStrongRDelimAst: eDe,
          emStrongLDelim: Z_e,
          url: nn(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/, 'i')
            .replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/)
            .getRegex(),
          _backpedal: /(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,
          del: /^(~~?)(?=[^\s~])((?:\\.|[^\\])*?(?:\\.|[^\s~\\]))\1(?=[^~]|$)/,
          text: /^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/
        }),
        (cDe = {
          ...Z9,
          br: nn(oQ).replace('{2,}', '*').getRegex(),
          text: nn(Z9.text)
            .replace('\\b_', '\\b_| {2,}\\n')
            .replace(/\{2,\}/g, '*')
            .getRegex()
        }),
        (BT = { normal: sL, gfm: V_e, pedantic: U_e }),
        (T2 = { normal: lL, gfm: Z9, breaks: cDe, pedantic: lDe }),
        (uDe = { '&': '&amp;', '<': '&lt;', '>': '&gt;', '"': '&quot;', "'": '&#39;' }),
        (JK = o(t => uDe[t], 'ge'))
      o(xc, 'R')
      o(eQ, 'J')
      o(tQ, 'V')
      o(w2, 'A')
      o(hDe, 'fe')
      o(rQ, 'de')
      o(fDe, 'Je')
      ;(zT = class {
        static {
          o(this, 'S')
        }
        options
        rules
        lexer
        constructor(t) {
          this.options = t || Ud
        }
        space(t) {
          let e = this.rules.block.newline.exec(t)
          if (e && e[0].length > 0) return { type: 'space', raw: e[0] }
        }
        code(t) {
          let e = this.rules.block.code.exec(t)
          if (e) {
            let r = e[0].replace(this.rules.other.codeRemoveIndent, '')
            return {
              type: 'code',
              raw: e[0],
              codeBlockStyle: 'indented',
              text: this.options.pedantic
                ? r
                : w2(
                    r,
                    `
`
                  )
            }
          }
        }
        fences(t) {
          let e = this.rules.block.fences.exec(t)
          if (e) {
            let r = e[0],
              n = fDe(r, e[3] || '', this.rules)
            return { type: 'code', raw: r, lang: e[2] ? e[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : e[2], text: n }
          }
        }
        heading(t) {
          let e = this.rules.block.heading.exec(t)
          if (e) {
            let r = e[2].trim()
            if (this.rules.other.endingHash.test(r)) {
              let n = w2(r, '#')
              ;(this.options.pedantic || !n || this.rules.other.endingSpaceChar.test(n)) && (r = n.trim())
            }
            return { type: 'heading', raw: e[0], depth: e[1].length, text: r, tokens: this.lexer.inline(r) }
          }
        }
        hr(t) {
          let e = this.rules.block.hr.exec(t)
          if (e)
            return {
              type: 'hr',
              raw: w2(
                e[0],
                `
`
              )
            }
        }
        blockquote(t) {
          let e = this.rules.block.blockquote.exec(t)
          if (e) {
            let r = w2(
                e[0],
                `
`
              ).split(`
`),
              n = '',
              i = '',
              a = []
            for (; r.length > 0; ) {
              let s = !1,
                l = [],
                u
              for (u = 0; u < r.length; u++)
                if (this.rules.other.blockquoteStart.test(r[u])) l.push(r[u]), (s = !0)
                else if (!s) l.push(r[u])
                else break
              r = r.slice(u)
              let h = l.join(`
`),
                f = h
                  .replace(
                    this.rules.other.blockquoteSetextReplace,
                    `
    $1`
                  )
                  .replace(this.rules.other.blockquoteSetextReplace2, '')
              ;(n = n
                ? `${n}
${h}`
                : h),
                (i = i
                  ? `${i}
${f}`
                  : f)
              let d = this.lexer.state.top
              if (((this.lexer.state.top = !0), this.lexer.blockTokens(f, a, !0), (this.lexer.state.top = d), r.length === 0)) break
              let p = a.at(-1)
              if (p?.type === 'code') break
              if (p?.type === 'blockquote') {
                let m = p,
                  g =
                    m.raw +
                    `
` +
                    r.join(`
`),
                  y = this.blockquote(g)
                ;(a[a.length - 1] = y), (n = n.substring(0, n.length - m.raw.length) + y.raw), (i = i.substring(0, i.length - m.text.length) + y.text)
                break
              } else if (p?.type === 'list') {
                let m = p,
                  g =
                    m.raw +
                    `
` +
                    r.join(`
`),
                  y = this.list(g)
                ;(a[a.length - 1] = y),
                  (n = n.substring(0, n.length - p.raw.length) + y.raw),
                  (i = i.substring(0, i.length - m.raw.length) + y.raw),
                  (r = g.substring(a.at(-1).raw.length).split(`
`))
                continue
              }
            }
            return { type: 'blockquote', raw: n, tokens: a, text: i }
          }
        }
        list(t) {
          let e = this.rules.block.list.exec(t)
          if (e) {
            let r = e[1].trim(),
              n = r.length > 1,
              i = { type: 'list', raw: '', ordered: n, start: n ? +r.slice(0, -1) : '', loose: !1, items: [] }
            ;(r = n ? `\\d{1,9}\\${r.slice(-1)}` : `\\${r}`), this.options.pedantic && (r = n ? r : '[*+-]')
            let a = this.rules.other.listItemRegex(r),
              s = !1
            for (; t; ) {
              let u = !1,
                h = '',
                f = ''
              if (!(e = a.exec(t)) || this.rules.block.hr.test(t)) break
              ;(h = e[0]), (t = t.substring(h.length))
              let d = e[2]
                  .split(
                    `
`,
                    1
                  )[0]
                  .replace(this.rules.other.listReplaceTabs, x => ' '.repeat(3 * x.length)),
                p = t.split(
                  `
`,
                  1
                )[0],
                m = !d.trim(),
                g = 0
              if (
                (this.options.pedantic
                  ? ((g = 2), (f = d.trimStart()))
                  : m
                    ? (g = e[1].length + 1)
                    : ((g = e[2].search(this.rules.other.nonSpaceChar)), (g = g > 4 ? 1 : g), (f = d.slice(g)), (g += e[1].length)),
                m &&
                  this.rules.other.blankLine.test(p) &&
                  ((h +=
                    p +
                    `
`),
                  (t = t.substring(p.length + 1)),
                  (u = !0)),
                !u)
              ) {
                let x = this.rules.other.nextBulletRegex(g),
                  b = this.rules.other.hrRegex(g),
                  T = this.rules.other.fencesBeginRegex(g),
                  S = this.rules.other.headingBeginRegex(g),
                  w = this.rules.other.htmlBeginRegex(g)
                for (; t; ) {
                  let E = t.split(
                      `
`,
                      1
                    )[0],
                    _
                  if (
                    ((p = E),
                    this.options.pedantic ? ((p = p.replace(this.rules.other.listReplaceNesting, '  ')), (_ = p)) : (_ = p.replace(this.rules.other.tabCharGlobal, '    ')),
                    T.test(p) || S.test(p) || w.test(p) || x.test(p) || b.test(p))
                  )
                    break
                  if (_.search(this.rules.other.nonSpaceChar) >= g || !p.trim())
                    f +=
                      `
` + _.slice(g)
                  else {
                    if (m || d.replace(this.rules.other.tabCharGlobal, '    ').search(this.rules.other.nonSpaceChar) >= 4 || T.test(d) || S.test(d) || b.test(d)) break
                    f +=
                      `
` + p
                  }
                  !m && !p.trim() && (m = !0),
                    (h +=
                      E +
                      `
`),
                    (t = t.substring(E.length + 1)),
                    (d = _.slice(g))
                }
              }
              i.loose || (s ? (i.loose = !0) : this.rules.other.doubleBlankLine.test(h) && (s = !0))
              let y = null,
                v
              this.options.gfm && ((y = this.rules.other.listIsTask.exec(f)), y && ((v = y[0] !== '[ ] '), (f = f.replace(this.rules.other.listReplaceTask, '')))),
                i.items.push({ type: 'list_item', raw: h, task: !!y, checked: v, loose: !1, text: f, tokens: [] }),
                (i.raw += h)
            }
            let l = i.items.at(-1)
            if (l) (l.raw = l.raw.trimEnd()), (l.text = l.text.trimEnd())
            else return
            i.raw = i.raw.trimEnd()
            for (let u = 0; u < i.items.length; u++)
              if (((this.lexer.state.top = !1), (i.items[u].tokens = this.lexer.blockTokens(i.items[u].text, [])), !i.loose)) {
                let h = i.items[u].tokens.filter(d => d.type === 'space'),
                  f = h.length > 0 && h.some(d => this.rules.other.anyLine.test(d.raw))
                i.loose = f
              }
            if (i.loose) for (let u = 0; u < i.items.length; u++) i.items[u].loose = !0
            return i
          }
        }
        html(t) {
          let e = this.rules.block.html.exec(t)
          if (e) return { type: 'html', block: !0, raw: e[0], pre: e[1] === 'pre' || e[1] === 'script' || e[1] === 'style', text: e[0] }
        }
        def(t) {
          let e = this.rules.block.def.exec(t)
          if (e) {
            let r = e[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal, ' '),
              n = e[2] ? e[2].replace(this.rules.other.hrefBrackets, '$1').replace(this.rules.inline.anyPunctuation, '$1') : '',
              i = e[3] ? e[3].substring(1, e[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : e[3]
            return { type: 'def', tag: r, raw: e[0], href: n, title: i }
          }
        }
        table(t) {
          let e = this.rules.block.table.exec(t)
          if (!e || !this.rules.other.tableDelimiter.test(e[2])) return
          let r = tQ(e[1]),
            n = e[2].replace(this.rules.other.tableAlignChars, '').split('|'),
            i = e[3]?.trim()
              ? e[3].replace(this.rules.other.tableRowBlankLine, '').split(`
`)
              : [],
            a = { type: 'table', raw: e[0], header: [], align: [], rows: [] }
          if (r.length === n.length) {
            for (let s of n)
              this.rules.other.tableAlignRight.test(s)
                ? a.align.push('right')
                : this.rules.other.tableAlignCenter.test(s)
                  ? a.align.push('center')
                  : this.rules.other.tableAlignLeft.test(s)
                    ? a.align.push('left')
                    : a.align.push(null)
            for (let s = 0; s < r.length; s++) a.header.push({ text: r[s], tokens: this.lexer.inline(r[s]), header: !0, align: a.align[s] })
            for (let s of i) a.rows.push(tQ(s, a.header.length).map((l, u) => ({ text: l, tokens: this.lexer.inline(l), header: !1, align: a.align[u] })))
            return a
          }
        }
        lheading(t) {
          let e = this.rules.block.lheading.exec(t)
          if (e) return { type: 'heading', raw: e[0], depth: e[2].charAt(0) === '=' ? 1 : 2, text: e[1], tokens: this.lexer.inline(e[1]) }
        }
        paragraph(t) {
          let e = this.rules.block.paragraph.exec(t)
          if (e) {
            let r =
              e[1].charAt(e[1].length - 1) ===
              `
`
                ? e[1].slice(0, -1)
                : e[1]
            return { type: 'paragraph', raw: e[0], text: r, tokens: this.lexer.inline(r) }
          }
        }
        text(t) {
          let e = this.rules.block.text.exec(t)
          if (e) return { type: 'text', raw: e[0], text: e[0], tokens: this.lexer.inline(e[0]) }
        }
        escape(t) {
          let e = this.rules.inline.escape.exec(t)
          if (e) return { type: 'escape', raw: e[0], text: e[1] }
        }
        tag(t) {
          let e = this.rules.inline.tag.exec(t)
          if (e)
            return (
              !this.lexer.state.inLink && this.rules.other.startATag.test(e[0])
                ? (this.lexer.state.inLink = !0)
                : this.lexer.state.inLink && this.rules.other.endATag.test(e[0]) && (this.lexer.state.inLink = !1),
              !this.lexer.state.inRawBlock && this.rules.other.startPreScriptTag.test(e[0])
                ? (this.lexer.state.inRawBlock = !0)
                : this.lexer.state.inRawBlock && this.rules.other.endPreScriptTag.test(e[0]) && (this.lexer.state.inRawBlock = !1),
              { type: 'html', raw: e[0], inLink: this.lexer.state.inLink, inRawBlock: this.lexer.state.inRawBlock, block: !1, text: e[0] }
            )
        }
        link(t) {
          let e = this.rules.inline.link.exec(t)
          if (e) {
            let r = e[2].trim()
            if (!this.options.pedantic && this.rules.other.startAngleBracket.test(r)) {
              if (!this.rules.other.endAngleBracket.test(r)) return
              let a = w2(r.slice(0, -1), '\\')
              if ((r.length - a.length) % 2 === 0) return
            } else {
              let a = hDe(e[2], '()')
              if (a === -2) return
              if (a > -1) {
                let s = (e[0].indexOf('!') === 0 ? 5 : 4) + e[1].length + a
                ;(e[2] = e[2].substring(0, a)), (e[0] = e[0].substring(0, s).trim()), (e[3] = '')
              }
            }
            let n = e[2],
              i = ''
            if (this.options.pedantic) {
              let a = this.rules.other.pedanticHrefTitle.exec(n)
              a && ((n = a[1]), (i = a[3]))
            } else i = e[3] ? e[3].slice(1, -1) : ''
            return (
              (n = n.trim()),
              this.rules.other.startAngleBracket.test(n) && (this.options.pedantic && !this.rules.other.endAngleBracket.test(r) ? (n = n.slice(1)) : (n = n.slice(1, -1))),
              rQ(e, { href: n && n.replace(this.rules.inline.anyPunctuation, '$1'), title: i && i.replace(this.rules.inline.anyPunctuation, '$1') }, e[0], this.lexer, this.rules)
            )
          }
        }
        reflink(t, e) {
          let r
          if ((r = this.rules.inline.reflink.exec(t)) || (r = this.rules.inline.nolink.exec(t))) {
            let n = (r[2] || r[1]).replace(this.rules.other.multipleSpaceGlobal, ' '),
              i = e[n.toLowerCase()]
            if (!i) {
              let a = r[0].charAt(0)
              return { type: 'text', raw: a, text: a }
            }
            return rQ(r, i, r[0], this.lexer, this.rules)
          }
        }
        emStrong(t, e, r = '') {
          let n = this.rules.inline.emStrongLDelim.exec(t)
          if (!(!n || (n[3] && r.match(this.rules.other.unicodeAlphaNumeric))) && (!(n[1] || n[2]) || !r || this.rules.inline.punctuation.exec(r))) {
            let i = [...n[0]].length - 1,
              a,
              s,
              l = i,
              u = 0,
              h = n[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd
            for (h.lastIndex = 0, e = e.slice(-1 * t.length + i); (n = h.exec(e)) != null; ) {
              if (((a = n[1] || n[2] || n[3] || n[4] || n[5] || n[6]), !a)) continue
              if (((s = [...a].length), n[3] || n[4])) {
                l += s
                continue
              } else if ((n[5] || n[6]) && i % 3 && !((i + s) % 3)) {
                u += s
                continue
              }
              if (((l -= s), l > 0)) continue
              s = Math.min(s, s + l + u)
              let f = [...n[0]][0].length,
                d = t.slice(0, i + n.index + f + s)
              if (Math.min(i, s) % 2) {
                let m = d.slice(1, -1)
                return { type: 'em', raw: d, text: m, tokens: this.lexer.inlineTokens(m) }
              }
              let p = d.slice(2, -2)
              return { type: 'strong', raw: d, text: p, tokens: this.lexer.inlineTokens(p) }
            }
          }
        }
        codespan(t) {
          let e = this.rules.inline.code.exec(t)
          if (e) {
            let r = e[2].replace(this.rules.other.newLineCharGlobal, ' '),
              n = this.rules.other.nonSpaceChar.test(r),
              i = this.rules.other.startingSpaceChar.test(r) && this.rules.other.endingSpaceChar.test(r)
            return n && i && (r = r.substring(1, r.length - 1)), { type: 'codespan', raw: e[0], text: r }
          }
        }
        br(t) {
          let e = this.rules.inline.br.exec(t)
          if (e) return { type: 'br', raw: e[0] }
        }
        del(t) {
          let e = this.rules.inline.del.exec(t)
          if (e) return { type: 'del', raw: e[0], text: e[2], tokens: this.lexer.inlineTokens(e[2]) }
        }
        autolink(t) {
          let e = this.rules.inline.autolink.exec(t)
          if (e) {
            let r, n
            return (
              e[2] === '@' ? ((r = e[1]), (n = 'mailto:' + r)) : ((r = e[1]), (n = r)), { type: 'link', raw: e[0], text: r, href: n, tokens: [{ type: 'text', raw: r, text: r }] }
            )
          }
        }
        url(t) {
          let e
          if ((e = this.rules.inline.url.exec(t))) {
            let r, n
            if (e[2] === '@') (r = e[0]), (n = 'mailto:' + r)
            else {
              let i
              do (i = e[0]), (e[0] = this.rules.inline._backpedal.exec(e[0])?.[0] ?? '')
              while (i !== e[0])
              ;(r = e[0]), e[1] === 'www.' ? (n = 'http://' + e[0]) : (n = e[0])
            }
            return { type: 'link', raw: e[0], text: r, href: n, tokens: [{ type: 'text', raw: r, text: r }] }
          }
        }
        inlineText(t) {
          let e = this.rules.inline.text.exec(t)
          if (e) {
            let r = this.lexer.state.inRawBlock
            return { type: 'text', raw: e[0], text: e[0], escaped: r }
          }
        }
      }),
        (Nu = class J9 {
          static {
            o(this, 'a')
          }
          tokens
          options
          state
          tokenizer
          inlineQueue
          constructor(e) {
            ;(this.tokens = []),
              (this.tokens.links = Object.create(null)),
              (this.options = e || Ud),
              (this.options.tokenizer = this.options.tokenizer || new zT()),
              (this.tokenizer = this.options.tokenizer),
              (this.tokenizer.options = this.options),
              (this.tokenizer.lexer = this),
              (this.inlineQueue = []),
              (this.state = { inLink: !1, inRawBlock: !1, top: !0 })
            let r = { other: ss, block: BT.normal, inline: T2.normal }
            this.options.pedantic
              ? ((r.block = BT.pedantic), (r.inline = T2.pedantic))
              : this.options.gfm && ((r.block = BT.gfm), this.options.breaks ? (r.inline = T2.breaks) : (r.inline = T2.gfm)),
              (this.tokenizer.rules = r)
          }
          static get rules() {
            return { block: BT, inline: T2 }
          }
          static lex(e, r) {
            return new J9(r).lex(e)
          }
          static lexInline(e, r) {
            return new J9(r).inlineTokens(e)
          }
          lex(e) {
            ;(e = e.replace(
              ss.carriageReturn,
              `
`
            )),
              this.blockTokens(e, this.tokens)
            for (let r = 0; r < this.inlineQueue.length; r++) {
              let n = this.inlineQueue[r]
              this.inlineTokens(n.src, n.tokens)
            }
            return (this.inlineQueue = []), this.tokens
          }
          blockTokens(e, r = [], n = !1) {
            for (this.options.pedantic && (e = e.replace(ss.tabCharGlobal, '    ').replace(ss.spaceLine, '')); e; ) {
              let i
              if (this.options.extensions?.block?.some(s => ((i = s.call({ lexer: this }, e, r)) ? ((e = e.substring(i.raw.length)), r.push(i), !0) : !1))) continue
              if ((i = this.tokenizer.space(e))) {
                e = e.substring(i.raw.length)
                let s = r.at(-1)
                i.raw.length === 1 && s !== void 0
                  ? (s.raw += `
`)
                  : r.push(i)
                continue
              }
              if ((i = this.tokenizer.code(e))) {
                e = e.substring(i.raw.length)
                let s = r.at(-1)
                s?.type === 'paragraph' || s?.type === 'text'
                  ? ((s.raw +=
                      `
` + i.raw),
                    (s.text +=
                      `
` + i.text),
                    (this.inlineQueue.at(-1).src = s.text))
                  : r.push(i)
                continue
              }
              if ((i = this.tokenizer.fences(e))) {
                ;(e = e.substring(i.raw.length)), r.push(i)
                continue
              }
              if ((i = this.tokenizer.heading(e))) {
                ;(e = e.substring(i.raw.length)), r.push(i)
                continue
              }
              if ((i = this.tokenizer.hr(e))) {
                ;(e = e.substring(i.raw.length)), r.push(i)
                continue
              }
              if ((i = this.tokenizer.blockquote(e))) {
                ;(e = e.substring(i.raw.length)), r.push(i)
                continue
              }
              if ((i = this.tokenizer.list(e))) {
                ;(e = e.substring(i.raw.length)), r.push(i)
                continue
              }
              if ((i = this.tokenizer.html(e))) {
                ;(e = e.substring(i.raw.length)), r.push(i)
                continue
              }
              if ((i = this.tokenizer.def(e))) {
                e = e.substring(i.raw.length)
                let s = r.at(-1)
                s?.type === 'paragraph' || s?.type === 'text'
                  ? ((s.raw +=
                      `
` + i.raw),
                    (s.text +=
                      `
` + i.raw),
                    (this.inlineQueue.at(-1).src = s.text))
                  : this.tokens.links[i.tag] || (this.tokens.links[i.tag] = { href: i.href, title: i.title })
                continue
              }
              if ((i = this.tokenizer.table(e))) {
                ;(e = e.substring(i.raw.length)), r.push(i)
                continue
              }
              if ((i = this.tokenizer.lheading(e))) {
                ;(e = e.substring(i.raw.length)), r.push(i)
                continue
              }
              let a = e
              if (this.options.extensions?.startBlock) {
                let s = 1 / 0,
                  l = e.slice(1),
                  u
                this.options.extensions.startBlock.forEach(h => {
                  ;(u = h.call({ lexer: this }, l)), typeof u == 'number' && u >= 0 && (s = Math.min(s, u))
                }),
                  s < 1 / 0 && s >= 0 && (a = e.substring(0, s + 1))
              }
              if (this.state.top && (i = this.tokenizer.paragraph(a))) {
                let s = r.at(-1)
                n && s?.type === 'paragraph'
                  ? ((s.raw +=
                      `
` + i.raw),
                    (s.text +=
                      `
` + i.text),
                    this.inlineQueue.pop(),
                    (this.inlineQueue.at(-1).src = s.text))
                  : r.push(i),
                  (n = a.length !== e.length),
                  (e = e.substring(i.raw.length))
                continue
              }
              if ((i = this.tokenizer.text(e))) {
                e = e.substring(i.raw.length)
                let s = r.at(-1)
                s?.type === 'text'
                  ? ((s.raw +=
                      `
` + i.raw),
                    (s.text +=
                      `
` + i.text),
                    this.inlineQueue.pop(),
                    (this.inlineQueue.at(-1).src = s.text))
                  : r.push(i)
                continue
              }
              if (e) {
                let s = 'Infinite loop on byte: ' + e.charCodeAt(0)
                if (this.options.silent) {
                  console.error(s)
                  break
                } else throw new Error(s)
              }
            }
            return (this.state.top = !0), r
          }
          inline(e, r = []) {
            return this.inlineQueue.push({ src: e, tokens: r }), r
          }
          inlineTokens(e, r = []) {
            let n = e,
              i = null
            if (this.tokens.links) {
              let l = Object.keys(this.tokens.links)
              if (l.length > 0)
                for (; (i = this.tokenizer.rules.inline.reflinkSearch.exec(n)) != null; )
                  l.includes(i[0].slice(i[0].lastIndexOf('[') + 1, -1)) &&
                    (n = n.slice(0, i.index) + '[' + 'a'.repeat(i[0].length - 2) + ']' + n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))
            }
            for (; (i = this.tokenizer.rules.inline.anyPunctuation.exec(n)) != null; )
              n = n.slice(0, i.index) + '++' + n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex)
            for (; (i = this.tokenizer.rules.inline.blockSkip.exec(n)) != null; )
              n = n.slice(0, i.index) + '[' + 'a'.repeat(i[0].length - 2) + ']' + n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex)
            let a = !1,
              s = ''
            for (; e; ) {
              a || (s = ''), (a = !1)
              let l
              if (this.options.extensions?.inline?.some(h => ((l = h.call({ lexer: this }, e, r)) ? ((e = e.substring(l.raw.length)), r.push(l), !0) : !1))) continue
              if ((l = this.tokenizer.escape(e))) {
                ;(e = e.substring(l.raw.length)), r.push(l)
                continue
              }
              if ((l = this.tokenizer.tag(e))) {
                ;(e = e.substring(l.raw.length)), r.push(l)
                continue
              }
              if ((l = this.tokenizer.link(e))) {
                ;(e = e.substring(l.raw.length)), r.push(l)
                continue
              }
              if ((l = this.tokenizer.reflink(e, this.tokens.links))) {
                e = e.substring(l.raw.length)
                let h = r.at(-1)
                l.type === 'text' && h?.type === 'text' ? ((h.raw += l.raw), (h.text += l.text)) : r.push(l)
                continue
              }
              if ((l = this.tokenizer.emStrong(e, n, s))) {
                ;(e = e.substring(l.raw.length)), r.push(l)
                continue
              }
              if ((l = this.tokenizer.codespan(e))) {
                ;(e = e.substring(l.raw.length)), r.push(l)
                continue
              }
              if ((l = this.tokenizer.br(e))) {
                ;(e = e.substring(l.raw.length)), r.push(l)
                continue
              }
              if ((l = this.tokenizer.del(e))) {
                ;(e = e.substring(l.raw.length)), r.push(l)
                continue
              }
              if ((l = this.tokenizer.autolink(e))) {
                ;(e = e.substring(l.raw.length)), r.push(l)
                continue
              }
              if (!this.state.inLink && (l = this.tokenizer.url(e))) {
                ;(e = e.substring(l.raw.length)), r.push(l)
                continue
              }
              let u = e
              if (this.options.extensions?.startInline) {
                let h = 1 / 0,
                  f = e.slice(1),
                  d
                this.options.extensions.startInline.forEach(p => {
                  ;(d = p.call({ lexer: this }, f)), typeof d == 'number' && d >= 0 && (h = Math.min(h, d))
                }),
                  h < 1 / 0 && h >= 0 && (u = e.substring(0, h + 1))
              }
              if ((l = this.tokenizer.inlineText(u))) {
                ;(e = e.substring(l.raw.length)), l.raw.slice(-1) !== '_' && (s = l.raw.slice(-1)), (a = !0)
                let h = r.at(-1)
                h?.type === 'text' ? ((h.raw += l.raw), (h.text += l.text)) : r.push(l)
                continue
              }
              if (e) {
                let h = 'Infinite loop on byte: ' + e.charCodeAt(0)
                if (this.options.silent) {
                  console.error(h)
                  break
                } else throw new Error(h)
              }
            }
            return r
          }
        }),
        (GT = class {
          static {
            o(this, '$')
          }
          options
          parser
          constructor(t) {
            this.options = t || Ud
          }
          space(t) {
            return ''
          }
          code({ text: t, lang: e, escaped: r }) {
            let n = (e || '').match(ss.notSpaceStart)?.[0],
              i =
                t.replace(ss.endingNewline, '') +
                `
`
            return n
              ? '<pre><code class="language-' +
                  xc(n) +
                  '">' +
                  (r ? i : xc(i, !0)) +
                  `</code></pre>
`
              : '<pre><code>' +
                  (r ? i : xc(i, !0)) +
                  `</code></pre>
`
          }
          blockquote({ tokens: t }) {
            return `<blockquote>
${this.parser.parse(t)}</blockquote>
`
          }
          html({ text: t }) {
            return t
          }
          heading({ tokens: t, depth: e }) {
            return `<h${e}>${this.parser.parseInline(t)}</h${e}>
`
          }
          hr(t) {
            return `<hr>
`
          }
          list(t) {
            let e = t.ordered,
              r = t.start,
              n = ''
            for (let s = 0; s < t.items.length; s++) {
              let l = t.items[s]
              n += this.listitem(l)
            }
            let i = e ? 'ol' : 'ul',
              a = e && r !== 1 ? ' start="' + r + '"' : ''
            return (
              '<' +
              i +
              a +
              `>
` +
              n +
              '</' +
              i +
              `>
`
            )
          }
          listitem(t) {
            let e = ''
            if (t.task) {
              let r = this.checkbox({ checked: !!t.checked })
              t.loose
                ? t.tokens[0]?.type === 'paragraph'
                  ? ((t.tokens[0].text = r + ' ' + t.tokens[0].text),
                    t.tokens[0].tokens &&
                      t.tokens[0].tokens.length > 0 &&
                      t.tokens[0].tokens[0].type === 'text' &&
                      ((t.tokens[0].tokens[0].text = r + ' ' + xc(t.tokens[0].tokens[0].text)), (t.tokens[0].tokens[0].escaped = !0)))
                  : t.tokens.unshift({ type: 'text', raw: r + ' ', text: r + ' ', escaped: !0 })
                : (e += r + ' ')
            }
            return (
              (e += this.parser.parse(t.tokens, !!t.loose)),
              `<li>${e}</li>
`
            )
          }
          checkbox({ checked: t }) {
            return '<input ' + (t ? 'checked="" ' : '') + 'disabled="" type="checkbox">'
          }
          paragraph({ tokens: t }) {
            return `<p>${this.parser.parseInline(t)}</p>
`
          }
          table(t) {
            let e = '',
              r = ''
            for (let i = 0; i < t.header.length; i++) r += this.tablecell(t.header[i])
            e += this.tablerow({ text: r })
            let n = ''
            for (let i = 0; i < t.rows.length; i++) {
              let a = t.rows[i]
              r = ''
              for (let s = 0; s < a.length; s++) r += this.tablecell(a[s])
              n += this.tablerow({ text: r })
            }
            return (
              n && (n = `<tbody>${n}</tbody>`),
              `<table>
<thead>
` +
                e +
                `</thead>
` +
                n +
                `</table>
`
            )
          }
          tablerow({ text: t }) {
            return `<tr>
${t}</tr>
`
          }
          tablecell(t) {
            let e = this.parser.parseInline(t.tokens),
              r = t.header ? 'th' : 'td'
            return (
              (t.align ? `<${r} align="${t.align}">` : `<${r}>`) +
              e +
              `</${r}>
`
            )
          }
          strong({ tokens: t }) {
            return `<strong>${this.parser.parseInline(t)}</strong>`
          }
          em({ tokens: t }) {
            return `<em>${this.parser.parseInline(t)}</em>`
          }
          codespan({ text: t }) {
            return `<code>${xc(t, !0)}</code>`
          }
          br(t) {
            return '<br>'
          }
          del({ tokens: t }) {
            return `<del>${this.parser.parseInline(t)}</del>`
          }
          link({ href: t, title: e, tokens: r }) {
            let n = this.parser.parseInline(r),
              i = eQ(t)
            if (i === null) return n
            t = i
            let a = '<a href="' + t + '"'
            return e && (a += ' title="' + xc(e) + '"'), (a += '>' + n + '</a>'), a
          }
          image({ href: t, title: e, text: r, tokens: n }) {
            n && (r = this.parser.parseInline(n, this.parser.textRenderer))
            let i = eQ(t)
            if (i === null) return xc(r)
            t = i
            let a = `<img src="${t}" alt="${r}"`
            return e && (a += ` title="${xc(e)}"`), (a += '>'), a
          }
          text(t) {
            return 'tokens' in t && t.tokens ? this.parser.parseInline(t.tokens) : 'escaped' in t && t.escaped ? t.text : xc(t.text)
          }
        }),
        (cL = class {
          static {
            o(this, '_')
          }
          strong({ text: t }) {
            return t
          }
          em({ text: t }) {
            return t
          }
          codespan({ text: t }) {
            return t
          }
          del({ text: t }) {
            return t
          }
          html({ text: t }) {
            return t
          }
          text({ text: t }) {
            return t
          }
          link({ text: t }) {
            return '' + t
          }
          image({ text: t }) {
            return '' + t
          }
          br() {
            return ''
          }
        }),
        (Mu = class eL {
          static {
            o(this, 'a')
          }
          options
          renderer
          textRenderer
          constructor(e) {
            ;(this.options = e || Ud),
              (this.options.renderer = this.options.renderer || new GT()),
              (this.renderer = this.options.renderer),
              (this.renderer.options = this.options),
              (this.renderer.parser = this),
              (this.textRenderer = new cL())
          }
          static parse(e, r) {
            return new eL(r).parse(e)
          }
          static parseInline(e, r) {
            return new eL(r).parseInline(e)
          }
          parse(e, r = !0) {
            let n = ''
            for (let i = 0; i < e.length; i++) {
              let a = e[i]
              if (this.options.extensions?.renderers?.[a.type]) {
                let l = a,
                  u = this.options.extensions.renderers[l.type].call({ parser: this }, l)
                if (u !== !1 || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(l.type)) {
                  n += u || ''
                  continue
                }
              }
              let s = a
              switch (s.type) {
                case 'space': {
                  n += this.renderer.space(s)
                  continue
                }
                case 'hr': {
                  n += this.renderer.hr(s)
                  continue
                }
                case 'heading': {
                  n += this.renderer.heading(s)
                  continue
                }
                case 'code': {
                  n += this.renderer.code(s)
                  continue
                }
                case 'table': {
                  n += this.renderer.table(s)
                  continue
                }
                case 'blockquote': {
                  n += this.renderer.blockquote(s)
                  continue
                }
                case 'list': {
                  n += this.renderer.list(s)
                  continue
                }
                case 'html': {
                  n += this.renderer.html(s)
                  continue
                }
                case 'paragraph': {
                  n += this.renderer.paragraph(s)
                  continue
                }
                case 'text': {
                  let l = s,
                    u = this.renderer.text(l)
                  for (; i + 1 < e.length && e[i + 1].type === 'text'; )
                    (l = e[++i]),
                      (u +=
                        `
` + this.renderer.text(l))
                  r ? (n += this.renderer.paragraph({ type: 'paragraph', raw: u, text: u, tokens: [{ type: 'text', raw: u, text: u, escaped: !0 }] })) : (n += u)
                  continue
                }
                default: {
                  let l = 'Token with "' + s.type + '" type was not found.'
                  if (this.options.silent) return console.error(l), ''
                  throw new Error(l)
                }
              }
            }
            return n
          }
          parseInline(e, r = this.renderer) {
            let n = ''
            for (let i = 0; i < e.length; i++) {
              let a = e[i]
              if (this.options.extensions?.renderers?.[a.type]) {
                let l = this.options.extensions.renderers[a.type].call({ parser: this }, a)
                if (l !== !1 || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(a.type)) {
                  n += l || ''
                  continue
                }
              }
              let s = a
              switch (s.type) {
                case 'escape': {
                  n += r.text(s)
                  break
                }
                case 'html': {
                  n += r.html(s)
                  break
                }
                case 'link': {
                  n += r.link(s)
                  break
                }
                case 'image': {
                  n += r.image(s)
                  break
                }
                case 'strong': {
                  n += r.strong(s)
                  break
                }
                case 'em': {
                  n += r.em(s)
                  break
                }
                case 'codespan': {
                  n += r.codespan(s)
                  break
                }
                case 'br': {
                  n += r.br(s)
                  break
                }
                case 'del': {
                  n += r.del(s)
                  break
                }
                case 'text': {
                  n += r.text(s)
                  break
                }
                default: {
                  let l = 'Token with "' + s.type + '" type was not found.'
                  if (this.options.silent) return console.error(l), ''
                  throw new Error(l)
                }
              }
            }
            return n
          }
        }),
        (FT = class {
          static {
            o(this, 'L')
          }
          options
          block
          constructor(t) {
            this.options = t || Ud
          }
          static passThroughHooks = new Set(['preprocess', 'postprocess', 'processAllTokens'])
          preprocess(t) {
            return t
          }
          postprocess(t) {
            return t
          }
          processAllTokens(t) {
            return t
          }
          provideLexer() {
            return this.block ? Nu.lex : Nu.lexInline
          }
          provideParser() {
            return this.block ? Mu.parse : Mu.parseInline
          }
        }),
        (dDe = class {
          static {
            o(this, 'B')
          }
          defaults = tL()
          options = this.setOptions
          parse = this.parseMarkdown(!0)
          parseInline = this.parseMarkdown(!1)
          Parser = Mu
          Renderer = GT
          TextRenderer = cL
          Lexer = Nu
          Tokenizer = zT
          Hooks = FT
          constructor(...t) {
            this.use(...t)
          }
          walkTokens(t, e) {
            let r = []
            for (let n of t)
              switch (((r = r.concat(e.call(this, n))), n.type)) {
                case 'table': {
                  let i = n
                  for (let a of i.header) r = r.concat(this.walkTokens(a.tokens, e))
                  for (let a of i.rows) for (let s of a) r = r.concat(this.walkTokens(s.tokens, e))
                  break
                }
                case 'list': {
                  let i = n
                  r = r.concat(this.walkTokens(i.items, e))
                  break
                }
                default: {
                  let i = n
                  this.defaults.extensions?.childTokens?.[i.type]
                    ? this.defaults.extensions.childTokens[i.type].forEach(a => {
                        let s = i[a].flat(1 / 0)
                        r = r.concat(this.walkTokens(s, e))
                      })
                    : i.tokens && (r = r.concat(this.walkTokens(i.tokens, e)))
                }
              }
            return r
          }
          use(...t) {
            let e = this.defaults.extensions || { renderers: {}, childTokens: {} }
            return (
              t.forEach(r => {
                let n = { ...r }
                if (
                  ((n.async = this.defaults.async || n.async || !1),
                  r.extensions &&
                    (r.extensions.forEach(i => {
                      if (!i.name) throw new Error('extension name required')
                      if ('renderer' in i) {
                        let a = e.renderers[i.name]
                        a
                          ? (e.renderers[i.name] = function (...s) {
                              let l = i.renderer.apply(this, s)
                              return l === !1 && (l = a.apply(this, s)), l
                            })
                          : (e.renderers[i.name] = i.renderer)
                      }
                      if ('tokenizer' in i) {
                        if (!i.level || (i.level !== 'block' && i.level !== 'inline')) throw new Error("extension level must be 'block' or 'inline'")
                        let a = e[i.level]
                        a ? a.unshift(i.tokenizer) : (e[i.level] = [i.tokenizer]),
                          i.start &&
                            (i.level === 'block'
                              ? e.startBlock
                                ? e.startBlock.push(i.start)
                                : (e.startBlock = [i.start])
                              : i.level === 'inline' && (e.startInline ? e.startInline.push(i.start) : (e.startInline = [i.start])))
                      }
                      'childTokens' in i && i.childTokens && (e.childTokens[i.name] = i.childTokens)
                    }),
                    (n.extensions = e)),
                  r.renderer)
                ) {
                  let i = this.defaults.renderer || new GT(this.defaults)
                  for (let a in r.renderer) {
                    if (!(a in i)) throw new Error(`renderer '${a}' does not exist`)
                    if (['options', 'parser'].includes(a)) continue
                    let s = a,
                      l = r.renderer[s],
                      u = i[s]
                    i[s] = (...h) => {
                      let f = l.apply(i, h)
                      return f === !1 && (f = u.apply(i, h)), f || ''
                    }
                  }
                  n.renderer = i
                }
                if (r.tokenizer) {
                  let i = this.defaults.tokenizer || new zT(this.defaults)
                  for (let a in r.tokenizer) {
                    if (!(a in i)) throw new Error(`tokenizer '${a}' does not exist`)
                    if (['options', 'rules', 'lexer'].includes(a)) continue
                    let s = a,
                      l = r.tokenizer[s],
                      u = i[s]
                    i[s] = (...h) => {
                      let f = l.apply(i, h)
                      return f === !1 && (f = u.apply(i, h)), f
                    }
                  }
                  n.tokenizer = i
                }
                if (r.hooks) {
                  let i = this.defaults.hooks || new FT()
                  for (let a in r.hooks) {
                    if (!(a in i)) throw new Error(`hook '${a}' does not exist`)
                    if (['options', 'block'].includes(a)) continue
                    let s = a,
                      l = r.hooks[s],
                      u = i[s]
                    FT.passThroughHooks.has(a)
                      ? (i[s] = h => {
                          if (this.defaults.async) return Promise.resolve(l.call(i, h)).then(d => u.call(i, d))
                          let f = l.call(i, h)
                          return u.call(i, f)
                        })
                      : (i[s] = (...h) => {
                          let f = l.apply(i, h)
                          return f === !1 && (f = u.apply(i, h)), f
                        })
                  }
                  n.hooks = i
                }
                if (r.walkTokens) {
                  let i = this.defaults.walkTokens,
                    a = r.walkTokens
                  n.walkTokens = function (s) {
                    let l = []
                    return l.push(a.call(this, s)), i && (l = l.concat(i.call(this, s))), l
                  }
                }
                this.defaults = { ...this.defaults, ...n }
              }),
              this
            )
          }
          setOptions(t) {
            return (this.defaults = { ...this.defaults, ...t }), this
          }
          lexer(t, e) {
            return Nu.lex(t, e ?? this.defaults)
          }
          parser(t, e) {
            return Mu.parse(t, e ?? this.defaults)
          }
          parseMarkdown(t) {
            return (e, r) => {
              let n = { ...r },
                i = { ...this.defaults, ...n },
                a = this.onError(!!i.silent, !!i.async)
              if (this.defaults.async === !0 && n.async === !1)
                return a(new Error('marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.'))
              if (typeof e > 'u' || e === null) return a(new Error('marked(): input parameter is undefined or null'))
              if (typeof e != 'string') return a(new Error('marked(): input parameter is of type ' + Object.prototype.toString.call(e) + ', string expected'))
              i.hooks && ((i.hooks.options = i), (i.hooks.block = t))
              let s = i.hooks ? i.hooks.provideLexer() : t ? Nu.lex : Nu.lexInline,
                l = i.hooks ? i.hooks.provideParser() : t ? Mu.parse : Mu.parseInline
              if (i.async)
                return Promise.resolve(i.hooks ? i.hooks.preprocess(e) : e)
                  .then(u => s(u, i))
                  .then(u => (i.hooks ? i.hooks.processAllTokens(u) : u))
                  .then(u => (i.walkTokens ? Promise.all(this.walkTokens(u, i.walkTokens)).then(() => u) : u))
                  .then(u => l(u, i))
                  .then(u => (i.hooks ? i.hooks.postprocess(u) : u))
                  .catch(a)
              try {
                i.hooks && (e = i.hooks.preprocess(e))
                let u = s(e, i)
                i.hooks && (u = i.hooks.processAllTokens(u)), i.walkTokens && this.walkTokens(u, i.walkTokens)
                let h = l(u, i)
                return i.hooks && (h = i.hooks.postprocess(h)), h
              } catch (u) {
                return a(u)
              }
            }
          }
          onError(t, e) {
            return r => {
              if (
                ((r.message += `
Please report this to https://github.com/markedjs/marked.`),
                t)
              ) {
                let n = '<p>An error occurred:</p><pre>' + xc(r.message + '', !0) + '</pre>'
                return e ? Promise.resolve(n) : n
              }
              if (e) return Promise.reject(r)
              throw r
            }
          }
        }),
        (Vd = new dDe())
      o(Jr, 'k')
      Jr.options = Jr.setOptions = function (t) {
        return Vd.setOptions(t), (Jr.defaults = Vd.defaults), nQ(Jr.defaults), Jr
      }
      Jr.getDefaults = tL
      Jr.defaults = Ud
      Jr.use = function (...t) {
        return Vd.use(...t), (Jr.defaults = Vd.defaults), nQ(Jr.defaults), Jr
      }
      Jr.walkTokens = function (t, e) {
        return Vd.walkTokens(t, e)
      }
      Jr.parseInline = Vd.parseInline
      Jr.Parser = Mu
      Jr.parser = Mu.parse
      Jr.Renderer = GT
      Jr.TextRenderer = cL
      Jr.Lexer = Nu
      Jr.lexer = Nu.lex
      Jr.Tokenizer = zT
      Jr.Hooks = FT
      Jr.parse = Jr
      ;(ZSt = Jr.options), (JSt = Jr.setOptions), (e6t = Jr.use), (t6t = Jr.walkTokens), (r6t = Jr.parseInline), (n6t = Mu.parse), (i6t = Nu.lex)
    })
  function pDe(t, { markdownAutoWrap: e }) {
    let n = t
        .replace(
          /<br\/>/g,
          `
`
        )
        .replace(
          /\n{2,}/g,
          `
`
        ),
      i = j4(n)
    return e === !1 ? i.replace(/ /g, '&nbsp;') : i
  }
  function mQ(t, e = {}) {
    let r = pDe(t, e),
      n = Jr.lexer(r),
      i = [[]],
      a = 0
    function s(l, u = 'normal') {
      l.type === 'text'
        ? l.text
            .split(
              `
`
            )
            .forEach((f, d) => {
              d !== 0 && (a++, i.push([])),
                f.split(' ').forEach(p => {
                  ;(p = p.replace(/&#39;/g, "'")), p && i[a].push({ content: p, type: u })
                })
            })
        : l.type === 'strong' || l.type === 'em'
          ? l.tokens.forEach(h => {
              s(h, l.type)
            })
          : l.type === 'html' && i[a].push({ content: l.text, type: 'normal' })
    }
    return (
      o(s, 'processNode'),
      n.forEach(l => {
        l.type === 'paragraph'
          ? l.tokens?.forEach(u => {
              s(u)
            })
          : l.type === 'html' && i[a].push({ content: l.text, type: 'normal' })
      }),
      i
    )
  }
  function gQ(t, { markdownAutoWrap: e } = {}) {
    let r = Jr.lexer(t)
    function n(i) {
      return i.type === 'text'
        ? e === !1
          ? i.text.replace(/\n */g, '<br/>').replace(/ /g, '&nbsp;')
          : i.text.replace(/\n */g, '<br/>')
        : i.type === 'strong'
          ? `<strong>${i.tokens?.map(n).join('')}</strong>`
          : i.type === 'em'
            ? `<em>${i.tokens?.map(n).join('')}</em>`
            : i.type === 'paragraph'
              ? `<p>${i.tokens?.map(n).join('')}</p>`
              : i.type === 'space'
                ? ''
                : i.type === 'html'
                  ? `${i.text}`
                  : i.type === 'escape'
                    ? i.text
                    : `Unsupported markdown: ${i.type}`
    }
    return o(n, 'output'), r.map(n).join('')
  }
  var yQ = N(() => {
    'use strict'
    pQ()
    r7()
    o(pDe, 'preprocessMarkdown')
    o(mQ, 'markdownToLines')
    o(gQ, 'markdownToHTML')
  })
  function mDe(t) {
    return Intl.Segmenter ? [...new Intl.Segmenter().segment(t)].map(e => e.segment) : [...t]
  }
  function gDe(t, e) {
    let r = mDe(e.content)
    return vQ(t, [], r, e.type)
  }
  function vQ(t, e, r, n) {
    if (r.length === 0)
      return [
        { content: e.join(''), type: n },
        { content: '', type: n }
      ]
    let [i, ...a] = r,
      s = [...e, i]
    return t([{ content: s.join(''), type: n }])
      ? vQ(t, s, a, n)
      : (e.length === 0 && i && (e.push(i), r.shift()),
        [
          { content: e.join(''), type: n },
          { content: r.join(''), type: n }
        ])
  }
  function xQ(t, e) {
    if (
      t.some(({ content: r }) =>
        r.includes(`
`)
      )
    )
      throw new Error('splitLineToFitWidth does not support newlines in the line')
    return uL(t, e)
  }
  function uL(t, e, r = [], n = []) {
    if (t.length === 0) return n.length > 0 && r.push(n), r.length > 0 ? r : []
    let i = ''
    t[0].content === ' ' && ((i = ' '), t.shift())
    let a = t.shift() ?? { content: ' ', type: 'normal' },
      s = [...n]
    if ((i !== '' && s.push({ content: i, type: 'normal' }), s.push(a), e(s))) return uL(t, e, r, s)
    if (n.length > 0) r.push(n), t.unshift(a)
    else if (a.content) {
      let [l, u] = gDe(e, a)
      r.push([l]), u.content && t.unshift(u)
    }
    return uL(t, e, r)
  }
  var bQ = N(() => {
    'use strict'
    o(mDe, 'splitTextToChars')
    o(gDe, 'splitWordToFitWidth')
    o(vQ, 'splitWordToFitWidthRecursion')
    o(xQ, 'splitLineToFitWidth')
    o(uL, 'splitLineToFitWidthRecursion')
  })
  function TQ(t, e) {
    e && t.attr('style', e)
  }
  async function yDe(t, e, r, n, i = !1) {
    let a = t.append('foreignObject')
    a.attr('width', `${10 * r}px`), a.attr('height', `${10 * r}px`)
    let s = a.append('xhtml:div'),
      l = e.label
    e.label &&
      yi(e.label) &&
      (l = await Th(
        e.label.replace(
          Ze.lineBreakRegex,
          `
`
        ),
        me()
      ))
    let u = e.isNode ? 'nodeLabel' : 'edgeLabel',
      h = s.append('span')
    h.html(l),
      TQ(h, e.labelStyle),
      h.attr('class', `${u} ${n}`),
      TQ(s, e.labelStyle),
      s.style('display', 'table-cell'),
      s.style('white-space', 'nowrap'),
      s.style('line-height', '1.5'),
      s.style('max-width', r + 'px'),
      s.style('text-align', 'center'),
      s.attr('xmlns', 'http://www.w3.org/1999/xhtml'),
      i && s.attr('class', 'labelBkg')
    let f = s.node().getBoundingClientRect()
    return f.width === r && (s.style('display', 'table'), s.style('white-space', 'break-spaces'), s.style('width', r + 'px'), (f = s.node().getBoundingClientRect())), a.node()
  }
  function hL(t, e, r) {
    return t
      .append('tspan')
      .attr('class', 'text-outer-tspan')
      .attr('x', 0)
      .attr('y', e * r - 0.1 + 'em')
      .attr('dy', r + 'em')
  }
  function vDe(t, e, r) {
    let n = t.append('text'),
      i = hL(n, 1, e)
    fL(i, r)
    let a = i.node().getComputedTextLength()
    return n.remove(), a
  }
  function wQ(t, e, r) {
    let n = t.append('text'),
      i = hL(n, 1, e)
    fL(i, [{ content: r, type: 'normal' }])
    let a = i.node()?.getBoundingClientRect()
    return a && n.remove(), a
  }
  function xDe(t, e, r, n = !1) {
    let a = e.append('g'),
      s = a.insert('rect').attr('class', 'background').attr('style', 'stroke: none'),
      l = a.append('text').attr('y', '-10.1'),
      u = 0
    for (let h of r) {
      let f = o(p => vDe(a, 1.1, p) <= t, 'checkWidth'),
        d = f(h) ? [h] : xQ(h, f)
      for (let p of d) {
        let m = hL(l, u, 1.1)
        fL(m, p), u++
      }
    }
    if (n) {
      let h = l.node().getBBox(),
        f = 2
      return (
        s
          .attr('x', h.x - f)
          .attr('y', h.y - f)
          .attr('width', h.width + 2 * f)
          .attr('height', h.height + 2 * f),
        a.node()
      )
    } else return l.node()
  }
  function fL(t, e) {
    t.text(''),
      e.forEach((r, n) => {
        let i = t
          .append('tspan')
          .attr('font-style', r.type === 'em' ? 'italic' : 'normal')
          .attr('class', 'text-inner-tspan')
          .attr('font-weight', r.type === 'strong' ? 'bold' : 'normal')
        n === 0 ? i.text(r.content) : i.text(' ' + r.content)
      })
  }
  async function dL(t) {
    let e = []
    t.replace(
      /(fa[bklrs]?):fa-([\w-]+)/g,
      (n, i, a) => (
        e.push(
          (async () => {
            let s = `${i}:${a}`
            return (await F$(s)) ? await Es(s, void 0, { class: 'label-icon' }) : `<i class='${fd(n).replace(':', ' ')}'></i>`
          })()
        ),
        n
      )
    )
    let r = await Promise.all(e)
    return t.replace(/(fa[bklrs]?):fa-([\w-]+)/g, () => r.shift() ?? '')
  }
  var qn,
    ao = N(() => {
      'use strict'
      fr()
      Gt()
      pr()
      yt()
      yQ()
      er()
      jl()
      bQ()
      o(TQ, 'applyStyle')
      o(yDe, 'addHtmlSpan')
      o(hL, 'createTspan')
      o(vDe, 'computeWidthOfText')
      o(wQ, 'computeDimensionOfText')
      o(xDe, 'createFormattedText')
      o(fL, 'updateTextContentAndStyles')
      o(dL, 'replaceIconSubstring')
      qn = o(async (t, e = '', { style: r = '', isTitle: n = !1, classes: i = '', useHtmlLabels: a = !0, isNode: s = !0, width: l = 200, addSvgBackground: u = !1 } = {}, h) => {
        if ((X.debug('XYZ createText', e, r, n, i, a, s, 'addSvgBackground: ', u), a)) {
          let f = gQ(e, h),
            d = await dL(na(f)),
            p = e.replace(/\\\\/g, '\\'),
            m = { isNode: s, label: yi(e) ? p : d, labelStyle: r.replace('fill:', 'color:') }
          return await yDe(t, m, l, i, u)
        } else {
          let f = e.replace(/<br\s*\/?>/g, '<br/>'),
            d = mQ(f.replace('<br>', '<br/>'), h),
            p = xDe(l, t, d, e ? u : !1)
          if (s) {
            ;/stroke:/.exec(r) && (r = r.replace('stroke:', 'lineColor:'))
            let m = r
              .replace(/stroke:[^;]+;?/g, '')
              .replace(/stroke-width:[^;]+;?/g, '')
              .replace(/fill:[^;]+;?/g, '')
              .replace(/color:/g, 'fill:')
            Ge(p).attr('style', m)
          } else {
            let m = r
              .replace(/stroke:[^;]+;?/g, '')
              .replace(/stroke-width:[^;]+;?/g, '')
              .replace(/fill:[^;]+;?/g, '')
              .replace(/background:/g, 'fill:')
            Ge(p)
              .select('rect')
              .attr('style', m.replace(/background:/g, 'fill:'))
            let g = r
              .replace(/stroke:[^;]+;?/g, '')
              .replace(/stroke-width:[^;]+;?/g, '')
              .replace(/fill:[^;]+;?/g, '')
              .replace(/color:/g, 'fill:')
            Ge(p).select('text').attr('style', g)
          }
          return p
        }
      }, 'createText')
    })
  function Xt(t) {
    let e = t.map((r, n) => `${n === 0 ? 'M' : 'L'}${r.x},${r.y}`)
    return e.push('Z'), e.join(' ')
  }
  function Go(t, e, r, n, i, a) {
    let s = [],
      u = r - t,
      h = n - e,
      f = u / a,
      d = (2 * Math.PI) / f,
      p = e + h / 2
    for (let m = 0; m <= 50; m++) {
      let g = m / 50,
        y = t + g * u,
        v = p + i * Math.sin(d * (y - t))
      s.push({ x: y, y: v })
    }
    return s
  }
  function WT(t, e, r, n, i, a) {
    let s = [],
      l = (i * Math.PI) / 180,
      f = ((a * Math.PI) / 180 - l) / (n - 1)
    for (let d = 0; d < n; d++) {
      let p = l + d * f,
        m = t + r * Math.cos(p),
        g = e + r * Math.sin(p)
      s.push({ x: -m, y: -g })
    }
    return s
  }
  var mt,
    HT,
    Ke,
    ht,
    Ft = N(() => {
      'use strict'
      ao()
      Gt()
      fr()
      _a()
      pr()
      er()
      ;(mt = o(async (t, e, r) => {
        let n,
          i = e.useHtmlLabels || dr(me()?.htmlLabels)
        r ? (n = r) : (n = 'node default')
        let a = t
            .insert('g')
            .attr('class', n)
            .attr('id', e.domId || e.id),
          s = a.insert('g').attr('class', 'label').attr('style', zn(e.labelStyle)),
          l
        e.label === void 0 ? (l = '') : (l = typeof e.label == 'string' ? e.label : e.label[0])
        let u = await qn(s, wr(na(l), me()), {
            useHtmlLabels: i,
            width: e.width || me().flowchart?.wrappingWidth,
            cssClasses: 'markdown-node-label',
            style: e.labelStyle,
            addSvgBackground: !!e.icon || !!e.img
          }),
          h = u.getBBox(),
          f = (e?.padding ?? 0) / 2
        if (i) {
          let d = u.children[0],
            p = Ge(u),
            m = d.getElementsByTagName('img')
          if (m) {
            let g = l.replace(/<img[^>]*>/g, '').trim() === ''
            await Promise.all(
              [...m].map(
                y =>
                  new Promise(v => {
                    function x() {
                      if (((y.style.display = 'flex'), (y.style.flexDirection = 'column'), g)) {
                        let b = me().fontSize ? me().fontSize : window.getComputedStyle(document.body).fontSize,
                          T = 5,
                          [S = or.fontSize] = zo(b),
                          w = S * T + 'px'
                        ;(y.style.minWidth = w), (y.style.maxWidth = w)
                      } else y.style.width = '100%'
                      v(y)
                    }
                    o(x, 'setupImage'),
                      setTimeout(() => {
                        y.complete && x()
                      }),
                      y.addEventListener('error', x),
                      y.addEventListener('load', x)
                  })
              )
            )
          }
          ;(h = d.getBoundingClientRect()), p.attr('width', h.width), p.attr('height', h.height)
        }
        return (
          i ? s.attr('transform', 'translate(' + -h.width / 2 + ', ' + -h.height / 2 + ')') : s.attr('transform', 'translate(0, ' + -h.height / 2 + ')'),
          e.centerLabel && s.attr('transform', 'translate(' + -h.width / 2 + ', ' + -h.height / 2 + ')'),
          s.insert('rect', ':first-child'),
          { shapeSvg: a, bbox: h, halfPadding: f, label: s }
        )
      }, 'labelHelper')),
        (HT = o(async (t, e, r) => {
          let n = r.useHtmlLabels || dr(me()?.flowchart?.htmlLabels),
            i = t
              .insert('g')
              .attr('class', 'label')
              .attr('style', r.labelStyle || ''),
            a = await qn(i, wr(na(e), me()), { useHtmlLabels: n, width: r.width || me()?.flowchart?.wrappingWidth, style: r.labelStyle, addSvgBackground: !!r.icon || !!r.img }),
            s = a.getBBox(),
            l = r.padding / 2
          if (dr(me()?.flowchart?.htmlLabels)) {
            let u = a.children[0],
              h = Ge(a)
            ;(s = u.getBoundingClientRect()), h.attr('width', s.width), h.attr('height', s.height)
          }
          return (
            n ? i.attr('transform', 'translate(' + -s.width / 2 + ', ' + -s.height / 2 + ')') : i.attr('transform', 'translate(0, ' + -s.height / 2 + ')'),
            r.centerLabel && i.attr('transform', 'translate(' + -s.width / 2 + ', ' + -s.height / 2 + ')'),
            i.insert('rect', ':first-child'),
            { shapeSvg: t, bbox: s, halfPadding: l, label: i }
          )
        }, 'insertLabel')),
        (Ke = o((t, e) => {
          let r = e.node().getBBox()
          ;(t.width = r.width), (t.height = r.height)
        }, 'updateNodeBounds')),
        (ht = o((t, e) => (t.look === 'handDrawn' ? 'rough-node' : 'node') + ' ' + t.cssClasses + ' ' + (e || ''), 'getNodeClasses'))
      o(Xt, 'createPathFromPoints')
      o(Go, 'generateFullSineWavePoints')
      o(WT, 'generateCirclePoints')
    })
  function bDe(t, e) {
    return t.intersect(e)
  }
  var kQ,
    EQ = N(() => {
      'use strict'
      o(bDe, 'intersectNode')
      kQ = bDe
    })
  function TDe(t, e, r, n) {
    var i = t.x,
      a = t.y,
      s = i - n.x,
      l = a - n.y,
      u = Math.sqrt(e * e * l * l + r * r * s * s),
      h = Math.abs((e * r * s) / u)
    n.x < i && (h = -h)
    var f = Math.abs((e * r * l) / u)
    return n.y < a && (f = -f), { x: i + h, y: a + f }
  }
  var qT,
    pL = N(() => {
      'use strict'
      o(TDe, 'intersectEllipse')
      qT = TDe
    })
  function wDe(t, e, r) {
    return qT(t, e, e, r)
  }
  var SQ,
    CQ = N(() => {
      'use strict'
      pL()
      o(wDe, 'intersectCircle')
      SQ = wDe
    })
  function kDe(t, e, r, n) {
    var i, a, s, l, u, h, f, d, p, m, g, y, v, x, b
    if (
      ((i = e.y - t.y),
      (s = t.x - e.x),
      (u = e.x * t.y - t.x * e.y),
      (p = i * r.x + s * r.y + u),
      (m = i * n.x + s * n.y + u),
      !(p !== 0 && m !== 0 && AQ(p, m)) &&
        ((a = n.y - r.y),
        (l = r.x - n.x),
        (h = n.x * r.y - r.x * n.y),
        (f = a * t.x + l * t.y + h),
        (d = a * e.x + l * e.y + h),
        !(f !== 0 && d !== 0 && AQ(f, d)) && ((g = i * l - a * s), g !== 0)))
    )
      return (y = Math.abs(g / 2)), (v = s * h - l * u), (x = v < 0 ? (v - y) / g : (v + y) / g), (v = a * u - i * h), (b = v < 0 ? (v - y) / g : (v + y) / g), { x, y: b }
  }
  function AQ(t, e) {
    return t * e > 0
  }
  var _Q,
    DQ = N(() => {
      'use strict'
      o(kDe, 'intersectLine')
      o(AQ, 'sameSign')
      _Q = kDe
    })
  function EDe(t, e, r) {
    let n = t.x,
      i = t.y,
      a = [],
      s = Number.POSITIVE_INFINITY,
      l = Number.POSITIVE_INFINITY
    typeof e.forEach == 'function'
      ? e.forEach(function (f) {
          ;(s = Math.min(s, f.x)), (l = Math.min(l, f.y))
        })
      : ((s = Math.min(s, e.x)), (l = Math.min(l, e.y)))
    let u = n - t.width / 2 - s,
      h = i - t.height / 2 - l
    for (let f = 0; f < e.length; f++) {
      let d = e[f],
        p = e[f < e.length - 1 ? f + 1 : 0],
        m = _Q(t, r, { x: u + d.x, y: h + d.y }, { x: u + p.x, y: h + p.y })
      m && a.push(m)
    }
    return a.length
      ? (a.length > 1 &&
          a.sort(function (f, d) {
            let p = f.x - r.x,
              m = f.y - r.y,
              g = Math.sqrt(p * p + m * m),
              y = d.x - r.x,
              v = d.y - r.y,
              x = Math.sqrt(y * y + v * v)
            return g < x ? -1 : g === x ? 0 : 1
          }),
        a[0])
      : t
  }
  var LQ,
    RQ = N(() => {
      'use strict'
      DQ()
      o(EDe, 'intersectPolygon')
      LQ = EDe
    })
  var SDe,
    Xh,
    mL = N(() => {
      'use strict'
      ;(SDe = o((t, e) => {
        var r = t.x,
          n = t.y,
          i = e.x - r,
          a = e.y - n,
          s = t.width / 2,
          l = t.height / 2,
          u,
          h
        return (
          Math.abs(a) * s > Math.abs(i) * l ? (a < 0 && (l = -l), (u = a === 0 ? 0 : (l * i) / a), (h = l)) : (i < 0 && (s = -s), (u = s), (h = i === 0 ? 0 : (s * a) / i)),
          { x: r + u, y: n + h }
        )
      }, 'intersectRect')),
        (Xh = SDe)
    })
  var Xe,
    Ht = N(() => {
      'use strict'
      EQ()
      CQ()
      pL()
      RQ()
      mL()
      Xe = { node: kQ, circle: SQ, ellipse: qT, polygon: LQ, rect: Xh }
    })
  var NQ,
    bc,
    CDe,
    S2,
    Ye,
    Qe,
    zt = N(() => {
      'use strict'
      Gt()
      ;(NQ = o(t => {
        let { handDrawnSeed: e } = me()
        return { fill: t, hachureAngle: 120, hachureGap: 4, fillWeight: 2, roughness: 0.7, stroke: t, seed: e }
      }, 'solidStateFill')),
        (bc = o(t => {
          let e = CDe([...(t.cssCompiledStyles || []), ...(t.cssStyles || [])])
          return { stylesMap: e, stylesArray: [...e] }
        }, 'compileStyles')),
        (CDe = o(t => {
          let e = new Map()
          return (
            t.forEach(r => {
              let [n, i] = r.split(':')
              e.set(n.trim(), i?.trim())
            }),
            e
          )
        }, 'styles2Map')),
        (S2 = o(
          t =>
            t === 'color' ||
            t === 'font-size' ||
            t === 'font-family' ||
            t === 'font-weight' ||
            t === 'font-style' ||
            t === 'text-decoration' ||
            t === 'text-align' ||
            t === 'text-transform' ||
            t === 'line-height' ||
            t === 'letter-spacing' ||
            t === 'word-spacing' ||
            t === 'text-shadow' ||
            t === 'text-overflow' ||
            t === 'white-space' ||
            t === 'word-wrap' ||
            t === 'word-break' ||
            t === 'overflow-wrap' ||
            t === 'hyphens',
          'isLabelStyle'
        )),
        (Ye = o(t => {
          let { stylesArray: e } = bc(t),
            r = [],
            n = [],
            i = [],
            a = []
          return (
            e.forEach(s => {
              let l = s[0]
              S2(l)
                ? r.push(s.join(':') + ' !important')
                : (n.push(s.join(':') + ' !important'), l.includes('stroke') && i.push(s.join(':') + ' !important'), l === 'fill' && a.push(s.join(':') + ' !important'))
            }),
            { labelStyles: r.join(';'), nodeStyles: n.join(';'), stylesArray: e, borderStyles: i, backgroundStyles: a }
          )
        }, 'styles2String')),
        (Qe = o((t, e) => {
          let { themeVariables: r, handDrawnSeed: n } = me(),
            { nodeBorder: i, mainBkg: a } = r,
            { stylesMap: s } = bc(t)
          return Object.assign(
            {
              roughness: 0.7,
              fill: s.get('fill') || a,
              fillStyle: 'hachure',
              fillWeight: 4,
              hachureGap: 5.2,
              stroke: s.get('stroke') || i,
              seed: n,
              strokeWidth: s.get('stroke-width')?.replace('px', '') || 1.3,
              fillLineDash: [0, 0]
            },
            e
          )
        }, 'userNodeOverrides'))
    })
  function gL(t, e, r) {
    if (t && t.length) {
      let [n, i] = e,
        a = (Math.PI / 180) * r,
        s = Math.cos(a),
        l = Math.sin(a)
      for (let u of t) {
        let [h, f] = u
        ;(u[0] = (h - n) * s - (f - i) * l + n), (u[1] = (h - n) * l + (f - i) * s + i)
      }
    }
  }
  function ADe(t, e) {
    return t[0] === e[0] && t[1] === e[1]
  }
  function _De(t, e, r, n = 1) {
    let i = r,
      a = Math.max(e, 0.1),
      s = t[0] && t[0][0] && typeof t[0][0] == 'number' ? [t] : t,
      l = [0, 0]
    if (i) for (let h of s) gL(h, l, i)
    let u = (function (h, f, d) {
      let p = []
      for (let b of h) {
        let T = [...b]
        ADe(T[0], T[T.length - 1]) || T.push([T[0][0], T[0][1]]), T.length > 2 && p.push(T)
      }
      let m = []
      f = Math.max(f, 0.1)
      let g = []
      for (let b of p)
        for (let T = 0; T < b.length - 1; T++) {
          let S = b[T],
            w = b[T + 1]
          if (S[1] !== w[1]) {
            let E = Math.min(S[1], w[1])
            g.push({ ymin: E, ymax: Math.max(S[1], w[1]), x: E === S[1] ? S[0] : w[0], islope: (w[0] - S[0]) / (w[1] - S[1]) })
          }
        }
      if (
        (g.sort((b, T) => (b.ymin < T.ymin ? -1 : b.ymin > T.ymin ? 1 : b.x < T.x ? -1 : b.x > T.x ? 1 : b.ymax === T.ymax ? 0 : (b.ymax - T.ymax) / Math.abs(b.ymax - T.ymax))),
        !g.length)
      )
        return m
      let y = [],
        v = g[0].ymin,
        x = 0
      for (; y.length || g.length; ) {
        if (g.length) {
          let b = -1
          for (let T = 0; T < g.length && !(g[T].ymin > v); T++) b = T
          g.splice(0, b + 1).forEach(T => {
            y.push({ s: v, edge: T })
          })
        }
        if (
          ((y = y.filter(b => !(b.edge.ymax <= v))),
          y.sort((b, T) => (b.edge.x === T.edge.x ? 0 : (b.edge.x - T.edge.x) / Math.abs(b.edge.x - T.edge.x))),
          (d !== 1 || x % f == 0) && y.length > 1)
        )
          for (let b = 0; b < y.length; b += 2) {
            let T = b + 1
            if (T >= y.length) break
            let S = y[b].edge,
              w = y[T].edge
            m.push([
              [Math.round(S.x), v],
              [Math.round(w.x), v]
            ])
          }
        ;(v += d),
          y.forEach(b => {
            b.edge.x = b.edge.x + d * b.edge.islope
          }),
          x++
      }
      return m
    })(s, a, n)
    if (i) {
      for (let h of s) gL(h, l, -i)
      ;(function (h, f, d) {
        let p = []
        h.forEach(m => p.push(...m)), gL(p, f, d)
      })(u, l, -i)
    }
    return u
  }
  function D2(t, e) {
    var r
    let n = e.hachureAngle + 90,
      i = e.hachureGap
    i < 0 && (i = 4 * e.strokeWidth), (i = Math.round(Math.max(i, 0.1)))
    let a = 1
    return e.roughness >= 1 && (((r = e.randomizer) === null || r === void 0 ? void 0 : r.next()) || Math.random()) > 0.7 && (a = i), _De(t, i, n, a || 1)
  }
  function tw(t) {
    let e = t[0],
      r = t[1]
    return Math.sqrt(Math.pow(e[0] - r[0], 2) + Math.pow(e[1] - r[1], 2))
  }
  function vL(t, e) {
    return t.type === e
  }
  function NL(t) {
    let e = [],
      r = (function (s) {
        let l = new Array()
        for (; s !== ''; )
          if (s.match(/^([ \t\r\n,]+)/)) s = s.substr(RegExp.$1.length)
          else if (s.match(/^([aAcChHlLmMqQsStTvVzZ])/)) (l[l.length] = { type: DDe, text: RegExp.$1 }), (s = s.substr(RegExp.$1.length))
          else {
            if (!s.match(/^(([-+]?[0-9]+(\.[0-9]*)?|[-+]?\.[0-9]+)([eE][-+]?[0-9]+)?)/)) return []
            ;(l[l.length] = { type: yL, text: `${parseFloat(RegExp.$1)}` }), (s = s.substr(RegExp.$1.length))
          }
        return (l[l.length] = { type: MQ, text: '' }), l
      })(t),
      n = 'BOD',
      i = 0,
      a = r[i]
    for (; !vL(a, MQ); ) {
      let s = 0,
        l = []
      if (n === 'BOD') {
        if (a.text !== 'M' && a.text !== 'm') return NL('M0,0' + t)
        i++, (s = YT[a.text]), (n = a.text)
      } else vL(a, yL) ? (s = YT[n]) : (i++, (s = YT[a.text]), (n = a.text))
      if (!(i + s < r.length)) throw new Error('Path data ended short')
      for (let u = i; u < i + s; u++) {
        let h = r[u]
        if (!vL(h, yL)) throw new Error('Param not a number: ' + n + ',' + h.text)
        l[l.length] = +h.text
      }
      if (typeof YT[n] != 'number') throw new Error('Bad segment: ' + n)
      {
        let u = { key: n, data: l }
        e.push(u), (i += s), (a = r[i]), n === 'M' && (n = 'L'), n === 'm' && (n = 'l')
      }
    }
    return e
  }
  function GQ(t) {
    let e = 0,
      r = 0,
      n = 0,
      i = 0,
      a = []
    for (let { key: s, data: l } of t)
      switch (s) {
        case 'M':
          a.push({ key: 'M', data: [...l] }), ([e, r] = l), ([n, i] = l)
          break
        case 'm':
          ;(e += l[0]), (r += l[1]), a.push({ key: 'M', data: [e, r] }), (n = e), (i = r)
          break
        case 'L':
          a.push({ key: 'L', data: [...l] }), ([e, r] = l)
          break
        case 'l':
          ;(e += l[0]), (r += l[1]), a.push({ key: 'L', data: [e, r] })
          break
        case 'C':
          a.push({ key: 'C', data: [...l] }), (e = l[4]), (r = l[5])
          break
        case 'c': {
          let u = l.map((h, f) => (f % 2 ? h + r : h + e))
          a.push({ key: 'C', data: u }), (e = u[4]), (r = u[5])
          break
        }
        case 'Q':
          a.push({ key: 'Q', data: [...l] }), (e = l[2]), (r = l[3])
          break
        case 'q': {
          let u = l.map((h, f) => (f % 2 ? h + r : h + e))
          a.push({ key: 'Q', data: u }), (e = u[2]), (r = u[3])
          break
        }
        case 'A':
          a.push({ key: 'A', data: [...l] }), (e = l[5]), (r = l[6])
          break
        case 'a':
          ;(e += l[5]), (r += l[6]), a.push({ key: 'A', data: [l[0], l[1], l[2], l[3], l[4], e, r] })
          break
        case 'H':
          a.push({ key: 'H', data: [...l] }), (e = l[0])
          break
        case 'h':
          ;(e += l[0]), a.push({ key: 'H', data: [e] })
          break
        case 'V':
          a.push({ key: 'V', data: [...l] }), (r = l[0])
          break
        case 'v':
          ;(r += l[0]), a.push({ key: 'V', data: [r] })
          break
        case 'S':
          a.push({ key: 'S', data: [...l] }), (e = l[2]), (r = l[3])
          break
        case 's': {
          let u = l.map((h, f) => (f % 2 ? h + r : h + e))
          a.push({ key: 'S', data: u }), (e = u[2]), (r = u[3])
          break
        }
        case 'T':
          a.push({ key: 'T', data: [...l] }), (e = l[0]), (r = l[1])
          break
        case 't':
          ;(e += l[0]), (r += l[1]), a.push({ key: 'T', data: [e, r] })
          break
        case 'Z':
        case 'z':
          a.push({ key: 'Z', data: [] }), (e = n), (r = i)
      }
    return a
  }
  function VQ(t) {
    let e = [],
      r = '',
      n = 0,
      i = 0,
      a = 0,
      s = 0,
      l = 0,
      u = 0
    for (let { key: h, data: f } of t) {
      switch (h) {
        case 'M':
          e.push({ key: 'M', data: [...f] }), ([n, i] = f), ([a, s] = f)
          break
        case 'C':
          e.push({ key: 'C', data: [...f] }), (n = f[4]), (i = f[5]), (l = f[2]), (u = f[3])
          break
        case 'L':
          e.push({ key: 'L', data: [...f] }), ([n, i] = f)
          break
        case 'H':
          ;(n = f[0]), e.push({ key: 'L', data: [n, i] })
          break
        case 'V':
          ;(i = f[0]), e.push({ key: 'L', data: [n, i] })
          break
        case 'S': {
          let d = 0,
            p = 0
          r === 'C' || r === 'S' ? ((d = n + (n - l)), (p = i + (i - u))) : ((d = n), (p = i)),
            e.push({ key: 'C', data: [d, p, ...f] }),
            (l = f[0]),
            (u = f[1]),
            (n = f[2]),
            (i = f[3])
          break
        }
        case 'T': {
          let [d, p] = f,
            m = 0,
            g = 0
          r === 'Q' || r === 'T' ? ((m = n + (n - l)), (g = i + (i - u))) : ((m = n), (g = i))
          let y = n + (2 * (m - n)) / 3,
            v = i + (2 * (g - i)) / 3,
            x = d + (2 * (m - d)) / 3,
            b = p + (2 * (g - p)) / 3
          e.push({ key: 'C', data: [y, v, x, b, d, p] }), (l = m), (u = g), (n = d), (i = p)
          break
        }
        case 'Q': {
          let [d, p, m, g] = f,
            y = n + (2 * (d - n)) / 3,
            v = i + (2 * (p - i)) / 3,
            x = m + (2 * (d - m)) / 3,
            b = g + (2 * (p - g)) / 3
          e.push({ key: 'C', data: [y, v, x, b, m, g] }), (l = d), (u = p), (n = m), (i = g)
          break
        }
        case 'A': {
          let d = Math.abs(f[0]),
            p = Math.abs(f[1]),
            m = f[2],
            g = f[3],
            y = f[4],
            v = f[5],
            x = f[6]
          d === 0 || p === 0
            ? (e.push({ key: 'C', data: [n, i, v, x, v, x] }), (n = v), (i = x))
            : (n !== v || i !== x) &&
              (UQ(n, i, v, x, d, p, m, g, y).forEach(function (b) {
                e.push({ key: 'C', data: b })
              }),
              (n = v),
              (i = x))
          break
        }
        case 'Z':
          e.push({ key: 'Z', data: [] }), (n = a), (i = s)
      }
      r = h
    }
    return e
  }
  function C2(t, e, r) {
    return [t * Math.cos(r) - e * Math.sin(r), t * Math.sin(r) + e * Math.cos(r)]
  }
  function UQ(t, e, r, n, i, a, s, l, u, h) {
    let f = ((d = s), (Math.PI * d) / 180)
    var d
    let p = [],
      m = 0,
      g = 0,
      y = 0,
      v = 0
    if (h) [m, g, y, v] = h
    else {
      ;([t, e] = C2(t, e, -f)), ([r, n] = C2(r, n, -f))
      let L = (t - r) / 2,
        A = (e - n) / 2,
        I = (L * L) / (i * i) + (A * A) / (a * a)
      I > 1 && ((I = Math.sqrt(I)), (i *= I), (a *= I))
      let M = i * i,
        P = a * a,
        B = M * P - M * A * A - P * L * L,
        F = M * A * A + P * L * L,
        z = (l === u ? -1 : 1) * Math.sqrt(Math.abs(B / F))
      ;(y = (z * i * A) / a + (t + r) / 2),
        (v = (z * -a * L) / i + (e + n) / 2),
        (m = Math.asin(parseFloat(((e - v) / a).toFixed(9)))),
        (g = Math.asin(parseFloat(((n - v) / a).toFixed(9)))),
        t < y && (m = Math.PI - m),
        r < y && (g = Math.PI - g),
        m < 0 && (m = 2 * Math.PI + m),
        g < 0 && (g = 2 * Math.PI + g),
        u && m > g && (m -= 2 * Math.PI),
        !u && g > m && (g -= 2 * Math.PI)
    }
    let x = g - m
    if (Math.abs(x) > (120 * Math.PI) / 180) {
      let L = g,
        A = r,
        I = n
      ;(g = u && g > m ? m + ((120 * Math.PI) / 180) * 1 : m + ((120 * Math.PI) / 180) * -1),
        (p = UQ((r = y + i * Math.cos(g)), (n = v + a * Math.sin(g)), A, I, i, a, s, 0, u, [g, L, y, v]))
    }
    x = g - m
    let b = Math.cos(m),
      T = Math.sin(m),
      S = Math.cos(g),
      w = Math.sin(g),
      E = Math.tan(x / 4),
      _ = (4 / 3) * i * E,
      C = (4 / 3) * a * E,
      D = [t, e],
      O = [t + _ * T, e - C * b],
      R = [r + _ * w, n - C * S],
      k = [r, n]
    if (((O[0] = 2 * D[0] - O[0]), (O[1] = 2 * D[1] - O[1]), h)) return [O, R, k].concat(p)
    {
      p = [O, R, k].concat(p)
      let L = []
      for (let A = 0; A < p.length; A += 3) {
        let I = C2(p[A][0], p[A][1], f),
          M = C2(p[A + 1][0], p[A + 1][1], f),
          P = C2(p[A + 2][0], p[A + 2][1], f)
        L.push([I[0], I[1], M[0], M[1], P[0], P[1]])
      }
      return L
    }
  }
  function HQ(t, e, r, n, i) {
    return { type: 'path', ops: jh(t, e, r, n, i) }
  }
  function KT(t, e, r) {
    let n = (t || []).length
    if (n > 2) {
      let i = []
      for (let a = 0; a < n - 1; a++) i.push(...jh(t[a][0], t[a][1], t[a + 1][0], t[a + 1][1], r))
      return e && i.push(...jh(t[n - 1][0], t[n - 1][1], t[0][0], t[0][1], r)), { type: 'path', ops: i }
    }
    return n === 2 ? HQ(t[0][0], t[0][1], t[1][0], t[1][1], r) : { type: 'path', ops: [] }
  }
  function RDe(t, e, r, n, i) {
    return (function (a, s) {
      return KT(a, !0, s)
    })(
      [
        [t, e],
        [t + r, e],
        [t + r, e + n],
        [t, e + n]
      ],
      i
    )
  }
  function IQ(t, e) {
    if (t.length) {
      let r = typeof t[0][0] == 'number' ? [t] : t,
        n = XT(r[0], 1 * (1 + 0.2 * e.roughness), e),
        i = e.disableMultiStroke ? [] : XT(r[0], 1.5 * (1 + 0.22 * e.roughness), BQ(e))
      for (let a = 1; a < r.length; a++) {
        let s = r[a]
        if (s.length) {
          let l = XT(s, 1 * (1 + 0.2 * e.roughness), e),
            u = e.disableMultiStroke ? [] : XT(s, 1.5 * (1 + 0.22 * e.roughness), BQ(e))
          for (let h of l) h.op !== 'move' && n.push(h)
          for (let h of u) h.op !== 'move' && i.push(h)
        }
      }
      return { type: 'path', ops: n.concat(i) }
    }
    return { type: 'path', ops: [] }
  }
  function WQ(t, e, r) {
    let n = Math.sqrt(2 * Math.PI * Math.sqrt((Math.pow(t / 2, 2) + Math.pow(e / 2, 2)) / 2)),
      i = Math.ceil(Math.max(r.curveStepCount, (r.curveStepCount / Math.sqrt(200)) * n)),
      a = (2 * Math.PI) / i,
      s = Math.abs(t / 2),
      l = Math.abs(e / 2),
      u = 1 - r.curveFitting
    return (s += ar(s * u, r)), (l += ar(l * u, r)), { increment: a, rx: s, ry: l }
  }
  function AL(t, e, r, n) {
    let [i, a] = FQ(n.increment, t, e, n.rx, n.ry, 1, n.increment * ZT(0.1, ZT(0.4, 1, r), r), r),
      s = JT(i, null, r)
    if (!r.disableMultiStroke && r.roughness !== 0) {
      let [l] = FQ(n.increment, t, e, n.rx, n.ry, 1.5, 0, r),
        u = JT(l, null, r)
      s = s.concat(u)
    }
    return { estimatedPoints: a, opset: { type: 'path', ops: s } }
  }
  function OQ(t, e, r, n, i, a, s, l, u) {
    let h = t,
      f = e,
      d = Math.abs(r / 2),
      p = Math.abs(n / 2)
    ;(d += ar(0.01 * d, u)), (p += ar(0.01 * p, u))
    let m = i,
      g = a
    for (; m < 0; ) (m += 2 * Math.PI), (g += 2 * Math.PI)
    g - m > 2 * Math.PI && ((m = 0), (g = 2 * Math.PI))
    let y = (2 * Math.PI) / u.curveStepCount,
      v = Math.min(y / 2, (g - m) / 2),
      x = $Q(v, h, f, d, p, m, g, 1, u)
    if (!u.disableMultiStroke) {
      let b = $Q(v, h, f, d, p, m, g, 1.5, u)
      x.push(...b)
    }
    return (
      s &&
        (l
          ? x.push(...jh(h, f, h + d * Math.cos(m), f + p * Math.sin(m), u), ...jh(h, f, h + d * Math.cos(g), f + p * Math.sin(g), u))
          : x.push({ op: 'lineTo', data: [h, f] }, { op: 'lineTo', data: [h + d * Math.cos(m), f + p * Math.sin(m)] })),
      { type: 'path', ops: x }
    )
  }
  function PQ(t, e) {
    let r = VQ(GQ(NL(t))),
      n = [],
      i = [0, 0],
      a = [0, 0]
    for (let { key: s, data: l } of r)
      switch (s) {
        case 'M':
          ;(a = [l[0], l[1]]), (i = [l[0], l[1]])
          break
        case 'L':
          n.push(...jh(a[0], a[1], l[0], l[1], e)), (a = [l[0], l[1]])
          break
        case 'C': {
          let [u, h, f, d, p, m] = l
          n.push(...NDe(u, h, f, d, p, m, a, e)), (a = [p, m])
          break
        }
        case 'Z':
          n.push(...jh(a[0], a[1], i[0], i[1], e)), (a = [i[0], i[1]])
      }
    return { type: 'path', ops: n }
  }
  function xL(t, e) {
    let r = []
    for (let n of t)
      if (n.length) {
        let i = e.maxRandomnessOffset || 0,
          a = n.length
        if (a > 2) {
          r.push({ op: 'move', data: [n[0][0] + ar(i, e), n[0][1] + ar(i, e)] })
          for (let s = 1; s < a; s++) r.push({ op: 'lineTo', data: [n[s][0] + ar(i, e), n[s][1] + ar(i, e)] })
        }
      }
    return { type: 'fillPath', ops: r }
  }
  function wm(t, e) {
    return (function (r, n) {
      let i = r.fillStyle || 'hachure'
      if (!Ps[i])
        switch (i) {
          case 'zigzag':
            Ps[i] || (Ps[i] = new TL(n))
            break
          case 'cross-hatch':
            Ps[i] || (Ps[i] = new wL(n))
            break
          case 'dots':
            Ps[i] || (Ps[i] = new kL(n))
            break
          case 'dashed':
            Ps[i] || (Ps[i] = new EL(n))
            break
          case 'zigzag-line':
            Ps[i] || (Ps[i] = new SL(n))
            break
          default:
            ;(i = 'hachure'), Ps[i] || (Ps[i] = new _2(n))
        }
      return Ps[i]
    })(e, LDe).fillPolygons(t, e)
  }
  function BQ(t) {
    let e = Object.assign({}, t)
    return (e.randomizer = void 0), t.seed && (e.seed = t.seed + 1), e
  }
  function qQ(t) {
    return t.randomizer || (t.randomizer = new CL(t.seed || 0)), t.randomizer.next()
  }
  function ZT(t, e, r, n = 1) {
    return r.roughness * n * (qQ(r) * (e - t) + t)
  }
  function ar(t, e, r = 1) {
    return ZT(-t, t, e, r)
  }
  function jh(t, e, r, n, i, a = !1) {
    let s = a ? i.disableMultiStrokeFill : i.disableMultiStroke,
      l = _L(t, e, r, n, i, !0, !1)
    if (s) return l
    let u = _L(t, e, r, n, i, !0, !0)
    return l.concat(u)
  }
  function _L(t, e, r, n, i, a, s) {
    let l = Math.pow(t - r, 2) + Math.pow(e - n, 2),
      u = Math.sqrt(l),
      h = 1
    h = u < 200 ? 1 : u > 500 ? 0.4 : -0.0016668 * u + 1.233334
    let f = i.maxRandomnessOffset || 0
    f * f * 100 > l && (f = u / 10)
    let d = f / 2,
      p = 0.2 + 0.2 * qQ(i),
      m = (i.bowing * i.maxRandomnessOffset * (n - e)) / 200,
      g = (i.bowing * i.maxRandomnessOffset * (t - r)) / 200
    ;(m = ar(m, i, h)), (g = ar(g, i, h))
    let y = [],
      v = o(() => ar(d, i, h), 'M'),
      x = o(() => ar(f, i, h), 'k'),
      b = i.preserveVertices
    return (
      a && (s ? y.push({ op: 'move', data: [t + (b ? 0 : v()), e + (b ? 0 : v())] }) : y.push({ op: 'move', data: [t + (b ? 0 : ar(f, i, h)), e + (b ? 0 : ar(f, i, h))] })),
      s
        ? y.push({
            op: 'bcurveTo',
            data: [m + t + (r - t) * p + v(), g + e + (n - e) * p + v(), m + t + 2 * (r - t) * p + v(), g + e + 2 * (n - e) * p + v(), r + (b ? 0 : v()), n + (b ? 0 : v())]
          })
        : y.push({
            op: 'bcurveTo',
            data: [m + t + (r - t) * p + x(), g + e + (n - e) * p + x(), m + t + 2 * (r - t) * p + x(), g + e + 2 * (n - e) * p + x(), r + (b ? 0 : x()), n + (b ? 0 : x())]
          }),
      y
    )
  }
  function XT(t, e, r) {
    if (!t.length) return []
    let n = []
    n.push([t[0][0] + ar(e, r), t[0][1] + ar(e, r)]), n.push([t[0][0] + ar(e, r), t[0][1] + ar(e, r)])
    for (let i = 1; i < t.length; i++) n.push([t[i][0] + ar(e, r), t[i][1] + ar(e, r)]), i === t.length - 1 && n.push([t[i][0] + ar(e, r), t[i][1] + ar(e, r)])
    return JT(n, null, r)
  }
  function JT(t, e, r) {
    let n = t.length,
      i = []
    if (n > 3) {
      let a = [],
        s = 1 - r.curveTightness
      i.push({ op: 'move', data: [t[1][0], t[1][1]] })
      for (let l = 1; l + 2 < n; l++) {
        let u = t[l]
        ;(a[0] = [u[0], u[1]]),
          (a[1] = [u[0] + (s * t[l + 1][0] - s * t[l - 1][0]) / 6, u[1] + (s * t[l + 1][1] - s * t[l - 1][1]) / 6]),
          (a[2] = [t[l + 1][0] + (s * t[l][0] - s * t[l + 2][0]) / 6, t[l + 1][1] + (s * t[l][1] - s * t[l + 2][1]) / 6]),
          (a[3] = [t[l + 1][0], t[l + 1][1]]),
          i.push({ op: 'bcurveTo', data: [a[1][0], a[1][1], a[2][0], a[2][1], a[3][0], a[3][1]] })
      }
      if (e && e.length === 2) {
        let l = r.maxRandomnessOffset
        i.push({ op: 'lineTo', data: [e[0] + ar(l, r), e[1] + ar(l, r)] })
      }
    } else
      n === 3
        ? (i.push({ op: 'move', data: [t[1][0], t[1][1]] }), i.push({ op: 'bcurveTo', data: [t[1][0], t[1][1], t[2][0], t[2][1], t[2][0], t[2][1]] }))
        : n === 2 && i.push(..._L(t[0][0], t[0][1], t[1][0], t[1][1], r, !0, !0))
    return i
  }
  function FQ(t, e, r, n, i, a, s, l) {
    let u = [],
      h = []
    if (l.roughness === 0) {
      ;(t /= 4), h.push([e + n * Math.cos(-t), r + i * Math.sin(-t)])
      for (let f = 0; f <= 2 * Math.PI; f += t) {
        let d = [e + n * Math.cos(f), r + i * Math.sin(f)]
        u.push(d), h.push(d)
      }
      h.push([e + n * Math.cos(0), r + i * Math.sin(0)]), h.push([e + n * Math.cos(t), r + i * Math.sin(t)])
    } else {
      let f = ar(0.5, l) - Math.PI / 2
      h.push([ar(a, l) + e + 0.9 * n * Math.cos(f - t), ar(a, l) + r + 0.9 * i * Math.sin(f - t)])
      let d = 2 * Math.PI + f - 0.01
      for (let p = f; p < d; p += t) {
        let m = [ar(a, l) + e + n * Math.cos(p), ar(a, l) + r + i * Math.sin(p)]
        u.push(m), h.push(m)
      }
      h.push([ar(a, l) + e + n * Math.cos(f + 2 * Math.PI + 0.5 * s), ar(a, l) + r + i * Math.sin(f + 2 * Math.PI + 0.5 * s)]),
        h.push([ar(a, l) + e + 0.98 * n * Math.cos(f + s), ar(a, l) + r + 0.98 * i * Math.sin(f + s)]),
        h.push([ar(a, l) + e + 0.9 * n * Math.cos(f + 0.5 * s), ar(a, l) + r + 0.9 * i * Math.sin(f + 0.5 * s)])
    }
    return [h, u]
  }
  function $Q(t, e, r, n, i, a, s, l, u) {
    let h = a + ar(0.1, u),
      f = []
    f.push([ar(l, u) + e + 0.9 * n * Math.cos(h - t), ar(l, u) + r + 0.9 * i * Math.sin(h - t)])
    for (let d = h; d <= s; d += t) f.push([ar(l, u) + e + n * Math.cos(d), ar(l, u) + r + i * Math.sin(d)])
    return f.push([e + n * Math.cos(s), r + i * Math.sin(s)]), f.push([e + n * Math.cos(s), r + i * Math.sin(s)]), JT(f, null, u)
  }
  function NDe(t, e, r, n, i, a, s, l) {
    let u = [],
      h = [l.maxRandomnessOffset || 1, (l.maxRandomnessOffset || 1) + 0.3],
      f = [0, 0],
      d = l.disableMultiStroke ? 1 : 2,
      p = l.preserveVertices
    for (let m = 0; m < d; m++)
      m === 0 ? u.push({ op: 'move', data: [s[0], s[1]] }) : u.push({ op: 'move', data: [s[0] + (p ? 0 : ar(h[0], l)), s[1] + (p ? 0 : ar(h[0], l))] }),
        (f = p ? [i, a] : [i + ar(h[m], l), a + ar(h[m], l)]),
        u.push({ op: 'bcurveTo', data: [t + ar(h[m], l), e + ar(h[m], l), r + ar(h[m], l), n + ar(h[m], l), f[0], f[1]] })
    return u
  }
  function A2(t) {
    return [...t]
  }
  function zQ(t, e = 0) {
    let r = t.length
    if (r < 3) throw new Error('A curve must have at least three points.')
    let n = []
    if (r === 3) n.push(A2(t[0]), A2(t[1]), A2(t[2]), A2(t[2]))
    else {
      let i = []
      i.push(t[0], t[0])
      for (let l = 1; l < t.length; l++) i.push(t[l]), l === t.length - 1 && i.push(t[l])
      let a = [],
        s = 1 - e
      n.push(A2(i[0]))
      for (let l = 1; l + 2 < i.length; l++) {
        let u = i[l]
        ;(a[0] = [u[0], u[1]]),
          (a[1] = [u[0] + (s * i[l + 1][0] - s * i[l - 1][0]) / 6, u[1] + (s * i[l + 1][1] - s * i[l - 1][1]) / 6]),
          (a[2] = [i[l + 1][0] + (s * i[l][0] - s * i[l + 2][0]) / 6, i[l + 1][1] + (s * i[l][1] - s * i[l + 2][1]) / 6]),
          (a[3] = [i[l + 1][0], i[l + 1][1]]),
          n.push(a[1], a[2], a[3])
      }
    }
    return n
  }
  function QT(t, e) {
    return Math.pow(t[0] - e[0], 2) + Math.pow(t[1] - e[1], 2)
  }
  function MDe(t, e, r) {
    let n = QT(e, r)
    if (n === 0) return QT(t, e)
    let i = ((t[0] - e[0]) * (r[0] - e[0]) + (t[1] - e[1]) * (r[1] - e[1])) / n
    return (i = Math.max(0, Math.min(1, i))), QT(t, Hd(e, r, i))
  }
  function Hd(t, e, r) {
    return [t[0] + (e[0] - t[0]) * r, t[1] + (e[1] - t[1]) * r]
  }
  function DL(t, e, r, n) {
    let i = n || []
    if (
      (function (l, u) {
        let h = l[u + 0],
          f = l[u + 1],
          d = l[u + 2],
          p = l[u + 3],
          m = 3 * f[0] - 2 * h[0] - p[0]
        m *= m
        let g = 3 * f[1] - 2 * h[1] - p[1]
        g *= g
        let y = 3 * d[0] - 2 * p[0] - h[0]
        y *= y
        let v = 3 * d[1] - 2 * p[1] - h[1]
        return (v *= v), m < y && (m = y), g < v && (g = v), m + g
      })(t, e) < r
    ) {
      let l = t[e + 0]
      i.length ? ((a = i[i.length - 1]), (s = l), Math.sqrt(QT(a, s)) > 1 && i.push(l)) : i.push(l), i.push(t[e + 3])
    } else {
      let u = t[e + 0],
        h = t[e + 1],
        f = t[e + 2],
        d = t[e + 3],
        p = Hd(u, h, 0.5),
        m = Hd(h, f, 0.5),
        g = Hd(f, d, 0.5),
        y = Hd(p, m, 0.5),
        v = Hd(m, g, 0.5),
        x = Hd(y, v, 0.5)
      DL([u, p, y, x], 0, r, i), DL([x, v, g, d], 0, r, i)
    }
    var a, s
    return i
  }
  function IDe(t, e) {
    return ew(t, 0, t.length, e)
  }
  function ew(t, e, r, n, i) {
    let a = i || [],
      s = t[e],
      l = t[r - 1],
      u = 0,
      h = 1
    for (let f = e + 1; f < r - 1; ++f) {
      let d = MDe(t[f], s, l)
      d > u && ((u = d), (h = f))
    }
    return Math.sqrt(u) > n ? (ew(t, e, h + 1, n, a), ew(t, h, r, n, a)) : (a.length || a.push(s), a.push(l)), a
  }
  function bL(t, e = 0.15, r) {
    let n = [],
      i = (t.length - 1) / 3
    for (let a = 0; a < i; a++) DL(t, 3 * a, e, n)
    return r && r > 0 ? ew(n, 0, n.length, r) : n
  }
  var _2,
    TL,
    wL,
    kL,
    EL,
    SL,
    Ps,
    CL,
    DDe,
    yL,
    MQ,
    YT,
    LDe,
    so,
    km,
    LL,
    jT,
    RL,
    je,
    Wt = N(() => {
      'use strict'
      o(gL, 't')
      o(ADe, 'e')
      o(_De, 's')
      o(D2, 'n')
      _2 = class {
        static {
          o(this, 'o')
        }
        constructor(e) {
          this.helper = e
        }
        fillPolygons(e, r) {
          return this._fillPolygons(e, r)
        }
        _fillPolygons(e, r) {
          let n = D2(e, r)
          return { type: 'fillSketch', ops: this.renderLines(n, r) }
        }
        renderLines(e, r) {
          let n = []
          for (let i of e) n.push(...this.helper.doubleLineOps(i[0][0], i[0][1], i[1][0], i[1][1], r))
          return n
        }
      }
      o(tw, 'a')
      ;(TL = class extends _2 {
        static {
          o(this, 'h')
        }
        fillPolygons(e, r) {
          let n = r.hachureGap
          n < 0 && (n = 4 * r.strokeWidth), (n = Math.max(n, 0.1))
          let i = D2(e, Object.assign({}, r, { hachureGap: n })),
            a = (Math.PI / 180) * r.hachureAngle,
            s = [],
            l = 0.5 * n * Math.cos(a),
            u = 0.5 * n * Math.sin(a)
          for (let [h, f] of i) tw([h, f]) && s.push([[h[0] - l, h[1] + u], [...f]], [[h[0] + l, h[1] - u], [...f]])
          return { type: 'fillSketch', ops: this.renderLines(s, r) }
        }
      }),
        (wL = class extends _2 {
          static {
            o(this, 'r')
          }
          fillPolygons(e, r) {
            let n = this._fillPolygons(e, r),
              i = Object.assign({}, r, { hachureAngle: r.hachureAngle + 90 }),
              a = this._fillPolygons(e, i)
            return (n.ops = n.ops.concat(a.ops)), n
          }
        }),
        (kL = class {
          static {
            o(this, 'i')
          }
          constructor(e) {
            this.helper = e
          }
          fillPolygons(e, r) {
            let n = D2(e, (r = Object.assign({}, r, { hachureAngle: 0 })))
            return this.dotsOnLines(n, r)
          }
          dotsOnLines(e, r) {
            let n = [],
              i = r.hachureGap
            i < 0 && (i = 4 * r.strokeWidth), (i = Math.max(i, 0.1))
            let a = r.fillWeight
            a < 0 && (a = r.strokeWidth / 2)
            let s = i / 4
            for (let l of e) {
              let u = tw(l),
                h = u / i,
                f = Math.ceil(h) - 1,
                d = u - f * i,
                p = (l[0][0] + l[1][0]) / 2 - i / 4,
                m = Math.min(l[0][1], l[1][1])
              for (let g = 0; g < f; g++) {
                let y = m + d + g * i,
                  v = p - s + 2 * Math.random() * s,
                  x = y - s + 2 * Math.random() * s,
                  b = this.helper.ellipse(v, x, a, a, r)
                n.push(...b.ops)
              }
            }
            return { type: 'fillSketch', ops: n }
          }
        }),
        (EL = class {
          static {
            o(this, 'c')
          }
          constructor(e) {
            this.helper = e
          }
          fillPolygons(e, r) {
            let n = D2(e, r)
            return { type: 'fillSketch', ops: this.dashedLine(n, r) }
          }
          dashedLine(e, r) {
            let n = r.dashOffset < 0 ? (r.hachureGap < 0 ? 4 * r.strokeWidth : r.hachureGap) : r.dashOffset,
              i = r.dashGap < 0 ? (r.hachureGap < 0 ? 4 * r.strokeWidth : r.hachureGap) : r.dashGap,
              a = []
            return (
              e.forEach(s => {
                let l = tw(s),
                  u = Math.floor(l / (n + i)),
                  h = (l + i - u * (n + i)) / 2,
                  f = s[0],
                  d = s[1]
                f[0] > d[0] && ((f = s[1]), (d = s[0]))
                let p = Math.atan((d[1] - f[1]) / (d[0] - f[0]))
                for (let m = 0; m < u; m++) {
                  let g = m * (n + i),
                    y = g + n,
                    v = [f[0] + g * Math.cos(p) + h * Math.cos(p), f[1] + g * Math.sin(p) + h * Math.sin(p)],
                    x = [f[0] + y * Math.cos(p) + h * Math.cos(p), f[1] + y * Math.sin(p) + h * Math.sin(p)]
                  a.push(...this.helper.doubleLineOps(v[0], v[1], x[0], x[1], r))
                }
              }),
              a
            )
          }
        }),
        (SL = class {
          static {
            o(this, 'l')
          }
          constructor(e) {
            this.helper = e
          }
          fillPolygons(e, r) {
            let n = r.hachureGap < 0 ? 4 * r.strokeWidth : r.hachureGap,
              i = r.zigzagOffset < 0 ? n : r.zigzagOffset,
              a = D2(e, (r = Object.assign({}, r, { hachureGap: n + i })))
            return { type: 'fillSketch', ops: this.zigzagLines(a, i, r) }
          }
          zigzagLines(e, r, n) {
            let i = []
            return (
              e.forEach(a => {
                let s = tw(a),
                  l = Math.round(s / (2 * r)),
                  u = a[0],
                  h = a[1]
                u[0] > h[0] && ((u = a[1]), (h = a[0]))
                let f = Math.atan((h[1] - u[1]) / (h[0] - u[0]))
                for (let d = 0; d < l; d++) {
                  let p = 2 * d * r,
                    m = 2 * (d + 1) * r,
                    g = Math.sqrt(2 * Math.pow(r, 2)),
                    y = [u[0] + p * Math.cos(f), u[1] + p * Math.sin(f)],
                    v = [u[0] + m * Math.cos(f), u[1] + m * Math.sin(f)],
                    x = [y[0] + g * Math.cos(f + Math.PI / 4), y[1] + g * Math.sin(f + Math.PI / 4)]
                  i.push(...this.helper.doubleLineOps(y[0], y[1], x[0], x[1], n), ...this.helper.doubleLineOps(x[0], x[1], v[0], v[1], n))
                }
              }),
              i
            )
          }
        }),
        (Ps = {}),
        (CL = class {
          static {
            o(this, 'p')
          }
          constructor(e) {
            this.seed = e
          }
          next() {
            return this.seed ? ((2 ** 31 - 1) & (this.seed = Math.imul(48271, this.seed))) / 2 ** 31 : Math.random()
          }
        }),
        (DDe = 0),
        (yL = 1),
        (MQ = 2),
        (YT = { A: 7, a: 7, C: 6, c: 6, H: 1, h: 1, L: 2, l: 2, M: 2, m: 2, Q: 4, q: 4, S: 4, s: 4, T: 2, t: 2, V: 1, v: 1, Z: 0, z: 0 })
      o(vL, 'k')
      o(NL, 'b')
      o(GQ, 'y')
      o(VQ, 'm')
      o(C2, 'w')
      o(UQ, 'x')
      LDe = {
        randOffset: o(function (t, e) {
          return ar(t, e)
        }, 'randOffset'),
        randOffsetWithRange: o(function (t, e, r) {
          return ZT(t, e, r)
        }, 'randOffsetWithRange'),
        ellipse: o(function (t, e, r, n, i) {
          let a = WQ(r, n, i)
          return AL(t, e, i, a).opset
        }, 'ellipse'),
        doubleLineOps: o(function (t, e, r, n, i) {
          return jh(t, e, r, n, i, !0)
        }, 'doubleLineOps')
      }
      o(HQ, 'v')
      o(KT, 'S')
      o(RDe, 'O')
      o(IQ, 'L')
      o(WQ, 'T')
      o(AL, 'D')
      o(OQ, 'A')
      o(PQ, '_')
      o(xL, 'I')
      o(wm, 'C')
      o(BQ, 'z')
      o(qQ, 'W')
      o(ZT, 'E')
      o(ar, 'G')
      o(jh, '$')
      o(_L, 'R')
      o(XT, 'j')
      o(JT, 'q')
      o(FQ, 'F')
      o($Q, 'V')
      o(NDe, 'Z')
      o(A2, 'Q')
      o(zQ, 'H')
      o(QT, 'N')
      o(MDe, 'B')
      o(Hd, 'J')
      o(DL, 'K')
      o(IDe, 'U')
      o(ew, 'X')
      o(bL, 'Y')
      ;(so = 'none'),
        (km = class {
          static {
            o(this, 'et')
          }
          constructor(e) {
            ;(this.defaultOptions = {
              maxRandomnessOffset: 2,
              roughness: 1,
              bowing: 1,
              stroke: '#000',
              strokeWidth: 1,
              curveTightness: 0,
              curveFitting: 0.95,
              curveStepCount: 9,
              fillStyle: 'hachure',
              fillWeight: -1,
              hachureAngle: -41,
              hachureGap: -1,
              dashOffset: -1,
              dashGap: -1,
              zigzagOffset: -1,
              seed: 0,
              disableMultiStroke: !1,
              disableMultiStrokeFill: !1,
              preserveVertices: !1,
              fillShapeRoughnessGain: 0.8
            }),
              (this.config = e || {}),
              this.config.options && (this.defaultOptions = this._o(this.config.options))
          }
          static newSeed() {
            return Math.floor(Math.random() * 2 ** 31)
          }
          _o(e) {
            return e ? Object.assign({}, this.defaultOptions, e) : this.defaultOptions
          }
          _d(e, r, n) {
            return { shape: e, sets: r || [], options: n || this.defaultOptions }
          }
          line(e, r, n, i, a) {
            let s = this._o(a)
            return this._d('line', [HQ(e, r, n, i, s)], s)
          }
          rectangle(e, r, n, i, a) {
            let s = this._o(a),
              l = [],
              u = RDe(e, r, n, i, s)
            if (s.fill) {
              let h = [
                [e, r],
                [e + n, r],
                [e + n, r + i],
                [e, r + i]
              ]
              s.fillStyle === 'solid' ? l.push(xL([h], s)) : l.push(wm([h], s))
            }
            return s.stroke !== so && l.push(u), this._d('rectangle', l, s)
          }
          ellipse(e, r, n, i, a) {
            let s = this._o(a),
              l = [],
              u = WQ(n, i, s),
              h = AL(e, r, s, u)
            if (s.fill)
              if (s.fillStyle === 'solid') {
                let f = AL(e, r, s, u).opset
                ;(f.type = 'fillPath'), l.push(f)
              } else l.push(wm([h.estimatedPoints], s))
            return s.stroke !== so && l.push(h.opset), this._d('ellipse', l, s)
          }
          circle(e, r, n, i) {
            let a = this.ellipse(e, r, n, n, i)
            return (a.shape = 'circle'), a
          }
          linearPath(e, r) {
            let n = this._o(r)
            return this._d('linearPath', [KT(e, !1, n)], n)
          }
          arc(e, r, n, i, a, s, l = !1, u) {
            let h = this._o(u),
              f = [],
              d = OQ(e, r, n, i, a, s, l, !0, h)
            if (l && h.fill)
              if (h.fillStyle === 'solid') {
                let p = Object.assign({}, h)
                p.disableMultiStroke = !0
                let m = OQ(e, r, n, i, a, s, !0, !1, p)
                ;(m.type = 'fillPath'), f.push(m)
              } else
                f.push(
                  (function (p, m, g, y, v, x, b) {
                    let T = p,
                      S = m,
                      w = Math.abs(g / 2),
                      E = Math.abs(y / 2)
                    ;(w += ar(0.01 * w, b)), (E += ar(0.01 * E, b))
                    let _ = v,
                      C = x
                    for (; _ < 0; ) (_ += 2 * Math.PI), (C += 2 * Math.PI)
                    C - _ > 2 * Math.PI && ((_ = 0), (C = 2 * Math.PI))
                    let D = (C - _) / b.curveStepCount,
                      O = []
                    for (let R = _; R <= C; R += D) O.push([T + w * Math.cos(R), S + E * Math.sin(R)])
                    return O.push([T + w * Math.cos(C), S + E * Math.sin(C)]), O.push([T, S]), wm([O], b)
                  })(e, r, n, i, a, s, h)
                )
            return h.stroke !== so && f.push(d), this._d('arc', f, h)
          }
          curve(e, r) {
            let n = this._o(r),
              i = [],
              a = IQ(e, n)
            if (n.fill && n.fill !== so)
              if (n.fillStyle === 'solid') {
                let s = IQ(e, Object.assign(Object.assign({}, n), { disableMultiStroke: !0, roughness: n.roughness ? n.roughness + n.fillShapeRoughnessGain : 0 }))
                i.push({ type: 'fillPath', ops: this._mergedShape(s.ops) })
              } else {
                let s = [],
                  l = e
                if (l.length) {
                  let u = typeof l[0][0] == 'number' ? [l] : l
                  for (let h of u)
                    h.length < 3
                      ? s.push(...h)
                      : h.length === 3
                        ? s.push(...bL(zQ([h[0], h[0], h[1], h[2]]), 10, (1 + n.roughness) / 2))
                        : s.push(...bL(zQ(h), 10, (1 + n.roughness) / 2))
                }
                s.length && i.push(wm([s], n))
              }
            return n.stroke !== so && i.push(a), this._d('curve', i, n)
          }
          polygon(e, r) {
            let n = this._o(r),
              i = [],
              a = KT(e, !0, n)
            return n.fill && (n.fillStyle === 'solid' ? i.push(xL([e], n)) : i.push(wm([e], n))), n.stroke !== so && i.push(a), this._d('polygon', i, n)
          }
          path(e, r) {
            let n = this._o(r),
              i = []
            if (!e) return this._d('path', i, n)
            e = (e || '').replace(/\n/g, ' ').replace(/(-\s)/g, '-').replace('/(ss)/g', ' ')
            let a = n.fill && n.fill !== 'transparent' && n.fill !== so,
              s = n.stroke !== so,
              l = !!(n.simplification && n.simplification < 1),
              u = (function (f, d, p) {
                let m = VQ(GQ(NL(f))),
                  g = [],
                  y = [],
                  v = [0, 0],
                  x = [],
                  b = o(() => {
                    x.length >= 4 && y.push(...bL(x, d)), (x = [])
                  }, 'i'),
                  T = o(() => {
                    b(), y.length && (g.push(y), (y = []))
                  }, 'c')
                for (let { key: w, data: E } of m)
                  switch (w) {
                    case 'M':
                      T(), (v = [E[0], E[1]]), y.push(v)
                      break
                    case 'L':
                      b(), y.push([E[0], E[1]])
                      break
                    case 'C':
                      if (!x.length) {
                        let _ = y.length ? y[y.length - 1] : v
                        x.push([_[0], _[1]])
                      }
                      x.push([E[0], E[1]]), x.push([E[2], E[3]]), x.push([E[4], E[5]])
                      break
                    case 'Z':
                      b(), y.push([v[0], v[1]])
                  }
                if ((T(), !p)) return g
                let S = []
                for (let w of g) {
                  let E = IDe(w, p)
                  E.length && S.push(E)
                }
                return S
              })(e, 1, l ? 4 - 4 * (n.simplification || 1) : (1 + n.roughness) / 2),
              h = PQ(e, n)
            if (a)
              if (n.fillStyle === 'solid')
                if (u.length === 1) {
                  let f = PQ(e, Object.assign(Object.assign({}, n), { disableMultiStroke: !0, roughness: n.roughness ? n.roughness + n.fillShapeRoughnessGain : 0 }))
                  i.push({ type: 'fillPath', ops: this._mergedShape(f.ops) })
                } else i.push(xL(u, n))
              else i.push(wm(u, n))
            return (
              s &&
                (l
                  ? u.forEach(f => {
                      i.push(KT(f, !1, n))
                    })
                  : i.push(h)),
              this._d('path', i, n)
            )
          }
          opsToPath(e, r) {
            let n = ''
            for (let i of e.ops) {
              let a = typeof r == 'number' && r >= 0 ? i.data.map(s => +s.toFixed(r)) : i.data
              switch (i.op) {
                case 'move':
                  n += `M${a[0]} ${a[1]} `
                  break
                case 'bcurveTo':
                  n += `C${a[0]} ${a[1]}, ${a[2]} ${a[3]}, ${a[4]} ${a[5]} `
                  break
                case 'lineTo':
                  n += `L${a[0]} ${a[1]} `
              }
            }
            return n.trim()
          }
          toPaths(e) {
            let r = e.sets || [],
              n = e.options || this.defaultOptions,
              i = []
            for (let a of r) {
              let s = null
              switch (a.type) {
                case 'path':
                  s = { d: this.opsToPath(a), stroke: n.stroke, strokeWidth: n.strokeWidth, fill: so }
                  break
                case 'fillPath':
                  s = { d: this.opsToPath(a), stroke: so, strokeWidth: 0, fill: n.fill || so }
                  break
                case 'fillSketch':
                  s = this.fillSketch(a, n)
              }
              s && i.push(s)
            }
            return i
          }
          fillSketch(e, r) {
            let n = r.fillWeight
            return n < 0 && (n = r.strokeWidth / 2), { d: this.opsToPath(e), stroke: r.fill || so, strokeWidth: n, fill: so }
          }
          _mergedShape(e) {
            return e.filter((r, n) => n === 0 || r.op !== 'move')
          }
        }),
        (LL = class {
          static {
            o(this, 'st')
          }
          constructor(e, r) {
            ;(this.canvas = e), (this.ctx = this.canvas.getContext('2d')), (this.gen = new km(r))
          }
          draw(e) {
            let r = e.sets || [],
              n = e.options || this.getDefaultOptions(),
              i = this.ctx,
              a = e.options.fixedDecimalPlaceDigits
            for (let s of r)
              switch (s.type) {
                case 'path':
                  i.save(),
                    (i.strokeStyle = n.stroke === 'none' ? 'transparent' : n.stroke),
                    (i.lineWidth = n.strokeWidth),
                    n.strokeLineDash && i.setLineDash(n.strokeLineDash),
                    n.strokeLineDashOffset && (i.lineDashOffset = n.strokeLineDashOffset),
                    this._drawToContext(i, s, a),
                    i.restore()
                  break
                case 'fillPath': {
                  i.save(), (i.fillStyle = n.fill || '')
                  let l = e.shape === 'curve' || e.shape === 'polygon' || e.shape === 'path' ? 'evenodd' : 'nonzero'
                  this._drawToContext(i, s, a, l), i.restore()
                  break
                }
                case 'fillSketch':
                  this.fillSketch(i, s, n)
              }
          }
          fillSketch(e, r, n) {
            let i = n.fillWeight
            i < 0 && (i = n.strokeWidth / 2),
              e.save(),
              n.fillLineDash && e.setLineDash(n.fillLineDash),
              n.fillLineDashOffset && (e.lineDashOffset = n.fillLineDashOffset),
              (e.strokeStyle = n.fill || ''),
              (e.lineWidth = i),
              this._drawToContext(e, r, n.fixedDecimalPlaceDigits),
              e.restore()
          }
          _drawToContext(e, r, n, i = 'nonzero') {
            e.beginPath()
            for (let a of r.ops) {
              let s = typeof n == 'number' && n >= 0 ? a.data.map(l => +l.toFixed(n)) : a.data
              switch (a.op) {
                case 'move':
                  e.moveTo(s[0], s[1])
                  break
                case 'bcurveTo':
                  e.bezierCurveTo(s[0], s[1], s[2], s[3], s[4], s[5])
                  break
                case 'lineTo':
                  e.lineTo(s[0], s[1])
              }
            }
            r.type === 'fillPath' ? e.fill(i) : e.stroke()
          }
          get generator() {
            return this.gen
          }
          getDefaultOptions() {
            return this.gen.defaultOptions
          }
          line(e, r, n, i, a) {
            let s = this.gen.line(e, r, n, i, a)
            return this.draw(s), s
          }
          rectangle(e, r, n, i, a) {
            let s = this.gen.rectangle(e, r, n, i, a)
            return this.draw(s), s
          }
          ellipse(e, r, n, i, a) {
            let s = this.gen.ellipse(e, r, n, i, a)
            return this.draw(s), s
          }
          circle(e, r, n, i) {
            let a = this.gen.circle(e, r, n, i)
            return this.draw(a), a
          }
          linearPath(e, r) {
            let n = this.gen.linearPath(e, r)
            return this.draw(n), n
          }
          polygon(e, r) {
            let n = this.gen.polygon(e, r)
            return this.draw(n), n
          }
          arc(e, r, n, i, a, s, l = !1, u) {
            let h = this.gen.arc(e, r, n, i, a, s, l, u)
            return this.draw(h), h
          }
          curve(e, r) {
            let n = this.gen.curve(e, r)
            return this.draw(n), n
          }
          path(e, r) {
            let n = this.gen.path(e, r)
            return this.draw(n), n
          }
        }),
        (jT = 'http://www.w3.org/2000/svg'),
        (RL = class {
          static {
            o(this, 'ot')
          }
          constructor(e, r) {
            ;(this.svg = e), (this.gen = new km(r))
          }
          draw(e) {
            let r = e.sets || [],
              n = e.options || this.getDefaultOptions(),
              i = this.svg.ownerDocument || window.document,
              a = i.createElementNS(jT, 'g'),
              s = e.options.fixedDecimalPlaceDigits
            for (let l of r) {
              let u = null
              switch (l.type) {
                case 'path':
                  ;(u = i.createElementNS(jT, 'path')),
                    u.setAttribute('d', this.opsToPath(l, s)),
                    u.setAttribute('stroke', n.stroke),
                    u.setAttribute('stroke-width', n.strokeWidth + ''),
                    u.setAttribute('fill', 'none'),
                    n.strokeLineDash && u.setAttribute('stroke-dasharray', n.strokeLineDash.join(' ').trim()),
                    n.strokeLineDashOffset && u.setAttribute('stroke-dashoffset', `${n.strokeLineDashOffset}`)
                  break
                case 'fillPath':
                  ;(u = i.createElementNS(jT, 'path')),
                    u.setAttribute('d', this.opsToPath(l, s)),
                    u.setAttribute('stroke', 'none'),
                    u.setAttribute('stroke-width', '0'),
                    u.setAttribute('fill', n.fill || ''),
                    (e.shape !== 'curve' && e.shape !== 'polygon') || u.setAttribute('fill-rule', 'evenodd')
                  break
                case 'fillSketch':
                  u = this.fillSketch(i, l, n)
              }
              u && a.appendChild(u)
            }
            return a
          }
          fillSketch(e, r, n) {
            let i = n.fillWeight
            i < 0 && (i = n.strokeWidth / 2)
            let a = e.createElementNS(jT, 'path')
            return (
              a.setAttribute('d', this.opsToPath(r, n.fixedDecimalPlaceDigits)),
              a.setAttribute('stroke', n.fill || ''),
              a.setAttribute('stroke-width', i + ''),
              a.setAttribute('fill', 'none'),
              n.fillLineDash && a.setAttribute('stroke-dasharray', n.fillLineDash.join(' ').trim()),
              n.fillLineDashOffset && a.setAttribute('stroke-dashoffset', `${n.fillLineDashOffset}`),
              a
            )
          }
          get generator() {
            return this.gen
          }
          getDefaultOptions() {
            return this.gen.defaultOptions
          }
          opsToPath(e, r) {
            return this.gen.opsToPath(e, r)
          }
          line(e, r, n, i, a) {
            let s = this.gen.line(e, r, n, i, a)
            return this.draw(s)
          }
          rectangle(e, r, n, i, a) {
            let s = this.gen.rectangle(e, r, n, i, a)
            return this.draw(s)
          }
          ellipse(e, r, n, i, a) {
            let s = this.gen.ellipse(e, r, n, i, a)
            return this.draw(s)
          }
          circle(e, r, n, i) {
            let a = this.gen.circle(e, r, n, i)
            return this.draw(a)
          }
          linearPath(e, r) {
            let n = this.gen.linearPath(e, r)
            return this.draw(n)
          }
          polygon(e, r) {
            let n = this.gen.polygon(e, r)
            return this.draw(n)
          }
          arc(e, r, n, i, a, s, l = !1, u) {
            let h = this.gen.arc(e, r, n, i, a, s, l, u)
            return this.draw(h)
          }
          curve(e, r) {
            let n = this.gen.curve(e, r)
            return this.draw(n)
          }
          path(e, r) {
            let n = this.gen.path(e, r)
            return this.draw(n)
          }
        }),
        (je = {
          canvas: o((t, e) => new LL(t, e), 'canvas'),
          svg: o((t, e) => new RL(t, e), 'svg'),
          generator: o(t => new km(t), 'generator'),
          newSeed: o(() => km.newSeed(), 'newSeed')
        })
    })
  function YQ(t, e) {
    let { labelStyles: r } = Ye(e)
    e.labelStyle = r
    let n = ht(e),
      i = n
    n || (i = 'anchor')
    let a = t
        .insert('g')
        .attr('class', i)
        .attr('id', e.domId || e.id),
      s = 1,
      { cssStyles: l } = e,
      u = je.svg(a),
      h = Qe(e, { fill: 'black', stroke: 'none', fillStyle: 'solid' })
    e.look !== 'handDrawn' && (h.roughness = 0)
    let f = u.circle(0, 0, s * 2, h),
      d = a.insert(() => f, ':first-child')
    return (
      d.attr('class', 'anchor').attr('style', zn(l)),
      Ke(e, d),
      (e.intersect = function (p) {
        return X.info('Circle intersect', e, s, p), Xe.circle(e, s, p)
      }),
      a
    )
  }
  var XQ = N(() => {
    'use strict'
    yt()
    Ft()
    Ht()
    zt()
    Wt()
    er()
    o(YQ, 'anchor')
  })
  function jQ(t, e, r, n, i, a, s) {
    let u = (t + r) / 2,
      h = (e + n) / 2,
      f = Math.atan2(n - e, r - t),
      d = (r - t) / 2,
      p = (n - e) / 2,
      m = d / i,
      g = p / a,
      y = Math.sqrt(m ** 2 + g ** 2)
    if (y > 1) throw new Error('The given radii are too small to create an arc between the points.')
    let v = Math.sqrt(1 - y ** 2),
      x = u + v * a * Math.sin(f) * (s ? -1 : 1),
      b = h - v * i * Math.cos(f) * (s ? -1 : 1),
      T = Math.atan2((e - b) / a, (t - x) / i),
      w = Math.atan2((n - b) / a, (r - x) / i) - T
    s && w < 0 && (w += 2 * Math.PI), !s && w > 0 && (w -= 2 * Math.PI)
    let E = []
    for (let _ = 0; _ < 20; _++) {
      let C = _ / 19,
        D = T + C * w,
        O = x + i * Math.cos(D),
        R = b + a * Math.sin(D)
      E.push({ x: O, y: R })
    }
    return E
  }
  async function KQ(t, e) {
    let { labelStyles: r, nodeStyles: n } = Ye(e)
    e.labelStyle = r
    let { shapeSvg: i, bbox: a } = await mt(t, e, ht(e)),
      s = a.width + e.padding + 20,
      l = a.height + e.padding,
      u = l / 2,
      h = u / (2.5 + l / 50),
      { cssStyles: f } = e,
      d = [{ x: s / 2, y: -l / 2 }, { x: -s / 2, y: -l / 2 }, ...jQ(-s / 2, -l / 2, -s / 2, l / 2, h, u, !1), { x: s / 2, y: l / 2 }, ...jQ(s / 2, l / 2, s / 2, -l / 2, h, u, !0)],
      p = je.svg(i),
      m = Qe(e, {})
    e.look !== 'handDrawn' && ((m.roughness = 0), (m.fillStyle = 'solid'))
    let g = Xt(d),
      y = p.path(g, m),
      v = i.insert(() => y, ':first-child')
    return (
      v.attr('class', 'basic label-container'),
      f && e.look !== 'handDrawn' && v.selectAll('path').attr('style', f),
      n && e.look !== 'handDrawn' && v.selectAll('path').attr('style', n),
      v.attr('transform', `translate(${h / 2}, 0)`),
      Ke(e, v),
      (e.intersect = function (x) {
        return Xe.polygon(e, d, x)
      }),
      i
    )
  }
  var QQ = N(() => {
    'use strict'
    Ft()
    Ht()
    zt()
    Wt()
    o(jQ, 'generateArcPoints')
    o(KQ, 'bowTieRect')
  })
  function Ma(t, e, r, n) {
    return t
      .insert('polygon', ':first-child')
      .attr(
        'points',
        n
          .map(function (i) {
            return i.x + ',' + i.y
          })
          .join(' ')
      )
      .attr('class', 'label-container')
      .attr('transform', 'translate(' + -e / 2 + ',' + r / 2 + ')')
  }
  var Iu = N(() => {
    'use strict'
    o(Ma, 'insertPolygonShape')
  })
  async function ZQ(t, e) {
    let { labelStyles: r, nodeStyles: n } = Ye(e)
    e.labelStyle = r
    let { shapeSvg: i, bbox: a } = await mt(t, e, ht(e)),
      s = a.height + e.padding,
      l = 12,
      u = a.width + e.padding + l,
      h = 0,
      f = u,
      d = -s,
      p = 0,
      m = [
        { x: h + l, y: d },
        { x: f, y: d },
        { x: f, y: p },
        { x: h, y: p },
        { x: h, y: d + l },
        { x: h + l, y: d }
      ],
      g,
      { cssStyles: y } = e
    if (e.look === 'handDrawn') {
      let v = je.svg(i),
        x = Qe(e, {}),
        b = Xt(m),
        T = v.path(b, x)
      ;(g = i.insert(() => T, ':first-child').attr('transform', `translate(${-u / 2}, ${s / 2})`)), y && g.attr('style', y)
    } else g = Ma(i, u, s, m)
    return (
      n && g.attr('style', n),
      Ke(e, g),
      (e.intersect = function (v) {
        return Xe.polygon(e, m, v)
      }),
      i
    )
  }
  var JQ = N(() => {
    'use strict'
    Ft()
    Ht()
    zt()
    Wt()
    Iu()
    Ft()
    o(ZQ, 'card')
  })
  function eZ(t, e) {
    let { nodeStyles: r } = Ye(e)
    e.label = ''
    let n = t
        .insert('g')
        .attr('class', ht(e))
        .attr('id', e.domId ?? e.id),
      { cssStyles: i } = e,
      a = Math.max(28, e.width ?? 0),
      s = [
        { x: 0, y: a / 2 },
        { x: a / 2, y: 0 },
        { x: 0, y: -a / 2 },
        { x: -a / 2, y: 0 }
      ],
      l = je.svg(n),
      u = Qe(e, {})
    e.look !== 'handDrawn' && ((u.roughness = 0), (u.fillStyle = 'solid'))
    let h = Xt(s),
      f = l.path(h, u),
      d = n.insert(() => f, ':first-child')
    return (
      i && e.look !== 'handDrawn' && d.selectAll('path').attr('style', i),
      r && e.look !== 'handDrawn' && d.selectAll('path').attr('style', r),
      (e.width = 28),
      (e.height = 28),
      (e.intersect = function (p) {
        return Xe.polygon(e, s, p)
      }),
      n
    )
  }
  var tZ = N(() => {
    'use strict'
    Ht()
    Wt()
    zt()
    Ft()
    o(eZ, 'choice')
  })
  async function rZ(t, e) {
    let { labelStyles: r, nodeStyles: n } = Ye(e)
    e.labelStyle = r
    let { shapeSvg: i, bbox: a, halfPadding: s } = await mt(t, e, ht(e)),
      l = a.width / 2 + s,
      u,
      { cssStyles: h } = e
    if (e.look === 'handDrawn') {
      let f = je.svg(i),
        d = Qe(e, {}),
        p = f.circle(0, 0, l * 2, d)
      ;(u = i.insert(() => p, ':first-child')), u.attr('class', 'basic label-container').attr('style', zn(h))
    } else u = i.insert('circle', ':first-child').attr('class', 'basic label-container').attr('style', n).attr('r', l).attr('cx', 0).attr('cy', 0)
    return (
      Ke(e, u),
      (e.intersect = function (f) {
        return X.info('Circle intersect', e, l, f), Xe.circle(e, l, f)
      }),
      i
    )
  }
  var nZ = N(() => {
    'use strict'
    yt()
    Ft()
    Ht()
    zt()
    Wt()
    er()
    o(rZ, 'circle')
  })
  function ODe(t) {
    let e = Math.cos(Math.PI / 4),
      r = Math.sin(Math.PI / 4),
      n = t * 2,
      i = { x: (n / 2) * e, y: (n / 2) * r },
      a = { x: -(n / 2) * e, y: (n / 2) * r },
      s = { x: -(n / 2) * e, y: -(n / 2) * r },
      l = { x: (n / 2) * e, y: -(n / 2) * r }
    return `M ${a.x},${a.y} L ${l.x},${l.y}
                   M ${i.x},${i.y} L ${s.x},${s.y}`
  }
  function iZ(t, e) {
    let { labelStyles: r, nodeStyles: n } = Ye(e)
    ;(e.labelStyle = r), (e.label = '')
    let i = t
        .insert('g')
        .attr('class', ht(e))
        .attr('id', e.domId ?? e.id),
      a = Math.max(30, e?.width ?? 0),
      { cssStyles: s } = e,
      l = je.svg(i),
      u = Qe(e, {})
    e.look !== 'handDrawn' && ((u.roughness = 0), (u.fillStyle = 'solid'))
    let h = l.circle(0, 0, a * 2, u),
      f = ODe(a),
      d = l.path(f, u),
      p = i.insert(() => h, ':first-child')
    return (
      p.insert(() => d),
      s && e.look !== 'handDrawn' && p.selectAll('path').attr('style', s),
      n && e.look !== 'handDrawn' && p.selectAll('path').attr('style', n),
      Ke(e, p),
      (e.intersect = function (m) {
        return X.info('crossedCircle intersect', e, { radius: a, point: m }), Xe.circle(e, a, m)
      }),
      i
    )
  }
  var aZ = N(() => {
    'use strict'
    yt()
    Ft()
    zt()
    Wt()
    Ht()
    o(ODe, 'createLine')
    o(iZ, 'crossedCircle')
  })
  function Kh(t, e, r, n = 100, i = 0, a = 180) {
    let s = [],
      l = (i * Math.PI) / 180,
      f = ((a * Math.PI) / 180 - l) / (n - 1)
    for (let d = 0; d < n; d++) {
      let p = l + d * f,
        m = t + r * Math.cos(p),
        g = e + r * Math.sin(p)
      s.push({ x: -m, y: -g })
    }
    return s
  }
  async function sZ(t, e) {
    let { labelStyles: r, nodeStyles: n } = Ye(e)
    e.labelStyle = r
    let { shapeSvg: i, bbox: a, label: s } = await mt(t, e, ht(e)),
      l = a.width + (e.padding ?? 0),
      u = a.height + (e.padding ?? 0),
      h = Math.max(5, u * 0.1),
      { cssStyles: f } = e,
      d = [
        ...Kh(l / 2, -u / 2, h, 30, -90, 0),
        { x: -l / 2 - h, y: h },
        ...Kh(l / 2 + h * 2, -h, h, 20, -180, -270),
        ...Kh(l / 2 + h * 2, h, h, 20, -90, -180),
        { x: -l / 2 - h, y: -u / 2 },
        ...Kh(l / 2, u / 2, h, 20, 0, 90)
      ],
      p = [
        { x: l / 2, y: -u / 2 - h },
        { x: -l / 2, y: -u / 2 - h },
        ...Kh(l / 2, -u / 2, h, 20, -90, 0),
        { x: -l / 2 - h, y: -h },
        ...Kh(l / 2 + l * 0.1, -h, h, 20, -180, -270),
        ...Kh(l / 2 + l * 0.1, h, h, 20, -90, -180),
        { x: -l / 2 - h, y: u / 2 },
        ...Kh(l / 2, u / 2, h, 20, 0, 90),
        { x: -l / 2, y: u / 2 + h },
        { x: l / 2, y: u / 2 + h }
      ],
      m = je.svg(i),
      g = Qe(e, { fill: 'none' })
    e.look !== 'handDrawn' && ((g.roughness = 0), (g.fillStyle = 'solid'))
    let v = Xt(d).replace('Z', ''),
      x = m.path(v, g),
      b = Xt(p),
      T = m.path(b, { ...g }),
      S = i.insert('g', ':first-child')
    return (
      S.insert(() => T, ':first-child').attr('stroke-opacity', 0),
      S.insert(() => x, ':first-child'),
      S.attr('class', 'text'),
      f && e.look !== 'handDrawn' && S.selectAll('path').attr('style', f),
      n && e.look !== 'handDrawn' && S.selectAll('path').attr('style', n),
      S.attr('transform', `translate(${h}, 0)`),
      s.attr('transform', `translate(${-l / 2 + h - (a.x - (a.left ?? 0))},${-u / 2 + (e.padding ?? 0) / 2 - (a.y - (a.top ?? 0))})`),
      Ke(e, S),
      (e.intersect = function (w) {
        return Xe.polygon(e, p, w)
      }),
      i
    )
  }
  var oZ = N(() => {
    'use strict'
    Ft()
    Ht()
    zt()
    Wt()
    o(Kh, 'generateCirclePoints')
    o(sZ, 'curlyBraceLeft')
  })
  function Qh(t, e, r, n = 100, i = 0, a = 180) {
    let s = [],
      l = (i * Math.PI) / 180,
      f = ((a * Math.PI) / 180 - l) / (n - 1)
    for (let d = 0; d < n; d++) {
      let p = l + d * f,
        m = t + r * Math.cos(p),
        g = e + r * Math.sin(p)
      s.push({ x: m, y: g })
    }
    return s
  }
  async function lZ(t, e) {
    let { labelStyles: r, nodeStyles: n } = Ye(e)
    e.labelStyle = r
    let { shapeSvg: i, bbox: a, label: s } = await mt(t, e, ht(e)),
      l = a.width + (e.padding ?? 0),
      u = a.height + (e.padding ?? 0),
      h = Math.max(5, u * 0.1),
      { cssStyles: f } = e,
      d = [
        ...Qh(l / 2, -u / 2, h, 20, -90, 0),
        { x: l / 2 + h, y: -h },
        ...Qh(l / 2 + h * 2, -h, h, 20, -180, -270),
        ...Qh(l / 2 + h * 2, h, h, 20, -90, -180),
        { x: l / 2 + h, y: u / 2 },
        ...Qh(l / 2, u / 2, h, 20, 0, 90)
      ],
      p = [
        { x: -l / 2, y: -u / 2 - h },
        { x: l / 2, y: -u / 2 - h },
        ...Qh(l / 2, -u / 2, h, 20, -90, 0),
        { x: l / 2 + h, y: -h },
        ...Qh(l / 2 + h * 2, -h, h, 20, -180, -270),
        ...Qh(l / 2 + h * 2, h, h, 20, -90, -180),
        { x: l / 2 + h, y: u / 2 },
        ...Qh(l / 2, u / 2, h, 20, 0, 90),
        { x: l / 2, y: u / 2 + h },
        { x: -l / 2, y: u / 2 + h }
      ],
      m = je.svg(i),
      g = Qe(e, { fill: 'none' })
    e.look !== 'handDrawn' && ((g.roughness = 0), (g.fillStyle = 'solid'))
    let v = Xt(d).replace('Z', ''),
      x = m.path(v, g),
      b = Xt(p),
      T = m.path(b, { ...g }),
      S = i.insert('g', ':first-child')
    return (
      S.insert(() => T, ':first-child').attr('stroke-opacity', 0),
      S.insert(() => x, ':first-child'),
      S.attr('class', 'text'),
      f && e.look !== 'handDrawn' && S.selectAll('path').attr('style', f),
      n && e.look !== 'handDrawn' && S.selectAll('path').attr('style', n),
      S.attr('transform', `translate(${-h}, 0)`),
      s.attr('transform', `translate(${-l / 2 + (e.padding ?? 0) / 2 - (a.x - (a.left ?? 0))},${-u / 2 + (e.padding ?? 0) / 2 - (a.y - (a.top ?? 0))})`),
      Ke(e, S),
      (e.intersect = function (w) {
        return Xe.polygon(e, p, w)
      }),
      i
    )
  }
  var cZ = N(() => {
    'use strict'
    Ft()
    Ht()
    zt()
    Wt()
    o(Qh, 'generateCirclePoints')
    o(lZ, 'curlyBraceRight')
  })
  function Ia(t, e, r, n = 100, i = 0, a = 180) {
    let s = [],
      l = (i * Math.PI) / 180,
      f = ((a * Math.PI) / 180 - l) / (n - 1)
    for (let d = 0; d < n; d++) {
      let p = l + d * f,
        m = t + r * Math.cos(p),
        g = e + r * Math.sin(p)
      s.push({ x: -m, y: -g })
    }
    return s
  }
  async function uZ(t, e) {
    let { labelStyles: r, nodeStyles: n } = Ye(e)
    e.labelStyle = r
    let { shapeSvg: i, bbox: a, label: s } = await mt(t, e, ht(e)),
      l = a.width + (e.padding ?? 0),
      u = a.height + (e.padding ?? 0),
      h = Math.max(5, u * 0.1),
      { cssStyles: f } = e,
      d = [
        ...Ia(l / 2, -u / 2, h, 30, -90, 0),
        { x: -l / 2 - h, y: h },
        ...Ia(l / 2 + h * 2, -h, h, 20, -180, -270),
        ...Ia(l / 2 + h * 2, h, h, 20, -90, -180),
        { x: -l / 2 - h, y: -u / 2 },
        ...Ia(l / 2, u / 2, h, 20, 0, 90)
      ],
      p = [
        ...Ia(-l / 2 + h + h / 2, -u / 2, h, 20, -90, -180),
        { x: l / 2 - h / 2, y: h },
        ...Ia(-l / 2 - h / 2, -h, h, 20, 0, 90),
        ...Ia(-l / 2 - h / 2, h, h, 20, -90, 0),
        { x: l / 2 - h / 2, y: -h },
        ...Ia(-l / 2 + h + h / 2, u / 2, h, 30, -180, -270)
      ],
      m = [
        { x: l / 2, y: -u / 2 - h },
        { x: -l / 2, y: -u / 2 - h },
        ...Ia(l / 2, -u / 2, h, 20, -90, 0),
        { x: -l / 2 - h, y: -h },
        ...Ia(l / 2 + h * 2, -h, h, 20, -180, -270),
        ...Ia(l / 2 + h * 2, h, h, 20, -90, -180),
        { x: -l / 2 - h, y: u / 2 },
        ...Ia(l / 2, u / 2, h, 20, 0, 90),
        { x: -l / 2, y: u / 2 + h },
        { x: l / 2 - h - h / 2, y: u / 2 + h },
        ...Ia(-l / 2 + h + h / 2, -u / 2, h, 20, -90, -180),
        { x: l / 2 - h / 2, y: h },
        ...Ia(-l / 2 - h / 2, -h, h, 20, 0, 90),
        ...Ia(-l / 2 - h / 2, h, h, 20, -90, 0),
        { x: l / 2 - h / 2, y: -h },
        ...Ia(-l / 2 + h + h / 2, u / 2, h, 30, -180, -270)
      ],
      g = je.svg(i),
      y = Qe(e, { fill: 'none' })
    e.look !== 'handDrawn' && ((y.roughness = 0), (y.fillStyle = 'solid'))
    let x = Xt(d).replace('Z', ''),
      b = g.path(x, y),
      S = Xt(p).replace('Z', ''),
      w = g.path(S, y),
      E = Xt(m),
      _ = g.path(E, { ...y }),
      C = i.insert('g', ':first-child')
    return (
      C.insert(() => _, ':first-child').attr('stroke-opacity', 0),
      C.insert(() => b, ':first-child'),
      C.insert(() => w, ':first-child'),
      C.attr('class', 'text'),
      f && e.look !== 'handDrawn' && C.selectAll('path').attr('style', f),
      n && e.look !== 'handDrawn' && C.selectAll('path').attr('style', n),
      C.attr('transform', `translate(${h - h / 4}, 0)`),
      s.attr('transform', `translate(${-l / 2 + (e.padding ?? 0) / 2 - (a.x - (a.left ?? 0))},${-u / 2 + (e.padding ?? 0) / 2 - (a.y - (a.top ?? 0))})`),
      Ke(e, C),
      (e.intersect = function (D) {
        return Xe.polygon(e, m, D)
      }),
      i
    )
  }
  var hZ = N(() => {
    'use strict'
    Ft()
    Ht()
    zt()
    Wt()
    o(Ia, 'generateCirclePoints')
    o(uZ, 'curlyBraces')
  })
  async function fZ(t, e) {
    let { labelStyles: r, nodeStyles: n } = Ye(e)
    e.labelStyle = r
    let { shapeSvg: i, bbox: a } = await mt(t, e, ht(e)),
      s = 80,
      l = 20,
      u = Math.max(s, (a.width + (e.padding ?? 0) * 2) * 1.25, e?.width ?? 0),
      h = Math.max(l, a.height + (e.padding ?? 0) * 2, e?.height ?? 0),
      f = h / 2,
      { cssStyles: d } = e,
      p = je.svg(i),
      m = Qe(e, {})
    e.look !== 'handDrawn' && ((m.roughness = 0), (m.fillStyle = 'solid'))
    let g = u,
      y = h,
      v = g - f,
      x = y / 4,
      b = [{ x: v, y: 0 }, { x, y: 0 }, { x: 0, y: y / 2 }, { x, y }, { x: v, y }, ...WT(-v, -y / 2, f, 50, 270, 90)],
      T = Xt(b),
      S = p.path(T, m),
      w = i.insert(() => S, ':first-child')
    return (
      w.attr('class', 'basic label-container'),
      d && e.look !== 'handDrawn' && w.selectChildren('path').attr('style', d),
      n && e.look !== 'handDrawn' && w.selectChildren('path').attr('style', n),
      w.attr('transform', `translate(${-u / 2}, ${-h / 2})`),
      Ke(e, w),
      (e.intersect = function (E) {
        return Xe.polygon(e, b, E)
      }),
      i
    )
  }
  var dZ = N(() => {
    'use strict'
    Ft()
    Ht()
    zt()
    Wt()
    o(fZ, 'curvedTrapezoid')
  })
  async function pZ(t, e) {
    let { labelStyles: r, nodeStyles: n } = Ye(e)
    e.labelStyle = r
    let { shapeSvg: i, bbox: a, label: s } = await mt(t, e, ht(e)),
      l = Math.max(a.width + e.padding, e.width ?? 0),
      u = l / 2,
      h = u / (2.5 + l / 50),
      f = Math.max(a.height + h + e.padding, e.height ?? 0),
      d,
      { cssStyles: p } = e
    if (e.look === 'handDrawn') {
      let m = je.svg(i),
        g = BDe(0, 0, l, f, u, h),
        y = FDe(0, h, l, f, u, h),
        v = m.path(g, Qe(e, {})),
        x = m.path(y, Qe(e, { fill: 'none' }))
      ;(d = i.insert(() => x, ':first-child')), (d = i.insert(() => v, ':first-child')), d.attr('class', 'basic label-container'), p && d.attr('style', p)
    } else {
      let m = PDe(0, 0, l, f, u, h)
      d = i.insert('path', ':first-child').attr('d', m).attr('class', 'basic label-container').attr('style', zn(p)).attr('style', n)
    }
    return (
      d.attr('label-offset-y', h),
      d.attr('transform', `translate(${-l / 2}, ${-(f / 2 + h)})`),
      Ke(e, d),
      s.attr('transform', `translate(${-(a.width / 2) - (a.x - (a.left ?? 0))}, ${-(a.height / 2) + (e.padding ?? 0) / 1.5 - (a.y - (a.top ?? 0))})`),
      (e.intersect = function (m) {
        let g = Xe.rect(e, m),
          y = g.x - (e.x ?? 0)
        if (u != 0 && (Math.abs(y) < (e.width ?? 0) / 2 || (Math.abs(y) == (e.width ?? 0) / 2 && Math.abs(g.y - (e.y ?? 0)) > (e.height ?? 0) / 2 - h))) {
          let v = h * h * (1 - (y * y) / (u * u))
          v > 0 && (v = Math.sqrt(v)), (v = h - v), m.y - (e.y ?? 0) > 0 && (v = -v), (g.y += v)
        }
        return g
      }),
      i
    )
  }
  var PDe,
    BDe,
    FDe,
    mZ = N(() => {
      'use strict'
      Ft()
      Ht()
      zt()
      Wt()
      er()
      ;(PDe = o(
        (t, e, r, n, i, a) => [`M${t},${e + a}`, `a${i},${a} 0,0,0 ${r},0`, `a${i},${a} 0,0,0 ${-r},0`, `l0,${n}`, `a${i},${a} 0,0,0 ${r},0`, `l0,${-n}`].join(' '),
        'createCylinderPathD'
      )),
        (BDe = o(
          (t, e, r, n, i, a) => [`M${t},${e + a}`, `M${t + r},${e + a}`, `a${i},${a} 0,0,0 ${-r},0`, `l0,${n}`, `a${i},${a} 0,0,0 ${r},0`, `l0,${-n}`].join(' '),
          'createOuterCylinderPathD'
        )),
        (FDe = o((t, e, r, n, i, a) => [`M${t - r / 2},${-n / 2}`, `a${i},${a} 0,0,0 ${r},0`].join(' '), 'createInnerCylinderPathD'))
      o(pZ, 'cylinder')
    })
  async function gZ(t, e) {
    let { labelStyles: r, nodeStyles: n } = Ye(e)
    e.labelStyle = r
    let { shapeSvg: i, bbox: a, label: s } = await mt(t, e, ht(e)),
      l = a.width + e.padding,
      u = a.height + e.padding,
      h = u * 0.2,
      f = -l / 2,
      d = -u / 2 - h / 2,
      { cssStyles: p } = e,
      m = je.svg(i),
      g = Qe(e, {})
    e.look !== 'handDrawn' && ((g.roughness = 0), (g.fillStyle = 'solid'))
    let y = [
        { x: f, y: d + h },
        { x: -f, y: d + h },
        { x: -f, y: -d },
        { x: f, y: -d },
        { x: f, y: d },
        { x: -f, y: d },
        { x: -f, y: d + h }
      ],
      v = m.polygon(
        y.map(b => [b.x, b.y]),
        g
      ),
      x = i.insert(() => v, ':first-child')
    return (
      x.attr('class', 'basic label-container'),
      p && e.look !== 'handDrawn' && x.selectAll('path').attr('style', p),
      n && e.look !== 'handDrawn' && x.selectAll('path').attr('style', n),
      s.attr('transform', `translate(${f + (e.padding ?? 0) / 2 - (a.x - (a.left ?? 0))}, ${d + h + (e.padding ?? 0) / 2 - (a.y - (a.top ?? 0))})`),
      Ke(e, x),
      (e.intersect = function (b) {
        return Xe.rect(e, b)
      }),
      i
    )
  }
  var yZ = N(() => {
    'use strict'
    Ft()
    Ht()
    zt()
    Wt()
    o(gZ, 'dividedRectangle')
  })
  async function vZ(t, e) {
    let { labelStyles: r, nodeStyles: n } = Ye(e)
    e.labelStyle = r
    let { shapeSvg: i, bbox: a, halfPadding: s } = await mt(t, e, ht(e)),
      u = a.width / 2 + s + 5,
      h = a.width / 2 + s,
      f,
      { cssStyles: d } = e
    if (e.look === 'handDrawn') {
      let p = je.svg(i),
        m = Qe(e, { roughness: 0.2, strokeWidth: 2.5 }),
        g = Qe(e, { roughness: 0.2, strokeWidth: 1.5 }),
        y = p.circle(0, 0, u * 2, m),
        v = p.circle(0, 0, h * 2, g)
      ;(f = i.insert('g', ':first-child')), f.attr('class', zn(e.cssClasses)).attr('style', zn(d)), f.node()?.appendChild(y), f.node()?.appendChild(v)
    } else {
      f = i.insert('g', ':first-child')
      let p = f.insert('circle', ':first-child'),
        m = f.insert('circle')
      f.attr('class', 'basic label-container').attr('style', n),
        p.attr('class', 'outer-circle').attr('style', n).attr('r', u).attr('cx', 0).attr('cy', 0),
        m.attr('class', 'inner-circle').attr('style', n).attr('r', h).attr('cx', 0).attr('cy', 0)
    }
    return (
      Ke(e, f),
      (e.intersect = function (p) {
        return X.info('DoubleCircle intersect', e, u, p), Xe.circle(e, u, p)
      }),
      i
    )
  }
  var xZ = N(() => {
    'use strict'
    yt()
    Ft()
    Ht()
    zt()
    Wt()
    er()
    o(vZ, 'doublecircle')
  })
  function bZ(t, e, { config: { themeVariables: r } }) {
    let { labelStyles: n, nodeStyles: i } = Ye(e)
    ;(e.label = ''), (e.labelStyle = n)
    let a = t
        .insert('g')
        .attr('class', ht(e))
        .attr('id', e.domId ?? e.id),
      s = 7,
      { cssStyles: l } = e,
      u = je.svg(a),
      { nodeBorder: h } = r,
      f = Qe(e, { fillStyle: 'solid' })
    e.look !== 'handDrawn' && (f.roughness = 0)
    let d = u.circle(0, 0, s * 2, f),
      p = a.insert(() => d, ':first-child')
    return (
      p.selectAll('path').attr('style', `fill: ${h} !important;`),
      l && l.length > 0 && e.look !== 'handDrawn' && p.selectAll('path').attr('style', l),
      i && e.look !== 'handDrawn' && p.selectAll('path').attr('style', i),
      Ke(e, p),
      (e.intersect = function (m) {
        return X.info('filledCircle intersect', e, { radius: s, point: m }), Xe.circle(e, s, m)
      }),
      a
    )
  }
  var TZ = N(() => {
    'use strict'
    Wt()
    yt()
    Ht()
    zt()
    Ft()
    o(bZ, 'filledCircle')
  })
  async function wZ(t, e) {
    let { labelStyles: r, nodeStyles: n } = Ye(e)
    e.labelStyle = r
    let { shapeSvg: i, bbox: a, label: s } = await mt(t, e, ht(e)),
      l = a.width + (e.padding ?? 0),
      u = l + a.height,
      h = l + a.height,
      f = [
        { x: 0, y: -u },
        { x: h, y: -u },
        { x: h / 2, y: 0 }
      ],
      { cssStyles: d } = e,
      p = je.svg(i),
      m = Qe(e, {})
    e.look !== 'handDrawn' && ((m.roughness = 0), (m.fillStyle = 'solid'))
    let g = Xt(f),
      y = p.path(g, m),
      v = i.insert(() => y, ':first-child').attr('transform', `translate(${-u / 2}, ${u / 2})`)
    return (
      d && e.look !== 'handDrawn' && v.selectChildren('path').attr('style', d),
      n && e.look !== 'handDrawn' && v.selectChildren('path').attr('style', n),
      (e.width = l),
      (e.height = u),
      Ke(e, v),
      s.attr('transform', `translate(${-a.width / 2 - (a.x - (a.left ?? 0))}, ${-u / 2 + (e.padding ?? 0) / 2 + (a.y - (a.top ?? 0))})`),
      (e.intersect = function (x) {
        return X.info('Triangle intersect', e, f, x), Xe.polygon(e, f, x)
      }),
      i
    )
  }
  var kZ = N(() => {
    'use strict'
    yt()
    Ft()
    Ht()
    zt()
    Wt()
    Ft()
    o(wZ, 'flippedTriangle')
  })
  function EZ(t, e, { dir: r, config: { state: n, themeVariables: i } }) {
    let { nodeStyles: a } = Ye(e)
    e.label = ''
    let s = t
        .insert('g')
        .attr('class', ht(e))
        .attr('id', e.domId ?? e.id),
      { cssStyles: l } = e,
      u = Math.max(70, e?.width ?? 0),
      h = Math.max(10, e?.height ?? 0)
    r === 'LR' && ((u = Math.max(10, e?.width ?? 0)), (h = Math.max(70, e?.height ?? 0)))
    let f = (-1 * u) / 2,
      d = (-1 * h) / 2,
      p = je.svg(s),
      m = Qe(e, { stroke: i.lineColor, fill: i.lineColor })
    e.look !== 'handDrawn' && ((m.roughness = 0), (m.fillStyle = 'solid'))
    let g = p.rectangle(f, d, u, h, m),
      y = s.insert(() => g, ':first-child')
    l && e.look !== 'handDrawn' && y.selectAll('path').attr('style', l), a && e.look !== 'handDrawn' && y.selectAll('path').attr('style', a), Ke(e, y)
    let v = n?.padding ?? 0
    return (
      e.width && e.height && ((e.width += v / 2 || 0), (e.height += v / 2 || 0)),
      (e.intersect = function (x) {
        return Xe.rect(e, x)
      }),
      s
    )
  }
  var SZ = N(() => {
    'use strict'
    Wt()
    Ht()
    zt()
    Ft()
    o(EZ, 'forkJoin')
  })
  async function CZ(t, e) {
    let { labelStyles: r, nodeStyles: n } = Ye(e)
    e.labelStyle = r
    let i = 80,
      a = 50,
      { shapeSvg: s, bbox: l } = await mt(t, e, ht(e)),
      u = Math.max(i, l.width + (e.padding ?? 0) * 2, e?.width ?? 0),
      h = Math.max(a, l.height + (e.padding ?? 0) * 2, e?.height ?? 0),
      f = h / 2,
      { cssStyles: d } = e,
      p = je.svg(s),
      m = Qe(e, {})
    e.look !== 'handDrawn' && ((m.roughness = 0), (m.fillStyle = 'solid'))
    let g = [{ x: -u / 2, y: -h / 2 }, { x: u / 2 - f, y: -h / 2 }, ...WT(-u / 2 + f, 0, f, 50, 90, 270), { x: u / 2 - f, y: h / 2 }, { x: -u / 2, y: h / 2 }],
      y = Xt(g),
      v = p.path(y, m),
      x = s.insert(() => v, ':first-child')
    return (
      x.attr('class', 'basic label-container'),
      d && e.look !== 'handDrawn' && x.selectChildren('path').attr('style', d),
      n && e.look !== 'handDrawn' && x.selectChildren('path').attr('style', n),
      Ke(e, x),
      (e.intersect = function (b) {
        return X.info('Pill intersect', e, { radius: f, point: b }), Xe.polygon(e, g, b)
      }),
      s
    )
  }
  var AZ = N(() => {
    'use strict'
    yt()
    Ft()
    Ht()
    zt()
    Wt()
    o(CZ, 'halfRoundedRectangle')
  })
  async function _Z(t, e) {
    let { labelStyles: r, nodeStyles: n } = Ye(e)
    e.labelStyle = r
    let { shapeSvg: i, bbox: a } = await mt(t, e, ht(e)),
      s = 4,
      l = a.height + e.padding,
      u = l / s,
      h = a.width + 2 * u + e.padding,
      f = [
        { x: u, y: 0 },
        { x: h - u, y: 0 },
        { x: h, y: -l / 2 },
        { x: h - u, y: -l },
        { x: u, y: -l },
        { x: 0, y: -l / 2 }
      ],
      d,
      { cssStyles: p } = e
    if (e.look === 'handDrawn') {
      let m = je.svg(i),
        g = Qe(e, {}),
        y = $De(0, 0, h, l, u),
        v = m.path(y, g)
      ;(d = i.insert(() => v, ':first-child').attr('transform', `translate(${-h / 2}, ${l / 2})`)), p && d.attr('style', p)
    } else d = Ma(i, h, l, f)
    return (
      n && d.attr('style', n),
      (e.width = h),
      (e.height = l),
      Ke(e, d),
      (e.intersect = function (m) {
        return Xe.polygon(e, f, m)
      }),
      i
    )
  }
  var $De,
    DZ = N(() => {
      'use strict'
      Ft()
      Ht()
      zt()
      Wt()
      Iu()
      $De = o(
        (t, e, r, n, i) => [`M${t + i},${e}`, `L${t + r - i},${e}`, `L${t + r},${e - n / 2}`, `L${t + r - i},${e - n}`, `L${t + i},${e - n}`, `L${t},${e - n / 2}`, 'Z'].join(' '),
        'createHexagonPathD'
      )
      o(_Z, 'hexagon')
    })
  async function LZ(t, e) {
    let { labelStyles: r, nodeStyles: n } = Ye(e)
    ;(e.label = ''), (e.labelStyle = r)
    let { shapeSvg: i } = await mt(t, e, ht(e)),
      a = Math.max(30, e?.width ?? 0),
      s = Math.max(30, e?.height ?? 0),
      { cssStyles: l } = e,
      u = je.svg(i),
      h = Qe(e, {})
    e.look !== 'handDrawn' && ((h.roughness = 0), (h.fillStyle = 'solid'))
    let f = [
        { x: 0, y: 0 },
        { x: a, y: 0 },
        { x: 0, y: s },
        { x: a, y: s }
      ],
      d = Xt(f),
      p = u.path(d, h),
      m = i.insert(() => p, ':first-child')
    return (
      m.attr('class', 'basic label-container'),
      l && e.look !== 'handDrawn' && m.selectChildren('path').attr('style', l),
      n && e.look !== 'handDrawn' && m.selectChildren('path').attr('style', n),
      m.attr('transform', `translate(${-a / 2}, ${-s / 2})`),
      Ke(e, m),
      (e.intersect = function (g) {
        return X.info('Pill intersect', e, { points: f }), Xe.polygon(e, f, g)
      }),
      i
    )
  }
  var RZ = N(() => {
    'use strict'
    yt()
    Ft()
    Ht()
    zt()
    Wt()
    o(LZ, 'hourglass')
  })
  async function NZ(t, e, { config: { themeVariables: r, flowchart: n } }) {
    let { labelStyles: i } = Ye(e)
    e.labelStyle = i
    let a = e.assetHeight ?? 48,
      s = e.assetWidth ?? 48,
      l = Math.max(a, s),
      u = n?.wrappingWidth
    e.width = Math.max(l, u ?? 0)
    let { shapeSvg: h, bbox: f, label: d } = await mt(t, e, 'icon-shape default'),
      p = e.pos === 't',
      m = l,
      g = l,
      { nodeBorder: y } = r,
      { stylesMap: v } = bc(e),
      x = -g / 2,
      b = -m / 2,
      T = e.label ? 8 : 0,
      S = je.svg(h),
      w = Qe(e, { stroke: 'none', fill: 'none' })
    e.look !== 'handDrawn' && ((w.roughness = 0), (w.fillStyle = 'solid'))
    let E = S.rectangle(x, b, g, m, w),
      _ = Math.max(g, f.width),
      C = m + f.height + T,
      D = S.rectangle(-_ / 2, -C / 2, _, C, { ...w, fill: 'transparent', stroke: 'none' }),
      O = h.insert(() => E, ':first-child'),
      R = h.insert(() => D)
    if (e.icon) {
      let k = h.append('g')
      k.html(`<g>${await Es(e.icon, { height: l, width: l, fallbackPrefix: '' })}</g>`)
      let L = k.node().getBBox(),
        A = L.width,
        I = L.height,
        M = L.x,
        P = L.y
      k.attr('transform', `translate(${-A / 2 - M},${p ? f.height / 2 + T / 2 - I / 2 - P : -f.height / 2 - T / 2 - I / 2 - P})`),
        k.attr('style', `color: ${v.get('stroke') ?? y};`)
    }
    return (
      d.attr('transform', `translate(${-f.width / 2 - (f.x - (f.left ?? 0))},${p ? -C / 2 : C / 2 - f.height})`),
      O.attr('transform', `translate(0,${p ? f.height / 2 + T / 2 : -f.height / 2 - T / 2})`),
      Ke(e, R),
      (e.intersect = function (k) {
        if ((X.info('iconSquare intersect', e, k), !e.label)) return Xe.rect(e, k)
        let L = e.x ?? 0,
          A = e.y ?? 0,
          I = e.height ?? 0,
          M = []
        return (
          p
            ? (M = [
                { x: L - f.width / 2, y: A - I / 2 },
                { x: L + f.width / 2, y: A - I / 2 },
                { x: L + f.width / 2, y: A - I / 2 + f.height + T },
                { x: L + g / 2, y: A - I / 2 + f.height + T },
                { x: L + g / 2, y: A + I / 2 },
                { x: L - g / 2, y: A + I / 2 },
                { x: L - g / 2, y: A - I / 2 + f.height + T },
                { x: L - f.width / 2, y: A - I / 2 + f.height + T }
              ])
            : (M = [
                { x: L - g / 2, y: A - I / 2 },
                { x: L + g / 2, y: A - I / 2 },
                { x: L + g / 2, y: A - I / 2 + m },
                { x: L + f.width / 2, y: A - I / 2 + m },
                { x: L + f.width / 2 / 2, y: A + I / 2 },
                { x: L - f.width / 2, y: A + I / 2 },
                { x: L - f.width / 2, y: A - I / 2 + m },
                { x: L - g / 2, y: A - I / 2 + m }
              ]),
          Xe.polygon(e, M, k)
        )
      }),
      h
    )
  }
  var MZ = N(() => {
    'use strict'
    Wt()
    yt()
    jl()
    Ht()
    zt()
    Ft()
    o(NZ, 'icon')
  })
  async function IZ(t, e, { config: { themeVariables: r, flowchart: n } }) {
    let { labelStyles: i } = Ye(e)
    e.labelStyle = i
    let a = e.assetHeight ?? 48,
      s = e.assetWidth ?? 48,
      l = Math.max(a, s),
      u = n?.wrappingWidth
    e.width = Math.max(l, u ?? 0)
    let { shapeSvg: h, bbox: f, label: d } = await mt(t, e, 'icon-shape default'),
      p = 20,
      m = e.label ? 8 : 0,
      g = e.pos === 't',
      { nodeBorder: y, mainBkg: v } = r,
      { stylesMap: x } = bc(e),
      b = je.svg(h),
      T = Qe(e, {})
    e.look !== 'handDrawn' && ((T.roughness = 0), (T.fillStyle = 'solid'))
    let S = x.get('fill')
    T.stroke = S ?? v
    let w = h.append('g')
    e.icon && w.html(`<g>${await Es(e.icon, { height: l, width: l, fallbackPrefix: '' })}</g>`)
    let E = w.node().getBBox(),
      _ = E.width,
      C = E.height,
      D = E.x,
      O = E.y,
      R = Math.max(_, C) * Math.SQRT2 + p * 2,
      k = b.circle(0, 0, R, T),
      L = Math.max(R, f.width),
      A = R + f.height + m,
      I = b.rectangle(-L / 2, -A / 2, L, A, { ...T, fill: 'transparent', stroke: 'none' }),
      M = h.insert(() => k, ':first-child'),
      P = h.insert(() => I)
    return (
      w.attr('transform', `translate(${-_ / 2 - D},${g ? f.height / 2 + m / 2 - C / 2 - O : -f.height / 2 - m / 2 - C / 2 - O})`),
      w.attr('style', `color: ${x.get('stroke') ?? y};`),
      d.attr('transform', `translate(${-f.width / 2 - (f.x - (f.left ?? 0))},${g ? -A / 2 : A / 2 - f.height})`),
      M.attr('transform', `translate(0,${g ? f.height / 2 + m / 2 : -f.height / 2 - m / 2})`),
      Ke(e, P),
      (e.intersect = function (B) {
        return X.info('iconSquare intersect', e, B), Xe.rect(e, B)
      }),
      h
    )
  }
  var OZ = N(() => {
    'use strict'
    Wt()
    yt()
    jl()
    Ht()
    zt()
    Ft()
    o(IZ, 'iconCircle')
  })
  var Oa,
    Zh = N(() => {
      'use strict'
      Oa = o(
        (t, e, r, n, i) =>
          [
            'M',
            t + i,
            e,
            'H',
            t + r - i,
            'A',
            i,
            i,
            0,
            0,
            1,
            t + r,
            e + i,
            'V',
            e + n - i,
            'A',
            i,
            i,
            0,
            0,
            1,
            t + r - i,
            e + n,
            'H',
            t + i,
            'A',
            i,
            i,
            0,
            0,
            1,
            t,
            e + n - i,
            'V',
            e + i,
            'A',
            i,
            i,
            0,
            0,
            1,
            t + i,
            e,
            'Z'
          ].join(' '),
        'createRoundedRectPathD'
      )
    })
  async function PZ(t, e, { config: { themeVariables: r, flowchart: n } }) {
    let { labelStyles: i } = Ye(e)
    e.labelStyle = i
    let a = e.assetHeight ?? 48,
      s = e.assetWidth ?? 48,
      l = Math.max(a, s),
      u = n?.wrappingWidth
    e.width = Math.max(l, u ?? 0)
    let { shapeSvg: h, bbox: f, halfPadding: d, label: p } = await mt(t, e, 'icon-shape default'),
      m = e.pos === 't',
      g = l + d * 2,
      y = l + d * 2,
      { nodeBorder: v, mainBkg: x } = r,
      { stylesMap: b } = bc(e),
      T = -y / 2,
      S = -g / 2,
      w = e.label ? 8 : 0,
      E = je.svg(h),
      _ = Qe(e, {})
    e.look !== 'handDrawn' && ((_.roughness = 0), (_.fillStyle = 'solid'))
    let C = b.get('fill')
    _.stroke = C ?? x
    let D = E.path(Oa(T, S, y, g, 5), _),
      O = Math.max(y, f.width),
      R = g + f.height + w,
      k = E.rectangle(-O / 2, -R / 2, O, R, { ..._, fill: 'transparent', stroke: 'none' }),
      L = h.insert(() => D, ':first-child').attr('class', 'icon-shape2'),
      A = h.insert(() => k)
    if (e.icon) {
      let I = h.append('g')
      I.html(`<g>${await Es(e.icon, { height: l, width: l, fallbackPrefix: '' })}</g>`)
      let M = I.node().getBBox(),
        P = M.width,
        B = M.height,
        F = M.x,
        z = M.y
      I.attr('transform', `translate(${-P / 2 - F},${m ? f.height / 2 + w / 2 - B / 2 - z : -f.height / 2 - w / 2 - B / 2 - z})`),
        I.attr('style', `color: ${b.get('stroke') ?? v};`)
    }
    return (
      p.attr('transform', `translate(${-f.width / 2 - (f.x - (f.left ?? 0))},${m ? -R / 2 : R / 2 - f.height})`),
      L.attr('transform', `translate(0,${m ? f.height / 2 + w / 2 : -f.height / 2 - w / 2})`),
      Ke(e, A),
      (e.intersect = function (I) {
        if ((X.info('iconSquare intersect', e, I), !e.label)) return Xe.rect(e, I)
        let M = e.x ?? 0,
          P = e.y ?? 0,
          B = e.height ?? 0,
          F = []
        return (
          m
            ? (F = [
                { x: M - f.width / 2, y: P - B / 2 },
                { x: M + f.width / 2, y: P - B / 2 },
                { x: M + f.width / 2, y: P - B / 2 + f.height + w },
                { x: M + y / 2, y: P - B / 2 + f.height + w },
                { x: M + y / 2, y: P + B / 2 },
                { x: M - y / 2, y: P + B / 2 },
                { x: M - y / 2, y: P - B / 2 + f.height + w },
                { x: M - f.width / 2, y: P - B / 2 + f.height + w }
              ])
            : (F = [
                { x: M - y / 2, y: P - B / 2 },
                { x: M + y / 2, y: P - B / 2 },
                { x: M + y / 2, y: P - B / 2 + g },
                { x: M + f.width / 2, y: P - B / 2 + g },
                { x: M + f.width / 2 / 2, y: P + B / 2 },
                { x: M - f.width / 2, y: P + B / 2 },
                { x: M - f.width / 2, y: P - B / 2 + g },
                { x: M - y / 2, y: P - B / 2 + g }
              ]),
          Xe.polygon(e, F, I)
        )
      }),
      h
    )
  }
  var BZ = N(() => {
    'use strict'
    Wt()
    yt()
    jl()
    Ht()
    zt()
    Zh()
    Ft()
    o(PZ, 'iconRounded')
  })
  async function FZ(t, e, { config: { themeVariables: r, flowchart: n } }) {
    let { labelStyles: i } = Ye(e)
    e.labelStyle = i
    let a = e.assetHeight ?? 48,
      s = e.assetWidth ?? 48,
      l = Math.max(a, s),
      u = n?.wrappingWidth
    e.width = Math.max(l, u ?? 0)
    let { shapeSvg: h, bbox: f, halfPadding: d, label: p } = await mt(t, e, 'icon-shape default'),
      m = e.pos === 't',
      g = l + d * 2,
      y = l + d * 2,
      { nodeBorder: v, mainBkg: x } = r,
      { stylesMap: b } = bc(e),
      T = -y / 2,
      S = -g / 2,
      w = e.label ? 8 : 0,
      E = je.svg(h),
      _ = Qe(e, {})
    e.look !== 'handDrawn' && ((_.roughness = 0), (_.fillStyle = 'solid'))
    let C = b.get('fill')
    _.stroke = C ?? x
    let D = E.path(Oa(T, S, y, g, 0.1), _),
      O = Math.max(y, f.width),
      R = g + f.height + w,
      k = E.rectangle(-O / 2, -R / 2, O, R, { ..._, fill: 'transparent', stroke: 'none' }),
      L = h.insert(() => D, ':first-child'),
      A = h.insert(() => k)
    if (e.icon) {
      let I = h.append('g')
      I.html(`<g>${await Es(e.icon, { height: l, width: l, fallbackPrefix: '' })}</g>`)
      let M = I.node().getBBox(),
        P = M.width,
        B = M.height,
        F = M.x,
        z = M.y
      I.attr('transform', `translate(${-P / 2 - F},${m ? f.height / 2 + w / 2 - B / 2 - z : -f.height / 2 - w / 2 - B / 2 - z})`),
        I.attr('style', `color: ${b.get('stroke') ?? v};`)
    }
    return (
      p.attr('transform', `translate(${-f.width / 2 - (f.x - (f.left ?? 0))},${m ? -R / 2 : R / 2 - f.height})`),
      L.attr('transform', `translate(0,${m ? f.height / 2 + w / 2 : -f.height / 2 - w / 2})`),
      Ke(e, A),
      (e.intersect = function (I) {
        if ((X.info('iconSquare intersect', e, I), !e.label)) return Xe.rect(e, I)
        let M = e.x ?? 0,
          P = e.y ?? 0,
          B = e.height ?? 0,
          F = []
        return (
          m
            ? (F = [
                { x: M - f.width / 2, y: P - B / 2 },
                { x: M + f.width / 2, y: P - B / 2 },
                { x: M + f.width / 2, y: P - B / 2 + f.height + w },
                { x: M + y / 2, y: P - B / 2 + f.height + w },
                { x: M + y / 2, y: P + B / 2 },
                { x: M - y / 2, y: P + B / 2 },
                { x: M - y / 2, y: P - B / 2 + f.height + w },
                { x: M - f.width / 2, y: P - B / 2 + f.height + w }
              ])
            : (F = [
                { x: M - y / 2, y: P - B / 2 },
                { x: M + y / 2, y: P - B / 2 },
                { x: M + y / 2, y: P - B / 2 + g },
                { x: M + f.width / 2, y: P - B / 2 + g },
                { x: M + f.width / 2 / 2, y: P + B / 2 },
                { x: M - f.width / 2, y: P + B / 2 },
                { x: M - f.width / 2, y: P - B / 2 + g },
                { x: M - y / 2, y: P - B / 2 + g }
              ]),
          Xe.polygon(e, F, I)
        )
      }),
      h
    )
  }
  var $Z = N(() => {
    'use strict'
    Wt()
    yt()
    jl()
    Ht()
    Zh()
    zt()
    Ft()
    o(FZ, 'iconSquare')
  })
  async function zZ(t, e, { config: { flowchart: r } }) {
    let n = new Image()
    ;(n.src = e?.img ?? ''), await n.decode()
    let i = Number(n.naturalWidth.toString().replace('px', '')),
      a = Number(n.naturalHeight.toString().replace('px', ''))
    e.imageAspectRatio = i / a
    let { labelStyles: s } = Ye(e)
    e.labelStyle = s
    let l = r?.wrappingWidth
    e.defaultWidth = r?.wrappingWidth
    let u = Math.max(e.label ? l ?? 0 : 0, e?.assetWidth ?? i),
      h = e.constraint === 'on' && e?.assetHeight ? e.assetHeight * e.imageAspectRatio : u,
      f = e.constraint === 'on' ? h / e.imageAspectRatio : e?.assetHeight ?? a
    e.width = Math.max(h, l ?? 0)
    let { shapeSvg: d, bbox: p, label: m } = await mt(t, e, 'image-shape default'),
      g = e.pos === 't',
      y = -h / 2,
      v = -f / 2,
      x = e.label ? 8 : 0,
      b = je.svg(d),
      T = Qe(e, {})
    e.look !== 'handDrawn' && ((T.roughness = 0), (T.fillStyle = 'solid'))
    let S = b.rectangle(y, v, h, f, T),
      w = Math.max(h, p.width),
      E = f + p.height + x,
      _ = b.rectangle(-w / 2, -E / 2, w, E, { ...T, fill: 'none', stroke: 'none' }),
      C = d.insert(() => S, ':first-child'),
      D = d.insert(() => _)
    if (e.img) {
      let O = d.append('image')
      O.attr('href', e.img), O.attr('width', h), O.attr('height', f), O.attr('preserveAspectRatio', 'none'), O.attr('transform', `translate(${-h / 2},${g ? E / 2 - f : -E / 2})`)
    }
    return (
      m.attr('transform', `translate(${-p.width / 2 - (p.x - (p.left ?? 0))},${g ? -f / 2 - p.height / 2 - x / 2 : f / 2 - p.height / 2 + x / 2})`),
      C.attr('transform', `translate(0,${g ? p.height / 2 + x / 2 : -p.height / 2 - x / 2})`),
      Ke(e, D),
      (e.intersect = function (O) {
        if ((X.info('iconSquare intersect', e, O), !e.label)) return Xe.rect(e, O)
        let R = e.x ?? 0,
          k = e.y ?? 0,
          L = e.height ?? 0,
          A = []
        return (
          g
            ? (A = [
                { x: R - p.width / 2, y: k - L / 2 },
                { x: R + p.width / 2, y: k - L / 2 },
                { x: R + p.width / 2, y: k - L / 2 + p.height + x },
                { x: R + h / 2, y: k - L / 2 + p.height + x },
                { x: R + h / 2, y: k + L / 2 },
                { x: R - h / 2, y: k + L / 2 },
                { x: R - h / 2, y: k - L / 2 + p.height + x },
                { x: R - p.width / 2, y: k - L / 2 + p.height + x }
              ])
            : (A = [
                { x: R - h / 2, y: k - L / 2 },
                { x: R + h / 2, y: k - L / 2 },
                { x: R + h / 2, y: k - L / 2 + f },
                { x: R + p.width / 2, y: k - L / 2 + f },
                { x: R + p.width / 2 / 2, y: k + L / 2 },
                { x: R - p.width / 2, y: k + L / 2 },
                { x: R - p.width / 2, y: k - L / 2 + f },
                { x: R - h / 2, y: k - L / 2 + f }
              ]),
          Xe.polygon(e, A, O)
        )
      }),
      d
    )
  }
  var GZ = N(() => {
    'use strict'
    Wt()
    yt()
    Ht()
    zt()
    Ft()
    o(zZ, 'imageSquare')
  })
  async function VZ(t, e) {
    let { labelStyles: r, nodeStyles: n } = Ye(e)
    e.labelStyle = r
    let { shapeSvg: i, bbox: a } = await mt(t, e, ht(e)),
      s = Math.max(a.width + (e.padding ?? 0) * 2, e?.width ?? 0),
      l = Math.max(a.height + (e.padding ?? 0) * 2, e?.height ?? 0),
      u = [
        { x: 0, y: 0 },
        { x: s, y: 0 },
        { x: s + (3 * l) / 6, y: -l },
        { x: (-3 * l) / 6, y: -l }
      ],
      h,
      { cssStyles: f } = e
    if (e.look === 'handDrawn') {
      let d = je.svg(i),
        p = Qe(e, {}),
        m = Xt(u),
        g = d.path(m, p)
      ;(h = i.insert(() => g, ':first-child').attr('transform', `translate(${-s / 2}, ${l / 2})`)), f && h.attr('style', f)
    } else h = Ma(i, s, l, u)
    return (
      n && h.attr('style', n),
      (e.width = s),
      (e.height = l),
      Ke(e, h),
      (e.intersect = function (d) {
        return Xe.polygon(e, u, d)
      }),
      i
    )
  }
  var UZ = N(() => {
    'use strict'
    Ft()
    Ht()
    zt()
    Wt()
    Iu()
    o(VZ, 'inv_trapezoid')
  })
  async function Ou(t, e, r) {
    let { labelStyles: n, nodeStyles: i } = Ye(e)
    e.labelStyle = n
    let { shapeSvg: a, bbox: s } = await mt(t, e, ht(e)),
      l = Math.max(s.width + r.labelPaddingX * 2, e?.width || 0),
      u = Math.max(s.height + r.labelPaddingY * 2, e?.height || 0),
      h = -l / 2,
      f = -u / 2,
      d,
      { rx: p, ry: m } = e,
      { cssStyles: g } = e
    if ((r?.rx && r.ry && ((p = r.rx), (m = r.ry)), e.look === 'handDrawn')) {
      let y = je.svg(a),
        v = Qe(e, {}),
        x = p || m ? y.path(Oa(h, f, l, u, p || 0), v) : y.rectangle(h, f, l, u, v)
      ;(d = a.insert(() => x, ':first-child')), d.attr('class', 'basic label-container').attr('style', zn(g))
    } else
      (d = a.insert('rect', ':first-child')),
        d.attr('class', 'basic label-container').attr('style', i).attr('rx', zn(p)).attr('ry', zn(m)).attr('x', h).attr('y', f).attr('width', l).attr('height', u)
    return (
      Ke(e, d),
      (e.intersect = function (y) {
        return Xe.rect(e, y)
      }),
      a
    )
  }
  var Em = N(() => {
    'use strict'
    Ft()
    Ht()
    Zh()
    zt()
    Wt()
    er()
    o(Ou, 'drawRect')
  })
  async function HZ(t, e) {
    let { shapeSvg: r, bbox: n, label: i } = await mt(t, e, 'label'),
      a = r.insert('rect', ':first-child')
    return (
      a.attr('width', 0.1).attr('height', 0.1),
      r.attr('class', 'label edgeLabel'),
      i.attr('transform', `translate(${-(n.width / 2) - (n.x - (n.left ?? 0))}, ${-(n.height / 2) - (n.y - (n.top ?? 0))})`),
      Ke(e, a),
      (e.intersect = function (u) {
        return Xe.rect(e, u)
      }),
      r
    )
  }
  var WZ = N(() => {
    'use strict'
    Em()
    Ft()
    Ht()
    o(HZ, 'labelRect')
  })
  async function qZ(t, e) {
    let { labelStyles: r, nodeStyles: n } = Ye(e)
    e.labelStyle = r
    let { shapeSvg: i, bbox: a } = await mt(t, e, ht(e)),
      s = Math.max(a.width + (e.padding ?? 0), e?.width ?? 0),
      l = Math.max(a.height + (e.padding ?? 0), e?.height ?? 0),
      u = [
        { x: 0, y: 0 },
        { x: s + (3 * l) / 6, y: 0 },
        { x: s, y: -l },
        { x: -(3 * l) / 6, y: -l }
      ],
      h,
      { cssStyles: f } = e
    if (e.look === 'handDrawn') {
      let d = je.svg(i),
        p = Qe(e, {}),
        m = Xt(u),
        g = d.path(m, p)
      ;(h = i.insert(() => g, ':first-child').attr('transform', `translate(${-s / 2}, ${l / 2})`)), f && h.attr('style', f)
    } else h = Ma(i, s, l, u)
    return (
      n && h.attr('style', n),
      (e.width = s),
      (e.height = l),
      Ke(e, h),
      (e.intersect = function (d) {
        return Xe.polygon(e, u, d)
      }),
      i
    )
  }
  var YZ = N(() => {
    'use strict'
    Ft()
    Ht()
    zt()
    Wt()
    Iu()
    o(qZ, 'lean_left')
  })
  async function XZ(t, e) {
    let { labelStyles: r, nodeStyles: n } = Ye(e)
    e.labelStyle = r
    let { shapeSvg: i, bbox: a } = await mt(t, e, ht(e)),
      s = Math.max(a.width + (e.padding ?? 0), e?.width ?? 0),
      l = Math.max(a.height + (e.padding ?? 0), e?.height ?? 0),
      u = [
        { x: (-3 * l) / 6, y: 0 },
        { x: s, y: 0 },
        { x: s + (3 * l) / 6, y: -l },
        { x: 0, y: -l }
      ],
      h,
      { cssStyles: f } = e
    if (e.look === 'handDrawn') {
      let d = je.svg(i),
        p = Qe(e, {}),
        m = Xt(u),
        g = d.path(m, p)
      ;(h = i.insert(() => g, ':first-child').attr('transform', `translate(${-s / 2}, ${l / 2})`)), f && h.attr('style', f)
    } else h = Ma(i, s, l, u)
    return (
      n && h.attr('style', n),
      (e.width = s),
      (e.height = l),
      Ke(e, h),
      (e.intersect = function (d) {
        return Xe.polygon(e, u, d)
      }),
      i
    )
  }
  var jZ = N(() => {
    'use strict'
    Ft()
    Ht()
    zt()
    Wt()
    Iu()
    o(XZ, 'lean_right')
  })
  function KZ(t, e) {
    let { labelStyles: r, nodeStyles: n } = Ye(e)
    ;(e.label = ''), (e.labelStyle = r)
    let i = t
        .insert('g')
        .attr('class', ht(e))
        .attr('id', e.domId ?? e.id),
      { cssStyles: a } = e,
      s = Math.max(35, e?.width ?? 0),
      l = Math.max(35, e?.height ?? 0),
      u = 7,
      h = [
        { x: s, y: 0 },
        { x: 0, y: l + u / 2 },
        { x: s - 2 * u, y: l + u / 2 },
        { x: 0, y: 2 * l },
        { x: s, y: l - u / 2 },
        { x: 2 * u, y: l - u / 2 }
      ],
      f = je.svg(i),
      d = Qe(e, {})
    e.look !== 'handDrawn' && ((d.roughness = 0), (d.fillStyle = 'solid'))
    let p = Xt(h),
      m = f.path(p, d),
      g = i.insert(() => m, ':first-child')
    return (
      a && e.look !== 'handDrawn' && g.selectAll('path').attr('style', a),
      n && e.look !== 'handDrawn' && g.selectAll('path').attr('style', n),
      g.attr('transform', `translate(-${s / 2},${-l})`),
      Ke(e, g),
      (e.intersect = function (y) {
        return X.info('lightningBolt intersect', e, y), Xe.polygon(e, h, y)
      }),
      i
    )
  }
  var QZ = N(() => {
    'use strict'
    yt()
    Ft()
    zt()
    Wt()
    Ht()
    Ft()
    o(KZ, 'lightningBolt')
  })
  async function ZZ(t, e) {
    let { labelStyles: r, nodeStyles: n } = Ye(e)
    e.labelStyle = r
    let { shapeSvg: i, bbox: a, label: s } = await mt(t, e, ht(e)),
      l = Math.max(a.width + (e.padding ?? 0), e.width ?? 0),
      u = l / 2,
      h = u / (2.5 + l / 50),
      f = Math.max(a.height + h + (e.padding ?? 0), e.height ?? 0),
      d = f * 0.1,
      p,
      { cssStyles: m } = e
    if (e.look === 'handDrawn') {
      let g = je.svg(i),
        y = GDe(0, 0, l, f, u, h, d),
        v = VDe(0, h, l, f, u, h),
        x = Qe(e, {}),
        b = g.path(y, x),
        T = g.path(v, x)
      i.insert(() => T, ':first-child').attr('class', 'line'), (p = i.insert(() => b, ':first-child')), p.attr('class', 'basic label-container'), m && p.attr('style', m)
    } else {
      let g = zDe(0, 0, l, f, u, h, d)
      p = i.insert('path', ':first-child').attr('d', g).attr('class', 'basic label-container').attr('style', zn(m)).attr('style', n)
    }
    return (
      p.attr('label-offset-y', h),
      p.attr('transform', `translate(${-l / 2}, ${-(f / 2 + h)})`),
      Ke(e, p),
      s.attr('transform', `translate(${-(a.width / 2) - (a.x - (a.left ?? 0))}, ${-(a.height / 2) + h - (a.y - (a.top ?? 0))})`),
      (e.intersect = function (g) {
        let y = Xe.rect(e, g),
          v = y.x - (e.x ?? 0)
        if (u != 0 && (Math.abs(v) < (e.width ?? 0) / 2 || (Math.abs(v) == (e.width ?? 0) / 2 && Math.abs(y.y - (e.y ?? 0)) > (e.height ?? 0) / 2 - h))) {
          let x = h * h * (1 - (v * v) / (u * u))
          x > 0 && (x = Math.sqrt(x)), (x = h - x), g.y - (e.y ?? 0) > 0 && (x = -x), (y.y += x)
        }
        return y
      }),
      i
    )
  }
  var zDe,
    GDe,
    VDe,
    JZ = N(() => {
      'use strict'
      Ft()
      Ht()
      zt()
      Wt()
      er()
      ;(zDe = o(
        (t, e, r, n, i, a, s) =>
          [
            `M${t},${e + a}`,
            `a${i},${a} 0,0,0 ${r},0`,
            `a${i},${a} 0,0,0 ${-r},0`,
            `l0,${n}`,
            `a${i},${a} 0,0,0 ${r},0`,
            `l0,${-n}`,
            `M${t},${e + a + s}`,
            `a${i},${a} 0,0,0 ${r},0`
          ].join(' '),
        'createCylinderPathD'
      )),
        (GDe = o(
          (t, e, r, n, i, a, s) =>
            [
              `M${t},${e + a}`,
              `M${t + r},${e + a}`,
              `a${i},${a} 0,0,0 ${-r},0`,
              `l0,${n}`,
              `a${i},${a} 0,0,0 ${r},0`,
              `l0,${-n}`,
              `M${t},${e + a + s}`,
              `a${i},${a} 0,0,0 ${r},0`
            ].join(' '),
          'createOuterCylinderPathD'
        )),
        (VDe = o((t, e, r, n, i, a) => [`M${t - r / 2},${-n / 2}`, `a${i},${a} 0,0,0 ${r},0`].join(' '), 'createInnerCylinderPathD'))
      o(ZZ, 'linedCylinder')
    })
  async function eJ(t, e) {
    let { labelStyles: r, nodeStyles: n } = Ye(e)
    e.labelStyle = r
    let { shapeSvg: i, bbox: a, label: s } = await mt(t, e, ht(e)),
      l = Math.max(a.width + (e.padding ?? 0) * 2, e?.width ?? 0),
      u = Math.max(a.height + (e.padding ?? 0) * 2, e?.height ?? 0),
      h = u / 4,
      f = u + h,
      { cssStyles: d } = e,
      p = je.svg(i),
      m = Qe(e, {})
    e.look !== 'handDrawn' && ((m.roughness = 0), (m.fillStyle = 'solid'))
    let g = [
        { x: -l / 2 - (l / 2) * 0.1, y: -f / 2 },
        { x: -l / 2 - (l / 2) * 0.1, y: f / 2 },
        ...Go(-l / 2 - (l / 2) * 0.1, f / 2, l / 2 + (l / 2) * 0.1, f / 2, h, 0.8),
        { x: l / 2 + (l / 2) * 0.1, y: -f / 2 },
        { x: -l / 2 - (l / 2) * 0.1, y: -f / 2 },
        { x: -l / 2, y: -f / 2 },
        { x: -l / 2, y: (f / 2) * 1.1 },
        { x: -l / 2, y: -f / 2 }
      ],
      y = p.polygon(
        g.map(x => [x.x, x.y]),
        m
      ),
      v = i.insert(() => y, ':first-child')
    return (
      v.attr('class', 'basic label-container'),
      d && e.look !== 'handDrawn' && v.selectAll('path').attr('style', d),
      n && e.look !== 'handDrawn' && v.selectAll('path').attr('style', n),
      v.attr('transform', `translate(0,${-h / 2})`),
      s.attr('transform', `translate(${-l / 2 + (e.padding ?? 0) + ((l / 2) * 0.1) / 2 - (a.x - (a.left ?? 0))},${-u / 2 + (e.padding ?? 0) - h / 2 - (a.y - (a.top ?? 0))})`),
      Ke(e, v),
      (e.intersect = function (x) {
        return Xe.polygon(e, g, x)
      }),
      i
    )
  }
  var tJ = N(() => {
    'use strict'
    Ft()
    Ht()
    Wt()
    zt()
    o(eJ, 'linedWaveEdgedRect')
  })
  async function rJ(t, e) {
    let { labelStyles: r, nodeStyles: n } = Ye(e)
    e.labelStyle = r
    let { shapeSvg: i, bbox: a, label: s } = await mt(t, e, ht(e)),
      l = Math.max(a.width + (e.padding ?? 0) * 2, e?.width ?? 0),
      u = Math.max(a.height + (e.padding ?? 0) * 2, e?.height ?? 0),
      h = 5,
      f = -l / 2,
      d = -u / 2,
      { cssStyles: p } = e,
      m = je.svg(i),
      g = Qe(e, {}),
      y = [
        { x: f - h, y: d + h },
        { x: f - h, y: d + u + h },
        { x: f + l - h, y: d + u + h },
        { x: f + l - h, y: d + u },
        { x: f + l, y: d + u },
        { x: f + l, y: d + u - h },
        { x: f + l + h, y: d + u - h },
        { x: f + l + h, y: d - h },
        { x: f + h, y: d - h },
        { x: f + h, y: d },
        { x: f, y: d },
        { x: f, y: d + h }
      ],
      v = [
        { x: f, y: d + h },
        { x: f + l - h, y: d + h },
        { x: f + l - h, y: d + u },
        { x: f + l, y: d + u },
        { x: f + l, y: d },
        { x: f, y: d }
      ]
    e.look !== 'handDrawn' && ((g.roughness = 0), (g.fillStyle = 'solid'))
    let x = Xt(y),
      b = m.path(x, g),
      T = Xt(v),
      S = m.path(T, { ...g, fill: 'none' }),
      w = i.insert(() => S, ':first-child')
    return (
      w.insert(() => b, ':first-child'),
      w.attr('class', 'basic label-container'),
      p && e.look !== 'handDrawn' && w.selectAll('path').attr('style', p),
      n && e.look !== 'handDrawn' && w.selectAll('path').attr('style', n),
      s.attr('transform', `translate(${-(a.width / 2) - h - (a.x - (a.left ?? 0))}, ${-(a.height / 2) + h - (a.y - (a.top ?? 0))})`),
      Ke(e, w),
      (e.intersect = function (E) {
        return Xe.polygon(e, y, E)
      }),
      i
    )
  }
  var nJ = N(() => {
    'use strict'
    Ft()
    zt()
    Wt()
    Ht()
    o(rJ, 'multiRect')
  })
  async function iJ(t, e) {
    let { labelStyles: r, nodeStyles: n } = Ye(e)
    e.labelStyle = r
    let { shapeSvg: i, bbox: a, label: s } = await mt(t, e, ht(e)),
      l = Math.max(a.width + (e.padding ?? 0) * 2, e?.width ?? 0),
      u = Math.max(a.height + (e.padding ?? 0) * 2, e?.height ?? 0),
      h = u / 4,
      f = u + h,
      d = -l / 2,
      p = -f / 2,
      m = 5,
      { cssStyles: g } = e,
      y = Go(d - m, p + f + m, d + l - m, p + f + m, h, 0.8),
      v = y?.[y.length - 1],
      x = [
        { x: d - m, y: p + m },
        { x: d - m, y: p + f + m },
        ...y,
        { x: d + l - m, y: v.y - m },
        { x: d + l, y: v.y - m },
        { x: d + l, y: v.y - 2 * m },
        { x: d + l + m, y: v.y - 2 * m },
        { x: d + l + m, y: p - m },
        { x: d + m, y: p - m },
        { x: d + m, y: p },
        { x: d, y: p },
        { x: d, y: p + m }
      ],
      b = [
        { x: d, y: p + m },
        { x: d + l - m, y: p + m },
        { x: d + l - m, y: v.y - m },
        { x: d + l, y: v.y - m },
        { x: d + l, y: p },
        { x: d, y: p }
      ],
      T = je.svg(i),
      S = Qe(e, {})
    e.look !== 'handDrawn' && ((S.roughness = 0), (S.fillStyle = 'solid'))
    let w = Xt(x),
      E = T.path(w, S),
      _ = Xt(b),
      C = T.path(_, S),
      D = i.insert(() => E, ':first-child')
    return (
      D.insert(() => C),
      D.attr('class', 'basic label-container'),
      g && e.look !== 'handDrawn' && D.selectAll('path').attr('style', g),
      n && e.look !== 'handDrawn' && D.selectAll('path').attr('style', n),
      D.attr('transform', `translate(0,${-h / 2})`),
      s.attr('transform', `translate(${-(a.width / 2) - m - (a.x - (a.left ?? 0))}, ${-(a.height / 2) + m - h / 2 - (a.y - (a.top ?? 0))})`),
      Ke(e, D),
      (e.intersect = function (O) {
        return Xe.polygon(e, x, O)
      }),
      i
    )
  }
  var aJ = N(() => {
    'use strict'
    Ft()
    Ht()
    Wt()
    zt()
    o(iJ, 'multiWaveEdgedRectangle')
  })
  async function sJ(t, e, { config: { themeVariables: r } }) {
    let { labelStyles: n, nodeStyles: i } = Ye(e)
    ;(e.labelStyle = n), e.useHtmlLabels || tr().flowchart?.htmlLabels !== !1 || (e.centerLabel = !0)
    let { shapeSvg: s, bbox: l, label: u } = await mt(t, e, ht(e)),
      h = Math.max(l.width + (e.padding ?? 0) * 2, e?.width ?? 0),
      f = Math.max(l.height + (e.padding ?? 0) * 2, e?.height ?? 0),
      d = -h / 2,
      p = -f / 2,
      { cssStyles: m } = e,
      g = je.svg(s),
      y = Qe(e, { fill: r.noteBkgColor, stroke: r.noteBorderColor })
    e.look !== 'handDrawn' && ((y.roughness = 0), (y.fillStyle = 'solid'))
    let v = g.rectangle(d, p, h, f, y),
      x = s.insert(() => v, ':first-child')
    return (
      x.attr('class', 'basic label-container'),
      m && e.look !== 'handDrawn' && x.selectAll('path').attr('style', m),
      i && e.look !== 'handDrawn' && x.selectAll('path').attr('style', i),
      u.attr('transform', `translate(${-l.width / 2 - (l.x - (l.left ?? 0))}, ${-(l.height / 2) - (l.y - (l.top ?? 0))})`),
      Ke(e, x),
      (e.intersect = function (b) {
        return Xe.rect(e, b)
      }),
      s
    )
  }
  var oJ = N(() => {
    'use strict'
    Wt()
    Ht()
    zt()
    Ft()
    mi()
    o(sJ, 'note')
  })
  async function lJ(t, e) {
    let { labelStyles: r, nodeStyles: n } = Ye(e)
    e.labelStyle = r
    let { shapeSvg: i, bbox: a } = await mt(t, e, ht(e)),
      s = a.width + e.padding,
      l = a.height + e.padding,
      u = s + l,
      h = [
        { x: u / 2, y: 0 },
        { x: u, y: -u / 2 },
        { x: u / 2, y: -u },
        { x: 0, y: -u / 2 }
      ],
      f,
      { cssStyles: d } = e
    if (e.look === 'handDrawn') {
      let p = je.svg(i),
        m = Qe(e, {}),
        g = UDe(0, 0, u),
        y = p.path(g, m)
      ;(f = i.insert(() => y, ':first-child').attr('transform', `translate(${-u / 2}, ${u / 2})`)), d && f.attr('style', d)
    } else f = Ma(i, u, u, h)
    return (
      n && f.attr('style', n),
      Ke(e, f),
      (e.intersect = function (p) {
        return (
          X.debug(
            `APA12 Intersect called SPLIT
point:`,
            p,
            `
node:
`,
            e,
            `
res:`,
            Xe.polygon(e, h, p)
          ),
          Xe.polygon(e, h, p)
        )
      }),
      i
    )
  }
  var UDe,
    cJ = N(() => {
      'use strict'
      yt()
      Ft()
      Ht()
      zt()
      Wt()
      Iu()
      UDe = o((t, e, r) => [`M${t + r / 2},${e}`, `L${t + r},${e - r / 2}`, `L${t + r / 2},${e - r}`, `L${t},${e - r / 2}`, 'Z'].join(' '), 'createDecisionBoxPathD')
      o(lJ, 'question')
    })
  async function uJ(t, e) {
    let { labelStyles: r, nodeStyles: n } = Ye(e)
    e.labelStyle = r
    let { shapeSvg: i, bbox: a, label: s } = await mt(t, e, ht(e)),
      l = Math.max(a.width + (e.padding ?? 0), e?.width ?? 0),
      u = Math.max(a.height + (e.padding ?? 0), e?.height ?? 0),
      h = -l / 2,
      f = -u / 2,
      d = f / 2,
      p = [
        { x: h + d, y: f },
        { x: h, y: 0 },
        { x: h + d, y: -f },
        { x: -h, y: -f },
        { x: -h, y: f }
      ],
      { cssStyles: m } = e,
      g = je.svg(i),
      y = Qe(e, {})
    e.look !== 'handDrawn' && ((y.roughness = 0), (y.fillStyle = 'solid'))
    let v = Xt(p),
      x = g.path(v, y),
      b = i.insert(() => x, ':first-child')
    return (
      b.attr('class', 'basic label-container'),
      m && e.look !== 'handDrawn' && b.selectAll('path').attr('style', m),
      n && e.look !== 'handDrawn' && b.selectAll('path').attr('style', n),
      b.attr('transform', `translate(${-d / 2},0)`),
      s.attr('transform', `translate(${-d / 2 - a.width / 2 - (a.x - (a.left ?? 0))}, ${-(a.height / 2) - (a.y - (a.top ?? 0))})`),
      Ke(e, b),
      (e.intersect = function (T) {
        return Xe.polygon(e, p, T)
      }),
      i
    )
  }
  var hJ = N(() => {
    'use strict'
    Ft()
    Ht()
    zt()
    Wt()
    o(uJ, 'rect_left_inv_arrow')
  })
  function HDe(t, e) {
    e && t.attr('style', e)
  }
  async function WDe(t) {
    let e = Ge(document.createElementNS('http://www.w3.org/2000/svg', 'foreignObject')),
      r = e.append('xhtml:div'),
      n = t.label
    t.label &&
      yi(t.label) &&
      (n = await Th(
        t.label.replace(
          Ze.lineBreakRegex,
          `
`
        ),
        me()
      ))
    let i = t.isNode ? 'nodeLabel' : 'edgeLabel'
    return (
      r.html('<span class="' + i + '" ' + (t.labelStyle ? 'style="' + t.labelStyle + '"' : '') + '>' + n + '</span>'),
      HDe(r, t.labelStyle),
      r.style('display', 'inline-block'),
      r.style('padding-right', '1px'),
      r.style('white-space', 'nowrap'),
      r.attr('xmlns', 'http://www.w3.org/1999/xhtml'),
      e.node()
    )
  }
  var qDe,
    Tc,
    rw = N(() => {
      'use strict'
      fr()
      yt()
      Gt()
      pr()
      er()
      o(HDe, 'applyStyle')
      o(WDe, 'addHtmlLabel')
      ;(qDe = o(async (t, e, r, n) => {
        let i = t || ''
        if ((typeof i == 'object' && (i = i[0]), dr(me().flowchart.htmlLabels))) {
          ;(i = i.replace(/\\n|\n/g, '<br />')), X.info('vertexText' + i)
          let a = { isNode: n, label: na(i).replace(/fa[blrs]?:fa-[\w-]+/g, l => `<i class='${l.replace(':', ' ')}'></i>`), labelStyle: e && e.replace('fill:', 'color:') }
          return await WDe(a)
        } else {
          let a = document.createElementNS('http://www.w3.org/2000/svg', 'text')
          a.setAttribute('style', e.replace('color:', 'fill:'))
          let s = []
          typeof i == 'string' ? (s = i.split(/\\n|\n|<br\s*\/?>/gi)) : Array.isArray(i) ? (s = i) : (s = [])
          for (let l of s) {
            let u = document.createElementNS('http://www.w3.org/2000/svg', 'tspan')
            u.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve'),
              u.setAttribute('dy', '1em'),
              u.setAttribute('x', '0'),
              r ? u.setAttribute('class', 'title-row') : u.setAttribute('class', 'row'),
              (u.textContent = l.trim()),
              a.appendChild(u)
          }
          return a
        }
      }, 'createLabel')),
        (Tc = qDe)
    })
  async function fJ(t, e) {
    let { labelStyles: r, nodeStyles: n } = Ye(e)
    e.labelStyle = r
    let i
    e.cssClasses ? (i = 'node ' + e.cssClasses) : (i = 'node default')
    let a = t
        .insert('g')
        .attr('class', i)
        .attr('id', e.domId || e.id),
      s = a.insert('g'),
      l = a.insert('g').attr('class', 'label').attr('style', n),
      u = e.description,
      h = e.label,
      f = l.node().appendChild(await Tc(h, e.labelStyle, !0, !0)),
      d = { width: 0, height: 0 }
    if (dr(me()?.flowchart?.htmlLabels)) {
      let C = f.children[0],
        D = Ge(f)
      ;(d = C.getBoundingClientRect()), D.attr('width', d.width), D.attr('height', d.height)
    }
    X.info('Text 2', u)
    let p = u || [],
      m = f.getBBox(),
      g = l.node().appendChild(await Tc(p.join ? p.join('<br/>') : p, e.labelStyle, !0, !0)),
      y = g.children[0],
      v = Ge(g)
    ;(d = y.getBoundingClientRect()), v.attr('width', d.width), v.attr('height', d.height)
    let x = (e.padding || 0) / 2
    Ge(g).attr('transform', 'translate( ' + (d.width > m.width ? 0 : (m.width - d.width) / 2) + ', ' + (m.height + x + 5) + ')'),
      Ge(f).attr('transform', 'translate( ' + (d.width < m.width ? 0 : -(m.width - d.width) / 2) + ', 0)'),
      (d = l.node().getBBox()),
      l.attr('transform', 'translate(' + -d.width / 2 + ', ' + (-d.height / 2 - x + 3) + ')')
    let b = d.width + (e.padding || 0),
      T = d.height + (e.padding || 0),
      S = -d.width / 2 - x,
      w = -d.height / 2 - x,
      E,
      _
    if (e.look === 'handDrawn') {
      let C = je.svg(a),
        D = Qe(e, {}),
        O = C.path(Oa(S, w, b, T, e.rx || 0), D),
        R = C.line(-d.width / 2 - x, -d.height / 2 - x + m.height + x, d.width / 2 + x, -d.height / 2 - x + m.height + x, D)
      ;(_ = a.insert(() => (X.debug('Rough node insert CXC', O), R), ':first-child')), (E = a.insert(() => (X.debug('Rough node insert CXC', O), O), ':first-child'))
    } else
      (E = s.insert('rect', ':first-child')),
        (_ = s.insert('line')),
        E.attr('class', 'outer title-state')
          .attr('style', n)
          .attr('x', -d.width / 2 - x)
          .attr('y', -d.height / 2 - x)
          .attr('width', d.width + (e.padding || 0))
          .attr('height', d.height + (e.padding || 0)),
        _.attr('class', 'divider')
          .attr('x1', -d.width / 2 - x)
          .attr('x2', d.width / 2 + x)
          .attr('y1', -d.height / 2 - x + m.height + x)
          .attr('y2', -d.height / 2 - x + m.height + x)
    return (
      Ke(e, E),
      (e.intersect = function (C) {
        return Xe.rect(e, C)
      }),
      a
    )
  }
  var dJ = N(() => {
    'use strict'
    fr()
    pr()
    Ft()
    rw()
    Ht()
    zt()
    Wt()
    Gt()
    Zh()
    yt()
    o(fJ, 'rectWithTitle')
  })
  async function pJ(t, e) {
    let r = { rx: 5, ry: 5, classes: '', labelPaddingX: (e?.padding || 0) * 1, labelPaddingY: (e?.padding || 0) * 1 }
    return Ou(t, e, r)
  }
  var mJ = N(() => {
    'use strict'
    Em()
    o(pJ, 'roundedRect')
  })
  async function gJ(t, e) {
    let { labelStyles: r, nodeStyles: n } = Ye(e)
    e.labelStyle = r
    let { shapeSvg: i, bbox: a, label: s } = await mt(t, e, ht(e)),
      l = e?.padding ?? 0,
      u = Math.max(a.width + (e.padding ?? 0) * 2, e?.width ?? 0),
      h = Math.max(a.height + (e.padding ?? 0) * 2, e?.height ?? 0),
      f = -a.width / 2 - l,
      d = -a.height / 2 - l,
      { cssStyles: p } = e,
      m = je.svg(i),
      g = Qe(e, {})
    e.look !== 'handDrawn' && ((g.roughness = 0), (g.fillStyle = 'solid'))
    let y = [
        { x: f, y: d },
        { x: f + u + 8, y: d },
        { x: f + u + 8, y: d + h },
        { x: f - 8, y: d + h },
        { x: f - 8, y: d },
        { x: f, y: d },
        { x: f, y: d + h }
      ],
      v = m.polygon(
        y.map(b => [b.x, b.y]),
        g
      ),
      x = i.insert(() => v, ':first-child')
    return (
      x.attr('class', 'basic label-container').attr('style', zn(p)),
      n && e.look !== 'handDrawn' && x.selectAll('path').attr('style', n),
      p && e.look !== 'handDrawn' && x.selectAll('path').attr('style', n),
      s.attr('transform', `translate(${-u / 2 + 4 + (e.padding ?? 0) - (a.x - (a.left ?? 0))},${-h / 2 + (e.padding ?? 0) - (a.y - (a.top ?? 0))})`),
      Ke(e, x),
      (e.intersect = function (b) {
        return Xe.rect(e, b)
      }),
      i
    )
  }
  var yJ = N(() => {
    'use strict'
    Ft()
    Ht()
    zt()
    Wt()
    er()
    o(gJ, 'shadedProcess')
  })
  async function vJ(t, e) {
    let { labelStyles: r, nodeStyles: n } = Ye(e)
    e.labelStyle = r
    let { shapeSvg: i, bbox: a, label: s } = await mt(t, e, ht(e)),
      l = Math.max(a.width + (e.padding ?? 0) * 2, e?.width ?? 0),
      u = Math.max(a.height + (e.padding ?? 0) * 2, e?.height ?? 0),
      h = -l / 2,
      f = -u / 2,
      { cssStyles: d } = e,
      p = je.svg(i),
      m = Qe(e, {})
    e.look !== 'handDrawn' && ((m.roughness = 0), (m.fillStyle = 'solid'))
    let g = [
        { x: h, y: f },
        { x: h, y: f + u },
        { x: h + l, y: f + u },
        { x: h + l, y: f - u / 2 }
      ],
      y = Xt(g),
      v = p.path(y, m),
      x = i.insert(() => v, ':first-child')
    return (
      x.attr('class', 'basic label-container'),
      d && e.look !== 'handDrawn' && x.selectChildren('path').attr('style', d),
      n && e.look !== 'handDrawn' && x.selectChildren('path').attr('style', n),
      x.attr('transform', `translate(0, ${u / 4})`),
      s.attr('transform', `translate(${-l / 2 + (e.padding ?? 0) - (a.x - (a.left ?? 0))}, ${-u / 4 + (e.padding ?? 0) - (a.y - (a.top ?? 0))})`),
      Ke(e, x),
      (e.intersect = function (b) {
        return Xe.polygon(e, g, b)
      }),
      i
    )
  }
  var xJ = N(() => {
    'use strict'
    Ft()
    Ht()
    zt()
    Wt()
    o(vJ, 'slopedRect')
  })
  async function bJ(t, e) {
    let r = { rx: 0, ry: 0, classes: '', labelPaddingX: (e?.padding || 0) * 2, labelPaddingY: (e?.padding || 0) * 1 }
    return Ou(t, e, r)
  }
  var TJ = N(() => {
    'use strict'
    Em()
    o(bJ, 'squareRect')
  })
  async function wJ(t, e) {
    let { labelStyles: r, nodeStyles: n } = Ye(e)
    e.labelStyle = r
    let { shapeSvg: i, bbox: a } = await mt(t, e, ht(e)),
      s = a.height + e.padding,
      l = a.width + s / 4 + e.padding,
      u,
      { cssStyles: h } = e
    if (e.look === 'handDrawn') {
      let f = je.svg(i),
        d = Qe(e, {}),
        p = Oa(-l / 2, -s / 2, l, s, s / 2),
        m = f.path(p, d)
      ;(u = i.insert(() => m, ':first-child')), u.attr('class', 'basic label-container').attr('style', zn(h))
    } else
      (u = i.insert('rect', ':first-child')),
        u
          .attr('class', 'basic label-container')
          .attr('style', n)
          .attr('rx', s / 2)
          .attr('ry', s / 2)
          .attr('x', -l / 2)
          .attr('y', -s / 2)
          .attr('width', l)
          .attr('height', s)
    return (
      Ke(e, u),
      (e.intersect = function (f) {
        return Xe.rect(e, f)
      }),
      i
    )
  }
  var kJ = N(() => {
    'use strict'
    Ft()
    Ht()
    zt()
    Wt()
    Zh()
    er()
    o(wJ, 'stadium')
  })
  async function EJ(t, e) {
    return Ou(t, e, { rx: 5, ry: 5, classes: 'flowchart-node' })
  }
  var SJ = N(() => {
    'use strict'
    Em()
    o(EJ, 'state')
  })
  function CJ(t, e, { config: { themeVariables: r } }) {
    let { labelStyles: n, nodeStyles: i } = Ye(e)
    e.labelStyle = n
    let { cssStyles: a } = e,
      { lineColor: s, stateBorder: l, nodeBorder: u } = r,
      h = t
        .insert('g')
        .attr('class', 'node default')
        .attr('id', e.domId || e.id),
      f = je.svg(h),
      d = Qe(e, {})
    e.look !== 'handDrawn' && ((d.roughness = 0), (d.fillStyle = 'solid'))
    let p = f.circle(0, 0, 14, { ...d, stroke: s, strokeWidth: 2 }),
      m = l ?? u,
      g = f.circle(0, 0, 5, { ...d, fill: m, stroke: m, strokeWidth: 2, fillStyle: 'solid' }),
      y = h.insert(() => p, ':first-child')
    return (
      y.insert(() => g),
      a && y.selectAll('path').attr('style', a),
      i && y.selectAll('path').attr('style', i),
      Ke(e, y),
      (e.intersect = function (v) {
        return Xe.circle(e, 7, v)
      }),
      h
    )
  }
  var AJ = N(() => {
    'use strict'
    Wt()
    Ht()
    zt()
    Ft()
    o(CJ, 'stateEnd')
  })
  function _J(t, e, { config: { themeVariables: r } }) {
    let { lineColor: n } = r,
      i = t
        .insert('g')
        .attr('class', 'node default')
        .attr('id', e.domId || e.id),
      a
    if (e.look === 'handDrawn') {
      let l = je.svg(i).circle(0, 0, 14, NQ(n))
      ;(a = i.insert(() => l)), a.attr('class', 'state-start').attr('r', 7).attr('width', 14).attr('height', 14)
    } else (a = i.insert('circle', ':first-child')), a.attr('class', 'state-start').attr('r', 7).attr('width', 14).attr('height', 14)
    return (
      Ke(e, a),
      (e.intersect = function (s) {
        return Xe.circle(e, 7, s)
      }),
      i
    )
  }
  var DJ = N(() => {
    'use strict'
    Wt()
    Ht()
    zt()
    Ft()
    o(_J, 'stateStart')
  })
  async function LJ(t, e) {
    let { labelStyles: r, nodeStyles: n } = Ye(e)
    e.labelStyle = r
    let { shapeSvg: i, bbox: a } = await mt(t, e, ht(e)),
      s = (e?.padding || 0) / 2,
      l = a.width + e.padding,
      u = a.height + e.padding,
      h = -a.width / 2 - s,
      f = -a.height / 2 - s,
      d = [
        { x: 0, y: 0 },
        { x: l, y: 0 },
        { x: l, y: -u },
        { x: 0, y: -u },
        { x: 0, y: 0 },
        { x: -8, y: 0 },
        { x: l + 8, y: 0 },
        { x: l + 8, y: -u },
        { x: -8, y: -u },
        { x: -8, y: 0 }
      ]
    if (e.look === 'handDrawn') {
      let p = je.svg(i),
        m = Qe(e, {}),
        g = p.rectangle(h - 8, f, l + 16, u, m),
        y = p.line(h, f, h, f + u, m),
        v = p.line(h + l, f, h + l, f + u, m)
      i.insert(() => y, ':first-child'), i.insert(() => v, ':first-child')
      let x = i.insert(() => g, ':first-child'),
        { cssStyles: b } = e
      x.attr('class', 'basic label-container').attr('style', zn(b)), Ke(e, x)
    } else {
      let p = Ma(i, l, u, d)
      n && p.attr('style', n), Ke(e, p)
    }
    return (
      (e.intersect = function (p) {
        return Xe.polygon(e, d, p)
      }),
      i
    )
  }
  var RJ = N(() => {
    'use strict'
    Ft()
    Ht()
    zt()
    Wt()
    Iu()
    er()
    o(LJ, 'subroutine')
  })
  async function NJ(t, e) {
    let { labelStyles: r, nodeStyles: n } = Ye(e)
    e.labelStyle = r
    let { shapeSvg: i, bbox: a } = await mt(t, e, ht(e)),
      s = Math.max(a.width + (e.padding ?? 0) * 2, e?.width ?? 0),
      l = Math.max(a.height + (e.padding ?? 0) * 2, e?.height ?? 0),
      u = -s / 2,
      h = -l / 2,
      f = 0.2 * l,
      d = 0.2 * l,
      { cssStyles: p } = e,
      m = je.svg(i),
      g = Qe(e, {}),
      y = [
        { x: u - f / 2, y: h },
        { x: u + s + f / 2, y: h },
        { x: u + s + f / 2, y: h + l },
        { x: u - f / 2, y: h + l }
      ],
      v = [
        { x: u + s - f / 2, y: h + l },
        { x: u + s + f / 2, y: h + l },
        { x: u + s + f / 2, y: h + l - d }
      ]
    e.look !== 'handDrawn' && ((g.roughness = 0), (g.fillStyle = 'solid'))
    let x = Xt(y),
      b = m.path(x, g),
      T = Xt(v),
      S = m.path(T, { ...g, fillStyle: 'solid' }),
      w = i.insert(() => S, ':first-child')
    return (
      w.insert(() => b, ':first-child'),
      w.attr('class', 'basic label-container'),
      p && e.look !== 'handDrawn' && w.selectAll('path').attr('style', p),
      n && e.look !== 'handDrawn' && w.selectAll('path').attr('style', n),
      Ke(e, w),
      (e.intersect = function (E) {
        return Xe.polygon(e, y, E)
      }),
      i
    )
  }
  var MJ = N(() => {
    'use strict'
    Ft()
    zt()
    Wt()
    Ht()
    o(NJ, 'taggedRect')
  })
  async function IJ(t, e) {
    let { labelStyles: r, nodeStyles: n } = Ye(e)
    e.labelStyle = r
    let { shapeSvg: i, bbox: a, label: s } = await mt(t, e, ht(e)),
      l = Math.max(a.width + (e.padding ?? 0) * 2, e?.width ?? 0),
      u = Math.max(a.height + (e.padding ?? 0) * 2, e?.height ?? 0),
      h = u / 4,
      f = 0.2 * l,
      d = 0.2 * u,
      p = u + h,
      { cssStyles: m } = e,
      g = je.svg(i),
      y = Qe(e, {})
    e.look !== 'handDrawn' && ((y.roughness = 0), (y.fillStyle = 'solid'))
    let v = [
        { x: -l / 2 - (l / 2) * 0.1, y: p / 2 },
        ...Go(-l / 2 - (l / 2) * 0.1, p / 2, l / 2 + (l / 2) * 0.1, p / 2, h, 0.8),
        { x: l / 2 + (l / 2) * 0.1, y: -p / 2 },
        { x: -l / 2 - (l / 2) * 0.1, y: -p / 2 }
      ],
      x = -l / 2 + (l / 2) * 0.1,
      b = -p / 2 - d * 0.4,
      T = [{ x: x + l - f, y: (b + u) * 1.4 }, { x: x + l, y: b + u - d }, { x: x + l, y: (b + u) * 0.9 }, ...Go(x + l, (b + u) * 1.3, x + l - f, (b + u) * 1.5, -u * 0.03, 0.5)],
      S = Xt(v),
      w = g.path(S, y),
      E = Xt(T),
      _ = g.path(E, { ...y, fillStyle: 'solid' }),
      C = i.insert(() => _, ':first-child')
    return (
      C.insert(() => w, ':first-child'),
      C.attr('class', 'basic label-container'),
      m && e.look !== 'handDrawn' && C.selectAll('path').attr('style', m),
      n && e.look !== 'handDrawn' && C.selectAll('path').attr('style', n),
      C.attr('transform', `translate(0,${-h / 2})`),
      s.attr('transform', `translate(${-l / 2 + (e.padding ?? 0) - (a.x - (a.left ?? 0))},${-u / 2 + (e.padding ?? 0) - h / 2 - (a.y - (a.top ?? 0))})`),
      Ke(e, C),
      (e.intersect = function (D) {
        return Xe.polygon(e, v, D)
      }),
      i
    )
  }
  var OJ = N(() => {
    'use strict'
    Ft()
    Ht()
    Wt()
    zt()
    o(IJ, 'taggedWaveEdgedRectangle')
  })
  async function PJ(t, e) {
    let { labelStyles: r, nodeStyles: n } = Ye(e)
    e.labelStyle = r
    let { shapeSvg: i, bbox: a } = await mt(t, e, ht(e)),
      s = Math.max(a.width + e.padding, e?.width || 0),
      l = Math.max(a.height + e.padding, e?.height || 0),
      u = -s / 2,
      h = -l / 2,
      f = i.insert('rect', ':first-child')
    return (
      f.attr('class', 'text').attr('style', n).attr('rx', 0).attr('ry', 0).attr('x', u).attr('y', h).attr('width', s).attr('height', l),
      Ke(e, f),
      (e.intersect = function (d) {
        return Xe.rect(e, d)
      }),
      i
    )
  }
  var BJ = N(() => {
    'use strict'
    Ft()
    Ht()
    zt()
    o(PJ, 'text')
  })
  async function FJ(t, e) {
    let { labelStyles: r, nodeStyles: n } = Ye(e)
    e.labelStyle = r
    let { shapeSvg: i, bbox: a, label: s, halfPadding: l } = await mt(t, e, ht(e)),
      u = e.look === 'neo' ? l * 2 : l,
      h = a.height + u,
      f = h / 2,
      d = f / (2.5 + h / 50),
      p = a.width + d + u,
      { cssStyles: m } = e,
      g
    if (e.look === 'handDrawn') {
      let y = je.svg(i),
        v = XDe(0, 0, p, h, d, f),
        x = jDe(0, 0, p, h, d, f),
        b = y.path(v, Qe(e, {})),
        T = y.path(x, Qe(e, { fill: 'none' }))
      ;(g = i.insert(() => T, ':first-child')), (g = i.insert(() => b, ':first-child')), g.attr('class', 'basic label-container'), m && g.attr('style', m)
    } else {
      let y = YDe(0, 0, p, h, d, f)
      ;(g = i.insert('path', ':first-child').attr('d', y).attr('class', 'basic label-container').attr('style', zn(m)).attr('style', n)),
        g.attr('class', 'basic label-container'),
        m && g.selectAll('path').attr('style', m),
        n && g.selectAll('path').attr('style', n)
    }
    return (
      g.attr('label-offset-x', d),
      g.attr('transform', `translate(${-p / 2}, ${h / 2} )`),
      s.attr('transform', `translate(${-(a.width / 2) - d - (a.x - (a.left ?? 0))}, ${-(a.height / 2) - (a.y - (a.top ?? 0))})`),
      Ke(e, g),
      (e.intersect = function (y) {
        let v = Xe.rect(e, y),
          x = v.y - (e.y ?? 0)
        if (f != 0 && (Math.abs(x) < (e.height ?? 0) / 2 || (Math.abs(x) == (e.height ?? 0) / 2 && Math.abs(v.x - (e.x ?? 0)) > (e.width ?? 0) / 2 - d))) {
          let b = d * d * (1 - (x * x) / (f * f))
          b != 0 && (b = Math.sqrt(Math.abs(b))), (b = d - b), y.x - (e.x ?? 0) > 0 && (b = -b), (v.x += b)
        }
        return v
      }),
      i
    )
  }
  var YDe,
    XDe,
    jDe,
    $J = N(() => {
      'use strict'
      Ft()
      zt()
      Wt()
      Ht()
      er()
      ;(YDe = o(
        (t, e, r, n, i, a) => `M${t},${e}
    a${i},${a} 0,0,1 0,${-n}
    l${r},0
    a${i},${a} 0,0,1 0,${n}
    M${r},${-n}
    a${i},${a} 0,0,0 0,${n}
    l${-r},0`,
        'createCylinderPathD'
      )),
        (XDe = o(
          (t, e, r, n, i, a) => [`M${t},${e}`, `M${t + r},${e}`, `a${i},${a} 0,0,0 0,${-n}`, `l${-r},0`, `a${i},${a} 0,0,0 0,${n}`, `l${r},0`].join(' '),
          'createOuterCylinderPathD'
        )),
        (jDe = o((t, e, r, n, i, a) => [`M${t + r / 2},${-n / 2}`, `a${i},${a} 0,0,0 0,${n}`].join(' '), 'createInnerCylinderPathD'))
      o(FJ, 'tiltedCylinder')
    })
  async function zJ(t, e) {
    let { labelStyles: r, nodeStyles: n } = Ye(e)
    e.labelStyle = r
    let { shapeSvg: i, bbox: a } = await mt(t, e, ht(e)),
      s = a.width + e.padding,
      l = a.height + e.padding,
      u = [
        { x: (-3 * l) / 6, y: 0 },
        { x: s + (3 * l) / 6, y: 0 },
        { x: s, y: -l },
        { x: 0, y: -l }
      ],
      h,
      { cssStyles: f } = e
    if (e.look === 'handDrawn') {
      let d = je.svg(i),
        p = Qe(e, {}),
        m = Xt(u),
        g = d.path(m, p)
      ;(h = i.insert(() => g, ':first-child').attr('transform', `translate(${-s / 2}, ${l / 2})`)), f && h.attr('style', f)
    } else h = Ma(i, s, l, u)
    return (
      n && h.attr('style', n),
      (e.width = s),
      (e.height = l),
      Ke(e, h),
      (e.intersect = function (d) {
        return Xe.polygon(e, u, d)
      }),
      i
    )
  }
  var GJ = N(() => {
    'use strict'
    Ft()
    Ht()
    zt()
    Wt()
    Iu()
    o(zJ, 'trapezoid')
  })
  async function VJ(t, e) {
    let { labelStyles: r, nodeStyles: n } = Ye(e)
    e.labelStyle = r
    let { shapeSvg: i, bbox: a } = await mt(t, e, ht(e)),
      s = 60,
      l = 20,
      u = Math.max(s, a.width + (e.padding ?? 0) * 2, e?.width ?? 0),
      h = Math.max(l, a.height + (e.padding ?? 0) * 2, e?.height ?? 0),
      { cssStyles: f } = e,
      d = je.svg(i),
      p = Qe(e, {})
    e.look !== 'handDrawn' && ((p.roughness = 0), (p.fillStyle = 'solid'))
    let m = [
        { x: (-u / 2) * 0.8, y: -h / 2 },
        { x: (u / 2) * 0.8, y: -h / 2 },
        { x: u / 2, y: (-h / 2) * 0.6 },
        { x: u / 2, y: h / 2 },
        { x: -u / 2, y: h / 2 },
        { x: -u / 2, y: (-h / 2) * 0.6 }
      ],
      g = Xt(m),
      y = d.path(g, p),
      v = i.insert(() => y, ':first-child')
    return (
      v.attr('class', 'basic label-container'),
      f && e.look !== 'handDrawn' && v.selectChildren('path').attr('style', f),
      n && e.look !== 'handDrawn' && v.selectChildren('path').attr('style', n),
      Ke(e, v),
      (e.intersect = function (x) {
        return Xe.polygon(e, m, x)
      }),
      i
    )
  }
  var UJ = N(() => {
    'use strict'
    Ft()
    Ht()
    zt()
    Wt()
    o(VJ, 'trapezoidalPentagon')
  })
  async function HJ(t, e) {
    let { labelStyles: r, nodeStyles: n } = Ye(e)
    e.labelStyle = r
    let { shapeSvg: i, bbox: a, label: s } = await mt(t, e, ht(e)),
      l = dr(me().flowchart?.htmlLabels),
      u = a.width + (e.padding ?? 0),
      h = u + a.height,
      f = u + a.height,
      d = [
        { x: 0, y: 0 },
        { x: f, y: 0 },
        { x: f / 2, y: -h }
      ],
      { cssStyles: p } = e,
      m = je.svg(i),
      g = Qe(e, {})
    e.look !== 'handDrawn' && ((g.roughness = 0), (g.fillStyle = 'solid'))
    let y = Xt(d),
      v = m.path(y, g),
      x = i.insert(() => v, ':first-child').attr('transform', `translate(${-h / 2}, ${h / 2})`)
    return (
      p && e.look !== 'handDrawn' && x.selectChildren('path').attr('style', p),
      n && e.look !== 'handDrawn' && x.selectChildren('path').attr('style', n),
      (e.width = u),
      (e.height = h),
      Ke(e, x),
      s.attr('transform', `translate(${-a.width / 2 - (a.x - (a.left ?? 0))}, ${h / 2 - (a.height + (e.padding ?? 0) / (l ? 2 : 1) - (a.y - (a.top ?? 0)))})`),
      (e.intersect = function (b) {
        return X.info('Triangle intersect', e, d, b), Xe.polygon(e, d, b)
      }),
      i
    )
  }
  var WJ = N(() => {
    'use strict'
    yt()
    Ft()
    Ht()
    zt()
    Wt()
    Ft()
    pr()
    Gt()
    o(HJ, 'triangle')
  })
  async function qJ(t, e) {
    let { labelStyles: r, nodeStyles: n } = Ye(e)
    e.labelStyle = r
    let { shapeSvg: i, bbox: a, label: s } = await mt(t, e, ht(e)),
      l = Math.max(a.width + (e.padding ?? 0) * 2, e?.width ?? 0),
      u = Math.max(a.height + (e.padding ?? 0) * 2, e?.height ?? 0),
      h = u / 8,
      f = u + h,
      { cssStyles: d } = e,
      m = 70 - l,
      g = m > 0 ? m / 2 : 0,
      y = je.svg(i),
      v = Qe(e, {})
    e.look !== 'handDrawn' && ((v.roughness = 0), (v.fillStyle = 'solid'))
    let x = [{ x: -l / 2 - g, y: f / 2 }, ...Go(-l / 2 - g, f / 2, l / 2 + g, f / 2, h, 0.8), { x: l / 2 + g, y: -f / 2 }, { x: -l / 2 - g, y: -f / 2 }],
      b = Xt(x),
      T = y.path(b, v),
      S = i.insert(() => T, ':first-child')
    return (
      S.attr('class', 'basic label-container'),
      d && e.look !== 'handDrawn' && S.selectAll('path').attr('style', d),
      n && e.look !== 'handDrawn' && S.selectAll('path').attr('style', n),
      S.attr('transform', `translate(0,${-h / 2})`),
      s.attr('transform', `translate(${-l / 2 + (e.padding ?? 0) - (a.x - (a.left ?? 0))},${-u / 2 + (e.padding ?? 0) - h - (a.y - (a.top ?? 0))})`),
      Ke(e, S),
      (e.intersect = function (w) {
        return Xe.polygon(e, x, w)
      }),
      i
    )
  }
  var YJ = N(() => {
    'use strict'
    Ft()
    Ht()
    Wt()
    zt()
    o(qJ, 'waveEdgedRectangle')
  })
  async function XJ(t, e) {
    let { labelStyles: r, nodeStyles: n } = Ye(e)
    e.labelStyle = r
    let { shapeSvg: i, bbox: a } = await mt(t, e, ht(e)),
      s = 100,
      l = 50,
      u = Math.max(a.width + (e.padding ?? 0) * 2, e?.width ?? 0),
      h = Math.max(a.height + (e.padding ?? 0) * 2, e?.height ?? 0),
      f = u / h,
      d = u,
      p = h
    d > p * f ? (p = d / f) : (d = p * f), (d = Math.max(d, s)), (p = Math.max(p, l))
    let m = Math.min(p * 0.2, p / 4),
      g = p + m * 2,
      { cssStyles: y } = e,
      v = je.svg(i),
      x = Qe(e, {})
    e.look !== 'handDrawn' && ((x.roughness = 0), (x.fillStyle = 'solid'))
    let b = [{ x: -d / 2, y: g / 2 }, ...Go(-d / 2, g / 2, d / 2, g / 2, m, 1), { x: d / 2, y: -g / 2 }, ...Go(d / 2, -g / 2, -d / 2, -g / 2, m, -1)],
      T = Xt(b),
      S = v.path(T, x),
      w = i.insert(() => S, ':first-child')
    return (
      w.attr('class', 'basic label-container'),
      y && e.look !== 'handDrawn' && w.selectAll('path').attr('style', y),
      n && e.look !== 'handDrawn' && w.selectAll('path').attr('style', n),
      Ke(e, w),
      (e.intersect = function (E) {
        return Xe.polygon(e, b, E)
      }),
      i
    )
  }
  var jJ = N(() => {
    'use strict'
    Ft()
    Ht()
    zt()
    Wt()
    o(XJ, 'waveRectangle')
  })
  async function KJ(t, e) {
    let { labelStyles: r, nodeStyles: n } = Ye(e)
    e.labelStyle = r
    let { shapeSvg: i, bbox: a, label: s } = await mt(t, e, ht(e)),
      l = Math.max(a.width + (e.padding ?? 0) * 2, e?.width ?? 0),
      u = Math.max(a.height + (e.padding ?? 0) * 2, e?.height ?? 0),
      h = 5,
      f = -l / 2,
      d = -u / 2,
      { cssStyles: p } = e,
      m = je.svg(i),
      g = Qe(e, {}),
      y = [
        { x: f - h, y: d - h },
        { x: f - h, y: d + u },
        { x: f + l, y: d + u },
        { x: f + l, y: d - h }
      ],
      v = `M${f - h},${d - h} L${f + l},${d - h} L${f + l},${d + u} L${f - h},${d + u} L${f - h},${d - h}
                M${f - h},${d} L${f + l},${d}
                M${f},${d - h} L${f},${d + u}`
    e.look !== 'handDrawn' && ((g.roughness = 0), (g.fillStyle = 'solid'))
    let x = m.path(v, g),
      b = i.insert(() => x, ':first-child')
    return (
      b.attr('transform', `translate(${h / 2}, ${h / 2})`),
      b.attr('class', 'basic label-container'),
      p && e.look !== 'handDrawn' && b.selectAll('path').attr('style', p),
      n && e.look !== 'handDrawn' && b.selectAll('path').attr('style', n),
      s.attr('transform', `translate(${-(a.width / 2) + h / 2 - (a.x - (a.left ?? 0))}, ${-(a.height / 2) + h / 2 - (a.y - (a.top ?? 0))})`),
      Ke(e, b),
      (e.intersect = function (T) {
        return Xe.polygon(e, y, T)
      }),
      i
    )
  }
  var QJ = N(() => {
    'use strict'
    Ft()
    zt()
    Wt()
    Ht()
    o(KJ, 'windowPane')
  })
  async function ML(t, e) {
    let r = e
    if ((r.alias && (e.label = r.alias), e.look === 'handDrawn')) {
      let { themeVariables: U } = tr(),
        { background: K } = U,
        ee = { ...e, id: e.id + '-background', look: 'default', cssStyles: ['stroke: none', `fill: ${K}`] }
      await ML(t, ee)
    }
    let n = tr()
    e.useHtmlLabels = n.htmlLabels
    let i = n.er?.diagramPadding ?? 10,
      a = n.er?.entityPadding ?? 6,
      { cssStyles: s } = e,
      { labelStyles: l, nodeStyles: u } = Ye(e)
    if (r.attributes.length === 0 && e.label) {
      let U = { rx: 0, ry: 0, labelPaddingX: i, labelPaddingY: i * 1.5, classes: '' }
      ra(e.label, n) + U.labelPaddingX * 2 < n.er.minEntityWidth && (e.width = n.er.minEntityWidth)
      let K = await Ou(t, e, U)
      if (!dr(n.htmlLabels)) {
        let ee = K.select('text'),
          Y = ee.node()?.getBBox()
        ee.attr('transform', `translate(${-Y.width / 2}, 0)`)
      }
      return K
    }
    n.htmlLabels || ((i *= 1.25), (a *= 1.25))
    let h = ht(e)
    h || (h = 'node default')
    let f = t
        .insert('g')
        .attr('class', h)
        .attr('id', e.domId || e.id),
      d = await L2(f, e.label ?? '', n, 0, 0, ['name'], l)
    d.height += a
    let p = 0,
      m = [],
      g = [],
      y = 0,
      v = 0,
      x = 0,
      b = 0,
      T = !0,
      S = !0
    for (let U of r.attributes) {
      let K = await L2(f, U.type, n, 0, p, ['attribute-type'], l)
      y = Math.max(y, K.width + i)
      let ee = await L2(f, U.name, n, 0, p, ['attribute-name'], l)
      v = Math.max(v, ee.width + i)
      let Y = await L2(f, U.keys.join(), n, 0, p, ['attribute-keys'], l)
      x = Math.max(x, Y.width + i)
      let ce = await L2(f, U.comment, n, 0, p, ['attribute-comment'], l)
      b = Math.max(b, ce.width + i)
      let Z = Math.max(K.height, ee.height, Y.height, ce.height) + a
      g.push({ yOffset: p, rowHeight: Z }), (p += Z)
    }
    let w = 4
    x <= i && ((T = !1), (x = 0), w--), b <= i && ((S = !1), (b = 0), w--)
    let E = f.node().getBBox()
    if (d.width + i * 2 - (y + v + x + b) > 0) {
      let U = d.width + i * 2 - (y + v + x + b)
      ;(y += U / w), (v += U / w), x > 0 && (x += U / w), b > 0 && (b += U / w)
    }
    let _ = y + v + x + b,
      C = je.svg(f),
      D = Qe(e, {})
    e.look !== 'handDrawn' && ((D.roughness = 0), (D.fillStyle = 'solid'))
    let O = 0
    g.length > 0 && (O = g.reduce((U, K) => U + (K?.rowHeight ?? 0), 0))
    let R = Math.max(E.width + i * 2, e?.width || 0, _),
      k = Math.max((O ?? 0) + d.height, e?.height || 0),
      L = -R / 2,
      A = -k / 2
    f.selectAll('g:not(:first-child)').each((U, K, ee) => {
      let Y = Ge(ee[K]),
        ce = Y.attr('transform'),
        Z = 0,
        ue = 0
      if (ce) {
        let j = RegExp(/translate\(([^,]+),([^)]+)\)/).exec(ce)
        j &&
          ((Z = parseFloat(j[1])),
          (ue = parseFloat(j[2])),
          Y.attr('class').includes('attribute-name')
            ? (Z += y)
            : Y.attr('class').includes('attribute-keys')
              ? (Z += y + v)
              : Y.attr('class').includes('attribute-comment') && (Z += y + v + x))
      }
      Y.attr('transform', `translate(${L + i / 2 + Z}, ${ue + A + d.height + a / 2})`)
    }),
      f.select('.name').attr('transform', 'translate(' + -d.width / 2 + ', ' + (A + a / 2) + ')')
    let I = C.rectangle(L, A, R, k, D),
      M = f.insert(() => I, ':first-child').attr('style', s.join('')),
      { themeVariables: P } = tr(),
      { rowEven: B, rowOdd: F, nodeBorder: z } = P
    m.push(0)
    for (let [U, K] of g.entries()) {
      let Y = (U + 1) % 2 === 0 && K.yOffset !== 0,
        ce = C.rectangle(L, d.height + A + K?.yOffset, R, K?.rowHeight, { ...D, fill: Y ? B : F, stroke: z })
      f.insert(() => ce, 'g.label')
        .attr('style', s.join(''))
        .attr('class', `row-rect-${Y ? 'even' : 'odd'}`)
    }
    let $ = C.line(L, d.height + A, R + L, d.height + A, D)
    f.insert(() => $).attr('class', 'divider'),
      ($ = C.line(y + L, d.height + A, y + L, k + A, D)),
      f.insert(() => $).attr('class', 'divider'),
      T && (($ = C.line(y + v + L, d.height + A, y + v + L, k + A, D)), f.insert(() => $).attr('class', 'divider')),
      S && (($ = C.line(y + v + x + L, d.height + A, y + v + x + L, k + A, D)), f.insert(() => $).attr('class', 'divider'))
    for (let U of m) ($ = C.line(L, d.height + A + U, R + L, d.height + A + U, D)), f.insert(() => $).attr('class', 'divider')
    if ((Ke(e, M), u && e.look !== 'handDrawn')) {
      let K = u
        .split(';')
        ?.filter(ee => ee.includes('stroke'))
        ?.map(ee => `${ee}`)
        .join('; ')
      f.selectAll('path').attr('style', K ?? ''), f.selectAll('.row-rect-even path').attr('style', u)
    }
    return (
      (e.intersect = function (U) {
        return Xe.rect(e, U)
      }),
      f
    )
  }
  async function L2(t, e, r, n = 0, i = 0, a = [], s = '') {
    let l = t
      .insert('g')
      .attr('class', `label ${a.join(' ')}`)
      .attr('transform', `translate(${n}, ${i})`)
      .attr('style', s)
    e !== ic(e) && ((e = ic(e)), (e = e.replaceAll('<', '&lt;').replaceAll('>', '&gt;')))
    let u = l.node().appendChild(await qn(l, e, { width: ra(e, r) + 100, style: s, useHtmlLabels: r.htmlLabels }, r))
    if (e.includes('&lt;') || e.includes('&gt;')) {
      let f = u.children[0]
      for (f.textContent = f.textContent.replaceAll('&lt;', '<').replaceAll('&gt;', '>'); f.childNodes[0]; )
        (f = f.childNodes[0]), (f.textContent = f.textContent.replaceAll('&lt;', '<').replaceAll('&gt;', '>'))
    }
    let h = u.getBBox()
    if (dr(r.htmlLabels)) {
      let f = u.children[0]
      f.style.textAlign = 'start'
      let d = Ge(u)
      ;(h = f.getBoundingClientRect()), d.attr('width', h.width), d.attr('height', h.height)
    }
    return h
  }
  var ZJ = N(() => {
    'use strict'
    Ft()
    Ht()
    zt()
    Wt()
    Em()
    mi()
    ao()
    pr()
    fr()
    er()
    o(ML, 'erBox')
    o(L2, 'addText')
  })
  async function JJ(t, e, r, n, i = r.class.padding ?? 12) {
    let a = n ? 0 : 3,
      s = t
        .insert('g')
        .attr('class', ht(e))
        .attr('id', e.domId || e.id),
      l = null,
      u = null,
      h = null,
      f = null,
      d = 0,
      p = 0,
      m = 0
    if (((l = s.insert('g').attr('class', 'annotation-group text')), e.annotations.length > 0)) {
      let b = e.annotations[0]
      await nw(l, { text: `\xAB${b}\xBB` }, 0), (d = l.node().getBBox().height)
    }
    ;(u = s.insert('g').attr('class', 'label-group text')), await nw(u, e, 0, ['font-weight: bolder'])
    let g = u.node().getBBox()
    ;(p = g.height), (h = s.insert('g').attr('class', 'members-group text'))
    let y = 0
    for (let b of e.members) {
      let T = await nw(h, b, y, [b.parseClassifier()])
      y += T + a
    }
    ;(m = h.node().getBBox().height), m <= 0 && (m = i / 2), (f = s.insert('g').attr('class', 'methods-group text'))
    let v = 0
    for (let b of e.methods) {
      let T = await nw(f, b, v, [b.parseClassifier()])
      v += T + a
    }
    let x = s.node().getBBox()
    if (l !== null) {
      let b = l.node().getBBox()
      l.attr('transform', `translate(${-b.width / 2})`)
    }
    return (
      u.attr('transform', `translate(${-g.width / 2}, ${d})`),
      (x = s.node().getBBox()),
      h.attr('transform', `translate(0, ${d + p + i * 2})`),
      (x = s.node().getBBox()),
      f.attr('transform', `translate(0, ${d + p + (m ? m + i * 4 : i * 2)})`),
      (x = s.node().getBBox()),
      { shapeSvg: s, bbox: x }
    )
  }
  async function nw(t, e, r, n = []) {
    let i = t.insert('g').attr('class', 'label').attr('style', n.join('; ')),
      a = tr(),
      s = 'useHtmlLabels' in e ? e.useHtmlLabels : dr(a.htmlLabels) ?? !0,
      l = ''
    'text' in e ? (l = e.text) : (l = e.label), !s && l.startsWith('\\') && (l = l.substring(1)), yi(l) && (s = !0)
    let u = await qn(i, fd(na(l)), { width: ra(l, a) + 50, classes: 'markdown-node-label', useHtmlLabels: s }, a),
      h,
      f = 1
    if (s) {
      let d = u.children[0],
        p = Ge(u)
      ;(f = d.innerHTML.split('<br>').length), d.innerHTML.includes('</math>') && (f += d.innerHTML.split('<mrow>').length - 1)
      let m = d.getElementsByTagName('img')
      if (m) {
        let g = l.replace(/<img[^>]*>/g, '').trim() === ''
        await Promise.all(
          [...m].map(
            y =>
              new Promise(v => {
                function x() {
                  if (((y.style.display = 'flex'), (y.style.flexDirection = 'column'), g)) {
                    let b = a.fontSize?.toString() ?? window.getComputedStyle(document.body).fontSize,
                      S = parseInt(b, 10) * 5 + 'px'
                    ;(y.style.minWidth = S), (y.style.maxWidth = S)
                  } else y.style.width = '100%'
                  v(y)
                }
                o(x, 'setupImage'),
                  setTimeout(() => {
                    y.complete && x()
                  }),
                  y.addEventListener('error', x),
                  y.addEventListener('load', x)
              })
          )
        )
      }
      ;(h = d.getBoundingClientRect()), p.attr('width', h.width), p.attr('height', h.height)
    } else {
      n.includes('font-weight: bolder') && Ge(u).selectAll('tspan').attr('font-weight', ''), (f = u.children.length)
      let d = u.children[0]
      ;(u.textContent === '' || u.textContent.includes('&gt')) &&
        ((d.textContent = l[0] + l.substring(1).replaceAll('&gt;', '>').replaceAll('&lt;', '<').trim()),
        l[1] === ' ' && (d.textContent = d.textContent[0] + ' ' + d.textContent.substring(1))),
        d.textContent === 'undefined' && (d.textContent = ''),
        (h = u.getBBox())
    }
    return i.attr('transform', 'translate(0,' + (-h.height / (2 * f) + r) + ')'), h.height
  }
  var eee = N(() => {
    'use strict'
    fr()
    mi()
    Ft()
    er()
    Gt()
    ao()
    pr()
    o(JJ, 'textHelper')
    o(nw, 'addText')
  })
  async function tee(t, e) {
    let r = me(),
      n = r.class.padding ?? 12,
      i = n,
      a = e.useHtmlLabels ?? dr(r.htmlLabels) ?? !0,
      s = e
    ;(s.annotations = s.annotations ?? []), (s.members = s.members ?? []), (s.methods = s.methods ?? [])
    let { shapeSvg: l, bbox: u } = await JJ(t, e, r, a, i),
      { labelStyles: h, nodeStyles: f } = Ye(e)
    ;(e.labelStyle = h), (e.cssStyles = s.styles || '')
    let d = s.styles?.join(';') || f || ''
    e.cssStyles || (e.cssStyles = d.replaceAll('!important', '').split(';'))
    let p = s.members.length === 0 && s.methods.length === 0 && !r.class?.hideEmptyMembersBox,
      m = je.svg(l),
      g = Qe(e, {})
    e.look !== 'handDrawn' && ((g.roughness = 0), (g.fillStyle = 'solid'))
    let y = u.width,
      v = u.height
    s.members.length === 0 && s.methods.length === 0 ? (v += i) : s.members.length > 0 && s.methods.length === 0 && (v += i * 2)
    let x = -y / 2,
      b = -v / 2,
      T = m.rectangle(
        x - n,
        b - n - (p ? n : s.members.length === 0 && s.methods.length === 0 ? -n / 2 : 0),
        y + 2 * n,
        v + 2 * n + (p ? n * 2 : s.members.length === 0 && s.methods.length === 0 ? -n : 0),
        g
      ),
      S = l.insert(() => T, ':first-child')
    S.attr('class', 'basic label-container')
    let w = S.node().getBBox()
    l.selectAll('.text').each((D, O, R) => {
      let k = Ge(R[O]),
        L = k.attr('transform'),
        A = 0
      if (L) {
        let B = RegExp(/translate\(([^,]+),([^)]+)\)/).exec(L)
        B && (A = parseFloat(B[2]))
      }
      let I = A + b + n - (p ? n : s.members.length === 0 && s.methods.length === 0 ? -n / 2 : 0)
      a || (I -= 4)
      let M = x
      ;(k.attr('class').includes('label-group') || k.attr('class').includes('annotation-group')) &&
        ((M = -k.node()?.getBBox().width / 2 || 0),
        l.selectAll('text').each(function (P, B, F) {
          window.getComputedStyle(F[B]).textAnchor === 'middle' && (M = 0)
        })),
        k.attr('transform', `translate(${M}, ${I})`)
    })
    let E = l.select('.annotation-group').node().getBBox().height - (p ? n / 2 : 0) || 0,
      _ = l.select('.label-group').node().getBBox().height - (p ? n / 2 : 0) || 0,
      C = l.select('.members-group').node().getBBox().height - (p ? n / 2 : 0) || 0
    if (s.members.length > 0 || s.methods.length > 0 || p) {
      let D = m.line(w.x, E + _ + b + n, w.x + w.width, E + _ + b + n, g)
      l.insert(() => D)
        .attr('class', 'divider')
        .attr('style', d)
    }
    if (p || s.members.length > 0 || s.methods.length > 0) {
      let D = m.line(w.x, E + _ + C + b + i * 2 + n, w.x + w.width, E + _ + C + b + n + i * 2, g)
      l.insert(() => D)
        .attr('class', 'divider')
        .attr('style', d)
    }
    if (
      (s.look !== 'handDrawn' && l.selectAll('path').attr('style', d),
      S.select(':nth-child(2)').attr('style', d),
      l.selectAll('.divider').select('path').attr('style', d),
      e.labelStyle ? l.selectAll('span').attr('style', e.labelStyle) : l.selectAll('span').attr('style', d),
      !a)
    ) {
      let D = RegExp(/color\s*:\s*([^;]*)/),
        O = D.exec(d)
      if (O) {
        let R = O[0].replace('color', 'fill')
        l.selectAll('tspan').attr('style', R)
      } else if (h) {
        let R = D.exec(h)
        if (R) {
          let k = R[0].replace('color', 'fill')
          l.selectAll('tspan').attr('style', k)
        }
      }
    }
    return (
      Ke(e, S),
      (e.intersect = function (D) {
        return Xe.rect(e, D)
      }),
      l
    )
  }
  var ree = N(() => {
    'use strict'
    Ft()
    Gt()
    fr()
    Wt()
    zt()
    Ht()
    eee()
    pr()
    o(tee, 'classBox')
  })
  async function nee(t, e) {
    let { labelStyles: r, nodeStyles: n } = Ye(e)
    e.labelStyle = r
    let i = e,
      a = e,
      s = 20,
      l = 20,
      u = 'verifyMethod' in e,
      h = ht(e),
      f = t
        .insert('g')
        .attr('class', h)
        .attr('id', e.domId ?? e.id),
      d
    u ? (d = await Pu(f, `&lt;&lt;${i.type}&gt;&gt;`, 0, e.labelStyle)) : (d = await Pu(f, '&lt;&lt;Element&gt;&gt;', 0, e.labelStyle))
    let p = d,
      m = await Pu(f, i.name, p, e.labelStyle + '; font-weight: bold;')
    if (((p += m + l), u)) {
      let E = await Pu(f, `${i.requirementId ? `id: ${i.requirementId}` : ''}`, p, e.labelStyle)
      p += E
      let _ = await Pu(f, `${i.text ? `Text: ${i.text}` : ''}`, p, e.labelStyle)
      p += _
      let C = await Pu(f, `${i.risk ? `Risk: ${i.risk}` : ''}`, p, e.labelStyle)
      ;(p += C), await Pu(f, `${i.verifyMethod ? `Verification: ${i.verifyMethod}` : ''}`, p, e.labelStyle)
    } else {
      let E = await Pu(f, `${a.type ? `Type: ${a.type}` : ''}`, p, e.labelStyle)
      ;(p += E), await Pu(f, `${a.docRef ? `Doc Ref: ${a.docRef}` : ''}`, p, e.labelStyle)
    }
    let g = (f.node()?.getBBox().width ?? 200) + s,
      y = (f.node()?.getBBox().height ?? 200) + s,
      v = -g / 2,
      x = -y / 2,
      b = je.svg(f),
      T = Qe(e, {})
    e.look !== 'handDrawn' && ((T.roughness = 0), (T.fillStyle = 'solid'))
    let S = b.rectangle(v, x, g, y, T),
      w = f.insert(() => S, ':first-child')
    if (
      (w.attr('class', 'basic label-container').attr('style', n),
      f.selectAll('.label').each((E, _, C) => {
        let D = Ge(C[_]),
          O = D.attr('transform'),
          R = 0,
          k = 0
        if (O) {
          let M = RegExp(/translate\(([^,]+),([^)]+)\)/).exec(O)
          M && ((R = parseFloat(M[1])), (k = parseFloat(M[2])))
        }
        let L = k - y / 2,
          A = v + s / 2
        ;(_ === 0 || _ === 1) && (A = R), D.attr('transform', `translate(${A}, ${L + s})`)
      }),
      p > d + m + l)
    ) {
      let E = b.line(v, x + d + m + l, v + g, x + d + m + l, T)
      f.insert(() => E).attr('style', n)
    }
    return (
      Ke(e, w),
      (e.intersect = function (E) {
        return Xe.rect(e, E)
      }),
      f
    )
  }
  async function Pu(t, e, r, n = '') {
    if (e === '') return 0
    let i = t.insert('g').attr('class', 'label').attr('style', n),
      a = me(),
      s = a.htmlLabels ?? !0,
      l = await qn(i, fd(na(e)), { width: ra(e, a) + 50, classes: 'markdown-node-label', useHtmlLabels: s, style: n }, a),
      u
    if (s) {
      let h = l.children[0],
        f = Ge(l)
      ;(u = h.getBoundingClientRect()), f.attr('width', u.width), f.attr('height', u.height)
    } else {
      let h = l.children[0]
      for (let f of h.children) (f.textContent = f.textContent.replaceAll('&gt;', '>').replaceAll('&lt;', '<')), n && f.setAttribute('style', n)
      ;(u = l.getBBox()), (u.height += 6)
    }
    return i.attr('transform', `translate(${-u.width / 2},${-u.height / 2 + r})`), u.height
  }
  var iee = N(() => {
    'use strict'
    Ft()
    Ht()
    zt()
    Wt()
    er()
    Gt()
    ao()
    fr()
    o(nee, 'requirementBox')
    o(Pu, 'addText')
  })
  async function aee(t, e, { config: r }) {
    let { labelStyles: n, nodeStyles: i } = Ye(e)
    e.labelStyle = n || ''
    let a = 10,
      s = e.width
    e.width = (e.width ?? 200) - 10
    let { shapeSvg: l, bbox: u, label: h } = await mt(t, e, ht(e)),
      f = e.padding || 10,
      d = '',
      p
    'ticket' in e &&
      e.ticket &&
      r?.kanban?.ticketBaseUrl &&
      ((d = r?.kanban?.ticketBaseUrl.replace('#TICKET#', e.ticket)),
      (p = l.insert('svg:a', ':first-child').attr('class', 'kanban-ticket-link').attr('xlink:href', d).attr('target', '_blank')))
    let m = { useHtmlLabels: e.useHtmlLabels, labelStyle: e.labelStyle || '', width: e.width, img: e.img, padding: e.padding || 8, centerLabel: !1 },
      g,
      y
    p ? ({ label: g, bbox: y } = await HT(p, ('ticket' in e && e.ticket) || '', m)) : ({ label: g, bbox: y } = await HT(l, ('ticket' in e && e.ticket) || '', m))
    let { label: v, bbox: x } = await HT(l, ('assigned' in e && e.assigned) || '', m)
    e.width = s
    let b = 10,
      T = e?.width || 0,
      S = Math.max(y.height, x.height) / 2,
      w = Math.max(u.height + b * 2, e?.height || 0) + S,
      E = -T / 2,
      _ = -w / 2
    h.attr('transform', 'translate(' + (f - T / 2) + ', ' + (-S - u.height / 2) + ')'),
      g.attr('transform', 'translate(' + (f - T / 2) + ', ' + (-S + u.height / 2) + ')'),
      v.attr('transform', 'translate(' + (f + T / 2 - x.width - 2 * a) + ', ' + (-S + u.height / 2) + ')')
    let C,
      { rx: D, ry: O } = e,
      { cssStyles: R } = e
    if (e.look === 'handDrawn') {
      let k = je.svg(l),
        L = Qe(e, {}),
        A = D || O ? k.path(Oa(E, _, T, w, D || 0), L) : k.rectangle(E, _, T, w, L)
      ;(C = l.insert(() => A, ':first-child')), C.attr('class', 'basic label-container').attr('style', R || null)
    } else {
      ;(C = l.insert('rect', ':first-child')),
        C.attr('class', 'basic label-container __APA__')
          .attr('style', i)
          .attr('rx', D ?? 5)
          .attr('ry', O ?? 5)
          .attr('x', E)
          .attr('y', _)
          .attr('width', T)
          .attr('height', w)
      let k = 'priority' in e && e.priority
      if (k) {
        let L = l.append('line'),
          A = E + 2,
          I = _ + Math.floor((D ?? 0) / 2),
          M = _ + w - Math.floor((D ?? 0) / 2)
        L.attr('x1', A).attr('y1', I).attr('x2', A).attr('y2', M).attr('stroke-width', '4').attr('stroke', KDe(k))
      }
    }
    return (
      Ke(e, C),
      (e.height = w),
      (e.intersect = function (k) {
        return Xe.rect(e, k)
      }),
      l
    )
  }
  var KDe,
    see = N(() => {
      'use strict'
      Ft()
      Ht()
      Zh()
      zt()
      Wt()
      KDe = o(t => {
        switch (t) {
          case 'Very High':
            return 'red'
          case 'High':
            return 'orange'
          case 'Medium':
            return null
          case 'Low':
            return 'blue'
          case 'Very Low':
            return 'lightblue'
        }
      }, 'colorFromPriority')
      o(aee, 'kanbanItem')
    })
  function oee(t) {
    return t in IL
  }
  var QDe,
    ZDe,
    IL,
    OL = N(() => {
      'use strict'
      XQ()
      QQ()
      JQ()
      tZ()
      nZ()
      aZ()
      oZ()
      cZ()
      hZ()
      dZ()
      mZ()
      yZ()
      xZ()
      TZ()
      kZ()
      SZ()
      AZ()
      DZ()
      RZ()
      MZ()
      OZ()
      BZ()
      $Z()
      GZ()
      UZ()
      WZ()
      YZ()
      jZ()
      QZ()
      JZ()
      tJ()
      nJ()
      aJ()
      oJ()
      cJ()
      hJ()
      dJ()
      mJ()
      yJ()
      xJ()
      TJ()
      kJ()
      SJ()
      AJ()
      DJ()
      RJ()
      MJ()
      OJ()
      BJ()
      $J()
      GJ()
      UJ()
      WJ()
      YJ()
      jJ()
      QJ()
      ZJ()
      ree()
      iee()
      see()
      ;(QDe = [
        {
          semanticName: 'Process',
          name: 'Rectangle',
          shortName: 'rect',
          description: 'Standard process shape',
          aliases: ['proc', 'process', 'rectangle'],
          internalAliases: ['squareRect'],
          handler: bJ
        },
        {
          semanticName: 'Event',
          name: 'Rounded Rectangle',
          shortName: 'rounded',
          description: 'Represents an event',
          aliases: ['event'],
          internalAliases: ['roundedRect'],
          handler: pJ
        },
        { semanticName: 'Terminal Point', name: 'Stadium', shortName: 'stadium', description: 'Terminal point', aliases: ['terminal', 'pill'], handler: wJ },
        {
          semanticName: 'Subprocess',
          name: 'Framed Rectangle',
          shortName: 'fr-rect',
          description: 'Subprocess',
          aliases: ['subprocess', 'subproc', 'framed-rectangle', 'subroutine'],
          handler: LJ
        },
        { semanticName: 'Database', name: 'Cylinder', shortName: 'cyl', description: 'Database storage', aliases: ['db', 'database', 'cylinder'], handler: pZ },
        { semanticName: 'Start', name: 'Circle', shortName: 'circle', description: 'Starting point', aliases: ['circ'], handler: rZ },
        { semanticName: 'Decision', name: 'Diamond', shortName: 'diam', description: 'Decision-making step', aliases: ['decision', 'diamond', 'question'], handler: lJ },
        { semanticName: 'Prepare Conditional', name: 'Hexagon', shortName: 'hex', description: 'Preparation or condition step', aliases: ['hexagon', 'prepare'], handler: _Z },
        {
          semanticName: 'Data Input/Output',
          name: 'Lean Right',
          shortName: 'lean-r',
          description: 'Represents input or output',
          aliases: ['lean-right', 'in-out'],
          internalAliases: ['lean_right'],
          handler: XZ
        },
        {
          semanticName: 'Data Input/Output',
          name: 'Lean Left',
          shortName: 'lean-l',
          description: 'Represents output or input',
          aliases: ['lean-left', 'out-in'],
          internalAliases: ['lean_left'],
          handler: qZ
        },
        {
          semanticName: 'Priority Action',
          name: 'Trapezoid Base Bottom',
          shortName: 'trap-b',
          description: 'Priority action',
          aliases: ['priority', 'trapezoid-bottom', 'trapezoid'],
          handler: zJ
        },
        {
          semanticName: 'Manual Operation',
          name: 'Trapezoid Base Top',
          shortName: 'trap-t',
          description: 'Represents a manual task',
          aliases: ['manual', 'trapezoid-top', 'inv-trapezoid'],
          internalAliases: ['inv_trapezoid'],
          handler: VZ
        },
        {
          semanticName: 'Stop',
          name: 'Double Circle',
          shortName: 'dbl-circ',
          description: 'Represents a stop point',
          aliases: ['double-circle'],
          internalAliases: ['doublecircle'],
          handler: vZ
        },
        { semanticName: 'Text Block', name: 'Text Block', shortName: 'text', description: 'Text block', handler: PJ },
        { semanticName: 'Card', name: 'Notched Rectangle', shortName: 'notch-rect', description: 'Represents a card', aliases: ['card', 'notched-rectangle'], handler: ZQ },
        {
          semanticName: 'Lined/Shaded Process',
          name: 'Lined Rectangle',
          shortName: 'lin-rect',
          description: 'Lined process shape',
          aliases: ['lined-rectangle', 'lined-process', 'lin-proc', 'shaded-process'],
          handler: gJ
        },
        {
          semanticName: 'Start',
          name: 'Small Circle',
          shortName: 'sm-circ',
          description: 'Small starting point',
          aliases: ['start', 'small-circle'],
          internalAliases: ['stateStart'],
          handler: _J
        },
        {
          semanticName: 'Stop',
          name: 'Framed Circle',
          shortName: 'fr-circ',
          description: 'Stop point',
          aliases: ['stop', 'framed-circle'],
          internalAliases: ['stateEnd'],
          handler: CJ
        },
        {
          semanticName: 'Fork/Join',
          name: 'Filled Rectangle',
          shortName: 'fork',
          description: 'Fork or join in process flow',
          aliases: ['join'],
          internalAliases: ['forkJoin'],
          handler: EZ
        },
        { semanticName: 'Collate', name: 'Hourglass', shortName: 'hourglass', description: 'Represents a collate operation', aliases: ['hourglass', 'collate'], handler: LZ },
        { semanticName: 'Comment', name: 'Curly Brace', shortName: 'brace', description: 'Adds a comment', aliases: ['comment', 'brace-l'], handler: sZ },
        { semanticName: 'Comment Right', name: 'Curly Brace', shortName: 'brace-r', description: 'Adds a comment', handler: lZ },
        { semanticName: 'Comment with braces on both sides', name: 'Curly Braces', shortName: 'braces', description: 'Adds a comment', handler: uZ },
        { semanticName: 'Com Link', name: 'Lightning Bolt', shortName: 'bolt', description: 'Communication link', aliases: ['com-link', 'lightning-bolt'], handler: KZ },
        { semanticName: 'Document', name: 'Document', shortName: 'doc', description: 'Represents a document', aliases: ['doc', 'document'], handler: qJ },
        { semanticName: 'Delay', name: 'Half-Rounded Rectangle', shortName: 'delay', description: 'Represents a delay', aliases: ['half-rounded-rectangle'], handler: CZ },
        {
          semanticName: 'Direct Access Storage',
          name: 'Horizontal Cylinder',
          shortName: 'h-cyl',
          description: 'Direct access storage',
          aliases: ['das', 'horizontal-cylinder'],
          handler: FJ
        },
        { semanticName: 'Disk Storage', name: 'Lined Cylinder', shortName: 'lin-cyl', description: 'Disk storage', aliases: ['disk', 'lined-cylinder'], handler: ZZ },
        { semanticName: 'Display', name: 'Curved Trapezoid', shortName: 'curv-trap', description: 'Represents a display', aliases: ['curved-trapezoid', 'display'], handler: fZ },
        {
          semanticName: 'Divided Process',
          name: 'Divided Rectangle',
          shortName: 'div-rect',
          description: 'Divided process shape',
          aliases: ['div-proc', 'divided-rectangle', 'divided-process'],
          handler: gZ
        },
        { semanticName: 'Extract', name: 'Triangle', shortName: 'tri', description: 'Extraction process', aliases: ['extract', 'triangle'], handler: HJ },
        {
          semanticName: 'Internal Storage',
          name: 'Window Pane',
          shortName: 'win-pane',
          description: 'Internal storage',
          aliases: ['internal-storage', 'window-pane'],
          handler: KJ
        },
        { semanticName: 'Junction', name: 'Filled Circle', shortName: 'f-circ', description: 'Junction point', aliases: ['junction', 'filled-circle'], handler: bZ },
        {
          semanticName: 'Loop Limit',
          name: 'Trapezoidal Pentagon',
          shortName: 'notch-pent',
          description: 'Loop limit step',
          aliases: ['loop-limit', 'notched-pentagon'],
          handler: VJ
        },
        {
          semanticName: 'Manual File',
          name: 'Flipped Triangle',
          shortName: 'flip-tri',
          description: 'Manual file operation',
          aliases: ['manual-file', 'flipped-triangle'],
          handler: wZ
        },
        {
          semanticName: 'Manual Input',
          name: 'Sloped Rectangle',
          shortName: 'sl-rect',
          description: 'Manual input step',
          aliases: ['manual-input', 'sloped-rectangle'],
          handler: vJ
        },
        {
          semanticName: 'Multi-Document',
          name: 'Stacked Document',
          shortName: 'docs',
          description: 'Multiple documents',
          aliases: ['documents', 'st-doc', 'stacked-document'],
          handler: iJ
        },
        {
          semanticName: 'Multi-Process',
          name: 'Stacked Rectangle',
          shortName: 'st-rect',
          description: 'Multiple processes',
          aliases: ['procs', 'processes', 'stacked-rectangle'],
          handler: rJ
        },
        { semanticName: 'Stored Data', name: 'Bow Tie Rectangle', shortName: 'bow-rect', description: 'Stored data', aliases: ['stored-data', 'bow-tie-rectangle'], handler: KQ },
        { semanticName: 'Summary', name: 'Crossed Circle', shortName: 'cross-circ', description: 'Summary', aliases: ['summary', 'crossed-circle'], handler: iZ },
        { semanticName: 'Tagged Document', name: 'Tagged Document', shortName: 'tag-doc', description: 'Tagged document', aliases: ['tag-doc', 'tagged-document'], handler: IJ },
        {
          semanticName: 'Tagged Process',
          name: 'Tagged Rectangle',
          shortName: 'tag-rect',
          description: 'Tagged process',
          aliases: ['tagged-rectangle', 'tag-proc', 'tagged-process'],
          handler: NJ
        },
        { semanticName: 'Paper Tape', name: 'Flag', shortName: 'flag', description: 'Paper tape', aliases: ['paper-tape'], handler: XJ },
        { semanticName: 'Odd', name: 'Odd', shortName: 'odd', description: 'Odd shape', internalAliases: ['rect_left_inv_arrow'], handler: uJ },
        { semanticName: 'Lined Document', name: 'Lined Document', shortName: 'lin-doc', description: 'Lined document', aliases: ['lined-document'], handler: eJ }
      ]),
        (ZDe = o(() => {
          let e = [
            ...Object.entries({
              state: EJ,
              choice: eZ,
              note: sJ,
              rectWithTitle: fJ,
              labelRect: HZ,
              iconSquare: FZ,
              iconCircle: IZ,
              icon: NZ,
              iconRounded: PZ,
              imageSquare: zZ,
              anchor: YQ,
              kanbanItem: aee,
              classBox: tee,
              erBox: ML,
              requirementBox: nee
            }),
            ...QDe.flatMap(r => [r.shortName, ...('aliases' in r ? r.aliases : []), ...('internalAliases' in r ? r.internalAliases : [])].map(i => [i, r.handler]))
          ]
          return Object.fromEntries(e)
        }, 'generateShapeMap')),
        (IL = ZDe())
      o(oee, 'isValidShape')
    })
  var JDe,
    iw,
    lee = N(() => {
      'use strict'
      fr()
      PT()
      Gt()
      yt()
      OL()
      er()
      pr()
      ci()
      ;(JDe = 'flowchart-'),
        (iw = class {
          constructor() {
            this.vertexCounter = 0
            this.config = me()
            this.vertices = new Map()
            this.edges = []
            this.classes = new Map()
            this.subGraphs = []
            this.subGraphLookup = new Map()
            this.tooltips = new Map()
            this.subCount = 0
            this.firstGraphFlag = !0
            this.secCount = -1
            this.posCrossRef = []
            this.funs = []
            this.setAccTitle = Ar
            this.setAccDescription = Lr
            this.setDiagramTitle = Or
            this.getAccTitle = Dr
            this.getAccDescription = Rr
            this.getDiagramTitle = Nr
            this.funs.push(this.setupToolTips.bind(this)),
              (this.addVertex = this.addVertex.bind(this)),
              (this.firstGraph = this.firstGraph.bind(this)),
              (this.setDirection = this.setDirection.bind(this)),
              (this.addSubGraph = this.addSubGraph.bind(this)),
              (this.addLink = this.addLink.bind(this)),
              (this.setLink = this.setLink.bind(this)),
              (this.updateLink = this.updateLink.bind(this)),
              (this.addClass = this.addClass.bind(this)),
              (this.setClass = this.setClass.bind(this)),
              (this.destructLink = this.destructLink.bind(this)),
              (this.setClickEvent = this.setClickEvent.bind(this)),
              (this.setTooltip = this.setTooltip.bind(this)),
              (this.updateLinkInterpolate = this.updateLinkInterpolate.bind(this)),
              (this.setClickFun = this.setClickFun.bind(this)),
              (this.bindFunctions = this.bindFunctions.bind(this)),
              (this.lex = { firstGraph: this.firstGraph.bind(this) }),
              this.clear(),
              this.setGen('gen-2')
          }
          static {
            o(this, 'FlowDB')
          }
          sanitizeText(e) {
            return Ze.sanitizeText(e, this.config)
          }
          lookUpDomId(e) {
            for (let r of this.vertices.values()) if (r.id === e) return r.domId
            return e
          }
          addVertex(e, r, n, i, a, s, l = {}, u) {
            if (!e || e.trim().length === 0) return
            let h
            if (u !== void 0) {
              let m
              u.includes(`
`)
                ? (m =
                    u +
                    `
`)
                : (m =
                    `{
` +
                    u +
                    `
}`),
                (h = Tm(m, { schema: bm }))
            }
            let f = this.edges.find(m => m.id === e)
            if (f) {
              let m = h
              m?.animate !== void 0 && (f.animate = m.animate), m?.animation !== void 0 && (f.animation = m.animation)
              return
            }
            let d,
              p = this.vertices.get(e)
            if (
              (p === void 0 && ((p = { id: e, labelType: 'text', domId: JDe + e + '-' + this.vertexCounter, styles: [], classes: [] }), this.vertices.set(e, p)),
              this.vertexCounter++,
              r !== void 0
                ? ((this.config = me()),
                  (d = this.sanitizeText(r.text.trim())),
                  (p.labelType = r.type),
                  d.startsWith('"') && d.endsWith('"') && (d = d.substring(1, d.length - 1)),
                  (p.text = d))
                : p.text === void 0 && (p.text = e),
              n !== void 0 && (p.type = n),
              i?.forEach(m => {
                p.styles.push(m)
              }),
              a?.forEach(m => {
                p.classes.push(m)
              }),
              s !== void 0 && (p.dir = s),
              p.props === void 0 ? (p.props = l) : l !== void 0 && Object.assign(p.props, l),
              h !== void 0)
            ) {
              if (h.shape) {
                if (h.shape !== h.shape.toLowerCase() || h.shape.includes('_')) throw new Error(`No such shape: ${h.shape}. Shape names should be lowercase.`)
                if (!oee(h.shape)) throw new Error(`No such shape: ${h.shape}.`)
                p.type = h?.shape
              }
              h?.label && (p.text = h?.label),
                h?.icon && ((p.icon = h?.icon), !h.label?.trim() && p.text === e && (p.text = '')),
                h?.form && (p.form = h?.form),
                h?.pos && (p.pos = h?.pos),
                h?.img && ((p.img = h?.img), !h.label?.trim() && p.text === e && (p.text = '')),
                h?.constraint && (p.constraint = h.constraint),
                h.w && (p.assetWidth = Number(h.w)),
                h.h && (p.assetHeight = Number(h.h))
            }
          }
          addSingleLink(e, r, n, i) {
            let l = { start: e, end: r, type: void 0, text: '', labelType: 'text', classes: [], isUserDefinedId: !1, interpolate: this.edges.defaultInterpolate }
            X.info('abc78 Got edge...', l)
            let u = n.text
            if (
              (u !== void 0 &&
                ((l.text = this.sanitizeText(u.text.trim())),
                l.text.startsWith('"') && l.text.endsWith('"') && (l.text = l.text.substring(1, l.text.length - 1)),
                (l.labelType = u.type)),
              n !== void 0 && ((l.type = n.type), (l.stroke = n.stroke), (l.length = n.length > 10 ? 10 : n.length)),
              i && !this.edges.some(h => h.id === i))
            )
              (l.id = i), (l.isUserDefinedId = !0)
            else {
              let h = this.edges.filter(f => f.start === l.start && f.end === l.end)
              h.length === 0 ? (l.id = Wh(l.start, l.end, { counter: 0, prefix: 'L' })) : (l.id = Wh(l.start, l.end, { counter: h.length + 1, prefix: 'L' }))
            }
            if (this.edges.length < (this.config.maxEdges ?? 500)) X.info('Pushing edge...'), this.edges.push(l)
            else
              throw new Error(`Edge limit exceeded. ${this.edges.length} edges found, but the limit is ${this.config.maxEdges}.

Initialize mermaid with maxEdges set to a higher number to allow more edges.
You cannot set this config via configuration inside the diagram as it is a secure config.
You have to call mermaid.initialize.`)
          }
          isLinkData(e) {
            return e !== null && typeof e == 'object' && 'id' in e && typeof e.id == 'string'
          }
          addLink(e, r, n) {
            let i = this.isLinkData(n) ? n.id.replace('@', '') : void 0
            X.info('addLink', e, r, i)
            for (let a of e)
              for (let s of r) {
                let l = a === e[e.length - 1],
                  u = s === r[0]
                l && u ? this.addSingleLink(a, s, n, i) : this.addSingleLink(a, s, n, void 0)
              }
          }
          updateLinkInterpolate(e, r) {
            e.forEach(n => {
              n === 'default' ? (this.edges.defaultInterpolate = r) : (this.edges[n].interpolate = r)
            })
          }
          updateLink(e, r) {
            e.forEach(n => {
              if (typeof n == 'number' && n >= this.edges.length)
                throw new Error(
                  `The index ${n} for linkStyle is out of bounds. Valid indices for linkStyle are between 0 and ${this.edges.length - 1}. (Help: Ensure that the index is within the range of existing edges.)`
                )
              n === 'default'
                ? (this.edges.defaultStyle = r)
                : ((this.edges[n].style = r),
                  (this.edges[n]?.style?.length ?? 0) > 0 && !this.edges[n]?.style?.some(i => i?.startsWith('fill')) && this.edges[n]?.style?.push('fill:none'))
            })
          }
          addClass(e, r) {
            let n = r.join().replace(/\\,/g, '\xA7\xA7\xA7').replace(/,/g, ';').replace(/§§§/g, ',').split(';')
            e.split(',').forEach(i => {
              let a = this.classes.get(i)
              a === void 0 && ((a = { id: i, styles: [], textStyles: [] }), this.classes.set(i, a)),
                n?.forEach(s => {
                  if (/color/.exec(s)) {
                    let l = s.replace('fill', 'bgFill')
                    a.textStyles.push(l)
                  }
                  a.styles.push(s)
                })
            })
          }
          setDirection(e) {
            ;(this.direction = e),
              /.*</.exec(this.direction) && (this.direction = 'RL'),
              /.*\^/.exec(this.direction) && (this.direction = 'BT'),
              /.*>/.exec(this.direction) && (this.direction = 'LR'),
              /.*v/.exec(this.direction) && (this.direction = 'TB'),
              this.direction === 'TD' && (this.direction = 'TB')
          }
          setClass(e, r) {
            for (let n of e.split(',')) {
              let i = this.vertices.get(n)
              i && i.classes.push(r)
              let a = this.edges.find(l => l.id === n)
              a && a.classes.push(r)
              let s = this.subGraphLookup.get(n)
              s && s.classes.push(r)
            }
          }
          setTooltip(e, r) {
            if (r !== void 0) {
              r = this.sanitizeText(r)
              for (let n of e.split(',')) this.tooltips.set(this.version === 'gen-1' ? this.lookUpDomId(n) : n, r)
            }
          }
          setClickFun(e, r, n) {
            let i = this.lookUpDomId(e)
            if (me().securityLevel !== 'loose' || r === void 0) return
            let a = []
            if (typeof n == 'string') {
              a = n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/)
              for (let l = 0; l < a.length; l++) {
                let u = a[l].trim()
                u.startsWith('"') && u.endsWith('"') && (u = u.substr(1, u.length - 2)), (a[l] = u)
              }
            }
            a.length === 0 && a.push(e)
            let s = this.vertices.get(e)
            s &&
              ((s.haveCallback = !0),
              this.funs.push(() => {
                let l = document.querySelector(`[id="${i}"]`)
                l !== null &&
                  l.addEventListener(
                    'click',
                    () => {
                      Vt.runFunc(r, ...a)
                    },
                    !1
                  )
              }))
          }
          setLink(e, r, n) {
            e.split(',').forEach(i => {
              let a = this.vertices.get(i)
              a !== void 0 && ((a.link = Vt.formatUrl(r, this.config)), (a.linkTarget = n))
            }),
              this.setClass(e, 'clickable')
          }
          getTooltip(e) {
            return this.tooltips.get(e)
          }
          setClickEvent(e, r, n) {
            e.split(',').forEach(i => {
              this.setClickFun(i, r, n)
            }),
              this.setClass(e, 'clickable')
          }
          bindFunctions(e) {
            this.funs.forEach(r => {
              r(e)
            })
          }
          getDirection() {
            return this.direction?.trim()
          }
          getVertices() {
            return this.vertices
          }
          getEdges() {
            return this.edges
          }
          getClasses() {
            return this.classes
          }
          setupToolTips(e) {
            let r = Ge('.mermaidTooltip')
            ;(r._groups || r)[0][0] === null && (r = Ge('body').append('div').attr('class', 'mermaidTooltip').style('opacity', 0)),
              Ge(e)
                .select('svg')
                .selectAll('g.node')
                .on('mouseover', a => {
                  let s = Ge(a.currentTarget)
                  if (s.attr('title') === null) return
                  let u = a.currentTarget?.getBoundingClientRect()
                  r.transition().duration(200).style('opacity', '.9'),
                    r
                      .text(s.attr('title'))
                      .style('left', window.scrollX + u.left + (u.right - u.left) / 2 + 'px')
                      .style('top', window.scrollY + u.bottom + 'px'),
                    r.html(r.html().replace(/&lt;br\/&gt;/g, '<br/>')),
                    s.classed('hover', !0)
                })
                .on('mouseout', a => {
                  r.transition().duration(500).style('opacity', 0), Ge(a.currentTarget).classed('hover', !1)
                })
          }
          clear(e = 'gen-2') {
            ;(this.vertices = new Map()),
              (this.classes = new Map()),
              (this.edges = []),
              (this.funs = [this.setupToolTips.bind(this)]),
              (this.subGraphs = []),
              (this.subGraphLookup = new Map()),
              (this.subCount = 0),
              (this.tooltips = new Map()),
              (this.firstGraphFlag = !0),
              (this.version = e),
              (this.config = me()),
              kr()
          }
          setGen(e) {
            this.version = e || 'gen-2'
          }
          defaultStyle() {
            return 'fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;'
          }
          addSubGraph(e, r, n) {
            let i = e.text.trim(),
              a = n.text
            e === n && /\s/.exec(n.text) && (i = void 0)
            let l = o(p => {
                let m = { boolean: {}, number: {}, string: {} },
                  g = [],
                  y
                return {
                  nodeList: p.filter(function (x) {
                    let b = typeof x
                    return x.stmt && x.stmt === 'dir'
                      ? ((y = x.value), !1)
                      : x.trim() === ''
                        ? !1
                        : b in m
                          ? m[b].hasOwnProperty(x)
                            ? !1
                            : (m[b][x] = !0)
                          : g.includes(x)
                            ? !1
                            : g.push(x)
                  }),
                  dir: y
                }
              }, 'uniq')(r.flat()),
              u = l.nodeList,
              h = l.dir,
              f = me().flowchart ?? {}
            if (((h = h ?? (f.inheritDir ? this.getDirection() ?? me().direction ?? void 0 : void 0)), this.version === 'gen-1'))
              for (let p = 0; p < u.length; p++) u[p] = this.lookUpDomId(u[p])
            ;(i = i ?? 'subGraph' + this.subCount), (a = a || ''), (a = this.sanitizeText(a)), (this.subCount = this.subCount + 1)
            let d = { id: i, nodes: u, title: a.trim(), classes: [], dir: h, labelType: n.type }
            return X.info('Adding', d.id, d.nodes, d.dir), (d.nodes = this.makeUniq(d, this.subGraphs).nodes), this.subGraphs.push(d), this.subGraphLookup.set(i, d), i
          }
          getPosForId(e) {
            for (let [r, n] of this.subGraphs.entries()) if (n.id === e) return r
            return -1
          }
          indexNodes2(e, r) {
            let n = this.subGraphs[r].nodes
            if (((this.secCount = this.secCount + 1), this.secCount > 2e3)) return { result: !1, count: 0 }
            if (((this.posCrossRef[this.secCount] = r), this.subGraphs[r].id === e)) return { result: !0, count: 0 }
            let i = 0,
              a = 1
            for (; i < n.length; ) {
              let s = this.getPosForId(n[i])
              if (s >= 0) {
                let l = this.indexNodes2(e, s)
                if (l.result) return { result: !0, count: a + l.count }
                a = a + l.count
              }
              i = i + 1
            }
            return { result: !1, count: a }
          }
          getDepthFirstPos(e) {
            return this.posCrossRef[e]
          }
          indexNodes() {
            ;(this.secCount = -1), this.subGraphs.length > 0 && this.indexNodes2('none', this.subGraphs.length - 1)
          }
          getSubGraphs() {
            return this.subGraphs
          }
          firstGraph() {
            return this.firstGraphFlag ? ((this.firstGraphFlag = !1), !0) : !1
          }
          destructStartLink(e) {
            let r = e.trim(),
              n = 'arrow_open'
            switch (r[0]) {
              case '<':
                ;(n = 'arrow_point'), (r = r.slice(1))
                break
              case 'x':
                ;(n = 'arrow_cross'), (r = r.slice(1))
                break
              case 'o':
                ;(n = 'arrow_circle'), (r = r.slice(1))
                break
            }
            let i = 'normal'
            return r.includes('=') && (i = 'thick'), r.includes('.') && (i = 'dotted'), { type: n, stroke: i }
          }
          countChar(e, r) {
            let n = r.length,
              i = 0
            for (let a = 0; a < n; ++a) r[a] === e && ++i
            return i
          }
          destructEndLink(e) {
            let r = e.trim(),
              n = r.slice(0, -1),
              i = 'arrow_open'
            switch (r.slice(-1)) {
              case 'x':
                ;(i = 'arrow_cross'), r.startsWith('x') && ((i = 'double_' + i), (n = n.slice(1)))
                break
              case '>':
                ;(i = 'arrow_point'), r.startsWith('<') && ((i = 'double_' + i), (n = n.slice(1)))
                break
              case 'o':
                ;(i = 'arrow_circle'), r.startsWith('o') && ((i = 'double_' + i), (n = n.slice(1)))
                break
            }
            let a = 'normal',
              s = n.length - 1
            n.startsWith('=') && (a = 'thick'), n.startsWith('~') && (a = 'invisible')
            let l = this.countChar('.', n)
            return l && ((a = 'dotted'), (s = l)), { type: i, stroke: a, length: s }
          }
          destructLink(e, r) {
            let n = this.destructEndLink(e),
              i
            if (r) {
              if (((i = this.destructStartLink(r)), i.stroke !== n.stroke)) return { type: 'INVALID', stroke: 'INVALID' }
              if (i.type === 'arrow_open') i.type = n.type
              else {
                if (i.type !== n.type) return { type: 'INVALID', stroke: 'INVALID' }
                i.type = 'double_' + i.type
              }
              return i.type === 'double_arrow' && (i.type = 'double_arrow_point'), (i.length = n.length), i
            }
            return n
          }
          exists(e, r) {
            for (let n of e) if (n.nodes.includes(r)) return !0
            return !1
          }
          makeUniq(e, r) {
            let n = []
            return (
              e.nodes.forEach((i, a) => {
                this.exists(r, i) || n.push(e.nodes[a])
              }),
              { nodes: n }
            )
          }
          getTypeFromVertex(e) {
            if (e.img) return 'imageSquare'
            if (e.icon) return e.form === 'circle' ? 'iconCircle' : e.form === 'square' ? 'iconSquare' : e.form === 'rounded' ? 'iconRounded' : 'icon'
            switch (e.type) {
              case 'square':
              case void 0:
                return 'squareRect'
              case 'round':
                return 'roundedRect'
              case 'ellipse':
                return 'ellipse'
              default:
                return e.type
            }
          }
          findNode(e, r) {
            return e.find(n => n.id === r)
          }
          destructEdgeType(e) {
            let r = 'none',
              n = 'arrow_point'
            switch (e) {
              case 'arrow_point':
              case 'arrow_circle':
              case 'arrow_cross':
                n = e
                break
              case 'double_arrow_point':
              case 'double_arrow_circle':
              case 'double_arrow_cross':
                ;(r = e.replace('double_', '')), (n = r)
                break
            }
            return { arrowTypeStart: r, arrowTypeEnd: n }
          }
          addNodeFromVertex(e, r, n, i, a, s) {
            let l = n.get(e.id),
              u = i.get(e.id) ?? !1,
              h = this.findNode(r, e.id)
            if (h) (h.cssStyles = e.styles), (h.cssCompiledStyles = this.getCompiledStyles(e.classes)), (h.cssClasses = e.classes.join(' '))
            else {
              let f = {
                id: e.id,
                label: e.text,
                labelStyle: '',
                parentId: l,
                padding: a.flowchart?.padding || 8,
                cssStyles: e.styles,
                cssCompiledStyles: this.getCompiledStyles(['default', 'node', ...e.classes]),
                cssClasses: 'default ' + e.classes.join(' '),
                dir: e.dir,
                domId: e.domId,
                look: s,
                link: e.link,
                linkTarget: e.linkTarget,
                tooltip: this.getTooltip(e.id),
                icon: e.icon,
                pos: e.pos,
                img: e.img,
                assetWidth: e.assetWidth,
                assetHeight: e.assetHeight,
                constraint: e.constraint
              }
              u ? r.push({ ...f, isGroup: !0, shape: 'rect' }) : r.push({ ...f, isGroup: !1, shape: this.getTypeFromVertex(e) })
            }
          }
          getCompiledStyles(e) {
            let r = []
            for (let n of e) {
              let i = this.classes.get(n)
              i?.styles && (r = [...r, ...(i.styles ?? [])].map(a => a.trim())), i?.textStyles && (r = [...r, ...(i.textStyles ?? [])].map(a => a.trim()))
            }
            return r
          }
          getData() {
            let e = me(),
              r = [],
              n = [],
              i = this.getSubGraphs(),
              a = new Map(),
              s = new Map()
            for (let h = i.length - 1; h >= 0; h--) {
              let f = i[h]
              f.nodes.length > 0 && s.set(f.id, !0)
              for (let d of f.nodes) a.set(d, f.id)
            }
            for (let h = i.length - 1; h >= 0; h--) {
              let f = i[h]
              r.push({
                id: f.id,
                label: f.title,
                labelStyle: '',
                parentId: a.get(f.id),
                padding: 8,
                cssCompiledStyles: this.getCompiledStyles(f.classes),
                cssClasses: f.classes.join(' '),
                shape: 'rect',
                dir: f.dir,
                isGroup: !0,
                look: e.look
              })
            }
            this.getVertices().forEach(h => {
              this.addNodeFromVertex(h, r, a, s, e, e.look || 'classic')
            })
            let u = this.getEdges()
            return (
              u.forEach((h, f) => {
                let { arrowTypeStart: d, arrowTypeEnd: p } = this.destructEdgeType(h.type),
                  m = [...(u.defaultStyle ?? [])]
                h.style && m.push(...h.style)
                let g = {
                  id: Wh(h.start, h.end, { counter: f, prefix: 'L' }, h.id),
                  isUserDefinedId: h.isUserDefinedId,
                  start: h.start,
                  end: h.end,
                  type: h.type ?? 'normal',
                  label: h.text,
                  labelpos: 'c',
                  thickness: h.stroke,
                  minlen: h.length,
                  classes: h?.stroke === 'invisible' ? '' : 'edge-thickness-normal edge-pattern-solid flowchart-link',
                  arrowTypeStart: h?.stroke === 'invisible' || h?.type === 'arrow_open' ? 'none' : d,
                  arrowTypeEnd: h?.stroke === 'invisible' || h?.type === 'arrow_open' ? 'none' : p,
                  arrowheadStyle: 'fill: #333',
                  cssCompiledStyles: this.getCompiledStyles(h.classes),
                  labelStyle: m,
                  style: m,
                  pattern: h.stroke,
                  look: e.look,
                  animate: h.animate,
                  animation: h.animation,
                  curve: h.interpolate || this.edges.defaultInterpolate || e.flowchart?.curve
                }
                n.push(g)
              }),
              { nodes: r, edges: n, other: {}, config: e }
            )
          }
          defaultConfig() {
            return $3.flowchart
          }
        })
    })
  var wc,
    Sm = N(() => {
      'use strict'
      fr()
      wc = o((t, e) => {
        let r
        return e === 'sandbox' && (r = Ge('#i' + t)), (e === 'sandbox' ? Ge(r.nodes()[0].contentDocument.body) : Ge('body')).select(`[id="${t}"]`)
      }, 'getDiagramElement')
    })
  var Bu,
    R2 = N(() => {
      'use strict'
      Bu = o(({ flowchart: t }) => {
        let e = t?.subGraphTitleMargin?.top ?? 0,
          r = t?.subGraphTitleMargin?.bottom ?? 0,
          n = e + r
        return { subGraphTitleTopMargin: e, subGraphTitleBottomMargin: r, subGraphTitleTotalMargin: n }
      }, 'getSubGraphTitleMargins')
    })
  var cee,
    e9e,
    t9e,
    r9e,
    n9e,
    i9e,
    a9e,
    uee,
    Cm,
    hee,
    aw = N(() => {
      'use strict'
      Gt()
      pr()
      yt()
      R2()
      fr()
      Wt()
      ao()
      mL()
      rw()
      Zh()
      zt()
      ;(cee = o(async (t, e) => {
        X.info('Creating subgraph rect for ', e.id, e)
        let r = me(),
          { themeVariables: n, handDrawnSeed: i } = r,
          { clusterBkg: a, clusterBorder: s } = n,
          { labelStyles: l, nodeStyles: u, borderStyles: h, backgroundStyles: f } = Ye(e),
          d = t
            .insert('g')
            .attr('class', 'cluster ' + e.cssClasses)
            .attr('id', e.id)
            .attr('data-look', e.look),
          p = dr(r.flowchart.htmlLabels),
          m = d.insert('g').attr('class', 'cluster-label '),
          g = await qn(m, e.label, { style: e.labelStyle, useHtmlLabels: p, isNode: !0 }),
          y = g.getBBox()
        if (dr(r.flowchart.htmlLabels)) {
          let _ = g.children[0],
            C = Ge(g)
          ;(y = _.getBoundingClientRect()), C.attr('width', y.width), C.attr('height', y.height)
        }
        let v = e.width <= y.width + e.padding ? y.width + e.padding : e.width
        e.width <= y.width + e.padding ? (e.diff = (v - e.width) / 2 - e.padding) : (e.diff = -e.padding)
        let x = e.height,
          b = e.x - v / 2,
          T = e.y - x / 2
        X.trace('Data ', e, JSON.stringify(e))
        let S
        if (e.look === 'handDrawn') {
          let _ = je.svg(d),
            C = Qe(e, { roughness: 0.7, fill: a, stroke: s, fillWeight: 3, seed: i }),
            D = _.path(Oa(b, T, v, x, 0), C)
          ;(S = d.insert(() => (X.debug('Rough node insert CXC', D), D), ':first-child')),
            S.select('path:nth-child(2)').attr('style', h.join(';')),
            S.select('path').attr('style', f.join(';').replace('fill', 'stroke'))
        } else (S = d.insert('rect', ':first-child')), S.attr('style', u).attr('rx', e.rx).attr('ry', e.ry).attr('x', b).attr('y', T).attr('width', v).attr('height', x)
        let { subGraphTitleTopMargin: w } = Bu(r)
        if ((m.attr('transform', `translate(${e.x - y.width / 2}, ${e.y - e.height / 2 + w})`), l)) {
          let _ = m.select('span')
          _ && _.attr('style', l)
        }
        let E = S.node().getBBox()
        return (
          (e.offsetX = 0),
          (e.width = E.width),
          (e.height = E.height),
          (e.offsetY = y.height - e.padding / 2),
          (e.intersect = function (_) {
            return Xh(e, _)
          }),
          { cluster: d, labelBBox: y }
        )
      }, 'rect')),
        (e9e = o((t, e) => {
          let r = t.insert('g').attr('class', 'note-cluster').attr('id', e.id),
            n = r.insert('rect', ':first-child'),
            i = 0 * e.padding,
            a = i / 2
          n.attr('rx', e.rx)
            .attr('ry', e.ry)
            .attr('x', e.x - e.width / 2 - a)
            .attr('y', e.y - e.height / 2 - a)
            .attr('width', e.width + i)
            .attr('height', e.height + i)
            .attr('fill', 'none')
          let s = n.node().getBBox()
          return (
            (e.width = s.width),
            (e.height = s.height),
            (e.intersect = function (l) {
              return Xh(e, l)
            }),
            { cluster: r, labelBBox: { width: 0, height: 0 } }
          )
        }, 'noteGroup')),
        (t9e = o(async (t, e) => {
          let r = me(),
            { themeVariables: n, handDrawnSeed: i } = r,
            { altBackground: a, compositeBackground: s, compositeTitleBackground: l, nodeBorder: u } = n,
            h = t.insert('g').attr('class', e.cssClasses).attr('id', e.id).attr('data-id', e.id).attr('data-look', e.look),
            f = h.insert('g', ':first-child'),
            d = h.insert('g').attr('class', 'cluster-label'),
            p = h.append('rect'),
            m = d.node().appendChild(await Tc(e.label, e.labelStyle, void 0, !0)),
            g = m.getBBox()
          if (dr(r.flowchart.htmlLabels)) {
            let D = m.children[0],
              O = Ge(m)
            ;(g = D.getBoundingClientRect()), O.attr('width', g.width), O.attr('height', g.height)
          }
          let y = 0 * e.padding,
            v = y / 2,
            x = (e.width <= g.width + e.padding ? g.width + e.padding : e.width) + y
          e.width <= g.width + e.padding ? (e.diff = (x - e.width) / 2 - e.padding) : (e.diff = -e.padding)
          let b = e.height + y,
            T = e.height + y - g.height - 6,
            S = e.x - x / 2,
            w = e.y - b / 2
          e.width = x
          let E = e.y - e.height / 2 - v + g.height + 2,
            _
          if (e.look === 'handDrawn') {
            let D = e.cssClasses.includes('statediagram-cluster-alt'),
              O = je.svg(h),
              R = e.rx || e.ry ? O.path(Oa(S, w, x, b, 10), { roughness: 0.7, fill: l, fillStyle: 'solid', stroke: u, seed: i }) : O.rectangle(S, w, x, b, { seed: i })
            _ = h.insert(() => R, ':first-child')
            let k = O.rectangle(S, E, x, T, { fill: D ? a : s, fillStyle: D ? 'hachure' : 'solid', stroke: u, seed: i })
            ;(_ = h.insert(() => R, ':first-child')), (p = h.insert(() => k))
          } else
            (_ = f.insert('rect', ':first-child')),
              _.attr('class', 'outer').attr('x', S).attr('y', w).attr('width', x).attr('height', b).attr('data-look', e.look),
              p.attr('class', 'inner').attr('x', S).attr('y', E).attr('width', x).attr('height', T)
          d.attr('transform', `translate(${e.x - g.width / 2}, ${w + 1 - (dr(r.flowchart.htmlLabels) ? 0 : 3)})`)
          let C = _.node().getBBox()
          return (
            (e.height = C.height),
            (e.offsetX = 0),
            (e.offsetY = g.height - e.padding / 2),
            (e.labelBBox = g),
            (e.intersect = function (D) {
              return Xh(e, D)
            }),
            { cluster: h, labelBBox: g }
          )
        }, 'roundedWithTitle')),
        (r9e = o(async (t, e) => {
          X.info('Creating subgraph rect for ', e.id, e)
          let r = me(),
            { themeVariables: n, handDrawnSeed: i } = r,
            { clusterBkg: a, clusterBorder: s } = n,
            { labelStyles: l, nodeStyles: u, borderStyles: h, backgroundStyles: f } = Ye(e),
            d = t
              .insert('g')
              .attr('class', 'cluster ' + e.cssClasses)
              .attr('id', e.id)
              .attr('data-look', e.look),
            p = dr(r.flowchart.htmlLabels),
            m = d.insert('g').attr('class', 'cluster-label '),
            g = await qn(m, e.label, { style: e.labelStyle, useHtmlLabels: p, isNode: !0, width: e.width }),
            y = g.getBBox()
          if (dr(r.flowchart.htmlLabels)) {
            let _ = g.children[0],
              C = Ge(g)
            ;(y = _.getBoundingClientRect()), C.attr('width', y.width), C.attr('height', y.height)
          }
          let v = e.width <= y.width + e.padding ? y.width + e.padding : e.width
          e.width <= y.width + e.padding ? (e.diff = (v - e.width) / 2 - e.padding) : (e.diff = -e.padding)
          let x = e.height,
            b = e.x - v / 2,
            T = e.y - x / 2
          X.trace('Data ', e, JSON.stringify(e))
          let S
          if (e.look === 'handDrawn') {
            let _ = je.svg(d),
              C = Qe(e, { roughness: 0.7, fill: a, stroke: s, fillWeight: 4, seed: i }),
              D = _.path(Oa(b, T, v, x, e.rx), C)
            ;(S = d.insert(() => (X.debug('Rough node insert CXC', D), D), ':first-child')),
              S.select('path:nth-child(2)').attr('style', h.join(';')),
              S.select('path').attr('style', f.join(';').replace('fill', 'stroke'))
          } else (S = d.insert('rect', ':first-child')), S.attr('style', u).attr('rx', e.rx).attr('ry', e.ry).attr('x', b).attr('y', T).attr('width', v).attr('height', x)
          let { subGraphTitleTopMargin: w } = Bu(r)
          if ((m.attr('transform', `translate(${e.x - y.width / 2}, ${e.y - e.height / 2 + w})`), l)) {
            let _ = m.select('span')
            _ && _.attr('style', l)
          }
          let E = S.node().getBBox()
          return (
            (e.offsetX = 0),
            (e.width = E.width),
            (e.height = E.height),
            (e.offsetY = y.height - e.padding / 2),
            (e.intersect = function (_) {
              return Xh(e, _)
            }),
            { cluster: d, labelBBox: y }
          )
        }, 'kanbanSection')),
        (n9e = o((t, e) => {
          let r = me(),
            { themeVariables: n, handDrawnSeed: i } = r,
            { nodeBorder: a } = n,
            s = t.insert('g').attr('class', e.cssClasses).attr('id', e.id).attr('data-look', e.look),
            l = s.insert('g', ':first-child'),
            u = 0 * e.padding,
            h = e.width + u
          e.diff = -e.padding
          let f = e.height + u,
            d = e.x - h / 2,
            p = e.y - f / 2
          e.width = h
          let m
          if (e.look === 'handDrawn') {
            let v = je.svg(s).rectangle(d, p, h, f, { fill: 'lightgrey', roughness: 0.5, strokeLineDash: [5], stroke: a, seed: i })
            m = s.insert(() => v, ':first-child')
          } else (m = l.insert('rect', ':first-child')), m.attr('class', 'divider').attr('x', d).attr('y', p).attr('width', h).attr('height', f).attr('data-look', e.look)
          let g = m.node().getBBox()
          return (
            (e.height = g.height),
            (e.offsetX = 0),
            (e.offsetY = 0),
            (e.intersect = function (y) {
              return Xh(e, y)
            }),
            { cluster: s, labelBBox: {} }
          )
        }, 'divider')),
        (i9e = cee),
        (a9e = { rect: cee, squareRect: i9e, roundedWithTitle: t9e, noteGroup: e9e, divider: n9e, kanbanSection: r9e }),
        (uee = new Map()),
        (Cm = o(async (t, e) => {
          let r = e.shape || 'rect',
            n = await a9e[r](t, e)
          return uee.set(e.id, n), n
        }, 'insertCluster')),
        (hee = o(() => {
          uee = new Map()
        }, 'clear'))
    })
  function sw(t, e) {
    if (t === void 0 || e === void 0) return { angle: 0, deltaX: 0, deltaY: 0 }
    ;(t = Yn(t)), (e = Yn(e))
    let [r, n] = [t.x, t.y],
      [i, a] = [e.x, e.y],
      s = i - r,
      l = a - n
    return { angle: Math.atan(l / s), deltaX: s, deltaY: l }
  }
  var Vo,
    Yn,
    ow,
    PL = N(() => {
      'use strict'
      Vo = { aggregation: 18, extension: 18, composition: 18, dependency: 6, lollipop: 13.5, arrow_point: 4 }
      o(sw, 'calculateDeltaAndAngle')
      ;(Yn = o(t => (Array.isArray(t) ? { x: t[0], y: t[1] } : t), 'pointTransformer')),
        (ow = o(
          t => ({
            x: o(function (e, r, n) {
              let i = 0,
                a = Yn(n[0]).x < Yn(n[n.length - 1]).x ? 'left' : 'right'
              if (r === 0 && Object.hasOwn(Vo, t.arrowTypeStart)) {
                let { angle: m, deltaX: g } = sw(n[0], n[1])
                i = Vo[t.arrowTypeStart] * Math.cos(m) * (g >= 0 ? 1 : -1)
              } else if (r === n.length - 1 && Object.hasOwn(Vo, t.arrowTypeEnd)) {
                let { angle: m, deltaX: g } = sw(n[n.length - 1], n[n.length - 2])
                i = Vo[t.arrowTypeEnd] * Math.cos(m) * (g >= 0 ? 1 : -1)
              }
              let s = Math.abs(Yn(e).x - Yn(n[n.length - 1]).x),
                l = Math.abs(Yn(e).y - Yn(n[n.length - 1]).y),
                u = Math.abs(Yn(e).x - Yn(n[0]).x),
                h = Math.abs(Yn(e).y - Yn(n[0]).y),
                f = Vo[t.arrowTypeStart],
                d = Vo[t.arrowTypeEnd],
                p = 1
              if (s < d && s > 0 && l < d) {
                let m = d + p - s
                ;(m *= a === 'right' ? -1 : 1), (i -= m)
              }
              if (u < f && u > 0 && h < f) {
                let m = f + p - u
                ;(m *= a === 'right' ? -1 : 1), (i += m)
              }
              return Yn(e).x + i
            }, 'x'),
            y: o(function (e, r, n) {
              let i = 0,
                a = Yn(n[0]).y < Yn(n[n.length - 1]).y ? 'down' : 'up'
              if (r === 0 && Object.hasOwn(Vo, t.arrowTypeStart)) {
                let { angle: m, deltaY: g } = sw(n[0], n[1])
                i = Vo[t.arrowTypeStart] * Math.abs(Math.sin(m)) * (g >= 0 ? 1 : -1)
              } else if (r === n.length - 1 && Object.hasOwn(Vo, t.arrowTypeEnd)) {
                let { angle: m, deltaY: g } = sw(n[n.length - 1], n[n.length - 2])
                i = Vo[t.arrowTypeEnd] * Math.abs(Math.sin(m)) * (g >= 0 ? 1 : -1)
              }
              let s = Math.abs(Yn(e).y - Yn(n[n.length - 1]).y),
                l = Math.abs(Yn(e).x - Yn(n[n.length - 1]).x),
                u = Math.abs(Yn(e).y - Yn(n[0]).y),
                h = Math.abs(Yn(e).x - Yn(n[0]).x),
                f = Vo[t.arrowTypeStart],
                d = Vo[t.arrowTypeEnd],
                p = 1
              if (s < d && s > 0 && l < d) {
                let m = d + p - s
                ;(m *= a === 'up' ? -1 : 1), (i -= m)
              }
              if (u < f && u > 0 && h < f) {
                let m = f + p - u
                ;(m *= a === 'up' ? -1 : 1), (i += m)
              }
              return Yn(e).y + i
            }, 'y')
          }),
          'getLineFunctionsWithOffset'
        ))
    })
  var dee,
    s9e,
    fee,
    pee = N(() => {
      'use strict'
      yt()
      ;(dee = o((t, e, r, n, i, a) => {
        e.arrowTypeStart && fee(t, 'start', e.arrowTypeStart, r, n, i, a), e.arrowTypeEnd && fee(t, 'end', e.arrowTypeEnd, r, n, i, a)
      }, 'addEdgeMarkers')),
        (s9e = {
          arrow_cross: { type: 'cross', fill: !1 },
          arrow_point: { type: 'point', fill: !0 },
          arrow_barb: { type: 'barb', fill: !0 },
          arrow_circle: { type: 'circle', fill: !1 },
          aggregation: { type: 'aggregation', fill: !1 },
          extension: { type: 'extension', fill: !1 },
          composition: { type: 'composition', fill: !0 },
          dependency: { type: 'dependency', fill: !0 },
          lollipop: { type: 'lollipop', fill: !1 },
          only_one: { type: 'onlyOne', fill: !1 },
          zero_or_one: { type: 'zeroOrOne', fill: !1 },
          one_or_more: { type: 'oneOrMore', fill: !1 },
          zero_or_more: { type: 'zeroOrMore', fill: !1 },
          requirement_arrow: { type: 'requirement_arrow', fill: !1 },
          requirement_contains: { type: 'requirement_contains', fill: !1 }
        }),
        (fee = o((t, e, r, n, i, a, s) => {
          let l = s9e[r]
          if (!l) {
            X.warn(`Unknown arrow type: ${r}`)
            return
          }
          let u = l.type,
            f = `${i}_${a}-${u}${e === 'start' ? 'Start' : 'End'}`
          if (s && s.trim() !== '') {
            let d = s.replace(/[^\dA-Za-z]/g, '_'),
              p = `${f}_${d}`
            if (!document.getElementById(p)) {
              let m = document.getElementById(f)
              if (m) {
                let g = m.cloneNode(!0)
                ;(g.id = p),
                  g.querySelectorAll('path, circle, line').forEach(v => {
                    v.setAttribute('stroke', s), l.fill && v.setAttribute('fill', s)
                  }),
                  m.parentNode?.appendChild(g)
              }
            }
            t.attr(`marker-${e}`, `url(${n}#${p})`)
          } else t.attr(`marker-${e}`, `url(${n}#${f})`)
        }, 'addEdgeMarker'))
    })
  function lw(t, e) {
    me().flowchart.htmlLabels && t && ((t.style.width = e.length * 9 + 'px'), (t.style.height = '12px'))
  }
  function c9e(t) {
    let e = [],
      r = []
    for (let n = 1; n < t.length - 1; n++) {
      let i = t[n - 1],
        a = t[n],
        s = t[n + 1]
      ;((i.x === a.x && a.y === s.y && Math.abs(a.x - s.x) > 5 && Math.abs(a.y - i.y) > 5) || (i.y === a.y && a.x === s.x && Math.abs(a.x - i.x) > 5 && Math.abs(a.y - s.y) > 5)) &&
        (e.push(a), r.push(n))
    }
    return { cornerPoints: e, cornerPointPositions: r }
  }
  var cw,
    da,
    yee,
    N2,
    uw,
    hw,
    o9e,
    l9e,
    mee,
    gee,
    u9e,
    fw,
    BL = N(() => {
      'use strict'
      Gt()
      pr()
      yt()
      ao()
      er()
      PL()
      R2()
      fr()
      Wt()
      rw()
      pee()
      zt()
      ;(cw = new Map()),
        (da = new Map()),
        (yee = o(() => {
          cw.clear(), da.clear()
        }, 'clear')),
        (N2 = o(t => (t ? t.reduce((r, n) => r + ';' + n, '') : ''), 'getLabelStyles')),
        (uw = o(async (t, e) => {
          let r = dr(me().flowchart.htmlLabels),
            n = await qn(t, e.label, { style: N2(e.labelStyle), useHtmlLabels: r, addSvgBackground: !0, isNode: !1 })
          X.info('abc82', e, e.labelType)
          let i = t.insert('g').attr('class', 'edgeLabel'),
            a = i.insert('g').attr('class', 'label')
          a.node().appendChild(n)
          let s = n.getBBox()
          if (r) {
            let u = n.children[0],
              h = Ge(n)
            ;(s = u.getBoundingClientRect()), h.attr('width', s.width), h.attr('height', s.height)
          }
          a.attr('transform', 'translate(' + -s.width / 2 + ', ' + -s.height / 2 + ')'), cw.set(e.id, i), (e.width = s.width), (e.height = s.height)
          let l
          if (e.startLabelLeft) {
            let u = await Tc(e.startLabelLeft, N2(e.labelStyle)),
              h = t.insert('g').attr('class', 'edgeTerminals'),
              f = h.insert('g').attr('class', 'inner')
            l = f.node().appendChild(u)
            let d = u.getBBox()
            f.attr('transform', 'translate(' + -d.width / 2 + ', ' + -d.height / 2 + ')'), da.get(e.id) || da.set(e.id, {}), (da.get(e.id).startLeft = h), lw(l, e.startLabelLeft)
          }
          if (e.startLabelRight) {
            let u = await Tc(e.startLabelRight, N2(e.labelStyle)),
              h = t.insert('g').attr('class', 'edgeTerminals'),
              f = h.insert('g').attr('class', 'inner')
            ;(l = h.node().appendChild(u)), f.node().appendChild(u)
            let d = u.getBBox()
            f.attr('transform', 'translate(' + -d.width / 2 + ', ' + -d.height / 2 + ')'), da.get(e.id) || da.set(e.id, {}), (da.get(e.id).startRight = h), lw(l, e.startLabelRight)
          }
          if (e.endLabelLeft) {
            let u = await Tc(e.endLabelLeft, N2(e.labelStyle)),
              h = t.insert('g').attr('class', 'edgeTerminals'),
              f = h.insert('g').attr('class', 'inner')
            l = f.node().appendChild(u)
            let d = u.getBBox()
            f.attr('transform', 'translate(' + -d.width / 2 + ', ' + -d.height / 2 + ')'),
              h.node().appendChild(u),
              da.get(e.id) || da.set(e.id, {}),
              (da.get(e.id).endLeft = h),
              lw(l, e.endLabelLeft)
          }
          if (e.endLabelRight) {
            let u = await Tc(e.endLabelRight, N2(e.labelStyle)),
              h = t.insert('g').attr('class', 'edgeTerminals'),
              f = h.insert('g').attr('class', 'inner')
            l = f.node().appendChild(u)
            let d = u.getBBox()
            f.attr('transform', 'translate(' + -d.width / 2 + ', ' + -d.height / 2 + ')'),
              h.node().appendChild(u),
              da.get(e.id) || da.set(e.id, {}),
              (da.get(e.id).endRight = h),
              lw(l, e.endLabelRight)
          }
          return n
        }, 'insertEdgeLabel'))
      o(lw, 'setTerminalWidth')
      ;(hw = o((t, e) => {
        X.debug('Moving label abc88 ', t.id, t.label, cw.get(t.id), e)
        let r = e.updatedPath ? e.updatedPath : e.originalPath,
          n = me(),
          { subGraphTitleTotalMargin: i } = Bu(n)
        if (t.label) {
          let a = cw.get(t.id),
            s = t.x,
            l = t.y
          if (r) {
            let u = Vt.calcLabelPosition(r)
            X.debug('Moving label ' + t.label + ' from (', s, ',', l, ') to (', u.x, ',', u.y, ') abc88'), e.updatedPath && ((s = u.x), (l = u.y))
          }
          a.attr('transform', `translate(${s}, ${l + i / 2})`)
        }
        if (t.startLabelLeft) {
          let a = da.get(t.id).startLeft,
            s = t.x,
            l = t.y
          if (r) {
            let u = Vt.calcTerminalLabelPosition(t.arrowTypeStart ? 10 : 0, 'start_left', r)
            ;(s = u.x), (l = u.y)
          }
          a.attr('transform', `translate(${s}, ${l})`)
        }
        if (t.startLabelRight) {
          let a = da.get(t.id).startRight,
            s = t.x,
            l = t.y
          if (r) {
            let u = Vt.calcTerminalLabelPosition(t.arrowTypeStart ? 10 : 0, 'start_right', r)
            ;(s = u.x), (l = u.y)
          }
          a.attr('transform', `translate(${s}, ${l})`)
        }
        if (t.endLabelLeft) {
          let a = da.get(t.id).endLeft,
            s = t.x,
            l = t.y
          if (r) {
            let u = Vt.calcTerminalLabelPosition(t.arrowTypeEnd ? 10 : 0, 'end_left', r)
            ;(s = u.x), (l = u.y)
          }
          a.attr('transform', `translate(${s}, ${l})`)
        }
        if (t.endLabelRight) {
          let a = da.get(t.id).endRight,
            s = t.x,
            l = t.y
          if (r) {
            let u = Vt.calcTerminalLabelPosition(t.arrowTypeEnd ? 10 : 0, 'end_right', r)
            ;(s = u.x), (l = u.y)
          }
          a.attr('transform', `translate(${s}, ${l})`)
        }
      }, 'positionEdgeLabel')),
        (o9e = o((t, e) => {
          let r = t.x,
            n = t.y,
            i = Math.abs(e.x - r),
            a = Math.abs(e.y - n),
            s = t.width / 2,
            l = t.height / 2
          return i >= s || a >= l
        }, 'outsideNode')),
        (l9e = o((t, e, r) => {
          X.debug(`intersection calc abc89:
  outsidePoint: ${JSON.stringify(e)}
  insidePoint : ${JSON.stringify(r)}
  node        : x:${t.x} y:${t.y} w:${t.width} h:${t.height}`)
          let n = t.x,
            i = t.y,
            a = Math.abs(n - r.x),
            s = t.width / 2,
            l = r.x < e.x ? s - a : s + a,
            u = t.height / 2,
            h = Math.abs(e.y - r.y),
            f = Math.abs(e.x - r.x)
          if (Math.abs(i - e.y) * s > Math.abs(n - e.x) * u) {
            let d = r.y < e.y ? e.y - u - i : i - u - e.y
            l = (f * d) / h
            let p = { x: r.x < e.x ? r.x + l : r.x - f + l, y: r.y < e.y ? r.y + h - d : r.y - h + d }
            return l === 0 && ((p.x = e.x), (p.y = e.y)), f === 0 && (p.x = e.x), h === 0 && (p.y = e.y), X.debug(`abc89 top/bottom calc, Q ${h}, q ${d}, R ${f}, r ${l}`, p), p
          } else {
            r.x < e.x ? (l = e.x - s - n) : (l = n - s - e.x)
            let d = (h * l) / f,
              p = r.x < e.x ? r.x + f - l : r.x - f + l,
              m = r.y < e.y ? r.y + d : r.y - d
            return (
              X.debug(`sides calc abc89, Q ${h}, q ${d}, R ${f}, r ${l}`, { _x: p, _y: m }),
              l === 0 && ((p = e.x), (m = e.y)),
              f === 0 && (p = e.x),
              h === 0 && (m = e.y),
              { x: p, y: m }
            )
          }
        }, 'intersection')),
        (mee = o((t, e) => {
          X.warn('abc88 cutPathAtIntersect', t, e)
          let r = [],
            n = t[0],
            i = !1
          return (
            t.forEach(a => {
              if ((X.info('abc88 checking point', a, e), !o9e(e, a) && !i)) {
                let s = l9e(e, n, a)
                X.debug('abc88 inside', a, n, s), X.debug('abc88 intersection', s, e)
                let l = !1
                r.forEach(u => {
                  l = l || (u.x === s.x && u.y === s.y)
                }),
                  r.some(u => u.x === s.x && u.y === s.y) ? X.warn('abc88 no intersect', s, r) : r.push(s),
                  (i = !0)
              } else X.warn('abc88 outside', a, n), (n = a), i || r.push(a)
            }),
            X.debug('returning points', r),
            r
          )
        }, 'cutPathAtIntersect'))
      o(c9e, 'extractCornerPoints')
      ;(gee = o(function (t, e, r) {
        let n = e.x - t.x,
          i = e.y - t.y,
          a = Math.sqrt(n * n + i * i),
          s = r / a
        return { x: e.x - s * n, y: e.y - s * i }
      }, 'findAdjacentPoint')),
        (u9e = o(function (t) {
          let { cornerPointPositions: e } = c9e(t),
            r = []
          for (let n = 0; n < t.length; n++)
            if (e.includes(n)) {
              let i = t[n - 1],
                a = t[n + 1],
                s = t[n],
                l = gee(i, s, 5),
                u = gee(a, s, 5),
                h = u.x - l.x,
                f = u.y - l.y
              r.push(l)
              let d = Math.sqrt(2) * 2,
                p = { x: s.x, y: s.y }
              if (Math.abs(a.x - i.x) > 10 && Math.abs(a.y - i.y) >= 10) {
                X.debug('Corner point fixing', Math.abs(a.x - i.x), Math.abs(a.y - i.y))
                let m = 5
                s.x === l.x
                  ? (p = { x: h < 0 ? l.x - m + d : l.x + m - d, y: f < 0 ? l.y - d : l.y + d })
                  : (p = { x: h < 0 ? l.x - d : l.x + d, y: f < 0 ? l.y - m + d : l.y + m - d })
              } else X.debug('Corner point skipping fixing', Math.abs(a.x - i.x), Math.abs(a.y - i.y))
              r.push(p, u)
            } else r.push(t[n])
          return r
        }, 'fixCorners')),
        (fw = o(function (t, e, r, n, i, a, s) {
          let { handDrawnSeed: l } = me(),
            u = e.points,
            h = !1,
            f = i
          var d = a
          let p = []
          for (let D in e.cssCompiledStyles) S2(D) || p.push(e.cssCompiledStyles[D])
          d.intersect &&
            f.intersect &&
            ((u = u.slice(1, e.points.length - 1)),
            u.unshift(f.intersect(u[0])),
            X.debug('Last point APA12', e.start, '-->', e.end, u[u.length - 1], d, d.intersect(u[u.length - 1])),
            u.push(d.intersect(u[u.length - 1]))),
            e.toCluster && (X.info('to cluster abc88', r.get(e.toCluster)), (u = mee(e.points, r.get(e.toCluster).node)), (h = !0)),
            e.fromCluster &&
              (X.debug('from cluster abc88', r.get(e.fromCluster), JSON.stringify(u, null, 2)), (u = mee(u.reverse(), r.get(e.fromCluster).node).reverse()), (h = !0))
          let m = u.filter(D => !Number.isNaN(D.y))
          m = u9e(m)
          let g = No
          switch (((g = Su), e.curve)) {
            case 'linear':
              g = Su
              break
            case 'basis':
              g = No
              break
            case 'cardinal':
              g = qv
              break
            case 'bumpX':
              g = Gv
              break
            case 'bumpY':
              g = Vv
              break
            case 'catmullRom':
              g = jv
              break
            case 'monotoneX':
              g = Kv
              break
            case 'monotoneY':
              g = Qv
              break
            case 'natural':
              g = K0
              break
            case 'step':
              g = Q0
              break
            case 'stepAfter':
              g = Jv
              break
            case 'stepBefore':
              g = Zv
              break
            default:
              g = No
          }
          let { x: y, y: v } = ow(e),
            x = Cl().x(y).y(v).curve(g),
            b
          switch (e.thickness) {
            case 'normal':
              b = 'edge-thickness-normal'
              break
            case 'thick':
              b = 'edge-thickness-thick'
              break
            case 'invisible':
              b = 'edge-thickness-invisible'
              break
            default:
              b = 'edge-thickness-normal'
          }
          switch (e.pattern) {
            case 'solid':
              b += ' edge-pattern-solid'
              break
            case 'dotted':
              b += ' edge-pattern-dotted'
              break
            case 'dashed':
              b += ' edge-pattern-dashed'
              break
            default:
              b += ' edge-pattern-solid'
          }
          let T,
            S = x(m),
            w = Array.isArray(e.style) ? e.style : e.style ? [e.style] : [],
            E = w.find(D => D?.startsWith('stroke:'))
          if (e.look === 'handDrawn') {
            let D = je.svg(t)
            Object.assign([], m)
            let O = D.path(S, { roughness: 0.3, seed: l })
            ;(b += ' transition'),
              (T = Ge(O)
                .select('path')
                .attr('id', e.id)
                .attr('class', ' ' + b + (e.classes ? ' ' + e.classes : ''))
                .attr('style', w ? w.reduce((k, L) => k + ';' + L, '') : ''))
            let R = T.attr('d')
            T.attr('d', R), t.node().appendChild(T.node())
          } else {
            let D = p.join(';'),
              O = w ? w.reduce((L, A) => L + A + ';', '') : '',
              R = ''
            e.animate && (R = ' edge-animation-fast'), e.animation && (R = ' edge-animation-' + e.animation)
            let k = D ? D + ';' + O + ';' : O
            ;(T = t
              .append('path')
              .attr('d', S)
              .attr('id', e.id)
              .attr('class', ' ' + b + (e.classes ? ' ' + e.classes : '') + (R ?? ''))
              .attr('style', k)),
              (E = k.match(/stroke:([^;]+)/)?.[1])
          }
          let _ = ''
          ;(me().flowchart.arrowMarkerAbsolute || me().state.arrowMarkerAbsolute) && (_ = mu(!0)),
            X.info('arrowTypeStart', e.arrowTypeStart),
            X.info('arrowTypeEnd', e.arrowTypeEnd),
            dee(T, e, _, s, n, E)
          let C = {}
          return h && (C.updatedPath = u), (C.originalPath = e.points), C
        }, 'insertEdge'))
    })
  var h9e,
    f9e,
    d9e,
    p9e,
    m9e,
    g9e,
    y9e,
    v9e,
    x9e,
    b9e,
    T9e,
    w9e,
    k9e,
    E9e,
    S9e,
    C9e,
    A9e,
    dw,
    FL = N(() => {
      'use strict'
      yt()
      ;(h9e = o((t, e, r, n) => {
        e.forEach(i => {
          A9e[i](t, r, n)
        })
      }, 'insertMarkers')),
        (f9e = o((t, e, r) => {
          X.trace('Making markers for ', r),
            t
              .append('defs')
              .append('marker')
              .attr('id', r + '_' + e + '-extensionStart')
              .attr('class', 'marker extension ' + e)
              .attr('refX', 18)
              .attr('refY', 7)
              .attr('markerWidth', 190)
              .attr('markerHeight', 240)
              .attr('orient', 'auto')
              .append('path')
              .attr('d', 'M 1,7 L18,13 V 1 Z'),
            t
              .append('defs')
              .append('marker')
              .attr('id', r + '_' + e + '-extensionEnd')
              .attr('class', 'marker extension ' + e)
              .attr('refX', 1)
              .attr('refY', 7)
              .attr('markerWidth', 20)
              .attr('markerHeight', 28)
              .attr('orient', 'auto')
              .append('path')
              .attr('d', 'M 1,1 V 13 L18,7 Z')
        }, 'extension')),
        (d9e = o((t, e, r) => {
          t
            .append('defs')
            .append('marker')
            .attr('id', r + '_' + e + '-compositionStart')
            .attr('class', 'marker composition ' + e)
            .attr('refX', 18)
            .attr('refY', 7)
            .attr('markerWidth', 190)
            .attr('markerHeight', 240)
            .attr('orient', 'auto')
            .append('path')
            .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z'),
            t
              .append('defs')
              .append('marker')
              .attr('id', r + '_' + e + '-compositionEnd')
              .attr('class', 'marker composition ' + e)
              .attr('refX', 1)
              .attr('refY', 7)
              .attr('markerWidth', 20)
              .attr('markerHeight', 28)
              .attr('orient', 'auto')
              .append('path')
              .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z')
        }, 'composition')),
        (p9e = o((t, e, r) => {
          t
            .append('defs')
            .append('marker')
            .attr('id', r + '_' + e + '-aggregationStart')
            .attr('class', 'marker aggregation ' + e)
            .attr('refX', 18)
            .attr('refY', 7)
            .attr('markerWidth', 190)
            .attr('markerHeight', 240)
            .attr('orient', 'auto')
            .append('path')
            .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z'),
            t
              .append('defs')
              .append('marker')
              .attr('id', r + '_' + e + '-aggregationEnd')
              .attr('class', 'marker aggregation ' + e)
              .attr('refX', 1)
              .attr('refY', 7)
              .attr('markerWidth', 20)
              .attr('markerHeight', 28)
              .attr('orient', 'auto')
              .append('path')
              .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z')
        }, 'aggregation')),
        (m9e = o((t, e, r) => {
          t
            .append('defs')
            .append('marker')
            .attr('id', r + '_' + e + '-dependencyStart')
            .attr('class', 'marker dependency ' + e)
            .attr('refX', 6)
            .attr('refY', 7)
            .attr('markerWidth', 190)
            .attr('markerHeight', 240)
            .attr('orient', 'auto')
            .append('path')
            .attr('d', 'M 5,7 L9,13 L1,7 L9,1 Z'),
            t
              .append('defs')
              .append('marker')
              .attr('id', r + '_' + e + '-dependencyEnd')
              .attr('class', 'marker dependency ' + e)
              .attr('refX', 13)
              .attr('refY', 7)
              .attr('markerWidth', 20)
              .attr('markerHeight', 28)
              .attr('orient', 'auto')
              .append('path')
              .attr('d', 'M 18,7 L9,13 L14,7 L9,1 Z')
        }, 'dependency')),
        (g9e = o((t, e, r) => {
          t
            .append('defs')
            .append('marker')
            .attr('id', r + '_' + e + '-lollipopStart')
            .attr('class', 'marker lollipop ' + e)
            .attr('refX', 13)
            .attr('refY', 7)
            .attr('markerWidth', 190)
            .attr('markerHeight', 240)
            .attr('orient', 'auto')
            .append('circle')
            .attr('stroke', 'black')
            .attr('fill', 'transparent')
            .attr('cx', 7)
            .attr('cy', 7)
            .attr('r', 6),
            t
              .append('defs')
              .append('marker')
              .attr('id', r + '_' + e + '-lollipopEnd')
              .attr('class', 'marker lollipop ' + e)
              .attr('refX', 1)
              .attr('refY', 7)
              .attr('markerWidth', 190)
              .attr('markerHeight', 240)
              .attr('orient', 'auto')
              .append('circle')
              .attr('stroke', 'black')
              .attr('fill', 'transparent')
              .attr('cx', 7)
              .attr('cy', 7)
              .attr('r', 6)
        }, 'lollipop')),
        (y9e = o((t, e, r) => {
          t
            .append('marker')
            .attr('id', r + '_' + e + '-pointEnd')
            .attr('class', 'marker ' + e)
            .attr('viewBox', '0 0 10 10')
            .attr('refX', 5)
            .attr('refY', 5)
            .attr('markerUnits', 'userSpaceOnUse')
            .attr('markerWidth', 8)
            .attr('markerHeight', 8)
            .attr('orient', 'auto')
            .append('path')
            .attr('d', 'M 0 0 L 10 5 L 0 10 z')
            .attr('class', 'arrowMarkerPath')
            .style('stroke-width', 1)
            .style('stroke-dasharray', '1,0'),
            t
              .append('marker')
              .attr('id', r + '_' + e + '-pointStart')
              .attr('class', 'marker ' + e)
              .attr('viewBox', '0 0 10 10')
              .attr('refX', 4.5)
              .attr('refY', 5)
              .attr('markerUnits', 'userSpaceOnUse')
              .attr('markerWidth', 8)
              .attr('markerHeight', 8)
              .attr('orient', 'auto')
              .append('path')
              .attr('d', 'M 0 5 L 10 10 L 10 0 z')
              .attr('class', 'arrowMarkerPath')
              .style('stroke-width', 1)
              .style('stroke-dasharray', '1,0')
        }, 'point')),
        (v9e = o((t, e, r) => {
          t
            .append('marker')
            .attr('id', r + '_' + e + '-circleEnd')
            .attr('class', 'marker ' + e)
            .attr('viewBox', '0 0 10 10')
            .attr('refX', 11)
            .attr('refY', 5)
            .attr('markerUnits', 'userSpaceOnUse')
            .attr('markerWidth', 11)
            .attr('markerHeight', 11)
            .attr('orient', 'auto')
            .append('circle')
            .attr('cx', '5')
            .attr('cy', '5')
            .attr('r', '5')
            .attr('class', 'arrowMarkerPath')
            .style('stroke-width', 1)
            .style('stroke-dasharray', '1,0'),
            t
              .append('marker')
              .attr('id', r + '_' + e + '-circleStart')
              .attr('class', 'marker ' + e)
              .attr('viewBox', '0 0 10 10')
              .attr('refX', -1)
              .attr('refY', 5)
              .attr('markerUnits', 'userSpaceOnUse')
              .attr('markerWidth', 11)
              .attr('markerHeight', 11)
              .attr('orient', 'auto')
              .append('circle')
              .attr('cx', '5')
              .attr('cy', '5')
              .attr('r', '5')
              .attr('class', 'arrowMarkerPath')
              .style('stroke-width', 1)
              .style('stroke-dasharray', '1,0')
        }, 'circle')),
        (x9e = o((t, e, r) => {
          t
            .append('marker')
            .attr('id', r + '_' + e + '-crossEnd')
            .attr('class', 'marker cross ' + e)
            .attr('viewBox', '0 0 11 11')
            .attr('refX', 12)
            .attr('refY', 5.2)
            .attr('markerUnits', 'userSpaceOnUse')
            .attr('markerWidth', 11)
            .attr('markerHeight', 11)
            .attr('orient', 'auto')
            .append('path')
            .attr('d', 'M 1,1 l 9,9 M 10,1 l -9,9')
            .attr('class', 'arrowMarkerPath')
            .style('stroke-width', 2)
            .style('stroke-dasharray', '1,0'),
            t
              .append('marker')
              .attr('id', r + '_' + e + '-crossStart')
              .attr('class', 'marker cross ' + e)
              .attr('viewBox', '0 0 11 11')
              .attr('refX', -1)
              .attr('refY', 5.2)
              .attr('markerUnits', 'userSpaceOnUse')
              .attr('markerWidth', 11)
              .attr('markerHeight', 11)
              .attr('orient', 'auto')
              .append('path')
              .attr('d', 'M 1,1 l 9,9 M 10,1 l -9,9')
              .attr('class', 'arrowMarkerPath')
              .style('stroke-width', 2)
              .style('stroke-dasharray', '1,0')
        }, 'cross')),
        (b9e = o((t, e, r) => {
          t.append('defs')
            .append('marker')
            .attr('id', r + '_' + e + '-barbEnd')
            .attr('refX', 19)
            .attr('refY', 7)
            .attr('markerWidth', 20)
            .attr('markerHeight', 14)
            .attr('markerUnits', 'userSpaceOnUse')
            .attr('orient', 'auto')
            .append('path')
            .attr('d', 'M 19,7 L9,13 L14,7 L9,1 Z')
        }, 'barb')),
        (T9e = o((t, e, r) => {
          t
            .append('defs')
            .append('marker')
            .attr('id', r + '_' + e + '-onlyOneStart')
            .attr('class', 'marker onlyOne ' + e)
            .attr('refX', 0)
            .attr('refY', 9)
            .attr('markerWidth', 18)
            .attr('markerHeight', 18)
            .attr('orient', 'auto')
            .append('path')
            .attr('d', 'M9,0 L9,18 M15,0 L15,18'),
            t
              .append('defs')
              .append('marker')
              .attr('id', r + '_' + e + '-onlyOneEnd')
              .attr('class', 'marker onlyOne ' + e)
              .attr('refX', 18)
              .attr('refY', 9)
              .attr('markerWidth', 18)
              .attr('markerHeight', 18)
              .attr('orient', 'auto')
              .append('path')
              .attr('d', 'M3,0 L3,18 M9,0 L9,18')
        }, 'only_one')),
        (w9e = o((t, e, r) => {
          let n = t
            .append('defs')
            .append('marker')
            .attr('id', r + '_' + e + '-zeroOrOneStart')
            .attr('class', 'marker zeroOrOne ' + e)
            .attr('refX', 0)
            .attr('refY', 9)
            .attr('markerWidth', 30)
            .attr('markerHeight', 18)
            .attr('orient', 'auto')
          n.append('circle').attr('fill', 'white').attr('cx', 21).attr('cy', 9).attr('r', 6), n.append('path').attr('d', 'M9,0 L9,18')
          let i = t
            .append('defs')
            .append('marker')
            .attr('id', r + '_' + e + '-zeroOrOneEnd')
            .attr('class', 'marker zeroOrOne ' + e)
            .attr('refX', 30)
            .attr('refY', 9)
            .attr('markerWidth', 30)
            .attr('markerHeight', 18)
            .attr('orient', 'auto')
          i.append('circle').attr('fill', 'white').attr('cx', 9).attr('cy', 9).attr('r', 6), i.append('path').attr('d', 'M21,0 L21,18')
        }, 'zero_or_one')),
        (k9e = o((t, e, r) => {
          t
            .append('defs')
            .append('marker')
            .attr('id', r + '_' + e + '-oneOrMoreStart')
            .attr('class', 'marker oneOrMore ' + e)
            .attr('refX', 18)
            .attr('refY', 18)
            .attr('markerWidth', 45)
            .attr('markerHeight', 36)
            .attr('orient', 'auto')
            .append('path')
            .attr('d', 'M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27'),
            t
              .append('defs')
              .append('marker')
              .attr('id', r + '_' + e + '-oneOrMoreEnd')
              .attr('class', 'marker oneOrMore ' + e)
              .attr('refX', 27)
              .attr('refY', 18)
              .attr('markerWidth', 45)
              .attr('markerHeight', 36)
              .attr('orient', 'auto')
              .append('path')
              .attr('d', 'M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18')
        }, 'one_or_more')),
        (E9e = o((t, e, r) => {
          let n = t
            .append('defs')
            .append('marker')
            .attr('id', r + '_' + e + '-zeroOrMoreStart')
            .attr('class', 'marker zeroOrMore ' + e)
            .attr('refX', 18)
            .attr('refY', 18)
            .attr('markerWidth', 57)
            .attr('markerHeight', 36)
            .attr('orient', 'auto')
          n.append('circle').attr('fill', 'white').attr('cx', 48).attr('cy', 18).attr('r', 6), n.append('path').attr('d', 'M0,18 Q18,0 36,18 Q18,36 0,18')
          let i = t
            .append('defs')
            .append('marker')
            .attr('id', r + '_' + e + '-zeroOrMoreEnd')
            .attr('class', 'marker zeroOrMore ' + e)
            .attr('refX', 39)
            .attr('refY', 18)
            .attr('markerWidth', 57)
            .attr('markerHeight', 36)
            .attr('orient', 'auto')
          i.append('circle').attr('fill', 'white').attr('cx', 9).attr('cy', 18).attr('r', 6), i.append('path').attr('d', 'M21,18 Q39,0 57,18 Q39,36 21,18')
        }, 'zero_or_more')),
        (S9e = o((t, e, r) => {
          t.append('defs')
            .append('marker')
            .attr('id', r + '_' + e + '-requirement_arrowEnd')
            .attr('refX', 20)
            .attr('refY', 10)
            .attr('markerWidth', 20)
            .attr('markerHeight', 20)
            .attr('orient', 'auto')
            .append('path')
            .attr(
              'd',
              `M0,0
      L20,10
      M20,10
      L0,20`
            )
        }, 'requirement_arrow')),
        (C9e = o((t, e, r) => {
          let n = t
            .append('defs')
            .append('marker')
            .attr('id', r + '_' + e + '-requirement_containsStart')
            .attr('refX', 0)
            .attr('refY', 10)
            .attr('markerWidth', 20)
            .attr('markerHeight', 20)
            .attr('orient', 'auto')
            .append('g')
          n.append('circle').attr('cx', 10).attr('cy', 10).attr('r', 9).attr('fill', 'none'),
            n.append('line').attr('x1', 1).attr('x2', 19).attr('y1', 10).attr('y2', 10),
            n.append('line').attr('y1', 1).attr('y2', 19).attr('x1', 10).attr('x2', 10)
        }, 'requirement_contains')),
        (A9e = {
          extension: f9e,
          composition: d9e,
          aggregation: p9e,
          dependency: m9e,
          lollipop: g9e,
          point: y9e,
          circle: v9e,
          cross: x9e,
          barb: b9e,
          only_one: T9e,
          zero_or_one: w9e,
          one_or_more: k9e,
          zero_or_more: E9e,
          requirement_arrow: S9e,
          requirement_contains: C9e
        }),
        (dw = h9e)
    })
  async function Am(t, e, r) {
    let n, i
    e.shape === 'rect' && (e.rx && e.ry ? (e.shape = 'roundedRect') : (e.shape = 'squareRect'))
    let a = e.shape ? IL[e.shape] : void 0
    if (!a) throw new Error(`No such shape: ${e.shape}. Please check your syntax.`)
    if (e.link) {
      let s
      r.config.securityLevel === 'sandbox' ? (s = '_top') : e.linkTarget && (s = e.linkTarget || '_blank'),
        (n = t
          .insert('svg:a')
          .attr('xlink:href', e.link)
          .attr('target', s ?? null)),
        (i = await a(n, e, r))
    } else (i = await a(t, e, r)), (n = i)
    return e.tooltip && i.attr('title', e.tooltip), pw.set(e.id, n), e.haveCallback && n.attr('class', n.attr('class') + ' clickable'), n
  }
  var pw,
    vee,
    xee,
    M2,
    mw = N(() => {
      'use strict'
      yt()
      OL()
      pw = new Map()
      o(Am, 'insertNode')
      ;(vee = o((t, e) => {
        pw.set(e.id, t)
      }, 'setNodeElem')),
        (xee = o(() => {
          pw.clear()
        }, 'clear')),
        (M2 = o(t => {
          let e = pw.get(t.id)
          X.trace('Transforming node', t.diff, t, 'translate(' + (t.x - t.width / 2 - 5) + ', ' + t.width / 2 + ')')
          let r = 8,
            n = t.diff || 0
          return (
            t.clusterNode
              ? e.attr('transform', 'translate(' + (t.x + n - t.width / 2) + ', ' + (t.y - t.height / 2 - r) + ')')
              : e.attr('transform', 'translate(' + t.x + ', ' + t.y + ')'),
            n
          )
        }, 'positionNode'))
    })
  var bee,
    Tee = N(() => {
      'use strict'
      mi()
      pr()
      yt()
      aw()
      BL()
      FL()
      mw()
      Ft()
      er()
      bee = {
        common: Ze,
        getConfig: tr,
        insertCluster: Cm,
        insertEdge: fw,
        insertEdgeLabel: uw,
        insertMarkers: dw,
        insertNode: Am,
        interpolateToCurve: A9,
        labelHelper: mt,
        log: X,
        positionEdgeLabel: hw
      }
    })
  function D9e(t) {
    return typeof t == 'symbol' || (ii(t) && fa(t) == _9e)
  }
  var _9e,
    oo,
    Wd = N(() => {
      'use strict'
      Au()
      Oo()
      _9e = '[object Symbol]'
      o(D9e, 'isSymbol')
      oo = D9e
    })
  function L9e(t, e) {
    for (var r = -1, n = t == null ? 0 : t.length, i = Array(n); ++r < n; ) i[r] = e(t[r], r, t)
    return i
  }
  var Bs,
    qd = N(() => {
      'use strict'
      o(L9e, 'arrayMap')
      Bs = L9e
    })
  function Eee(t) {
    if (typeof t == 'string') return t
    if (Pt(t)) return Bs(t, Eee) + ''
    if (oo(t)) return kee ? kee.call(t) : ''
    var e = t + ''
    return e == '0' && 1 / t == -R9e ? '-0' : e
  }
  var R9e,
    wee,
    kee,
    See,
    Cee = N(() => {
      'use strict'
      Md()
      qd()
      Wn()
      Wd()
      ;(R9e = 1 / 0), (wee = ea ? ea.prototype : void 0), (kee = wee ? wee.toString : void 0)
      o(Eee, 'baseToString')
      See = Eee
    })
  function M9e(t) {
    for (var e = t.length; e-- && N9e.test(t.charAt(e)); );
    return e
  }
  var N9e,
    Aee,
    _ee = N(() => {
      'use strict'
      N9e = /\s/
      o(M9e, 'trimmedEndIndex')
      Aee = M9e
    })
  function O9e(t) {
    return t && t.slice(0, Aee(t) + 1).replace(I9e, '')
  }
  var I9e,
    Dee,
    Lee = N(() => {
      'use strict'
      _ee()
      I9e = /^\s+/
      o(O9e, 'baseTrim')
      Dee = O9e
    })
  function z9e(t) {
    if (typeof t == 'number') return t
    if (oo(t)) return Ree
    if (bn(t)) {
      var e = typeof t.valueOf == 'function' ? t.valueOf() : t
      t = bn(e) ? e + '' : e
    }
    if (typeof t != 'string') return t === 0 ? t : +t
    t = Dee(t)
    var r = B9e.test(t)
    return r || F9e.test(t) ? $9e(t.slice(2), r ? 2 : 8) : P9e.test(t) ? Ree : +t
  }
  var Ree,
    P9e,
    B9e,
    F9e,
    $9e,
    Nee,
    Mee = N(() => {
      'use strict'
      Lee()
      no()
      Wd()
      ;(Ree = NaN), (P9e = /^[-+]0x[0-9a-f]+$/i), (B9e = /^0b[01]+$/i), (F9e = /^0o[0-7]+$/i), ($9e = parseInt)
      o(z9e, 'toNumber')
      Nee = z9e
    })
  function V9e(t) {
    if (!t) return t === 0 ? t : 0
    if (((t = Nee(t)), t === Iee || t === -Iee)) {
      var e = t < 0 ? -1 : 1
      return e * G9e
    }
    return t === t ? t : 0
  }
  var Iee,
    G9e,
    _m,
    $L = N(() => {
      'use strict'
      Mee()
      ;(Iee = 1 / 0), (G9e = 17976931348623157e292)
      o(V9e, 'toFinite')
      _m = V9e
    })
  function U9e(t) {
    var e = _m(t),
      r = e % 1
    return e === e ? (r ? e - r : e) : 0
  }
  var kc,
    Dm = N(() => {
      'use strict'
      $L()
      o(U9e, 'toInteger')
      kc = U9e
    })
  var H9e,
    gw,
    Oee = N(() => {
      'use strict'
      Ph()
      Mo()
      ;(H9e = Ls(hi, 'WeakMap')), (gw = H9e)
    })
  function W9e() {}
  var ai,
    zL = N(() => {
      'use strict'
      o(W9e, 'noop')
      ai = W9e
    })
  function q9e(t, e) {
    for (var r = -1, n = t == null ? 0 : t.length; ++r < n && e(t[r], r, t) !== !1; );
    return t
  }
  var yw,
    GL = N(() => {
      'use strict'
      o(q9e, 'arrayEach')
      yw = q9e
    })
  function Y9e(t, e, r, n) {
    for (var i = t.length, a = r + (n ? 1 : -1); n ? a-- : ++a < i; ) if (e(t[a], a, t)) return a
    return -1
  }
  var vw,
    VL = N(() => {
      'use strict'
      o(Y9e, 'baseFindIndex')
      vw = Y9e
    })
  function X9e(t) {
    return t !== t
  }
  var Pee,
    Bee = N(() => {
      'use strict'
      o(X9e, 'baseIsNaN')
      Pee = X9e
    })
  function j9e(t, e, r) {
    for (var n = r - 1, i = t.length; ++n < i; ) if (t[n] === e) return n
    return -1
  }
  var Fee,
    $ee = N(() => {
      'use strict'
      o(j9e, 'strictIndexOf')
      Fee = j9e
    })
  function K9e(t, e, r) {
    return e === e ? Fee(t, e, r) : vw(t, Pee, r)
  }
  var Lm,
    xw = N(() => {
      'use strict'
      VL()
      Bee()
      $ee()
      o(K9e, 'baseIndexOf')
      Lm = K9e
    })
  function Q9e(t, e) {
    var r = t == null ? 0 : t.length
    return !!r && Lm(t, e, 0) > -1
  }
  var bw,
    UL = N(() => {
      'use strict'
      xw()
      o(Q9e, 'arrayIncludes')
      bw = Q9e
    })
  var Z9e,
    zee,
    Gee = N(() => {
      'use strict'
      p9()
      ;(Z9e = mT(Object.keys, Object)), (zee = Z9e)
    })
  function tLe(t) {
    if (!mc(t)) return zee(t)
    var e = []
    for (var r in Object(t)) eLe.call(t, r) && r != 'constructor' && e.push(r)
    return e
  }
  var J9e,
    eLe,
    Rm,
    Tw = N(() => {
      'use strict'
      um()
      Gee()
      ;(J9e = Object.prototype), (eLe = J9e.hasOwnProperty)
      o(tLe, 'baseKeys')
      Rm = tLe
    })
  function rLe(t) {
    return fi(t) ? bT(t) : Rm(t)
  }
  var zr,
    Ec = N(() => {
      'use strict'
      x9()
      Tw()
      Po()
      o(rLe, 'keys')
      zr = rLe
    })
  var nLe,
    iLe,
    aLe,
    pa,
    Vee = N(() => {
      'use strict'
      pm()
      Fd()
      k9()
      Po()
      um()
      Ec()
      ;(nLe = Object.prototype),
        (iLe = nLe.hasOwnProperty),
        (aLe = kT(function (t, e) {
          if (mc(e) || fi(e)) {
            $o(e, zr(e), t)
            return
          }
          for (var r in e) iLe.call(e, r) && gc(t, r, e[r])
        })),
        (pa = aLe)
    })
  function lLe(t, e) {
    if (Pt(t)) return !1
    var r = typeof t
    return r == 'number' || r == 'symbol' || r == 'boolean' || t == null || oo(t) ? !0 : oLe.test(t) || !sLe.test(t) || (e != null && t in Object(e))
  }
  var sLe,
    oLe,
    Nm,
    ww = N(() => {
      'use strict'
      Wn()
      Wd()
      ;(sLe = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/), (oLe = /^\w*$/)
      o(lLe, 'isKey')
      Nm = lLe
    })
  function uLe(t) {
    var e = rm(t, function (n) {
        return r.size === cLe && r.clear(), n
      }),
      r = e.cache
    return e
  }
  var cLe,
    Uee,
    Hee = N(() => {
      'use strict'
      o9()
      cLe = 500
      o(uLe, 'memoizeCapped')
      Uee = uLe
    })
  var hLe,
    fLe,
    dLe,
    Wee,
    qee = N(() => {
      'use strict'
      Hee()
      ;(hLe = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g),
        (fLe = /\\(\\)?/g),
        (dLe = Uee(function (t) {
          var e = []
          return (
            t.charCodeAt(0) === 46 && e.push(''),
            t.replace(hLe, function (r, n, i, a) {
              e.push(i ? a.replace(fLe, '$1') : n || r)
            }),
            e
          )
        })),
        (Wee = dLe)
    })
  function pLe(t) {
    return t == null ? '' : See(t)
  }
  var kw,
    HL = N(() => {
      'use strict'
      Cee()
      o(pLe, 'toString')
      kw = pLe
    })
  function mLe(t, e) {
    return Pt(t) ? t : Nm(t, e) ? [t] : Wee(kw(t))
  }
  var Jh,
    I2 = N(() => {
      'use strict'
      Wn()
      ww()
      qee()
      HL()
      o(mLe, 'castPath')
      Jh = mLe
    })
  function yLe(t) {
    if (typeof t == 'string' || oo(t)) return t
    var e = t + ''
    return e == '0' && 1 / t == -gLe ? '-0' : e
  }
  var gLe,
    Sc,
    Mm = N(() => {
      'use strict'
      Wd()
      gLe = 1 / 0
      o(yLe, 'toKey')
      Sc = yLe
    })
  function vLe(t, e) {
    e = Jh(e, t)
    for (var r = 0, n = e.length; t != null && r < n; ) t = t[Sc(e[r++])]
    return r && r == n ? t : void 0
  }
  var ef,
    O2 = N(() => {
      'use strict'
      I2()
      Mm()
      o(vLe, 'baseGet')
      ef = vLe
    })
  function xLe(t, e, r) {
    var n = t == null ? void 0 : ef(t, e)
    return n === void 0 ? r : n
  }
  var Yee,
    Xee = N(() => {
      'use strict'
      O2()
      o(xLe, 'get')
      Yee = xLe
    })
  function bLe(t, e) {
    for (var r = -1, n = e.length, i = t.length; ++r < n; ) t[i + r] = e[r]
    return t
  }
  var Im,
    Ew = N(() => {
      'use strict'
      o(bLe, 'arrayPush')
      Im = bLe
    })
  function TLe(t) {
    return Pt(t) || Dl(t) || !!(jee && t && t[jee])
  }
  var jee,
    Kee,
    Qee = N(() => {
      'use strict'
      Md()
      hm()
      Wn()
      jee = ea ? ea.isConcatSpreadable : void 0
      o(TLe, 'isFlattenable')
      Kee = TLe
    })
  function Zee(t, e, r, n, i) {
    var a = -1,
      s = t.length
    for (r || (r = Kee), i || (i = []); ++a < s; ) {
      var l = t[a]
      e > 0 && r(l) ? (e > 1 ? Zee(l, e - 1, r, n, i) : Im(i, l)) : n || (i[i.length] = l)
    }
    return i
  }
  var Cc,
    Om = N(() => {
      'use strict'
      Ew()
      Qee()
      o(Zee, 'baseFlatten')
      Cc = Zee
    })
  function wLe(t) {
    var e = t == null ? 0 : t.length
    return e ? Cc(t, 1) : []
  }
  var qr,
    Sw = N(() => {
      'use strict'
      Om()
      o(wLe, 'flatten')
      qr = wLe
    })
  function kLe(t) {
    return wT(TT(t, void 0, qr), t + '')
  }
  var Jee,
    ete = N(() => {
      'use strict'
      Sw()
      b9()
      w9()
      o(kLe, 'flatRest')
      Jee = kLe
    })
  function ELe(t, e, r) {
    var n = -1,
      i = t.length
    e < 0 && (e = -e > i ? 0 : i + e), (r = r > i ? i : r), r < 0 && (r += i), (i = e > r ? 0 : (r - e) >>> 0), (e >>>= 0)
    for (var a = Array(i); ++n < i; ) a[n] = t[n + e]
    return a
  }
  var Cw,
    WL = N(() => {
      'use strict'
      o(ELe, 'baseSlice')
      Cw = ELe
    })
  function MLe(t) {
    return NLe.test(t)
  }
  var SLe,
    CLe,
    ALe,
    _Le,
    DLe,
    LLe,
    RLe,
    NLe,
    tte,
    rte = N(() => {
      'use strict'
      ;(SLe = '\\ud800-\\udfff'),
        (CLe = '\\u0300-\\u036f'),
        (ALe = '\\ufe20-\\ufe2f'),
        (_Le = '\\u20d0-\\u20ff'),
        (DLe = CLe + ALe + _Le),
        (LLe = '\\ufe0e\\ufe0f'),
        (RLe = '\\u200d'),
        (NLe = RegExp('[' + RLe + SLe + DLe + LLe + ']'))
      o(MLe, 'hasUnicode')
      tte = MLe
    })
  function ILe(t, e, r, n) {
    var i = -1,
      a = t == null ? 0 : t.length
    for (n && a && (r = t[++i]); ++i < a; ) r = e(r, t[i], i, t)
    return r
  }
  var nte,
    ite = N(() => {
      'use strict'
      o(ILe, 'arrayReduce')
      nte = ILe
    })
  function OLe(t, e) {
    return t && $o(e, zr(e), t)
  }
  var ate,
    ste = N(() => {
      'use strict'
      Fd()
      Ec()
      o(OLe, 'baseAssign')
      ate = OLe
    })
  function PLe(t, e) {
    return t && $o(e, Rs(e), t)
  }
  var ote,
    lte = N(() => {
      'use strict'
      Fd()
      Uh()
      o(PLe, 'baseAssignIn')
      ote = PLe
    })
  function BLe(t, e) {
    for (var r = -1, n = t == null ? 0 : t.length, i = 0, a = []; ++r < n; ) {
      var s = t[r]
      e(s, r, t) && (a[i++] = s)
    }
    return a
  }
  var Pm,
    Aw = N(() => {
      'use strict'
      o(BLe, 'arrayFilter')
      Pm = BLe
    })
  function FLe() {
    return []
  }
  var _w,
    qL = N(() => {
      'use strict'
      o(FLe, 'stubArray')
      _w = FLe
    })
  var $Le,
    zLe,
    cte,
    GLe,
    Bm,
    Dw = N(() => {
      'use strict'
      Aw()
      qL()
      ;($Le = Object.prototype),
        (zLe = $Le.propertyIsEnumerable),
        (cte = Object.getOwnPropertySymbols),
        (GLe = cte
          ? function (t) {
              return t == null
                ? []
                : ((t = Object(t)),
                  Pm(cte(t), function (e) {
                    return zLe.call(t, e)
                  }))
            }
          : _w),
        (Bm = GLe)
    })
  function VLe(t, e) {
    return $o(t, Bm(t), e)
  }
  var ute,
    hte = N(() => {
      'use strict'
      Fd()
      Dw()
      o(VLe, 'copySymbols')
      ute = VLe
    })
  var ULe,
    HLe,
    Lw,
    YL = N(() => {
      'use strict'
      Ew()
      gT()
      Dw()
      qL()
      ;(ULe = Object.getOwnPropertySymbols),
        (HLe = ULe
          ? function (t) {
              for (var e = []; t; ) Im(e, Bm(t)), (t = cm(t))
              return e
            }
          : _w),
        (Lw = HLe)
    })
  function WLe(t, e) {
    return $o(t, Lw(t), e)
  }
  var fte,
    dte = N(() => {
      'use strict'
      Fd()
      YL()
      o(WLe, 'copySymbolsIn')
      fte = WLe
    })
  function qLe(t, e, r) {
    var n = e(t)
    return Pt(t) ? n : Im(n, r(t))
  }
  var Rw,
    XL = N(() => {
      'use strict'
      Ew()
      Wn()
      o(qLe, 'baseGetAllKeys')
      Rw = qLe
    })
  function YLe(t) {
    return Rw(t, zr, Bm)
  }
  var P2,
    jL = N(() => {
      'use strict'
      XL()
      Dw()
      Ec()
      o(YLe, 'getAllKeys')
      P2 = YLe
    })
  function XLe(t) {
    return Rw(t, Rs, Lw)
  }
  var Nw,
    KL = N(() => {
      'use strict'
      XL()
      YL()
      Uh()
      o(XLe, 'getAllKeysIn')
      Nw = XLe
    })
  var jLe,
    Mw,
    pte = N(() => {
      'use strict'
      Ph()
      Mo()
      ;(jLe = Ls(hi, 'DataView')), (Mw = jLe)
    })
  var KLe,
    Iw,
    mte = N(() => {
      'use strict'
      Ph()
      Mo()
      ;(KLe = Ls(hi, 'Promise')), (Iw = KLe)
    })
  var QLe,
    tf,
    QL = N(() => {
      'use strict'
      Ph()
      Mo()
      ;(QLe = Ls(hi, 'Set')), (tf = QLe)
    })
  var gte,
    ZLe,
    yte,
    vte,
    xte,
    bte,
    JLe,
    eRe,
    tRe,
    rRe,
    nRe,
    Yd,
    lo,
    Xd = N(() => {
      'use strict'
      pte()
      lT()
      mte()
      QL()
      Oee()
      Au()
      i9()
      ;(gte = '[object Map]'),
        (ZLe = '[object Object]'),
        (yte = '[object Promise]'),
        (vte = '[object Set]'),
        (xte = '[object WeakMap]'),
        (bte = '[object DataView]'),
        (JLe = _u(Mw)),
        (eRe = _u($h)),
        (tRe = _u(Iw)),
        (rRe = _u(tf)),
        (nRe = _u(gw)),
        (Yd = fa)
      ;((Mw && Yd(new Mw(new ArrayBuffer(1))) != bte) ||
        ($h && Yd(new $h()) != gte) ||
        (Iw && Yd(Iw.resolve()) != yte) ||
        (tf && Yd(new tf()) != vte) ||
        (gw && Yd(new gw()) != xte)) &&
        (Yd = o(function (t) {
          var e = fa(t),
            r = e == ZLe ? t.constructor : void 0,
            n = r ? _u(r) : ''
          if (n)
            switch (n) {
              case JLe:
                return bte
              case eRe:
                return gte
              case tRe:
                return yte
              case rRe:
                return vte
              case nRe:
                return xte
            }
          return e
        }, 'getTag'))
      lo = Yd
    })
  function sRe(t) {
    var e = t.length,
      r = new t.constructor(e)
    return e && typeof t[0] == 'string' && aRe.call(t, 'index') && ((r.index = t.index), (r.input = t.input)), r
  }
  var iRe,
    aRe,
    Tte,
    wte = N(() => {
      'use strict'
      ;(iRe = Object.prototype), (aRe = iRe.hasOwnProperty)
      o(sRe, 'initCloneArray')
      Tte = sRe
    })
  function oRe(t, e) {
    var r = e ? lm(t.buffer) : t.buffer
    return new t.constructor(r, t.byteOffset, t.byteLength)
  }
  var kte,
    Ete = N(() => {
      'use strict'
      fT()
      o(oRe, 'cloneDataView')
      kte = oRe
    })
  function cRe(t) {
    var e = new t.constructor(t.source, lRe.exec(t))
    return (e.lastIndex = t.lastIndex), e
  }
  var lRe,
    Ste,
    Cte = N(() => {
      'use strict'
      lRe = /\w*$/
      o(cRe, 'cloneRegExp')
      Ste = cRe
    })
  function uRe(t) {
    return _te ? Object(_te.call(t)) : {}
  }
  var Ate,
    _te,
    Dte,
    Lte = N(() => {
      'use strict'
      Md()
      ;(Ate = ea ? ea.prototype : void 0), (_te = Ate ? Ate.valueOf : void 0)
      o(uRe, 'cloneSymbol')
      Dte = uRe
    })
  function LRe(t, e, r) {
    var n = t.constructor
    switch (e) {
      case xRe:
        return lm(t)
      case hRe:
      case fRe:
        return new n(+t)
      case bRe:
        return kte(t, r)
      case TRe:
      case wRe:
      case kRe:
      case ERe:
      case SRe:
      case CRe:
      case ARe:
      case _Re:
      case DRe:
        return dT(t, r)
      case dRe:
        return new n()
      case pRe:
      case yRe:
        return new n(t)
      case mRe:
        return Ste(t)
      case gRe:
        return new n()
      case vRe:
        return Dte(t)
    }
  }
  var hRe,
    fRe,
    dRe,
    pRe,
    mRe,
    gRe,
    yRe,
    vRe,
    xRe,
    bRe,
    TRe,
    wRe,
    kRe,
    ERe,
    SRe,
    CRe,
    ARe,
    _Re,
    DRe,
    Rte,
    Nte = N(() => {
      'use strict'
      fT()
      Ete()
      Cte()
      Lte()
      f9()
      ;(hRe = '[object Boolean]'),
        (fRe = '[object Date]'),
        (dRe = '[object Map]'),
        (pRe = '[object Number]'),
        (mRe = '[object RegExp]'),
        (gRe = '[object Set]'),
        (yRe = '[object String]'),
        (vRe = '[object Symbol]'),
        (xRe = '[object ArrayBuffer]'),
        (bRe = '[object DataView]'),
        (TRe = '[object Float32Array]'),
        (wRe = '[object Float64Array]'),
        (kRe = '[object Int8Array]'),
        (ERe = '[object Int16Array]'),
        (SRe = '[object Int32Array]'),
        (CRe = '[object Uint8Array]'),
        (ARe = '[object Uint8ClampedArray]'),
        (_Re = '[object Uint16Array]'),
        (DRe = '[object Uint32Array]')
      o(LRe, 'initCloneByTag')
      Rte = LRe
    })
  function NRe(t) {
    return ii(t) && lo(t) == RRe
  }
  var RRe,
    Mte,
    Ite = N(() => {
      'use strict'
      Xd()
      Oo()
      RRe = '[object Map]'
      o(NRe, 'baseIsMap')
      Mte = NRe
    })
  var Ote,
    MRe,
    Pte,
    Bte = N(() => {
      'use strict'
      Ite()
      Bd()
      h2()
      ;(Ote = Fo && Fo.isMap), (MRe = Ote ? Bo(Ote) : Mte), (Pte = MRe)
    })
  function ORe(t) {
    return ii(t) && lo(t) == IRe
  }
  var IRe,
    Fte,
    $te = N(() => {
      'use strict'
      Xd()
      Oo()
      IRe = '[object Set]'
      o(ORe, 'baseIsSet')
      Fte = ORe
    })
  var zte,
    PRe,
    Gte,
    Vte = N(() => {
      'use strict'
      $te()
      Bd()
      h2()
      ;(zte = Fo && Fo.isSet), (PRe = zte ? Bo(zte) : Fte), (Gte = PRe)
    })
  function Ow(t, e, r, n, i, a) {
    var s,
      l = e & BRe,
      u = e & FRe,
      h = e & $Re
    if ((r && (s = i ? r(t, n, i, a) : r(t)), s !== void 0)) return s
    if (!bn(t)) return t
    var f = Pt(t)
    if (f) {
      if (((s = Tte(t)), !l)) return pT(t, s)
    } else {
      var d = lo(t),
        p = d == Hte || d == HRe
      if (Ll(t)) return hT(t, l)
      if (d == Wte || d == Ute || (p && !i)) {
        if (((s = u || p ? {} : yT(t)), !l)) return u ? fte(t, ote(s, t)) : ute(t, ate(s, t))
      } else {
        if (!_n[d]) return i ? t : {}
        s = Rte(t, d, l)
      }
    }
    a || (a = new dc())
    var m = a.get(t)
    if (m) return m
    a.set(t, s),
      Gte(t)
        ? t.forEach(function (v) {
            s.add(Ow(v, e, r, v, t, a))
          })
        : Pte(t) &&
          t.forEach(function (v, x) {
            s.set(x, Ow(v, e, r, x, t, a))
          })
    var g = h ? (u ? Nw : P2) : u ? Rs : zr,
      y = f ? void 0 : g(t)
    return (
      yw(y || t, function (v, x) {
        y && ((x = v), (v = t[x])), gc(s, x, Ow(v, e, r, x, t, a))
      }),
      s
    )
  }
  var BRe,
    FRe,
    $Re,
    Ute,
    zRe,
    GRe,
    VRe,
    URe,
    Hte,
    HRe,
    WRe,
    qRe,
    Wte,
    YRe,
    XRe,
    jRe,
    KRe,
    QRe,
    ZRe,
    JRe,
    eNe,
    tNe,
    rNe,
    nNe,
    iNe,
    aNe,
    sNe,
    oNe,
    lNe,
    _n,
    Pw,
    ZL = N(() => {
      'use strict'
      l2()
      GL()
      pm()
      ste()
      lte()
      u9()
      d9()
      hte()
      dte()
      jL()
      KL()
      Xd()
      wte()
      Nte()
      m9()
      Wn()
      dm()
      Bte()
      no()
      Vte()
      Ec()
      Uh()
      ;(BRe = 1),
        (FRe = 2),
        ($Re = 4),
        (Ute = '[object Arguments]'),
        (zRe = '[object Array]'),
        (GRe = '[object Boolean]'),
        (VRe = '[object Date]'),
        (URe = '[object Error]'),
        (Hte = '[object Function]'),
        (HRe = '[object GeneratorFunction]'),
        (WRe = '[object Map]'),
        (qRe = '[object Number]'),
        (Wte = '[object Object]'),
        (YRe = '[object RegExp]'),
        (XRe = '[object Set]'),
        (jRe = '[object String]'),
        (KRe = '[object Symbol]'),
        (QRe = '[object WeakMap]'),
        (ZRe = '[object ArrayBuffer]'),
        (JRe = '[object DataView]'),
        (eNe = '[object Float32Array]'),
        (tNe = '[object Float64Array]'),
        (rNe = '[object Int8Array]'),
        (nNe = '[object Int16Array]'),
        (iNe = '[object Int32Array]'),
        (aNe = '[object Uint8Array]'),
        (sNe = '[object Uint8ClampedArray]'),
        (oNe = '[object Uint16Array]'),
        (lNe = '[object Uint32Array]'),
        (_n = {})
      _n[Ute] =
        _n[zRe] =
        _n[ZRe] =
        _n[JRe] =
        _n[GRe] =
        _n[VRe] =
        _n[eNe] =
        _n[tNe] =
        _n[rNe] =
        _n[nNe] =
        _n[iNe] =
        _n[WRe] =
        _n[qRe] =
        _n[Wte] =
        _n[YRe] =
        _n[XRe] =
        _n[jRe] =
        _n[KRe] =
        _n[aNe] =
        _n[sNe] =
        _n[oNe] =
        _n[lNe] =
          !0
      _n[URe] = _n[Hte] = _n[QRe] = !1
      o(Ow, 'baseClone')
      Pw = Ow
    })
  function uNe(t) {
    return Pw(t, cNe)
  }
  var cNe,
    an,
    JL = N(() => {
      'use strict'
      ZL()
      cNe = 4
      o(uNe, 'clone')
      an = uNe
    })
  function dNe(t) {
    return Pw(t, hNe | fNe)
  }
  var hNe,
    fNe,
    eR,
    qte = N(() => {
      'use strict'
      ZL()
      ;(hNe = 1), (fNe = 4)
      o(dNe, 'cloneDeep')
      eR = dNe
    })
  function pNe(t) {
    for (var e = -1, r = t == null ? 0 : t.length, n = 0, i = []; ++e < r; ) {
      var a = t[e]
      a && (i[n++] = a)
    }
    return i
  }
  var Ac,
    Yte = N(() => {
      'use strict'
      o(pNe, 'compact')
      Ac = pNe
    })
  function gNe(t) {
    return this.__data__.set(t, mNe), this
  }
  var mNe,
    Xte,
    jte = N(() => {
      'use strict'
      mNe = '__lodash_hash_undefined__'
      o(gNe, 'setCacheAdd')
      Xte = gNe
    })
  function yNe(t) {
    return this.__data__.has(t)
  }
  var Kte,
    Qte = N(() => {
      'use strict'
      o(yNe, 'setCacheHas')
      Kte = yNe
    })
  function Bw(t) {
    var e = -1,
      r = t == null ? 0 : t.length
    for (this.__data__ = new Od(); ++e < r; ) this.add(t[e])
  }
  var Fm,
    Fw = N(() => {
      'use strict'
      cT()
      jte()
      Qte()
      o(Bw, 'SetCache')
      Bw.prototype.add = Bw.prototype.push = Xte
      Bw.prototype.has = Kte
      Fm = Bw
    })
  function vNe(t, e) {
    for (var r = -1, n = t == null ? 0 : t.length; ++r < n; ) if (e(t[r], r, t)) return !0
    return !1
  }
  var $w,
    tR = N(() => {
      'use strict'
      o(vNe, 'arraySome')
      $w = vNe
    })
  function xNe(t, e) {
    return t.has(e)
  }
  var $m,
    zw = N(() => {
      'use strict'
      o(xNe, 'cacheHas')
      $m = xNe
    })
  function wNe(t, e, r, n, i, a) {
    var s = r & bNe,
      l = t.length,
      u = e.length
    if (l != u && !(s && u > l)) return !1
    var h = a.get(t),
      f = a.get(e)
    if (h && f) return h == e && f == t
    var d = -1,
      p = !0,
      m = r & TNe ? new Fm() : void 0
    for (a.set(t, e), a.set(e, t); ++d < l; ) {
      var g = t[d],
        y = e[d]
      if (n) var v = s ? n(y, g, d, e, t, a) : n(g, y, d, t, e, a)
      if (v !== void 0) {
        if (v) continue
        p = !1
        break
      }
      if (m) {
        if (
          !$w(e, function (x, b) {
            if (!$m(m, b) && (g === x || i(g, x, r, n, a))) return m.push(b)
          })
        ) {
          p = !1
          break
        }
      } else if (!(g === y || i(g, y, r, n, a))) {
        p = !1
        break
      }
    }
    return a.delete(t), a.delete(e), p
  }
  var bNe,
    TNe,
    Gw,
    rR = N(() => {
      'use strict'
      Fw()
      tR()
      zw()
      ;(bNe = 1), (TNe = 2)
      o(wNe, 'equalArrays')
      Gw = wNe
    })
  function kNe(t) {
    var e = -1,
      r = Array(t.size)
    return (
      t.forEach(function (n, i) {
        r[++e] = [i, n]
      }),
      r
    )
  }
  var Zte,
    Jte = N(() => {
      'use strict'
      o(kNe, 'mapToArray')
      Zte = kNe
    })
  function ENe(t) {
    var e = -1,
      r = Array(t.size)
    return (
      t.forEach(function (n) {
        r[++e] = n
      }),
      r
    )
  }
  var zm,
    Vw = N(() => {
      'use strict'
      o(ENe, 'setToArray')
      zm = ENe
    })
  function FNe(t, e, r, n, i, a, s) {
    switch (r) {
      case BNe:
        if (t.byteLength != e.byteLength || t.byteOffset != e.byteOffset) return !1
        ;(t = t.buffer), (e = e.buffer)
      case PNe:
        return !(t.byteLength != e.byteLength || !a(new om(t), new om(e)))
      case ANe:
      case _Ne:
      case RNe:
        return Io(+t, +e)
      case DNe:
        return t.name == e.name && t.message == e.message
      case NNe:
      case INe:
        return t == e + ''
      case LNe:
        var l = Zte
      case MNe:
        var u = n & SNe
        if ((l || (l = zm), t.size != e.size && !u)) return !1
        var h = s.get(t)
        if (h) return h == e
        ;(n |= CNe), s.set(t, e)
        var f = Gw(l(t), l(e), n, i, a, s)
        return s.delete(t), f
      case ONe:
        if (nR) return nR.call(t) == nR.call(e)
    }
    return !1
  }
  var SNe,
    CNe,
    ANe,
    _Ne,
    DNe,
    LNe,
    RNe,
    NNe,
    MNe,
    INe,
    ONe,
    PNe,
    BNe,
    ere,
    nR,
    tre,
    rre = N(() => {
      'use strict'
      Md()
      h9()
      Id()
      rR()
      Jte()
      Vw()
      ;(SNe = 1),
        (CNe = 2),
        (ANe = '[object Boolean]'),
        (_Ne = '[object Date]'),
        (DNe = '[object Error]'),
        (LNe = '[object Map]'),
        (RNe = '[object Number]'),
        (NNe = '[object RegExp]'),
        (MNe = '[object Set]'),
        (INe = '[object String]'),
        (ONe = '[object Symbol]'),
        (PNe = '[object ArrayBuffer]'),
        (BNe = '[object DataView]'),
        (ere = ea ? ea.prototype : void 0),
        (nR = ere ? ere.valueOf : void 0)
      o(FNe, 'equalByTag')
      tre = FNe
    })
  function VNe(t, e, r, n, i, a) {
    var s = r & $Ne,
      l = P2(t),
      u = l.length,
      h = P2(e),
      f = h.length
    if (u != f && !s) return !1
    for (var d = u; d--; ) {
      var p = l[d]
      if (!(s ? p in e : GNe.call(e, p))) return !1
    }
    var m = a.get(t),
      g = a.get(e)
    if (m && g) return m == e && g == t
    var y = !0
    a.set(t, e), a.set(e, t)
    for (var v = s; ++d < u; ) {
      p = l[d]
      var x = t[p],
        b = e[p]
      if (n) var T = s ? n(b, x, p, e, t, a) : n(x, b, p, t, e, a)
      if (!(T === void 0 ? x === b || i(x, b, r, n, a) : T)) {
        y = !1
        break
      }
      v || (v = p == 'constructor')
    }
    if (y && !v) {
      var S = t.constructor,
        w = e.constructor
      S != w && 'constructor' in t && 'constructor' in e && !(typeof S == 'function' && S instanceof S && typeof w == 'function' && w instanceof w) && (y = !1)
    }
    return a.delete(t), a.delete(e), y
  }
  var $Ne,
    zNe,
    GNe,
    nre,
    ire = N(() => {
      'use strict'
      jL()
      ;($Ne = 1), (zNe = Object.prototype), (GNe = zNe.hasOwnProperty)
      o(VNe, 'equalObjects')
      nre = VNe
    })
  function WNe(t, e, r, n, i, a) {
    var s = Pt(t),
      l = Pt(e),
      u = s ? sre : lo(t),
      h = l ? sre : lo(e)
    ;(u = u == are ? Uw : u), (h = h == are ? Uw : h)
    var f = u == Uw,
      d = h == Uw,
      p = u == h
    if (p && Ll(t)) {
      if (!Ll(e)) return !1
      ;(s = !0), (f = !1)
    }
    if (p && !f) return a || (a = new dc()), s || Gh(t) ? Gw(t, e, r, n, i, a) : tre(t, e, u, r, n, i, a)
    if (!(r & UNe)) {
      var m = f && ore.call(t, '__wrapped__'),
        g = d && ore.call(e, '__wrapped__')
      if (m || g) {
        var y = m ? t.value() : t,
          v = g ? e.value() : e
        return a || (a = new dc()), i(y, v, r, n, a)
      }
    }
    return p ? (a || (a = new dc()), nre(t, e, r, n, i, a)) : !1
  }
  var UNe,
    are,
    sre,
    Uw,
    HNe,
    ore,
    lre,
    cre = N(() => {
      'use strict'
      l2()
      rR()
      rre()
      ire()
      Xd()
      Wn()
      dm()
      f2()
      ;(UNe = 1), (are = '[object Arguments]'), (sre = '[object Array]'), (Uw = '[object Object]'), (HNe = Object.prototype), (ore = HNe.hasOwnProperty)
      o(WNe, 'baseIsEqualDeep')
      lre = WNe
    })
  function ure(t, e, r, n, i) {
    return t === e ? !0 : t == null || e == null || (!ii(t) && !ii(e)) ? t !== t && e !== e : lre(t, e, r, n, ure, i)
  }
  var Hw,
    iR = N(() => {
      'use strict'
      cre()
      Oo()
      o(ure, 'baseIsEqual')
      Hw = ure
    })
  function XNe(t, e, r, n) {
    var i = r.length,
      a = i,
      s = !n
    if (t == null) return !a
    for (t = Object(t); i--; ) {
      var l = r[i]
      if (s && l[2] ? l[1] !== t[l[0]] : !(l[0] in t)) return !1
    }
    for (; ++i < a; ) {
      l = r[i]
      var u = l[0],
        h = t[u],
        f = l[1]
      if (s && l[2]) {
        if (h === void 0 && !(u in t)) return !1
      } else {
        var d = new dc()
        if (n) var p = n(h, f, u, t, e, d)
        if (!(p === void 0 ? Hw(f, h, qNe | YNe, n, d) : p)) return !1
      }
    }
    return !0
  }
  var qNe,
    YNe,
    hre,
    fre = N(() => {
      'use strict'
      l2()
      iR()
      ;(qNe = 1), (YNe = 2)
      o(XNe, 'baseIsMatch')
      hre = XNe
    })
  function jNe(t) {
    return t === t && !bn(t)
  }
  var Ww,
    aR = N(() => {
      'use strict'
      no()
      o(jNe, 'isStrictComparable')
      Ww = jNe
    })
  function KNe(t) {
    for (var e = zr(t), r = e.length; r--; ) {
      var n = e[r],
        i = t[n]
      e[r] = [n, i, Ww(i)]
    }
    return e
  }
  var dre,
    pre = N(() => {
      'use strict'
      aR()
      Ec()
      o(KNe, 'getMatchData')
      dre = KNe
    })
  function QNe(t, e) {
    return function (r) {
      return r == null ? !1 : r[t] === e && (e !== void 0 || t in Object(r))
    }
  }
  var qw,
    sR = N(() => {
      'use strict'
      o(QNe, 'matchesStrictComparable')
      qw = QNe
    })
  function ZNe(t) {
    var e = dre(t)
    return e.length == 1 && e[0][2]
      ? qw(e[0][0], e[0][1])
      : function (r) {
          return r === t || hre(r, t, e)
        }
  }
  var mre,
    gre = N(() => {
      'use strict'
      fre()
      pre()
      sR()
      o(ZNe, 'baseMatches')
      mre = ZNe
    })
  function JNe(t, e) {
    return t != null && e in Object(t)
  }
  var yre,
    vre = N(() => {
      'use strict'
      o(JNe, 'baseHasIn')
      yre = JNe
    })
  function eMe(t, e, r) {
    e = Jh(e, t)
    for (var n = -1, i = e.length, a = !1; ++n < i; ) {
      var s = Sc(e[n])
      if (!(a = t != null && r(t, s))) break
      t = t[s]
    }
    return a || ++n != i ? a : ((i = t == null ? 0 : t.length), !!i && fm(i) && Vh(s, i) && (Pt(t) || Dl(t)))
  }
  var Yw,
    oR = N(() => {
      'use strict'
      I2()
      hm()
      Wn()
      p2()
      vT()
      Mm()
      o(eMe, 'hasPath')
      Yw = eMe
    })
  function tMe(t, e) {
    return t != null && Yw(t, e, yre)
  }
  var Xw,
    lR = N(() => {
      'use strict'
      vre()
      oR()
      o(tMe, 'hasIn')
      Xw = tMe
    })
  function iMe(t, e) {
    return Nm(t) && Ww(e)
      ? qw(Sc(t), e)
      : function (r) {
          var n = Yee(r, t)
          return n === void 0 && n === e ? Xw(r, t) : Hw(e, n, rMe | nMe)
        }
  }
  var rMe,
    nMe,
    xre,
    bre = N(() => {
      'use strict'
      iR()
      Xee()
      lR()
      ww()
      aR()
      sR()
      Mm()
      ;(rMe = 1), (nMe = 2)
      o(iMe, 'baseMatchesProperty')
      xre = iMe
    })
  function aMe(t) {
    return function (e) {
      return e?.[t]
    }
  }
  var jw,
    cR = N(() => {
      'use strict'
      o(aMe, 'baseProperty')
      jw = aMe
    })
  function sMe(t) {
    return function (e) {
      return ef(e, t)
    }
  }
  var Tre,
    wre = N(() => {
      'use strict'
      O2()
      o(sMe, 'basePropertyDeep')
      Tre = sMe
    })
  function oMe(t) {
    return Nm(t) ? jw(Sc(t)) : Tre(t)
  }
  var kre,
    Ere = N(() => {
      'use strict'
      cR()
      wre()
      ww()
      Mm()
      o(oMe, 'property')
      kre = oMe
    })
  function lMe(t) {
    return typeof t == 'function' ? t : t == null ? ta : typeof t == 'object' ? (Pt(t) ? xre(t[0], t[1]) : mre(t)) : kre(t)
  }
  var mn,
    os = N(() => {
      'use strict'
      gre()
      bre()
      Lu()
      Wn()
      Ere()
      o(lMe, 'baseIteratee')
      mn = lMe
    })
  function cMe(t, e, r, n) {
    for (var i = -1, a = t == null ? 0 : t.length; ++i < a; ) {
      var s = t[i]
      e(n, s, r(s), t)
    }
    return n
  }
  var Sre,
    Cre = N(() => {
      'use strict'
      o(cMe, 'arrayAggregator')
      Sre = cMe
    })
  function uMe(t, e) {
    return t && sm(t, e, zr)
  }
  var Gm,
    Kw = N(() => {
      'use strict'
      uT()
      Ec()
      o(uMe, 'baseForOwn')
      Gm = uMe
    })
  function hMe(t, e) {
    return function (r, n) {
      if (r == null) return r
      if (!fi(r)) return t(r, n)
      for (var i = r.length, a = e ? i : -1, s = Object(r); (e ? a-- : ++a < i) && n(s[a], a, s) !== !1; );
      return r
    }
  }
  var Are,
    _re = N(() => {
      'use strict'
      Po()
      o(hMe, 'createBaseEach')
      Are = hMe
    })
  var fMe,
    Fs,
    rf = N(() => {
      'use strict'
      Kw()
      _re()
      ;(fMe = Are(Gm)), (Fs = fMe)
    })
  function dMe(t, e, r, n) {
    return (
      Fs(t, function (i, a, s) {
        e(n, i, r(i), s)
      }),
      n
    )
  }
  var Dre,
    Lre = N(() => {
      'use strict'
      rf()
      o(dMe, 'baseAggregator')
      Dre = dMe
    })
  function pMe(t, e) {
    return function (r, n) {
      var i = Pt(r) ? Sre : Dre,
        a = e ? e() : {}
      return i(r, t, mn(n, 2), a)
    }
  }
  var Rre,
    Nre = N(() => {
      'use strict'
      Cre()
      Lre()
      os()
      Wn()
      o(pMe, 'createAggregator')
      Rre = pMe
    })
  var mMe,
    Qw,
    Mre = N(() => {
      'use strict'
      Mo()
      ;(mMe = o(function () {
        return hi.Date.now()
      }, 'now')),
        (Qw = mMe)
    })
  var Ire,
    gMe,
    yMe,
    nf,
    Ore = N(() => {
      'use strict'
      mm()
      Id()
      $d()
      Uh()
      ;(Ire = Object.prototype),
        (gMe = Ire.hasOwnProperty),
        (yMe = yc(function (t, e) {
          t = Object(t)
          var r = -1,
            n = e.length,
            i = n > 2 ? e[2] : void 0
          for (i && io(e[0], e[1], i) && (n = 1); ++r < n; )
            for (var a = e[r], s = Rs(a), l = -1, u = s.length; ++l < u; ) {
              var h = s[l],
                f = t[h]
              ;(f === void 0 || (Io(f, Ire[h]) && !gMe.call(t, h))) && (t[h] = a[h])
            }
          return t
        })),
        (nf = yMe)
    })
  function vMe(t, e, r) {
    for (var n = -1, i = t == null ? 0 : t.length; ++n < i; ) if (r(e, t[n])) return !0
    return !1
  }
  var Zw,
    uR = N(() => {
      'use strict'
      o(vMe, 'arrayIncludesWith')
      Zw = vMe
    })
  function bMe(t, e, r, n) {
    var i = -1,
      a = bw,
      s = !0,
      l = t.length,
      u = [],
      h = e.length
    if (!l) return u
    r && (e = Bs(e, Bo(r))), n ? ((a = Zw), (s = !1)) : e.length >= xMe && ((a = $m), (s = !1), (e = new Fm(e)))
    e: for (; ++i < l; ) {
      var f = t[i],
        d = r == null ? f : r(f)
      if (((f = n || f !== 0 ? f : 0), s && d === d)) {
        for (var p = h; p--; ) if (e[p] === d) continue e
        u.push(f)
      } else a(e, d, n) || u.push(f)
    }
    return u
  }
  var xMe,
    Pre,
    Bre = N(() => {
      'use strict'
      Fw()
      UL()
      uR()
      qd()
      Bd()
      zw()
      xMe = 200
      o(bMe, 'baseDifference')
      Pre = bMe
    })
  var TMe,
    af,
    Fre = N(() => {
      'use strict'
      Bre()
      Om()
      mm()
      xT()
      ;(TMe = yc(function (t, e) {
        return Pd(t) ? Pre(t, Cc(e, 1, Pd, !0)) : []
      })),
        (af = TMe)
    })
  function wMe(t) {
    var e = t == null ? 0 : t.length
    return e ? t[e - 1] : void 0
  }
  var ma,
    $re = N(() => {
      'use strict'
      o(wMe, 'last')
      ma = wMe
    })
  function kMe(t, e, r) {
    var n = t == null ? 0 : t.length
    return n ? ((e = r || e === void 0 ? 1 : kc(e)), Cw(t, e < 0 ? 0 : e, n)) : []
  }
  var bi,
    zre = N(() => {
      'use strict'
      WL()
      Dm()
      o(kMe, 'drop')
      bi = kMe
    })
  function EMe(t, e, r) {
    var n = t == null ? 0 : t.length
    return n ? ((e = r || e === void 0 ? 1 : kc(e)), (e = n - e), Cw(t, 0, e < 0 ? 0 : e)) : []
  }
  var Fu,
    Gre = N(() => {
      'use strict'
      WL()
      Dm()
      o(EMe, 'dropRight')
      Fu = EMe
    })
  function SMe(t) {
    return typeof t == 'function' ? t : ta
  }
  var Vm,
    Jw = N(() => {
      'use strict'
      Lu()
      o(SMe, 'castFunction')
      Vm = SMe
    })
  function CMe(t, e) {
    var r = Pt(t) ? yw : Fs
    return r(t, Vm(e))
  }
  var Ae,
    ek = N(() => {
      'use strict'
      GL()
      rf()
      Jw()
      Wn()
      o(CMe, 'forEach')
      Ae = CMe
    })
  var Vre = N(() => {
    'use strict'
    ek()
  })
  function AMe(t, e) {
    for (var r = -1, n = t == null ? 0 : t.length; ++r < n; ) if (!e(t[r], r, t)) return !1
    return !0
  }
  var Ure,
    Hre = N(() => {
      'use strict'
      o(AMe, 'arrayEvery')
      Ure = AMe
    })
  function _Me(t, e) {
    var r = !0
    return (
      Fs(t, function (n, i, a) {
        return (r = !!e(n, i, a)), r
      }),
      r
    )
  }
  var Wre,
    qre = N(() => {
      'use strict'
      rf()
      o(_Me, 'baseEvery')
      Wre = _Me
    })
  function DMe(t, e, r) {
    var n = Pt(t) ? Ure : Wre
    return r && io(t, e, r) && (e = void 0), n(t, mn(e, 3))
  }
  var Pa,
    Yre = N(() => {
      'use strict'
      Hre()
      qre()
      os()
      Wn()
      $d()
      o(DMe, 'every')
      Pa = DMe
    })
  function LMe(t, e) {
    var r = []
    return (
      Fs(t, function (n, i, a) {
        e(n, i, a) && r.push(n)
      }),
      r
    )
  }
  var tk,
    hR = N(() => {
      'use strict'
      rf()
      o(LMe, 'baseFilter')
      tk = LMe
    })
  function RMe(t, e) {
    var r = Pt(t) ? Pm : tk
    return r(t, mn(e, 3))
  }
  var Yr,
    fR = N(() => {
      'use strict'
      Aw()
      hR()
      os()
      Wn()
      o(RMe, 'filter')
      Yr = RMe
    })
  function NMe(t) {
    return function (e, r, n) {
      var i = Object(e)
      if (!fi(e)) {
        var a = mn(r, 3)
        ;(e = zr(e)),
          (r = o(function (l) {
            return a(i[l], l, i)
          }, 'predicate'))
      }
      var s = t(e, r, n)
      return s > -1 ? i[a ? e[s] : s] : void 0
    }
  }
  var Xre,
    jre = N(() => {
      'use strict'
      os()
      Po()
      Ec()
      o(NMe, 'createFind')
      Xre = NMe
    })
  function IMe(t, e, r) {
    var n = t == null ? 0 : t.length
    if (!n) return -1
    var i = r == null ? 0 : kc(r)
    return i < 0 && (i = MMe(n + i, 0)), vw(t, mn(e, 3), i)
  }
  var MMe,
    Kre,
    Qre = N(() => {
      'use strict'
      VL()
      os()
      Dm()
      MMe = Math.max
      o(IMe, 'findIndex')
      Kre = IMe
    })
  var OMe,
    ls,
    Zre = N(() => {
      'use strict'
      jre()
      Qre()
      ;(OMe = Xre(Kre)), (ls = OMe)
    })
  function PMe(t) {
    return t && t.length ? t[0] : void 0
  }
  var ia,
    Jre = N(() => {
      'use strict'
      o(PMe, 'head')
      ia = PMe
    })
  var ene = N(() => {
    'use strict'
    Jre()
  })
  function BMe(t, e) {
    var r = -1,
      n = fi(t) ? Array(t.length) : []
    return (
      Fs(t, function (i, a, s) {
        n[++r] = e(i, a, s)
      }),
      n
    )
  }
  var rk,
    dR = N(() => {
      'use strict'
      rf()
      Po()
      o(BMe, 'baseMap')
      rk = BMe
    })
  function FMe(t, e) {
    var r = Pt(t) ? Bs : rk
    return r(t, mn(e, 3))
  }
  var Je,
    Um = N(() => {
      'use strict'
      qd()
      os()
      dR()
      Wn()
      o(FMe, 'map')
      Je = FMe
    })
  function $Me(t, e) {
    return Cc(Je(t, e), 1)
  }
  var ga,
    pR = N(() => {
      'use strict'
      Om()
      Um()
      o($Me, 'flatMap')
      ga = $Me
    })
  function zMe(t, e) {
    return t == null ? t : sm(t, Vm(e), Rs)
  }
  var mR,
    tne = N(() => {
      'use strict'
      uT()
      Jw()
      Uh()
      o(zMe, 'forIn')
      mR = zMe
    })
  function GMe(t, e) {
    return t && Gm(t, Vm(e))
  }
  var gR,
    rne = N(() => {
      'use strict'
      Kw()
      Jw()
      o(GMe, 'forOwn')
      gR = GMe
    })
  var VMe,
    UMe,
    HMe,
    yR,
    nne = N(() => {
      'use strict'
      am()
      Nre()
      ;(VMe = Object.prototype),
        (UMe = VMe.hasOwnProperty),
        (HMe = Rre(function (t, e, r) {
          UMe.call(t, r) ? t[r].push(e) : pc(t, r, [e])
        })),
        (yR = HMe)
    })
  function WMe(t, e) {
    return t > e
  }
  var ine,
    ane = N(() => {
      'use strict'
      o(WMe, 'baseGt')
      ine = WMe
    })
  function XMe(t, e) {
    return t != null && YMe.call(t, e)
  }
  var qMe,
    YMe,
    sne,
    one = N(() => {
      'use strict'
      ;(qMe = Object.prototype), (YMe = qMe.hasOwnProperty)
      o(XMe, 'baseHas')
      sne = XMe
    })
  function jMe(t, e) {
    return t != null && Yw(t, e, sne)
  }
  var Bt,
    lne = N(() => {
      'use strict'
      one()
      oR()
      o(jMe, 'has')
      Bt = jMe
    })
  function QMe(t) {
    return typeof t == 'string' || (!Pt(t) && ii(t) && fa(t) == KMe)
  }
  var KMe,
    Ti,
    nk = N(() => {
      'use strict'
      Au()
      Wn()
      Oo()
      KMe = '[object String]'
      o(QMe, 'isString')
      Ti = QMe
    })
  function ZMe(t, e) {
    return Bs(e, function (r) {
      return t[r]
    })
  }
  var cne,
    une = N(() => {
      'use strict'
      qd()
      o(ZMe, 'baseValues')
      cne = ZMe
    })
  function JMe(t) {
    return t == null ? [] : cne(t, zr(t))
  }
  var br,
    vR = N(() => {
      'use strict'
      une()
      Ec()
      o(JMe, 'values')
      br = JMe
    })
  function tIe(t, e, r, n) {
    ;(t = fi(t) ? t : br(t)), (r = r && !n ? kc(r) : 0)
    var i = t.length
    return r < 0 && (r = eIe(i + r, 0)), Ti(t) ? r <= i && t.indexOf(e, r) > -1 : !!i && Lm(t, e, r) > -1
  }
  var eIe,
    Xn,
    hne = N(() => {
      'use strict'
      xw()
      Po()
      nk()
      Dm()
      vR()
      eIe = Math.max
      o(tIe, 'includes')
      Xn = tIe
    })
  function nIe(t, e, r) {
    var n = t == null ? 0 : t.length
    if (!n) return -1
    var i = r == null ? 0 : kc(r)
    return i < 0 && (i = rIe(n + i, 0)), Lm(t, e, i)
  }
  var rIe,
    ik,
    fne = N(() => {
      'use strict'
      xw()
      Dm()
      rIe = Math.max
      o(nIe, 'indexOf')
      ik = nIe
    })
  function lIe(t) {
    if (t == null) return !0
    if (fi(t) && (Pt(t) || typeof t == 'string' || typeof t.splice == 'function' || Ll(t) || Gh(t) || Dl(t))) return !t.length
    var e = lo(t)
    if (e == iIe || e == aIe) return !t.size
    if (mc(t)) return !Rm(t).length
    for (var r in t) if (oIe.call(t, r)) return !1
    return !0
  }
  var iIe,
    aIe,
    sIe,
    oIe,
    hr,
    ak = N(() => {
      'use strict'
      Tw()
      Xd()
      hm()
      Wn()
      Po()
      dm()
      um()
      f2()
      ;(iIe = '[object Map]'), (aIe = '[object Set]'), (sIe = Object.prototype), (oIe = sIe.hasOwnProperty)
      o(lIe, 'isEmpty')
      hr = lIe
    })
  function uIe(t) {
    return ii(t) && fa(t) == cIe
  }
  var cIe,
    dne,
    pne = N(() => {
      'use strict'
      Au()
      Oo()
      cIe = '[object RegExp]'
      o(uIe, 'baseIsRegExp')
      dne = uIe
    })
  var mne,
    hIe,
    Uo,
    gne = N(() => {
      'use strict'
      pne()
      Bd()
      h2()
      ;(mne = Fo && Fo.isRegExp), (hIe = mne ? Bo(mne) : dne), (Uo = hIe)
    })
  function fIe(t) {
    return t === void 0
  }
  var mr,
    yne = N(() => {
      'use strict'
      o(fIe, 'isUndefined')
      mr = fIe
    })
  function dIe(t, e) {
    return t < e
  }
  var sk,
    xR = N(() => {
      'use strict'
      o(dIe, 'baseLt')
      sk = dIe
    })
  function pIe(t, e) {
    var r = {}
    return (
      (e = mn(e, 3)),
      Gm(t, function (n, i, a) {
        pc(r, i, e(n, i, a))
      }),
      r
    )
  }
  var jd,
    vne = N(() => {
      'use strict'
      am()
      Kw()
      os()
      o(pIe, 'mapValues')
      jd = pIe
    })
  function mIe(t, e, r) {
    for (var n = -1, i = t.length; ++n < i; ) {
      var a = t[n],
        s = e(a)
      if (s != null && (l === void 0 ? s === s && !oo(s) : r(s, l)))
        var l = s,
          u = a
    }
    return u
  }
  var Hm,
    ok = N(() => {
      'use strict'
      Wd()
      o(mIe, 'baseExtremum')
      Hm = mIe
    })
  function gIe(t) {
    return t && t.length ? Hm(t, ta, ine) : void 0
  }
  var $s,
    xne = N(() => {
      'use strict'
      ok()
      ane()
      Lu()
      o(gIe, 'max')
      $s = gIe
    })
  function yIe(t) {
    return t && t.length ? Hm(t, ta, sk) : void 0
  }
  var Nl,
    bR = N(() => {
      'use strict'
      ok()
      xR()
      Lu()
      o(yIe, 'min')
      Nl = yIe
    })
  function vIe(t, e) {
    return t && t.length ? Hm(t, mn(e, 2), sk) : void 0
  }
  var Kd,
    bne = N(() => {
      'use strict'
      ok()
      os()
      xR()
      o(vIe, 'minBy')
      Kd = vIe
    })
  function bIe(t) {
    if (typeof t != 'function') throw new TypeError(xIe)
    return function () {
      var e = arguments
      switch (e.length) {
        case 0:
          return !t.call(this)
        case 1:
          return !t.call(this, e[0])
        case 2:
          return !t.call(this, e[0], e[1])
        case 3:
          return !t.call(this, e[0], e[1], e[2])
      }
      return !t.apply(this, e)
    }
  }
  var xIe,
    Tne,
    wne = N(() => {
      'use strict'
      xIe = 'Expected a function'
      o(bIe, 'negate')
      Tne = bIe
    })
  function TIe(t, e, r, n) {
    if (!bn(t)) return t
    e = Jh(e, t)
    for (var i = -1, a = e.length, s = a - 1, l = t; l != null && ++i < a; ) {
      var u = Sc(e[i]),
        h = r
      if (u === '__proto__' || u === 'constructor' || u === 'prototype') return t
      if (i != s) {
        var f = l[u]
        ;(h = n ? n(f, u, l) : void 0), h === void 0 && (h = bn(f) ? f : Vh(e[i + 1]) ? [] : {})
      }
      gc(l, u, h), (l = l[u])
    }
    return t
  }
  var kne,
    Ene = N(() => {
      'use strict'
      pm()
      I2()
      p2()
      no()
      Mm()
      o(TIe, 'baseSet')
      kne = TIe
    })
  function wIe(t, e, r) {
    for (var n = -1, i = e.length, a = {}; ++n < i; ) {
      var s = e[n],
        l = ef(t, s)
      r(l, s) && kne(a, Jh(s, t), l)
    }
    return a
  }
  var lk,
    TR = N(() => {
      'use strict'
      O2()
      Ene()
      I2()
      o(wIe, 'basePickBy')
      lk = wIe
    })
  function kIe(t, e) {
    if (t == null) return {}
    var r = Bs(Nw(t), function (n) {
      return [n]
    })
    return (
      (e = mn(e)),
      lk(t, r, function (n, i) {
        return e(n, i[0])
      })
    )
  }
  var zs,
    Sne = N(() => {
      'use strict'
      qd()
      os()
      TR()
      KL()
      o(kIe, 'pickBy')
      zs = kIe
    })
  function EIe(t, e) {
    var r = t.length
    for (t.sort(e); r--; ) t[r] = t[r].value
    return t
  }
  var Cne,
    Ane = N(() => {
      'use strict'
      o(EIe, 'baseSortBy')
      Cne = EIe
    })
  function SIe(t, e) {
    if (t !== e) {
      var r = t !== void 0,
        n = t === null,
        i = t === t,
        a = oo(t),
        s = e !== void 0,
        l = e === null,
        u = e === e,
        h = oo(e)
      if ((!l && !h && !a && t > e) || (a && s && u && !l && !h) || (n && s && u) || (!r && u) || !i) return 1
      if ((!n && !a && !h && t < e) || (h && r && i && !n && !a) || (l && r && i) || (!s && i) || !u) return -1
    }
    return 0
  }
  var _ne,
    Dne = N(() => {
      'use strict'
      Wd()
      o(SIe, 'compareAscending')
      _ne = SIe
    })
  function CIe(t, e, r) {
    for (var n = -1, i = t.criteria, a = e.criteria, s = i.length, l = r.length; ++n < s; ) {
      var u = _ne(i[n], a[n])
      if (u) {
        if (n >= l) return u
        var h = r[n]
        return u * (h == 'desc' ? -1 : 1)
      }
    }
    return t.index - e.index
  }
  var Lne,
    Rne = N(() => {
      'use strict'
      Dne()
      o(CIe, 'compareMultiple')
      Lne = CIe
    })
  function AIe(t, e, r) {
    e.length
      ? (e = Bs(e, function (a) {
          return Pt(a)
            ? function (s) {
                return ef(s, a.length === 1 ? a[0] : a)
              }
            : a
        }))
      : (e = [ta])
    var n = -1
    e = Bs(e, Bo(mn))
    var i = rk(t, function (a, s, l) {
      var u = Bs(e, function (h) {
        return h(a)
      })
      return { criteria: u, index: ++n, value: a }
    })
    return Cne(i, function (a, s) {
      return Lne(a, s, r)
    })
  }
  var Nne,
    Mne = N(() => {
      'use strict'
      qd()
      O2()
      os()
      dR()
      Ane()
      Bd()
      Rne()
      Lu()
      Wn()
      o(AIe, 'baseOrderBy')
      Nne = AIe
    })
  var _Ie,
    Ine,
    One = N(() => {
      'use strict'
      cR()
      ;(_Ie = jw('length')), (Ine = _Ie)
    })
  function zIe(t) {
    for (var e = (Pne.lastIndex = 0); Pne.test(t); ) ++e
    return e
  }
  var Bne,
    DIe,
    LIe,
    RIe,
    NIe,
    MIe,
    IIe,
    wR,
    kR,
    OIe,
    Fne,
    $ne,
    zne,
    PIe,
    Gne,
    Vne,
    BIe,
    FIe,
    $Ie,
    Pne,
    Une,
    Hne = N(() => {
      'use strict'
      ;(Bne = '\\ud800-\\udfff'),
        (DIe = '\\u0300-\\u036f'),
        (LIe = '\\ufe20-\\ufe2f'),
        (RIe = '\\u20d0-\\u20ff'),
        (NIe = DIe + LIe + RIe),
        (MIe = '\\ufe0e\\ufe0f'),
        (IIe = '[' + Bne + ']'),
        (wR = '[' + NIe + ']'),
        (kR = '\\ud83c[\\udffb-\\udfff]'),
        (OIe = '(?:' + wR + '|' + kR + ')'),
        (Fne = '[^' + Bne + ']'),
        ($ne = '(?:\\ud83c[\\udde6-\\uddff]){2}'),
        (zne = '[\\ud800-\\udbff][\\udc00-\\udfff]'),
        (PIe = '\\u200d'),
        (Gne = OIe + '?'),
        (Vne = '[' + MIe + ']?'),
        (BIe = '(?:' + PIe + '(?:' + [Fne, $ne, zne].join('|') + ')' + Vne + Gne + ')*'),
        (FIe = Vne + Gne + BIe),
        ($Ie = '(?:' + [Fne + wR + '?', wR, $ne, zne, IIe].join('|') + ')'),
        (Pne = RegExp(kR + '(?=' + kR + ')|' + $Ie + FIe, 'g'))
      o(zIe, 'unicodeSize')
      Une = zIe
    })
  function GIe(t) {
    return tte(t) ? Une(t) : Ine(t)
  }
  var Wne,
    qne = N(() => {
      'use strict'
      One()
      rte()
      Hne()
      o(GIe, 'stringSize')
      Wne = GIe
    })
  function VIe(t, e) {
    return lk(t, e, function (r, n) {
      return Xw(t, n)
    })
  }
  var Yne,
    Xne = N(() => {
      'use strict'
      TR()
      lR()
      o(VIe, 'basePick')
      Yne = VIe
    })
  var UIe,
    Qd,
    jne = N(() => {
      'use strict'
      Xne()
      ete()
      ;(UIe = Jee(function (t, e) {
        return t == null ? {} : Yne(t, e)
      })),
        (Qd = UIe)
    })
  function qIe(t, e, r, n) {
    for (var i = -1, a = WIe(HIe((e - t) / (r || 1)), 0), s = Array(a); a--; ) (s[n ? a : ++i] = t), (t += r)
    return s
  }
  var HIe,
    WIe,
    Kne,
    Qne = N(() => {
      'use strict'
      ;(HIe = Math.ceil), (WIe = Math.max)
      o(qIe, 'baseRange')
      Kne = qIe
    })
  function YIe(t) {
    return function (e, r, n) {
      return (
        n && typeof n != 'number' && io(e, r, n) && (r = n = void 0),
        (e = _m(e)),
        r === void 0 ? ((r = e), (e = 0)) : (r = _m(r)),
        (n = n === void 0 ? (e < r ? 1 : -1) : _m(n)),
        Kne(e, r, n, t)
      )
    }
  }
  var Zne,
    Jne = N(() => {
      'use strict'
      Qne()
      $d()
      $L()
      o(YIe, 'createRange')
      Zne = YIe
    })
  var XIe,
    Ho,
    eie = N(() => {
      'use strict'
      Jne()
      ;(XIe = Zne()), (Ho = XIe)
    })
  function jIe(t, e, r, n, i) {
    return (
      i(t, function (a, s, l) {
        r = n ? ((n = !1), a) : e(r, a, s, l)
      }),
      r
    )
  }
  var tie,
    rie = N(() => {
      'use strict'
      o(jIe, 'baseReduce')
      tie = jIe
    })
  function KIe(t, e, r) {
    var n = Pt(t) ? nte : tie,
      i = arguments.length < 3
    return n(t, mn(e, 4), r, i, Fs)
  }
  var Xr,
    ER = N(() => {
      'use strict'
      ite()
      rf()
      os()
      rie()
      Wn()
      o(KIe, 'reduce')
      Xr = KIe
    })
  function QIe(t, e) {
    var r = Pt(t) ? Pm : tk
    return r(t, Tne(mn(e, 3)))
  }
  var sf,
    nie = N(() => {
      'use strict'
      Aw()
      hR()
      os()
      Wn()
      wne()
      o(QIe, 'reject')
      sf = QIe
    })
  function eOe(t) {
    if (t == null) return 0
    if (fi(t)) return Ti(t) ? Wne(t) : t.length
    var e = lo(t)
    return e == ZIe || e == JIe ? t.size : Rm(t).length
  }
  var ZIe,
    JIe,
    SR,
    iie = N(() => {
      'use strict'
      Tw()
      Xd()
      Po()
      nk()
      qne()
      ;(ZIe = '[object Map]'), (JIe = '[object Set]')
      o(eOe, 'size')
      SR = eOe
    })
  function tOe(t, e) {
    var r
    return (
      Fs(t, function (n, i, a) {
        return (r = e(n, i, a)), !r
      }),
      !!r
    )
  }
  var aie,
    sie = N(() => {
      'use strict'
      rf()
      o(tOe, 'baseSome')
      aie = tOe
    })
  function rOe(t, e, r) {
    var n = Pt(t) ? $w : aie
    return r && io(t, e, r) && (e = void 0), n(t, mn(e, 3))
  }
  var B2,
    oie = N(() => {
      'use strict'
      tR()
      os()
      sie()
      Wn()
      $d()
      o(rOe, 'some')
      B2 = rOe
    })
  var nOe,
    _c,
    lie = N(() => {
      'use strict'
      Om()
      Mne()
      mm()
      $d()
      ;(nOe = yc(function (t, e) {
        if (t == null) return []
        var r = e.length
        return r > 1 && io(t, e[0], e[1]) ? (e = []) : r > 2 && io(e[0], e[1], e[2]) && (e = [e[0]]), Nne(t, Cc(e, 1), [])
      })),
        (_c = nOe)
    })
  var iOe,
    aOe,
    cie,
    uie = N(() => {
      'use strict'
      QL()
      zL()
      Vw()
      ;(iOe = 1 / 0),
        (aOe =
          tf && 1 / zm(new tf([, -0]))[1] == iOe
            ? function (t) {
                return new tf(t)
              }
            : ai),
        (cie = aOe)
    })
  function oOe(t, e, r) {
    var n = -1,
      i = bw,
      a = t.length,
      s = !0,
      l = [],
      u = l
    if (r) (s = !1), (i = Zw)
    else if (a >= sOe) {
      var h = e ? null : cie(t)
      if (h) return zm(h)
      ;(s = !1), (i = $m), (u = new Fm())
    } else u = e ? [] : l
    e: for (; ++n < a; ) {
      var f = t[n],
        d = e ? e(f) : f
      if (((f = r || f !== 0 ? f : 0), s && d === d)) {
        for (var p = u.length; p--; ) if (u[p] === d) continue e
        e && u.push(d), l.push(f)
      } else i(u, d, r) || (u !== l && u.push(d), l.push(f))
    }
    return l
  }
  var sOe,
    Wm,
    ck = N(() => {
      'use strict'
      Fw()
      UL()
      uR()
      zw()
      uie()
      Vw()
      sOe = 200
      o(oOe, 'baseUniq')
      Wm = oOe
    })
  var lOe,
    CR,
    hie = N(() => {
      'use strict'
      Om()
      mm()
      ck()
      xT()
      ;(lOe = yc(function (t) {
        return Wm(Cc(t, 1, Pd, !0))
      })),
        (CR = lOe)
    })
  function cOe(t) {
    return t && t.length ? Wm(t) : []
  }
  var qm,
    fie = N(() => {
      'use strict'
      ck()
      o(cOe, 'uniq')
      qm = cOe
    })
  function uOe(t, e) {
    return t && t.length ? Wm(t, mn(e, 2)) : []
  }
  var die,
    pie = N(() => {
      'use strict'
      os()
      ck()
      o(uOe, 'uniqBy')
      die = uOe
    })
  function fOe(t) {
    var e = ++hOe
    return kw(t) + e
  }
  var hOe,
    Zd,
    mie = N(() => {
      'use strict'
      HL()
      hOe = 0
      o(fOe, 'uniqueId')
      Zd = fOe
    })
  function dOe(t, e, r) {
    for (var n = -1, i = t.length, a = e.length, s = {}; ++n < i; ) {
      var l = n < a ? e[n] : void 0
      r(s, t[n], l)
    }
    return s
  }
  var gie,
    yie = N(() => {
      'use strict'
      o(dOe, 'baseZipObject')
      gie = dOe
    })
  function pOe(t, e) {
    return gie(t || [], e || [], gc)
  }
  var uk,
    vie = N(() => {
      'use strict'
      pm()
      yie()
      o(pOe, 'zipObject')
      uk = pOe
    })
  var qt = N(() => {
    'use strict'
    Vee()
    JL()
    qte()
    Yte()
    T9()
    Ore()
    Fre()
    zre()
    Gre()
    Vre()
    Yre()
    fR()
    Zre()
    ene()
    pR()
    Sw()
    ek()
    tne()
    rne()
    nne()
    lne()
    Lu()
    hne()
    fne()
    Wn()
    ak()
    n2()
    no()
    gne()
    nk()
    yne()
    Ec()
    $re()
    Um()
    vne()
    xne()
    E9()
    bR()
    bne()
    zL()
    Mre()
    jne()
    Sne()
    eie()
    ER()
    nie()
    iie()
    oie()
    lie()
    hie()
    fie()
    mie()
    vR()
    vie()
  })
  function bie(t, e) {
    t[e] ? t[e]++ : (t[e] = 1)
  }
  function Tie(t, e) {
    --t[e] || delete t[e]
  }
  function F2(t, e, r, n) {
    var i = '' + e,
      a = '' + r
    if (!t && i > a) {
      var s = i
      ;(i = a), (a = s)
    }
    return i + xie + a + xie + (mr(n) ? mOe : n)
  }
  function gOe(t, e, r, n) {
    var i = '' + e,
      a = '' + r
    if (!t && i > a) {
      var s = i
      ;(i = a), (a = s)
    }
    var l = { v: i, w: a }
    return n && (l.name = n), l
  }
  function AR(t, e) {
    return F2(t, e.v, e.w, e.name)
  }
  var mOe,
    Jd,
    xie,
    sn,
    hk = N(() => {
      'use strict'
      qt()
      ;(mOe = '\0'),
        (Jd = '\0'),
        (xie = ''),
        (sn = class {
          static {
            o(this, 'Graph')
          }
          constructor(e = {}) {
            ;(this._isDirected = Object.prototype.hasOwnProperty.call(e, 'directed') ? e.directed : !0),
              (this._isMultigraph = Object.prototype.hasOwnProperty.call(e, 'multigraph') ? e.multigraph : !1),
              (this._isCompound = Object.prototype.hasOwnProperty.call(e, 'compound') ? e.compound : !1),
              (this._label = void 0),
              (this._defaultNodeLabelFn = Ns(void 0)),
              (this._defaultEdgeLabelFn = Ns(void 0)),
              (this._nodes = {}),
              this._isCompound && ((this._parent = {}), (this._children = {}), (this._children[Jd] = {})),
              (this._in = {}),
              (this._preds = {}),
              (this._out = {}),
              (this._sucs = {}),
              (this._edgeObjs = {}),
              (this._edgeLabels = {})
          }
          isDirected() {
            return this._isDirected
          }
          isMultigraph() {
            return this._isMultigraph
          }
          isCompound() {
            return this._isCompound
          }
          setGraph(e) {
            return (this._label = e), this
          }
          graph() {
            return this._label
          }
          setDefaultNodeLabel(e) {
            return Ai(e) || (e = Ns(e)), (this._defaultNodeLabelFn = e), this
          }
          nodeCount() {
            return this._nodeCount
          }
          nodes() {
            return zr(this._nodes)
          }
          sources() {
            var e = this
            return Yr(this.nodes(), function (r) {
              return hr(e._in[r])
            })
          }
          sinks() {
            var e = this
            return Yr(this.nodes(), function (r) {
              return hr(e._out[r])
            })
          }
          setNodes(e, r) {
            var n = arguments,
              i = this
            return (
              Ae(e, function (a) {
                n.length > 1 ? i.setNode(a, r) : i.setNode(a)
              }),
              this
            )
          }
          setNode(e, r) {
            return Object.prototype.hasOwnProperty.call(this._nodes, e)
              ? (arguments.length > 1 && (this._nodes[e] = r), this)
              : ((this._nodes[e] = arguments.length > 1 ? r : this._defaultNodeLabelFn(e)),
                this._isCompound && ((this._parent[e] = Jd), (this._children[e] = {}), (this._children[Jd][e] = !0)),
                (this._in[e] = {}),
                (this._preds[e] = {}),
                (this._out[e] = {}),
                (this._sucs[e] = {}),
                ++this._nodeCount,
                this)
          }
          node(e) {
            return this._nodes[e]
          }
          hasNode(e) {
            return Object.prototype.hasOwnProperty.call(this._nodes, e)
          }
          removeNode(e) {
            if (Object.prototype.hasOwnProperty.call(this._nodes, e)) {
              var r = o(n => this.removeEdge(this._edgeObjs[n]), 'removeEdge')
              delete this._nodes[e],
                this._isCompound &&
                  (this._removeFromParentsChildList(e),
                  delete this._parent[e],
                  Ae(this.children(e), n => {
                    this.setParent(n)
                  }),
                  delete this._children[e]),
                Ae(zr(this._in[e]), r),
                delete this._in[e],
                delete this._preds[e],
                Ae(zr(this._out[e]), r),
                delete this._out[e],
                delete this._sucs[e],
                --this._nodeCount
            }
            return this
          }
          setParent(e, r) {
            if (!this._isCompound) throw new Error('Cannot set parent in a non-compound graph')
            if (mr(r)) r = Jd
            else {
              r += ''
              for (var n = r; !mr(n); n = this.parent(n)) if (n === e) throw new Error('Setting ' + r + ' as parent of ' + e + ' would create a cycle')
              this.setNode(r)
            }
            return this.setNode(e), this._removeFromParentsChildList(e), (this._parent[e] = r), (this._children[r][e] = !0), this
          }
          _removeFromParentsChildList(e) {
            delete this._children[this._parent[e]][e]
          }
          parent(e) {
            if (this._isCompound) {
              var r = this._parent[e]
              if (r !== Jd) return r
            }
          }
          children(e) {
            if ((mr(e) && (e = Jd), this._isCompound)) {
              var r = this._children[e]
              if (r) return zr(r)
            } else {
              if (e === Jd) return this.nodes()
              if (this.hasNode(e)) return []
            }
          }
          predecessors(e) {
            var r = this._preds[e]
            if (r) return zr(r)
          }
          successors(e) {
            var r = this._sucs[e]
            if (r) return zr(r)
          }
          neighbors(e) {
            var r = this.predecessors(e)
            if (r) return CR(r, this.successors(e))
          }
          isLeaf(e) {
            var r
            return this.isDirected() ? (r = this.successors(e)) : (r = this.neighbors(e)), r.length === 0
          }
          filterNodes(e) {
            var r = new this.constructor({ directed: this._isDirected, multigraph: this._isMultigraph, compound: this._isCompound })
            r.setGraph(this.graph())
            var n = this
            Ae(this._nodes, function (s, l) {
              e(l) && r.setNode(l, s)
            }),
              Ae(this._edgeObjs, function (s) {
                r.hasNode(s.v) && r.hasNode(s.w) && r.setEdge(s, n.edge(s))
              })
            var i = {}
            function a(s) {
              var l = n.parent(s)
              return l === void 0 || r.hasNode(l) ? ((i[s] = l), l) : l in i ? i[l] : a(l)
            }
            return (
              o(a, 'findParent'),
              this._isCompound &&
                Ae(r.nodes(), function (s) {
                  r.setParent(s, a(s))
                }),
              r
            )
          }
          setDefaultEdgeLabel(e) {
            return Ai(e) || (e = Ns(e)), (this._defaultEdgeLabelFn = e), this
          }
          edgeCount() {
            return this._edgeCount
          }
          edges() {
            return br(this._edgeObjs)
          }
          setPath(e, r) {
            var n = this,
              i = arguments
            return (
              Xr(e, function (a, s) {
                return i.length > 1 ? n.setEdge(a, s, r) : n.setEdge(a, s), s
              }),
              this
            )
          }
          setEdge() {
            var e,
              r,
              n,
              i,
              a = !1,
              s = arguments[0]
            typeof s == 'object' && s !== null && 'v' in s
              ? ((e = s.v), (r = s.w), (n = s.name), arguments.length === 2 && ((i = arguments[1]), (a = !0)))
              : ((e = s), (r = arguments[1]), (n = arguments[3]), arguments.length > 2 && ((i = arguments[2]), (a = !0))),
              (e = '' + e),
              (r = '' + r),
              mr(n) || (n = '' + n)
            var l = F2(this._isDirected, e, r, n)
            if (Object.prototype.hasOwnProperty.call(this._edgeLabels, l)) return a && (this._edgeLabels[l] = i), this
            if (!mr(n) && !this._isMultigraph) throw new Error('Cannot set a named edge when isMultigraph = false')
            this.setNode(e), this.setNode(r), (this._edgeLabels[l] = a ? i : this._defaultEdgeLabelFn(e, r, n))
            var u = gOe(this._isDirected, e, r, n)
            return (
              (e = u.v),
              (r = u.w),
              Object.freeze(u),
              (this._edgeObjs[l] = u),
              bie(this._preds[r], e),
              bie(this._sucs[e], r),
              (this._in[r][l] = u),
              (this._out[e][l] = u),
              this._edgeCount++,
              this
            )
          }
          edge(e, r, n) {
            var i = arguments.length === 1 ? AR(this._isDirected, arguments[0]) : F2(this._isDirected, e, r, n)
            return this._edgeLabels[i]
          }
          hasEdge(e, r, n) {
            var i = arguments.length === 1 ? AR(this._isDirected, arguments[0]) : F2(this._isDirected, e, r, n)
            return Object.prototype.hasOwnProperty.call(this._edgeLabels, i)
          }
          removeEdge(e, r, n) {
            var i = arguments.length === 1 ? AR(this._isDirected, arguments[0]) : F2(this._isDirected, e, r, n),
              a = this._edgeObjs[i]
            return (
              a &&
                ((e = a.v),
                (r = a.w),
                delete this._edgeLabels[i],
                delete this._edgeObjs[i],
                Tie(this._preds[r], e),
                Tie(this._sucs[e], r),
                delete this._in[r][i],
                delete this._out[e][i],
                this._edgeCount--),
              this
            )
          }
          inEdges(e, r) {
            var n = this._in[e]
            if (n) {
              var i = br(n)
              return r
                ? Yr(i, function (a) {
                    return a.v === r
                  })
                : i
            }
          }
          outEdges(e, r) {
            var n = this._out[e]
            if (n) {
              var i = br(n)
              return r
                ? Yr(i, function (a) {
                    return a.w === r
                  })
                : i
            }
          }
          nodeEdges(e, r) {
            var n = this.inEdges(e, r)
            if (n) return n.concat(this.outEdges(e, r))
          }
        })
      sn.prototype._nodeCount = 0
      sn.prototype._edgeCount = 0
      o(bie, 'incrementOrInitEntry')
      o(Tie, 'decrementOrRemoveEntry')
      o(F2, 'edgeArgsToId')
      o(gOe, 'edgeArgsToObj')
      o(AR, 'edgeObjToId')
    })
  var Wo = N(() => {
    'use strict'
    hk()
  })
  function wie(t) {
    ;(t._prev._next = t._next), (t._next._prev = t._prev), delete t._next, delete t._prev
  }
  function yOe(t, e) {
    if (t !== '_next' && t !== '_prev') return e
  }
  var dk,
    kie = N(() => {
      'use strict'
      dk = class {
        static {
          o(this, 'List')
        }
        constructor() {
          var e = {}
          ;(e._next = e._prev = e), (this._sentinel = e)
        }
        dequeue() {
          var e = this._sentinel,
            r = e._prev
          if (r !== e) return wie(r), r
        }
        enqueue(e) {
          var r = this._sentinel
          e._prev && e._next && wie(e), (e._next = r._next), (r._next._prev = e), (r._next = e), (e._prev = r)
        }
        toString() {
          for (var e = [], r = this._sentinel, n = r._prev; n !== r; ) e.push(JSON.stringify(n, yOe)), (n = n._prev)
          return '[' + e.join(', ') + ']'
        }
      }
      o(wie, 'unlink')
      o(yOe, 'filterOutLinks')
    })
  function Eie(t, e) {
    if (t.nodeCount() <= 1) return []
    var r = bOe(t, e || vOe),
      n = xOe(r.graph, r.buckets, r.zeroIdx)
    return qr(
      Je(n, function (i) {
        return t.outEdges(i.v, i.w)
      })
    )
  }
  function xOe(t, e, r) {
    for (var n = [], i = e[e.length - 1], a = e[0], s; t.nodeCount(); ) {
      for (; (s = a.dequeue()); ) _R(t, e, r, s)
      for (; (s = i.dequeue()); ) _R(t, e, r, s)
      if (t.nodeCount()) {
        for (var l = e.length - 2; l > 0; --l)
          if (((s = e[l].dequeue()), s)) {
            n = n.concat(_R(t, e, r, s, !0))
            break
          }
      }
    }
    return n
  }
  function _R(t, e, r, n, i) {
    var a = i ? [] : void 0
    return (
      Ae(t.inEdges(n.v), function (s) {
        var l = t.edge(s),
          u = t.node(s.v)
        i && a.push({ v: s.v, w: s.w }), (u.out -= l), DR(e, r, u)
      }),
      Ae(t.outEdges(n.v), function (s) {
        var l = t.edge(s),
          u = s.w,
          h = t.node(u)
        ;(h.in -= l), DR(e, r, h)
      }),
      t.removeNode(n.v),
      a
    )
  }
  function bOe(t, e) {
    var r = new sn(),
      n = 0,
      i = 0
    Ae(t.nodes(), function (l) {
      r.setNode(l, { v: l, in: 0, out: 0 })
    }),
      Ae(t.edges(), function (l) {
        var u = r.edge(l.v, l.w) || 0,
          h = e(l),
          f = u + h
        r.setEdge(l.v, l.w, f), (i = Math.max(i, (r.node(l.v).out += h))), (n = Math.max(n, (r.node(l.w).in += h)))
      })
    var a = Ho(i + n + 3).map(function () {
        return new dk()
      }),
      s = n + 1
    return (
      Ae(r.nodes(), function (l) {
        DR(a, s, r.node(l))
      }),
      { graph: r, buckets: a, zeroIdx: s }
    )
  }
  function DR(t, e, r) {
    r.out ? (r.in ? t[r.out - r.in + e].enqueue(r) : t[t.length - 1].enqueue(r)) : t[0].enqueue(r)
  }
  var vOe,
    Sie = N(() => {
      'use strict'
      qt()
      Wo()
      kie()
      vOe = Ns(1)
      o(Eie, 'greedyFAS')
      o(xOe, 'doGreedyFAS')
      o(_R, 'removeNode')
      o(bOe, 'buildState')
      o(DR, 'assignBucket')
    })
  function Cie(t) {
    var e = t.graph().acyclicer === 'greedy' ? Eie(t, r(t)) : TOe(t)
    Ae(e, function (n) {
      var i = t.edge(n)
      t.removeEdge(n), (i.forwardName = n.name), (i.reversed = !0), t.setEdge(n.w, n.v, i, Zd('rev'))
    })
    function r(n) {
      return function (i) {
        return n.edge(i).weight
      }
    }
    o(r, 'weightFn')
  }
  function TOe(t) {
    var e = [],
      r = {},
      n = {}
    function i(a) {
      Object.prototype.hasOwnProperty.call(n, a) ||
        ((n[a] = !0),
        (r[a] = !0),
        Ae(t.outEdges(a), function (s) {
          Object.prototype.hasOwnProperty.call(r, s.w) ? e.push(s) : i(s.w)
        }),
        delete r[a])
    }
    return o(i, 'dfs'), Ae(t.nodes(), i), e
  }
  function Aie(t) {
    Ae(t.edges(), function (e) {
      var r = t.edge(e)
      if (r.reversed) {
        t.removeEdge(e)
        var n = r.forwardName
        delete r.reversed, delete r.forwardName, t.setEdge(e.w, e.v, r, n)
      }
    })
  }
  var LR = N(() => {
    'use strict'
    qt()
    Sie()
    o(Cie, 'run')
    o(TOe, 'dfsFAS')
    o(Aie, 'undo')
  })
  function Dc(t, e, r, n) {
    var i
    do i = Zd(n)
    while (t.hasNode(i))
    return (r.dummy = e), t.setNode(i, r), i
  }
  function Die(t) {
    var e = new sn().setGraph(t.graph())
    return (
      Ae(t.nodes(), function (r) {
        e.setNode(r, t.node(r))
      }),
      Ae(t.edges(), function (r) {
        var n = e.edge(r.v, r.w) || { weight: 0, minlen: 1 },
          i = t.edge(r)
        e.setEdge(r.v, r.w, { weight: n.weight + i.weight, minlen: Math.max(n.minlen, i.minlen) })
      }),
      e
    )
  }
  function pk(t) {
    var e = new sn({ multigraph: t.isMultigraph() }).setGraph(t.graph())
    return (
      Ae(t.nodes(), function (r) {
        t.children(r).length || e.setNode(r, t.node(r))
      }),
      Ae(t.edges(), function (r) {
        e.setEdge(r, t.edge(r))
      }),
      e
    )
  }
  function RR(t, e) {
    var r = t.x,
      n = t.y,
      i = e.x - r,
      a = e.y - n,
      s = t.width / 2,
      l = t.height / 2
    if (!i && !a) throw new Error('Not possible to find intersection inside of the rectangle')
    var u, h
    return Math.abs(a) * s > Math.abs(i) * l ? (a < 0 && (l = -l), (u = (l * i) / a), (h = l)) : (i < 0 && (s = -s), (u = s), (h = (s * a) / i)), { x: r + u, y: n + h }
  }
  function of(t) {
    var e = Je(Ho(MR(t) + 1), function () {
      return []
    })
    return (
      Ae(t.nodes(), function (r) {
        var n = t.node(r),
          i = n.rank
        mr(i) || (e[i][n.order] = r)
      }),
      e
    )
  }
  function Lie(t) {
    var e = Nl(
      Je(t.nodes(), function (r) {
        return t.node(r).rank
      })
    )
    Ae(t.nodes(), function (r) {
      var n = t.node(r)
      Bt(n, 'rank') && (n.rank -= e)
    })
  }
  function Rie(t) {
    var e = Nl(
        Je(t.nodes(), function (a) {
          return t.node(a).rank
        })
      ),
      r = []
    Ae(t.nodes(), function (a) {
      var s = t.node(a).rank - e
      r[s] || (r[s] = []), r[s].push(a)
    })
    var n = 0,
      i = t.graph().nodeRankFactor
    Ae(r, function (a, s) {
      mr(a) && s % i !== 0
        ? --n
        : n &&
          Ae(a, function (l) {
            t.node(l).rank += n
          })
    })
  }
  function NR(t, e, r, n) {
    var i = { width: 0, height: 0 }
    return arguments.length >= 4 && ((i.rank = r), (i.order = n)), Dc(t, 'border', i, e)
  }
  function MR(t) {
    return $s(
      Je(t.nodes(), function (e) {
        var r = t.node(e).rank
        if (!mr(r)) return r
      })
    )
  }
  function Nie(t, e) {
    var r = { lhs: [], rhs: [] }
    return (
      Ae(t, function (n) {
        e(n) ? r.lhs.push(n) : r.rhs.push(n)
      }),
      r
    )
  }
  function Mie(t, e) {
    var r = Qw()
    try {
      return e()
    } finally {
      console.log(t + ' time: ' + (Qw() - r) + 'ms')
    }
  }
  function Iie(t, e) {
    return e()
  }
  var Lc = N(() => {
    'use strict'
    qt()
    Wo()
    o(Dc, 'addDummyNode')
    o(Die, 'simplify')
    o(pk, 'asNonCompoundGraph')
    o(RR, 'intersectRect')
    o(of, 'buildLayerMatrix')
    o(Lie, 'normalizeRanks')
    o(Rie, 'removeEmptyRanks')
    o(NR, 'addBorderNode')
    o(MR, 'maxRank')
    o(Nie, 'partition')
    o(Mie, 'time')
    o(Iie, 'notime')
  })
  function Pie(t) {
    function e(r) {
      var n = t.children(r),
        i = t.node(r)
      if ((n.length && Ae(n, e), Object.prototype.hasOwnProperty.call(i, 'minRank'))) {
        ;(i.borderLeft = []), (i.borderRight = [])
        for (var a = i.minRank, s = i.maxRank + 1; a < s; ++a) Oie(t, 'borderLeft', '_bl', r, i, a), Oie(t, 'borderRight', '_br', r, i, a)
      }
    }
    o(e, 'dfs'), Ae(t.children(), e)
  }
  function Oie(t, e, r, n, i, a) {
    var s = { width: 0, height: 0, rank: a, borderType: e },
      l = i[e][a - 1],
      u = Dc(t, 'border', s, r)
    ;(i[e][a] = u), t.setParent(u, n), l && t.setEdge(l, u, { weight: 1 })
  }
  var Bie = N(() => {
    'use strict'
    qt()
    Lc()
    o(Pie, 'addBorderSegments')
    o(Oie, 'addBorderNode')
  })
  function $ie(t) {
    var e = t.graph().rankdir.toLowerCase()
    ;(e === 'lr' || e === 'rl') && Gie(t)
  }
  function zie(t) {
    var e = t.graph().rankdir.toLowerCase()
    ;(e === 'bt' || e === 'rl') && wOe(t), (e === 'lr' || e === 'rl') && (kOe(t), Gie(t))
  }
  function Gie(t) {
    Ae(t.nodes(), function (e) {
      Fie(t.node(e))
    }),
      Ae(t.edges(), function (e) {
        Fie(t.edge(e))
      })
  }
  function Fie(t) {
    var e = t.width
    ;(t.width = t.height), (t.height = e)
  }
  function wOe(t) {
    Ae(t.nodes(), function (e) {
      IR(t.node(e))
    }),
      Ae(t.edges(), function (e) {
        var r = t.edge(e)
        Ae(r.points, IR), Object.prototype.hasOwnProperty.call(r, 'y') && IR(r)
      })
  }
  function IR(t) {
    t.y = -t.y
  }
  function kOe(t) {
    Ae(t.nodes(), function (e) {
      OR(t.node(e))
    }),
      Ae(t.edges(), function (e) {
        var r = t.edge(e)
        Ae(r.points, OR), Object.prototype.hasOwnProperty.call(r, 'x') && OR(r)
      })
  }
  function OR(t) {
    var e = t.x
    ;(t.x = t.y), (t.y = e)
  }
  var Vie = N(() => {
    'use strict'
    qt()
    o($ie, 'adjust')
    o(zie, 'undo')
    o(Gie, 'swapWidthHeight')
    o(Fie, 'swapWidthHeightOne')
    o(wOe, 'reverseY')
    o(IR, 'reverseYOne')
    o(kOe, 'swapXY')
    o(OR, 'swapXYOne')
  })
  function Uie(t) {
    ;(t.graph().dummyChains = []),
      Ae(t.edges(), function (e) {
        SOe(t, e)
      })
  }
  function SOe(t, e) {
    var r = e.v,
      n = t.node(r).rank,
      i = e.w,
      a = t.node(i).rank,
      s = e.name,
      l = t.edge(e),
      u = l.labelRank
    if (a !== n + 1) {
      t.removeEdge(e)
      var h = void 0,
        f,
        d
      for (d = 0, ++n; n < a; ++d, ++n)
        (l.points = []),
          (h = { width: 0, height: 0, edgeLabel: l, edgeObj: e, rank: n }),
          (f = Dc(t, 'edge', h, '_d')),
          n === u && ((h.width = l.width), (h.height = l.height), (h.dummy = 'edge-label'), (h.labelpos = l.labelpos)),
          t.setEdge(r, f, { weight: l.weight }, s),
          d === 0 && t.graph().dummyChains.push(f),
          (r = f)
      t.setEdge(r, i, { weight: l.weight }, s)
    }
  }
  function Hie(t) {
    Ae(t.graph().dummyChains, function (e) {
      var r = t.node(e),
        n = r.edgeLabel,
        i
      for (t.setEdge(r.edgeObj, n); r.dummy; )
        (i = t.successors(e)[0]),
          t.removeNode(e),
          n.points.push({ x: r.x, y: r.y }),
          r.dummy === 'edge-label' && ((n.x = r.x), (n.y = r.y), (n.width = r.width), (n.height = r.height)),
          (e = i),
          (r = t.node(e))
    })
  }
  var PR = N(() => {
    'use strict'
    qt()
    Lc()
    o(Uie, 'run')
    o(SOe, 'normalizeEdge')
    o(Hie, 'undo')
  })
  function $2(t) {
    var e = {}
    function r(n) {
      var i = t.node(n)
      if (Object.prototype.hasOwnProperty.call(e, n)) return i.rank
      e[n] = !0
      var a = Nl(
        Je(t.outEdges(n), function (s) {
          return r(s.w) - t.edge(s).minlen
        })
      )
      return (a === Number.POSITIVE_INFINITY || a === void 0 || a === null) && (a = 0), (i.rank = a)
    }
    o(r, 'dfs'), Ae(t.sources(), r)
  }
  function ep(t, e) {
    return t.node(e.w).rank - t.node(e.v).rank - t.edge(e).minlen
  }
  var mk = N(() => {
    'use strict'
    qt()
    o($2, 'longestPath')
    o(ep, 'slack')
  })
  function gk(t) {
    var e = new sn({ directed: !1 }),
      r = t.nodes()[0],
      n = t.nodeCount()
    e.setNode(r, {})
    for (var i, a; COe(e, t) < n; ) (i = AOe(e, t)), (a = e.hasNode(i.v) ? ep(t, i) : -ep(t, i)), _Oe(e, t, a)
    return e
  }
  function COe(t, e) {
    function r(n) {
      Ae(e.nodeEdges(n), function (i) {
        var a = i.v,
          s = n === a ? i.w : a
        !t.hasNode(s) && !ep(e, i) && (t.setNode(s, {}), t.setEdge(n, s, {}), r(s))
      })
    }
    return o(r, 'dfs'), Ae(t.nodes(), r), t.nodeCount()
  }
  function AOe(t, e) {
    return Kd(e.edges(), function (r) {
      if (t.hasNode(r.v) !== t.hasNode(r.w)) return ep(e, r)
    })
  }
  function _Oe(t, e, r) {
    Ae(t.nodes(), function (n) {
      e.node(n).rank += r
    })
  }
  var BR = N(() => {
    'use strict'
    qt()
    Wo()
    mk()
    o(gk, 'feasibleTree')
    o(COe, 'tightTree')
    o(AOe, 'findMinSlackEdge')
    o(_Oe, 'shiftRanks')
  })
  var qie = N(() => {
    'use strict'
  })
  var FR = N(() => {
    'use strict'
  })
  var eXt,
    $R = N(() => {
      'use strict'
      qt()
      FR()
      eXt = Ns(1)
    })
  var Yie = N(() => {
    'use strict'
    $R()
  })
  var zR = N(() => {
    'use strict'
  })
  var Xie = N(() => {
    'use strict'
    zR()
  })
  var hXt,
    jie = N(() => {
      'use strict'
      qt()
      hXt = Ns(1)
    })
  function GR(t) {
    var e = {},
      r = {},
      n = []
    function i(a) {
      if (Object.prototype.hasOwnProperty.call(r, a)) throw new z2()
      Object.prototype.hasOwnProperty.call(e, a) || ((r[a] = !0), (e[a] = !0), Ae(t.predecessors(a), i), delete r[a], n.push(a))
    }
    if ((o(i, 'visit'), Ae(t.sinks(), i), SR(e) !== t.nodeCount())) throw new z2()
    return n
  }
  function z2() {}
  var VR = N(() => {
    'use strict'
    qt()
    GR.CycleException = z2
    o(GR, 'topsort')
    o(z2, 'CycleException')
    z2.prototype = new Error()
  })
  var Kie = N(() => {
    'use strict'
    VR()
  })
  function yk(t, e, r) {
    Pt(e) || (e = [e])
    var n = (t.isDirected() ? t.successors : t.neighbors).bind(t),
      i = [],
      a = {}
    return (
      Ae(e, function (s) {
        if (!t.hasNode(s)) throw new Error('Graph does not have node: ' + s)
        Qie(t, s, r === 'post', a, n, i)
      }),
      i
    )
  }
  function Qie(t, e, r, n, i, a) {
    Object.prototype.hasOwnProperty.call(n, e) ||
      ((n[e] = !0),
      r || a.push(e),
      Ae(i(e), function (s) {
        Qie(t, s, r, n, i, a)
      }),
      r && a.push(e))
  }
  var UR = N(() => {
    'use strict'
    qt()
    o(yk, 'dfs')
    o(Qie, 'doDfs')
  })
  function HR(t, e) {
    return yk(t, e, 'post')
  }
  var Zie = N(() => {
    'use strict'
    UR()
    o(HR, 'postorder')
  })
  function WR(t, e) {
    return yk(t, e, 'pre')
  }
  var Jie = N(() => {
    'use strict'
    UR()
    o(WR, 'preorder')
  })
  var eae = N(() => {
    'use strict'
    FR()
    hk()
  })
  var tae = N(() => {
    'use strict'
    qie()
    $R()
    Yie()
    Xie()
    jie()
    Kie()
    Zie()
    Jie()
    eae()
    zR()
    VR()
  })
  function cf(t) {
    ;(t = Die(t)), $2(t)
    var e = gk(t)
    YR(e), qR(e, t)
    for (var r, n; (r = aae(e)); ) (n = sae(e, t, r)), oae(e, t, r, n)
  }
  function qR(t, e) {
    var r = HR(t, t.nodes())
    ;(r = r.slice(0, r.length - 1)),
      Ae(r, function (n) {
        MOe(t, e, n)
      })
  }
  function MOe(t, e, r) {
    var n = t.node(r),
      i = n.parent
    t.edge(r, i).cutvalue = nae(t, e, r)
  }
  function nae(t, e, r) {
    var n = t.node(r),
      i = n.parent,
      a = !0,
      s = e.edge(r, i),
      l = 0
    return (
      s || ((a = !1), (s = e.edge(i, r))),
      (l = s.weight),
      Ae(e.nodeEdges(r), function (u) {
        var h = u.v === r,
          f = h ? u.w : u.v
        if (f !== i) {
          var d = h === a,
            p = e.edge(u).weight
          if (((l += d ? p : -p), OOe(t, r, f))) {
            var m = t.edge(r, f).cutvalue
            l += d ? -m : m
          }
        }
      }),
      l
    )
  }
  function YR(t, e) {
    arguments.length < 2 && (e = t.nodes()[0]), iae(t, {}, 1, e)
  }
  function iae(t, e, r, n, i) {
    var a = r,
      s = t.node(n)
    return (
      (e[n] = !0),
      Ae(t.neighbors(n), function (l) {
        Object.prototype.hasOwnProperty.call(e, l) || (r = iae(t, e, r, l, n))
      }),
      (s.low = a),
      (s.lim = r++),
      i ? (s.parent = i) : delete s.parent,
      r
    )
  }
  function aae(t) {
    return ls(t.edges(), function (e) {
      return t.edge(e).cutvalue < 0
    })
  }
  function sae(t, e, r) {
    var n = r.v,
      i = r.w
    e.hasEdge(n, i) || ((n = r.w), (i = r.v))
    var a = t.node(n),
      s = t.node(i),
      l = a,
      u = !1
    a.lim > s.lim && ((l = s), (u = !0))
    var h = Yr(e.edges(), function (f) {
      return u === rae(t, t.node(f.v), l) && u !== rae(t, t.node(f.w), l)
    })
    return Kd(h, function (f) {
      return ep(e, f)
    })
  }
  function oae(t, e, r, n) {
    var i = r.v,
      a = r.w
    t.removeEdge(i, a), t.setEdge(n.v, n.w, {}), YR(t), qR(t, e), IOe(t, e)
  }
  function IOe(t, e) {
    var r = ls(t.nodes(), function (i) {
        return !e.node(i).parent
      }),
      n = WR(t, r)
    ;(n = n.slice(1)),
      Ae(n, function (i) {
        var a = t.node(i).parent,
          s = e.edge(i, a),
          l = !1
        s || ((s = e.edge(a, i)), (l = !0)), (e.node(i).rank = e.node(a).rank + (l ? s.minlen : -s.minlen))
      })
  }
  function OOe(t, e, r) {
    return t.hasEdge(e, r)
  }
  function rae(t, e, r) {
    return r.low <= e.lim && e.lim <= r.lim
  }
  var lae = N(() => {
    'use strict'
    qt()
    tae()
    Lc()
    BR()
    mk()
    cf.initLowLimValues = YR
    cf.initCutValues = qR
    cf.calcCutValue = nae
    cf.leaveEdge = aae
    cf.enterEdge = sae
    cf.exchangeEdges = oae
    o(cf, 'networkSimplex')
    o(qR, 'initCutValues')
    o(MOe, 'assignCutValue')
    o(nae, 'calcCutValue')
    o(YR, 'initLowLimValues')
    o(iae, 'dfsAssignLowLim')
    o(aae, 'leaveEdge')
    o(sae, 'enterEdge')
    o(oae, 'exchangeEdges')
    o(IOe, 'updateRanks')
    o(OOe, 'isTreeEdge')
    o(rae, 'isDescendant')
  })
  function XR(t) {
    switch (t.graph().ranker) {
      case 'network-simplex':
        cae(t)
        break
      case 'tight-tree':
        BOe(t)
        break
      case 'longest-path':
        POe(t)
        break
      default:
        cae(t)
    }
  }
  function BOe(t) {
    $2(t), gk(t)
  }
  function cae(t) {
    cf(t)
  }
  var POe,
    jR = N(() => {
      'use strict'
      BR()
      lae()
      mk()
      o(XR, 'rank')
      POe = $2
      o(BOe, 'tightTreeRanker')
      o(cae, 'networkSimplexRanker')
    })
  function uae(t) {
    var e = Dc(t, 'root', {}, '_root'),
      r = FOe(t),
      n = $s(br(r)) - 1,
      i = 2 * n + 1
    ;(t.graph().nestingRoot = e),
      Ae(t.edges(), function (s) {
        t.edge(s).minlen *= i
      })
    var a = $Oe(t) + 1
    Ae(t.children(), function (s) {
      hae(t, e, i, a, n, r, s)
    }),
      (t.graph().nodeRankFactor = i)
  }
  function hae(t, e, r, n, i, a, s) {
    var l = t.children(s)
    if (!l.length) {
      s !== e && t.setEdge(e, s, { weight: 0, minlen: r })
      return
    }
    var u = NR(t, '_bt'),
      h = NR(t, '_bb'),
      f = t.node(s)
    t.setParent(u, s),
      (f.borderTop = u),
      t.setParent(h, s),
      (f.borderBottom = h),
      Ae(l, function (d) {
        hae(t, e, r, n, i, a, d)
        var p = t.node(d),
          m = p.borderTop ? p.borderTop : d,
          g = p.borderBottom ? p.borderBottom : d,
          y = p.borderTop ? n : 2 * n,
          v = m !== g ? 1 : i - a[s] + 1
        t.setEdge(u, m, { weight: y, minlen: v, nestingEdge: !0 }), t.setEdge(g, h, { weight: y, minlen: v, nestingEdge: !0 })
      }),
      t.parent(s) || t.setEdge(e, u, { weight: 0, minlen: i + a[s] })
  }
  function FOe(t) {
    var e = {}
    function r(n, i) {
      var a = t.children(n)
      a &&
        a.length &&
        Ae(a, function (s) {
          r(s, i + 1)
        }),
        (e[n] = i)
    }
    return (
      o(r, 'dfs'),
      Ae(t.children(), function (n) {
        r(n, 1)
      }),
      e
    )
  }
  function $Oe(t) {
    return Xr(
      t.edges(),
      function (e, r) {
        return e + t.edge(r).weight
      },
      0
    )
  }
  function fae(t) {
    var e = t.graph()
    t.removeNode(e.nestingRoot),
      delete e.nestingRoot,
      Ae(t.edges(), function (r) {
        var n = t.edge(r)
        n.nestingEdge && t.removeEdge(r)
      })
  }
  var dae = N(() => {
    'use strict'
    qt()
    Lc()
    o(uae, 'run')
    o(hae, 'dfs')
    o(FOe, 'treeDepths')
    o($Oe, 'sumWeights')
    o(fae, 'cleanup')
  })
  function pae(t, e, r) {
    var n = {},
      i
    Ae(r, function (a) {
      for (var s = t.parent(a), l, u; s; ) {
        if (((l = t.parent(s)), l ? ((u = n[l]), (n[l] = s)) : ((u = i), (i = s)), u && u !== s)) {
          e.setEdge(u, s)
          return
        }
        s = l
      }
    })
  }
  var mae = N(() => {
    'use strict'
    qt()
    o(pae, 'addSubgraphConstraints')
  })
  function gae(t, e, r) {
    var n = GOe(t),
      i = new sn({ compound: !0 }).setGraph({ root: n }).setDefaultNodeLabel(function (a) {
        return t.node(a)
      })
    return (
      Ae(t.nodes(), function (a) {
        var s = t.node(a),
          l = t.parent(a)
        ;(s.rank === e || (s.minRank <= e && e <= s.maxRank)) &&
          (i.setNode(a),
          i.setParent(a, l || n),
          Ae(t[r](a), function (u) {
            var h = u.v === a ? u.w : u.v,
              f = i.edge(h, a),
              d = mr(f) ? 0 : f.weight
            i.setEdge(h, a, { weight: t.edge(u).weight + d })
          }),
          Object.prototype.hasOwnProperty.call(s, 'minRank') && i.setNode(a, { borderLeft: s.borderLeft[e], borderRight: s.borderRight[e] }))
      }),
      i
    )
  }
  function GOe(t) {
    for (var e; t.hasNode((e = Zd('_root'))); );
    return e
  }
  var yae = N(() => {
    'use strict'
    qt()
    Wo()
    o(gae, 'buildLayerGraph')
    o(GOe, 'createRootNode')
  })
  function vae(t, e) {
    for (var r = 0, n = 1; n < e.length; ++n) r += VOe(t, e[n - 1], e[n])
    return r
  }
  function VOe(t, e, r) {
    for (
      var n = uk(
          r,
          Je(r, function (h, f) {
            return f
          })
        ),
        i = qr(
          Je(e, function (h) {
            return _c(
              Je(t.outEdges(h), function (f) {
                return { pos: n[f.w], weight: t.edge(f).weight }
              }),
              'pos'
            )
          })
        ),
        a = 1;
      a < r.length;

    )
      a <<= 1
    var s = 2 * a - 1
    a -= 1
    var l = Je(new Array(s), function () {
        return 0
      }),
      u = 0
    return (
      Ae(
        i.forEach(function (h) {
          var f = h.pos + a
          l[f] += h.weight
          for (var d = 0; f > 0; ) f % 2 && (d += l[f + 1]), (f = (f - 1) >> 1), (l[f] += h.weight)
          u += h.weight * d
        })
      ),
      u
    )
  }
  var xae = N(() => {
    'use strict'
    qt()
    o(vae, 'crossCount')
    o(VOe, 'twoLayerCrossCount')
  })
  function bae(t) {
    var e = {},
      r = Yr(t.nodes(), function (l) {
        return !t.children(l).length
      }),
      n = $s(
        Je(r, function (l) {
          return t.node(l).rank
        })
      ),
      i = Je(Ho(n + 1), function () {
        return []
      })
    function a(l) {
      if (!Bt(e, l)) {
        e[l] = !0
        var u = t.node(l)
        i[u.rank].push(l), Ae(t.successors(l), a)
      }
    }
    o(a, 'dfs')
    var s = _c(r, function (l) {
      return t.node(l).rank
    })
    return Ae(s, a), i
  }
  var Tae = N(() => {
    'use strict'
    qt()
    o(bae, 'initOrder')
  })
  function wae(t, e) {
    return Je(e, function (r) {
      var n = t.inEdges(r)
      if (n.length) {
        var i = Xr(
          n,
          function (a, s) {
            var l = t.edge(s),
              u = t.node(s.v)
            return { sum: a.sum + l.weight * u.order, weight: a.weight + l.weight }
          },
          { sum: 0, weight: 0 }
        )
        return { v: r, barycenter: i.sum / i.weight, weight: i.weight }
      } else return { v: r }
    })
  }
  var kae = N(() => {
    'use strict'
    qt()
    o(wae, 'barycenter')
  })
  function Eae(t, e) {
    var r = {}
    Ae(t, function (i, a) {
      var s = (r[i.v] = { indegree: 0, in: [], out: [], vs: [i.v], i: a })
      mr(i.barycenter) || ((s.barycenter = i.barycenter), (s.weight = i.weight))
    }),
      Ae(e.edges(), function (i) {
        var a = r[i.v],
          s = r[i.w]
        !mr(a) && !mr(s) && (s.indegree++, a.out.push(r[i.w]))
      })
    var n = Yr(r, function (i) {
      return !i.indegree
    })
    return UOe(n)
  }
  function UOe(t) {
    var e = []
    function r(a) {
      return function (s) {
        s.merged || ((mr(s.barycenter) || mr(a.barycenter) || s.barycenter >= a.barycenter) && HOe(a, s))
      }
    }
    o(r, 'handleIn')
    function n(a) {
      return function (s) {
        s.in.push(a), --s.indegree === 0 && t.push(s)
      }
    }
    for (o(n, 'handleOut'); t.length; ) {
      var i = t.pop()
      e.push(i), Ae(i.in.reverse(), r(i)), Ae(i.out, n(i))
    }
    return Je(
      Yr(e, function (a) {
        return !a.merged
      }),
      function (a) {
        return Qd(a, ['vs', 'i', 'barycenter', 'weight'])
      }
    )
  }
  function HOe(t, e) {
    var r = 0,
      n = 0
    t.weight && ((r += t.barycenter * t.weight), (n += t.weight)),
      e.weight && ((r += e.barycenter * e.weight), (n += e.weight)),
      (t.vs = e.vs.concat(t.vs)),
      (t.barycenter = r / n),
      (t.weight = n),
      (t.i = Math.min(e.i, t.i)),
      (e.merged = !0)
  }
  var Sae = N(() => {
    'use strict'
    qt()
    o(Eae, 'resolveConflicts')
    o(UOe, 'doResolveConflicts')
    o(HOe, 'mergeEntries')
  })
  function Aae(t, e) {
    var r = Nie(t, function (f) {
        return Object.prototype.hasOwnProperty.call(f, 'barycenter')
      }),
      n = r.lhs,
      i = _c(r.rhs, function (f) {
        return -f.i
      }),
      a = [],
      s = 0,
      l = 0,
      u = 0
    n.sort(WOe(!!e)),
      (u = Cae(a, i, u)),
      Ae(n, function (f) {
        ;(u += f.vs.length), a.push(f.vs), (s += f.barycenter * f.weight), (l += f.weight), (u = Cae(a, i, u))
      })
    var h = { vs: qr(a) }
    return l && ((h.barycenter = s / l), (h.weight = l)), h
  }
  function Cae(t, e, r) {
    for (var n; e.length && (n = ma(e)).i <= r; ) e.pop(), t.push(n.vs), r++
    return r
  }
  function WOe(t) {
    return function (e, r) {
      return e.barycenter < r.barycenter ? -1 : e.barycenter > r.barycenter ? 1 : t ? r.i - e.i : e.i - r.i
    }
  }
  var _ae = N(() => {
    'use strict'
    qt()
    Lc()
    o(Aae, 'sort')
    o(Cae, 'consumeUnsortable')
    o(WOe, 'compareWithBias')
  })
  function KR(t, e, r, n) {
    var i = t.children(e),
      a = t.node(e),
      s = a ? a.borderLeft : void 0,
      l = a ? a.borderRight : void 0,
      u = {}
    s &&
      (i = Yr(i, function (g) {
        return g !== s && g !== l
      }))
    var h = wae(t, i)
    Ae(h, function (g) {
      if (t.children(g.v).length) {
        var y = KR(t, g.v, r, n)
        ;(u[g.v] = y), Object.prototype.hasOwnProperty.call(y, 'barycenter') && YOe(g, y)
      }
    })
    var f = Eae(h, r)
    qOe(f, u)
    var d = Aae(f, n)
    if (s && ((d.vs = qr([s, d.vs, l])), t.predecessors(s).length)) {
      var p = t.node(t.predecessors(s)[0]),
        m = t.node(t.predecessors(l)[0])
      Object.prototype.hasOwnProperty.call(d, 'barycenter') || ((d.barycenter = 0), (d.weight = 0)),
        (d.barycenter = (d.barycenter * d.weight + p.order + m.order) / (d.weight + 2)),
        (d.weight += 2)
    }
    return d
  }
  function qOe(t, e) {
    Ae(t, function (r) {
      r.vs = qr(
        r.vs.map(function (n) {
          return e[n] ? e[n].vs : n
        })
      )
    })
  }
  function YOe(t, e) {
    mr(t.barycenter)
      ? ((t.barycenter = e.barycenter), (t.weight = e.weight))
      : ((t.barycenter = (t.barycenter * t.weight + e.barycenter * e.weight) / (t.weight + e.weight)), (t.weight += e.weight))
  }
  var Dae = N(() => {
    'use strict'
    qt()
    kae()
    Sae()
    _ae()
    o(KR, 'sortSubgraph')
    o(qOe, 'expandSubgraphs')
    o(YOe, 'mergeBarycenters')
  })
  function Nae(t) {
    var e = MR(t),
      r = Lae(t, Ho(1, e + 1), 'inEdges'),
      n = Lae(t, Ho(e - 1, -1, -1), 'outEdges'),
      i = bae(t)
    Rae(t, i)
    for (var a = Number.POSITIVE_INFINITY, s, l = 0, u = 0; u < 4; ++l, ++u) {
      XOe(l % 2 ? r : n, l % 4 >= 2), (i = of(t))
      var h = vae(t, i)
      h < a && ((u = 0), (s = eR(i)), (a = h))
    }
    Rae(t, s)
  }
  function Lae(t, e, r) {
    return Je(e, function (n) {
      return gae(t, n, r)
    })
  }
  function XOe(t, e) {
    var r = new sn()
    Ae(t, function (n) {
      var i = n.graph().root,
        a = KR(n, i, r, e)
      Ae(a.vs, function (s, l) {
        n.node(s).order = l
      }),
        pae(n, r, a.vs)
    })
  }
  function Rae(t, e) {
    Ae(e, function (r) {
      Ae(r, function (n, i) {
        t.node(n).order = i
      })
    })
  }
  var Mae = N(() => {
    'use strict'
    qt()
    Wo()
    Lc()
    mae()
    yae()
    xae()
    Tae()
    Dae()
    o(Nae, 'order')
    o(Lae, 'buildLayerGraphs')
    o(XOe, 'sweepLayerGraphs')
    o(Rae, 'assignOrder')
  })
  function Iae(t) {
    var e = KOe(t)
    Ae(t.graph().dummyChains, function (r) {
      for (var n = t.node(r), i = n.edgeObj, a = jOe(t, e, i.v, i.w), s = a.path, l = a.lca, u = 0, h = s[u], f = !0; r !== i.w; ) {
        if (((n = t.node(r)), f)) {
          for (; (h = s[u]) !== l && t.node(h).maxRank < n.rank; ) u++
          h === l && (f = !1)
        }
        if (!f) {
          for (; u < s.length - 1 && t.node((h = s[u + 1])).minRank <= n.rank; ) u++
          h = s[u]
        }
        t.setParent(r, h), (r = t.successors(r)[0])
      }
    })
  }
  function jOe(t, e, r, n) {
    var i = [],
      a = [],
      s = Math.min(e[r].low, e[n].low),
      l = Math.max(e[r].lim, e[n].lim),
      u,
      h
    u = r
    do (u = t.parent(u)), i.push(u)
    while (u && (e[u].low > s || l > e[u].lim))
    for (h = u, u = n; (u = t.parent(u)) !== h; ) a.push(u)
    return { path: i.concat(a.reverse()), lca: h }
  }
  function KOe(t) {
    var e = {},
      r = 0
    function n(i) {
      var a = r
      Ae(t.children(i), n), (e[i] = { low: a, lim: r++ })
    }
    return o(n, 'dfs'), Ae(t.children(), n), e
  }
  var Oae = N(() => {
    'use strict'
    qt()
    o(Iae, 'parentDummyChains')
    o(jOe, 'findPath')
    o(KOe, 'postorder')
  })
  function QOe(t, e) {
    var r = {}
    function n(i, a) {
      var s = 0,
        l = 0,
        u = i.length,
        h = ma(a)
      return (
        Ae(a, function (f, d) {
          var p = JOe(t, f),
            m = p ? t.node(p).order : u
          ;(p || f === h) &&
            (Ae(a.slice(l, d + 1), function (g) {
              Ae(t.predecessors(g), function (y) {
                var v = t.node(y),
                  x = v.order
                ;(x < s || m < x) && !(v.dummy && t.node(g).dummy) && Pae(r, y, g)
              })
            }),
            (l = d + 1),
            (s = m))
        }),
        a
      )
    }
    return o(n, 'visitLayer'), Xr(e, n), r
  }
  function ZOe(t, e) {
    var r = {}
    function n(a, s, l, u, h) {
      var f
      Ae(Ho(s, l), function (d) {
        ;(f = a[d]),
          t.node(f).dummy &&
            Ae(t.predecessors(f), function (p) {
              var m = t.node(p)
              m.dummy && (m.order < u || m.order > h) && Pae(r, p, f)
            })
      })
    }
    o(n, 'scan')
    function i(a, s) {
      var l = -1,
        u,
        h = 0
      return (
        Ae(s, function (f, d) {
          if (t.node(f).dummy === 'border') {
            var p = t.predecessors(f)
            p.length && ((u = t.node(p[0]).order), n(s, h, d, l, u), (h = d), (l = u))
          }
          n(s, h, s.length, u, a.length)
        }),
        s
      )
    }
    return o(i, 'visitLayer'), Xr(e, i), r
  }
  function JOe(t, e) {
    if (t.node(e).dummy)
      return ls(t.predecessors(e), function (r) {
        return t.node(r).dummy
      })
  }
  function Pae(t, e, r) {
    if (e > r) {
      var n = e
      ;(e = r), (r = n)
    }
    var i = t[e]
    i || (t[e] = i = {}), (i[r] = !0)
  }
  function ePe(t, e, r) {
    if (e > r) {
      var n = e
      ;(e = r), (r = n)
    }
    return !!t[e] && Object.prototype.hasOwnProperty.call(t[e], r)
  }
  function tPe(t, e, r, n) {
    var i = {},
      a = {},
      s = {}
    return (
      Ae(e, function (l) {
        Ae(l, function (u, h) {
          ;(i[u] = u), (a[u] = u), (s[u] = h)
        })
      }),
      Ae(e, function (l) {
        var u = -1
        Ae(l, function (h) {
          var f = n(h)
          if (f.length) {
            f = _c(f, function (y) {
              return s[y]
            })
            for (var d = (f.length - 1) / 2, p = Math.floor(d), m = Math.ceil(d); p <= m; ++p) {
              var g = f[p]
              a[h] === h && u < s[g] && !ePe(r, h, g) && ((a[g] = h), (a[h] = i[h] = i[g]), (u = s[g]))
            }
          }
        })
      }),
      { root: i, align: a }
    )
  }
  function rPe(t, e, r, n, i) {
    var a = {},
      s = nPe(t, e, r, i),
      l = i ? 'borderLeft' : 'borderRight'
    function u(d, p) {
      for (var m = s.nodes(), g = m.pop(), y = {}; g; ) y[g] ? d(g) : ((y[g] = !0), m.push(g), (m = m.concat(p(g)))), (g = m.pop())
    }
    o(u, 'iterate')
    function h(d) {
      a[d] = s.inEdges(d).reduce(function (p, m) {
        return Math.max(p, a[m.v] + s.edge(m))
      }, 0)
    }
    o(h, 'pass1')
    function f(d) {
      var p = s.outEdges(d).reduce(function (g, y) {
          return Math.min(g, a[y.w] - s.edge(y))
        }, Number.POSITIVE_INFINITY),
        m = t.node(d)
      p !== Number.POSITIVE_INFINITY && m.borderType !== l && (a[d] = Math.max(a[d], p))
    }
    return (
      o(f, 'pass2'),
      u(h, s.predecessors.bind(s)),
      u(f, s.successors.bind(s)),
      Ae(n, function (d) {
        a[d] = a[r[d]]
      }),
      a
    )
  }
  function nPe(t, e, r, n) {
    var i = new sn(),
      a = t.graph(),
      s = oPe(a.nodesep, a.edgesep, n)
    return (
      Ae(e, function (l) {
        var u
        Ae(l, function (h) {
          var f = r[h]
          if ((i.setNode(f), u)) {
            var d = r[u],
              p = i.edge(d, f)
            i.setEdge(d, f, Math.max(s(t, h, u), p || 0))
          }
          u = h
        })
      }),
      i
    )
  }
  function iPe(t, e) {
    return Kd(br(e), function (r) {
      var n = Number.NEGATIVE_INFINITY,
        i = Number.POSITIVE_INFINITY
      return (
        mR(r, function (a, s) {
          var l = lPe(t, s) / 2
          ;(n = Math.max(a + l, n)), (i = Math.min(a - l, i))
        }),
        n - i
      )
    })
  }
  function aPe(t, e) {
    var r = br(e),
      n = Nl(r),
      i = $s(r)
    Ae(['u', 'd'], function (a) {
      Ae(['l', 'r'], function (s) {
        var l = a + s,
          u = t[l],
          h
        if (u !== e) {
          var f = br(u)
          ;(h = s === 'l' ? n - Nl(f) : i - $s(f)),
            h &&
              (t[l] = jd(u, function (d) {
                return d + h
              }))
        }
      })
    })
  }
  function sPe(t, e) {
    return jd(t.ul, function (r, n) {
      if (e) return t[e.toLowerCase()][n]
      var i = _c(Je(t, n))
      return (i[1] + i[2]) / 2
    })
  }
  function Bae(t) {
    var e = of(t),
      r = Hh(QOe(t, e), ZOe(t, e)),
      n = {},
      i
    Ae(['u', 'd'], function (s) {
      ;(i = s === 'u' ? e : br(e).reverse()),
        Ae(['l', 'r'], function (l) {
          l === 'r' &&
            (i = Je(i, function (d) {
              return br(d).reverse()
            }))
          var u = (s === 'u' ? t.predecessors : t.successors).bind(t),
            h = tPe(t, i, r, u),
            f = rPe(t, i, h.root, h.align, l === 'r')
          l === 'r' &&
            (f = jd(f, function (d) {
              return -d
            })),
            (n[s + l] = f)
        })
    })
    var a = iPe(t, n)
    return aPe(n, a), sPe(n, t.graph().align)
  }
  function oPe(t, e, r) {
    return function (n, i, a) {
      var s = n.node(i),
        l = n.node(a),
        u = 0,
        h
      if (((u += s.width / 2), Object.prototype.hasOwnProperty.call(s, 'labelpos')))
        switch (s.labelpos.toLowerCase()) {
          case 'l':
            h = -s.width / 2
            break
          case 'r':
            h = s.width / 2
            break
        }
      if ((h && (u += r ? h : -h), (h = 0), (u += (s.dummy ? e : t) / 2), (u += (l.dummy ? e : t) / 2), (u += l.width / 2), Object.prototype.hasOwnProperty.call(l, 'labelpos')))
        switch (l.labelpos.toLowerCase()) {
          case 'l':
            h = l.width / 2
            break
          case 'r':
            h = -l.width / 2
            break
        }
      return h && (u += r ? h : -h), (h = 0), u
    }
  }
  function lPe(t, e) {
    return t.node(e).width
  }
  var Fae = N(() => {
    'use strict'
    qt()
    Wo()
    Lc()
    o(QOe, 'findType1Conflicts')
    o(ZOe, 'findType2Conflicts')
    o(JOe, 'findOtherInnerSegmentNode')
    o(Pae, 'addConflict')
    o(ePe, 'hasConflict')
    o(tPe, 'verticalAlignment')
    o(rPe, 'horizontalCompaction')
    o(nPe, 'buildBlockGraph')
    o(iPe, 'findSmallestWidthAlignment')
    o(aPe, 'alignCoordinates')
    o(sPe, 'balance')
    o(Bae, 'positionX')
    o(oPe, 'sep')
    o(lPe, 'width')
  })
  function $ae(t) {
    ;(t = pk(t)),
      cPe(t),
      gR(Bae(t), function (e, r) {
        t.node(r).x = e
      })
  }
  function cPe(t) {
    var e = of(t),
      r = t.graph().ranksep,
      n = 0
    Ae(e, function (i) {
      var a = $s(
        Je(i, function (s) {
          return t.node(s).height
        })
      )
      Ae(i, function (s) {
        t.node(s).y = n + a / 2
      }),
        (n += a + r)
    })
  }
  var zae = N(() => {
    'use strict'
    qt()
    Lc()
    Fae()
    o($ae, 'position')
    o(cPe, 'positionY')
  })
  function G2(t, e) {
    var r = e && e.debugTiming ? Mie : Iie
    r('layout', () => {
      var n = r('  buildLayoutGraph', () => bPe(t))
      r('  runLayout', () => uPe(n, r)), r('  updateInputGraph', () => hPe(t, n))
    })
  }
  function uPe(t, e) {
    e('    makeSpaceForEdgeLabels', () => TPe(t)),
      e('    removeSelfEdges', () => LPe(t)),
      e('    acyclic', () => Cie(t)),
      e('    nestingGraph.run', () => uae(t)),
      e('    rank', () => XR(pk(t))),
      e('    injectEdgeLabelProxies', () => wPe(t)),
      e('    removeEmptyRanks', () => Rie(t)),
      e('    nestingGraph.cleanup', () => fae(t)),
      e('    normalizeRanks', () => Lie(t)),
      e('    assignRankMinMax', () => kPe(t)),
      e('    removeEdgeLabelProxies', () => EPe(t)),
      e('    normalize.run', () => Uie(t)),
      e('    parentDummyChains', () => Iae(t)),
      e('    addBorderSegments', () => Pie(t)),
      e('    order', () => Nae(t)),
      e('    insertSelfEdges', () => RPe(t)),
      e('    adjustCoordinateSystem', () => $ie(t)),
      e('    position', () => $ae(t)),
      e('    positionSelfEdges', () => NPe(t)),
      e('    removeBorderNodes', () => DPe(t)),
      e('    normalize.undo', () => Hie(t)),
      e('    fixupEdgeLabelCoords', () => APe(t)),
      e('    undoCoordinateSystem', () => zie(t)),
      e('    translateGraph', () => SPe(t)),
      e('    assignNodeIntersects', () => CPe(t)),
      e('    reversePoints', () => _Pe(t)),
      e('    acyclic.undo', () => Aie(t))
  }
  function hPe(t, e) {
    Ae(t.nodes(), function (r) {
      var n = t.node(r),
        i = e.node(r)
      n && ((n.x = i.x), (n.y = i.y), e.children(r).length && ((n.width = i.width), (n.height = i.height)))
    }),
      Ae(t.edges(), function (r) {
        var n = t.edge(r),
          i = e.edge(r)
        ;(n.points = i.points), Object.prototype.hasOwnProperty.call(i, 'x') && ((n.x = i.x), (n.y = i.y))
      }),
      (t.graph().width = e.graph().width),
      (t.graph().height = e.graph().height)
  }
  function bPe(t) {
    var e = new sn({ multigraph: !0, compound: !0 }),
      r = ZR(t.graph())
    return (
      e.setGraph(Hh({}, dPe, QR(r, fPe), Qd(r, pPe))),
      Ae(t.nodes(), function (n) {
        var i = ZR(t.node(n))
        e.setNode(n, nf(QR(i, mPe), gPe)), e.setParent(n, t.parent(n))
      }),
      Ae(t.edges(), function (n) {
        var i = ZR(t.edge(n))
        e.setEdge(n, Hh({}, vPe, QR(i, yPe), Qd(i, xPe)))
      }),
      e
    )
  }
  function TPe(t) {
    var e = t.graph()
    ;(e.ranksep /= 2),
      Ae(t.edges(), function (r) {
        var n = t.edge(r)
        ;(n.minlen *= 2), n.labelpos.toLowerCase() !== 'c' && (e.rankdir === 'TB' || e.rankdir === 'BT' ? (n.width += n.labeloffset) : (n.height += n.labeloffset))
      })
  }
  function wPe(t) {
    Ae(t.edges(), function (e) {
      var r = t.edge(e)
      if (r.width && r.height) {
        var n = t.node(e.v),
          i = t.node(e.w),
          a = { rank: (i.rank - n.rank) / 2 + n.rank, e }
        Dc(t, 'edge-proxy', a, '_ep')
      }
    })
  }
  function kPe(t) {
    var e = 0
    Ae(t.nodes(), function (r) {
      var n = t.node(r)
      n.borderTop && ((n.minRank = t.node(n.borderTop).rank), (n.maxRank = t.node(n.borderBottom).rank), (e = $s(e, n.maxRank)))
    }),
      (t.graph().maxRank = e)
  }
  function EPe(t) {
    Ae(t.nodes(), function (e) {
      var r = t.node(e)
      r.dummy === 'edge-proxy' && ((t.edge(r.e).labelRank = r.rank), t.removeNode(e))
    })
  }
  function SPe(t) {
    var e = Number.POSITIVE_INFINITY,
      r = 0,
      n = Number.POSITIVE_INFINITY,
      i = 0,
      a = t.graph(),
      s = a.marginx || 0,
      l = a.marginy || 0
    function u(h) {
      var f = h.x,
        d = h.y,
        p = h.width,
        m = h.height
      ;(e = Math.min(e, f - p / 2)), (r = Math.max(r, f + p / 2)), (n = Math.min(n, d - m / 2)), (i = Math.max(i, d + m / 2))
    }
    o(u, 'getExtremes'),
      Ae(t.nodes(), function (h) {
        u(t.node(h))
      }),
      Ae(t.edges(), function (h) {
        var f = t.edge(h)
        Object.prototype.hasOwnProperty.call(f, 'x') && u(f)
      }),
      (e -= s),
      (n -= l),
      Ae(t.nodes(), function (h) {
        var f = t.node(h)
        ;(f.x -= e), (f.y -= n)
      }),
      Ae(t.edges(), function (h) {
        var f = t.edge(h)
        Ae(f.points, function (d) {
          ;(d.x -= e), (d.y -= n)
        }),
          Object.prototype.hasOwnProperty.call(f, 'x') && (f.x -= e),
          Object.prototype.hasOwnProperty.call(f, 'y') && (f.y -= n)
      }),
      (a.width = r - e + s),
      (a.height = i - n + l)
  }
  function CPe(t) {
    Ae(t.edges(), function (e) {
      var r = t.edge(e),
        n = t.node(e.v),
        i = t.node(e.w),
        a,
        s
      r.points ? ((a = r.points[0]), (s = r.points[r.points.length - 1])) : ((r.points = []), (a = i), (s = n)), r.points.unshift(RR(n, a)), r.points.push(RR(i, s))
    })
  }
  function APe(t) {
    Ae(t.edges(), function (e) {
      var r = t.edge(e)
      if (Object.prototype.hasOwnProperty.call(r, 'x'))
        switch (((r.labelpos === 'l' || r.labelpos === 'r') && (r.width -= r.labeloffset), r.labelpos)) {
          case 'l':
            r.x -= r.width / 2 + r.labeloffset
            break
          case 'r':
            r.x += r.width / 2 + r.labeloffset
            break
        }
    })
  }
  function _Pe(t) {
    Ae(t.edges(), function (e) {
      var r = t.edge(e)
      r.reversed && r.points.reverse()
    })
  }
  function DPe(t) {
    Ae(t.nodes(), function (e) {
      if (t.children(e).length) {
        var r = t.node(e),
          n = t.node(r.borderTop),
          i = t.node(r.borderBottom),
          a = t.node(ma(r.borderLeft)),
          s = t.node(ma(r.borderRight))
        ;(r.width = Math.abs(s.x - a.x)), (r.height = Math.abs(i.y - n.y)), (r.x = a.x + r.width / 2), (r.y = n.y + r.height / 2)
      }
    }),
      Ae(t.nodes(), function (e) {
        t.node(e).dummy === 'border' && t.removeNode(e)
      })
  }
  function LPe(t) {
    Ae(t.edges(), function (e) {
      if (e.v === e.w) {
        var r = t.node(e.v)
        r.selfEdges || (r.selfEdges = []), r.selfEdges.push({ e, label: t.edge(e) }), t.removeEdge(e)
      }
    })
  }
  function RPe(t) {
    var e = of(t)
    Ae(e, function (r) {
      var n = 0
      Ae(r, function (i, a) {
        var s = t.node(i)
        ;(s.order = a + n),
          Ae(s.selfEdges, function (l) {
            Dc(t, 'selfedge', { width: l.label.width, height: l.label.height, rank: s.rank, order: a + ++n, e: l.e, label: l.label }, '_se')
          }),
          delete s.selfEdges
      })
    })
  }
  function NPe(t) {
    Ae(t.nodes(), function (e) {
      var r = t.node(e)
      if (r.dummy === 'selfedge') {
        var n = t.node(r.e.v),
          i = n.x + n.width / 2,
          a = n.y,
          s = r.x - i,
          l = n.height / 2
        t.setEdge(r.e, r.label),
          t.removeNode(e),
          (r.label.points = [
            { x: i + (2 * s) / 3, y: a - l },
            { x: i + (5 * s) / 6, y: a - l },
            { x: i + s, y: a },
            { x: i + (5 * s) / 6, y: a + l },
            { x: i + (2 * s) / 3, y: a + l }
          ]),
          (r.label.x = r.x),
          (r.label.y = r.y)
      }
    })
  }
  function QR(t, e) {
    return jd(Qd(t, e), Number)
  }
  function ZR(t) {
    var e = {}
    return (
      Ae(t, function (r, n) {
        e[n.toLowerCase()] = r
      }),
      e
    )
  }
  var fPe,
    dPe,
    pPe,
    mPe,
    gPe,
    yPe,
    vPe,
    xPe,
    Gae = N(() => {
      'use strict'
      qt()
      Wo()
      Bie()
      Vie()
      LR()
      PR()
      jR()
      dae()
      Mae()
      Oae()
      zae()
      Lc()
      o(G2, 'layout')
      o(uPe, 'runLayout')
      o(hPe, 'updateInputGraph')
      ;(fPe = ['nodesep', 'edgesep', 'ranksep', 'marginx', 'marginy']),
        (dPe = { ranksep: 50, edgesep: 20, nodesep: 50, rankdir: 'tb' }),
        (pPe = ['acyclicer', 'ranker', 'rankdir', 'align']),
        (mPe = ['width', 'height']),
        (gPe = { width: 0, height: 0 }),
        (yPe = ['minlen', 'weight', 'width', 'height', 'labeloffset']),
        (vPe = { minlen: 1, weight: 1, width: 0, height: 0, labeloffset: 10, labelpos: 'r' }),
        (xPe = ['labelpos'])
      o(bPe, 'buildLayoutGraph')
      o(TPe, 'makeSpaceForEdgeLabels')
      o(wPe, 'injectEdgeLabelProxies')
      o(kPe, 'assignRankMinMax')
      o(EPe, 'removeEdgeLabelProxies')
      o(SPe, 'translateGraph')
      o(CPe, 'assignNodeIntersects')
      o(APe, 'fixupEdgeLabelCoords')
      o(_Pe, 'reversePointsForReversedEdges')
      o(DPe, 'removeBorderNodes')
      o(LPe, 'removeSelfEdges')
      o(RPe, 'insertSelfEdges')
      o(NPe, 'positionSelfEdges')
      o(QR, 'selectNumberAttrs')
      o(ZR, 'canonicalize')
    })
  var JR = N(() => {
    'use strict'
    LR()
    Gae()
    PR()
    jR()
  })
  function qo(t) {
    var e = { options: { directed: t.isDirected(), multigraph: t.isMultigraph(), compound: t.isCompound() }, nodes: MPe(t), edges: IPe(t) }
    return mr(t.graph()) || (e.value = an(t.graph())), e
  }
  function MPe(t) {
    return Je(t.nodes(), function (e) {
      var r = t.node(e),
        n = t.parent(e),
        i = { v: e }
      return mr(r) || (i.value = r), mr(n) || (i.parent = n), i
    })
  }
  function IPe(t) {
    return Je(t.edges(), function (e) {
      var r = t.edge(e),
        n = { v: e.v, w: e.w }
      return mr(e.name) || (n.name = e.name), mr(r) || (n.value = r), n
    })
  }
  var eN = N(() => {
    'use strict'
    qt()
    hk()
    o(qo, 'write')
    o(MPe, 'writeNodes')
    o(IPe, 'writeEdges')
  })
  var Tr,
    tp,
    Hae,
    Wae,
    vk,
    OPe,
    qae,
    Yae,
    PPe,
    Ym,
    Uae,
    Xae,
    jae,
    Kae,
    Qae,
    Zae = N(() => {
      'use strict'
      yt()
      Wo()
      eN()
      ;(Tr = new Map()),
        (tp = new Map()),
        (Hae = new Map()),
        (Wae = o(() => {
          tp.clear(), Hae.clear(), Tr.clear()
        }, 'clear')),
        (vk = o((t, e) => {
          let r = tp.get(e) || []
          return X.trace('In isDescendant', e, ' ', t, ' = ', r.includes(t)), r.includes(t)
        }, 'isDescendant')),
        (OPe = o((t, e) => {
          let r = tp.get(e) || []
          return (
            X.info('Descendants of ', e, ' is ', r),
            X.info('Edge is ', t),
            t.v === e || t.w === e ? !1 : r ? r.includes(t.v) || vk(t.v, e) || vk(t.w, e) || r.includes(t.w) : (X.debug('Tilt, ', e, ',not in descendants'), !1)
          )
        }, 'edgeInCluster')),
        (qae = o((t, e, r, n) => {
          X.warn('Copying children of ', t, 'root', n, 'data', e.node(t), n)
          let i = e.children(t) || []
          t !== n && i.push(t),
            X.warn('Copying (nodes) clusterId', t, 'nodes', i),
            i.forEach(a => {
              if (e.children(a).length > 0) qae(a, e, r, n)
              else {
                let s = e.node(a)
                X.info('cp ', a, ' to ', n, ' with parent ', t),
                  r.setNode(a, s),
                  n !== e.parent(a) && (X.warn('Setting parent', a, e.parent(a)), r.setParent(a, e.parent(a))),
                  t !== n && a !== t
                    ? (X.debug('Setting parent', a, t), r.setParent(a, t))
                    : (X.info('In copy ', t, 'root', n, 'data', e.node(t), n), X.debug('Not Setting parent for node=', a, 'cluster!==rootId', t !== n, 'node!==clusterId', a !== t))
                let l = e.edges(a)
                X.debug('Copying Edges', l),
                  l.forEach(u => {
                    X.info('Edge', u)
                    let h = e.edge(u.v, u.w, u.name)
                    X.info('Edge data', h, n)
                    try {
                      OPe(u, n)
                        ? (X.info('Copying as ', u.v, u.w, h, u.name), r.setEdge(u.v, u.w, h, u.name), X.info('newGraph edges ', r.edges(), r.edge(r.edges()[0])))
                        : X.info('Skipping copy of edge ', u.v, '-->', u.w, ' rootId: ', n, ' clusterId:', t)
                    } catch (f) {
                      X.error(f)
                    }
                  })
              }
              X.debug('Removing node', a), e.removeNode(a)
            })
        }, 'copy')),
        (Yae = o((t, e) => {
          let r = e.children(t),
            n = [...r]
          for (let i of r) Hae.set(i, t), (n = [...n, ...Yae(i, e)])
          return n
        }, 'extractDescendants')),
        (PPe = o((t, e, r) => {
          let n = t.edges().filter(u => u.v === e || u.w === e),
            i = t.edges().filter(u => u.v === r || u.w === r),
            a = n.map(u => ({ v: u.v === e ? r : u.v, w: u.w === e ? e : u.w })),
            s = i.map(u => ({ v: u.v, w: u.w }))
          return a.filter(u => s.some(h => u.v === h.v && u.w === h.w))
        }, 'findCommonEdges')),
        (Ym = o((t, e, r) => {
          let n = e.children(t)
          if ((X.trace('Searching children of id ', t, n), n.length < 1)) return t
          let i
          for (let a of n) {
            let s = Ym(a, e, r),
              l = PPe(e, r, s)
            if (s)
              if (l.length > 0) i = s
              else return s
          }
          return i
        }, 'findNonClusterChild')),
        (Uae = o(t => (!Tr.has(t) || !Tr.get(t).externalConnections ? t : Tr.has(t) ? Tr.get(t).id : t), 'getAnchorId')),
        (Xae = o((t, e) => {
          if (!t || e > 10) {
            X.debug('Opting out, no graph ')
            return
          } else X.debug('Opting in, graph ')
          t.nodes().forEach(function (r) {
            t.children(r).length > 0 &&
              (X.warn('Cluster identified', r, ' Replacement id in edges: ', Ym(r, t, r)), tp.set(r, Yae(r, t)), Tr.set(r, { id: Ym(r, t, r), clusterData: t.node(r) }))
          }),
            t.nodes().forEach(function (r) {
              let n = t.children(r),
                i = t.edges()
              n.length > 0
                ? (X.debug('Cluster identified', r, tp),
                  i.forEach(a => {
                    let s = vk(a.v, r),
                      l = vk(a.w, r)
                    s ^ l && (X.warn('Edge: ', a, ' leaves cluster ', r), X.warn('Descendants of XXX ', r, ': ', tp.get(r)), (Tr.get(r).externalConnections = !0))
                  }))
                : X.debug('Not a cluster ', r, tp)
            })
          for (let r of Tr.keys()) {
            let n = Tr.get(r).id,
              i = t.parent(n)
            i !== r && Tr.has(i) && !Tr.get(i).externalConnections && (Tr.get(r).id = i)
          }
          t.edges().forEach(function (r) {
            let n = t.edge(r)
            X.warn('Edge ' + r.v + ' -> ' + r.w + ': ' + JSON.stringify(r)), X.warn('Edge ' + r.v + ' -> ' + r.w + ': ' + JSON.stringify(t.edge(r)))
            let i = r.v,
              a = r.w
            if ((X.warn('Fix XXX', Tr, 'ids:', r.v, r.w, 'Translating: ', Tr.get(r.v), ' --- ', Tr.get(r.w)), Tr.get(r.v) || Tr.get(r.w))) {
              if ((X.warn('Fixing and trying - removing XXX', r.v, r.w, r.name), (i = Uae(r.v)), (a = Uae(r.w)), t.removeEdge(r.v, r.w, r.name), i !== r.v)) {
                let s = t.parent(i)
                ;(Tr.get(s).externalConnections = !0), (n.fromCluster = r.v)
              }
              if (a !== r.w) {
                let s = t.parent(a)
                ;(Tr.get(s).externalConnections = !0), (n.toCluster = r.w)
              }
              X.warn('Fix Replacing with XXX', i, a, r.name), t.setEdge(i, a, n, r.name)
            }
          }),
            X.warn('Adjusted Graph', qo(t)),
            jae(t, 0),
            X.trace(Tr)
        }, 'adjustClustersAndEdges')),
        (jae = o((t, e) => {
          if ((X.warn('extractor - ', e, qo(t), t.children('D')), e > 10)) {
            X.error('Bailing out')
            return
          }
          let r = t.nodes(),
            n = !1
          for (let i of r) {
            let a = t.children(i)
            n = n || a.length > 0
          }
          if (!n) {
            X.debug('Done, no node has children', t.nodes())
            return
          }
          X.debug('Nodes = ', r, e)
          for (let i of r)
            if ((X.debug('Extracting node', i, Tr, Tr.has(i) && !Tr.get(i).externalConnections, !t.parent(i), t.node(i), t.children('D'), ' Depth ', e), !Tr.has(i)))
              X.debug('Not a cluster', i, e)
            else if (!Tr.get(i).externalConnections && t.children(i) && t.children(i).length > 0) {
              X.warn('Cluster without external connections, without a parent and with children', i, e)
              let s = t.graph().rankdir === 'TB' ? 'LR' : 'TB'
              Tr.get(i)?.clusterData?.dir && ((s = Tr.get(i).clusterData.dir), X.warn('Fixing dir', Tr.get(i).clusterData.dir, s))
              let l = new sn({ multigraph: !0, compound: !0 }).setGraph({ rankdir: s, nodesep: 50, ranksep: 50, marginx: 8, marginy: 8 }).setDefaultEdgeLabel(function () {
                return {}
              })
              X.warn('Old graph before copy', qo(t)),
                qae(i, t, l, i),
                t.setNode(i, { clusterNode: !0, id: i, clusterData: Tr.get(i).clusterData, label: Tr.get(i).label, graph: l }),
                X.warn('New graph after copy node: (', i, ')', qo(l)),
                X.debug('Old graph after copy', qo(t))
            } else
              X.warn(
                'Cluster ** ',
                i,
                ' **not meeting the criteria !externalConnections:',
                !Tr.get(i).externalConnections,
                ' no parent: ',
                !t.parent(i),
                ' children ',
                t.children(i) && t.children(i).length > 0,
                t.children('D'),
                e
              ),
                X.debug(Tr)
          ;(r = t.nodes()), X.warn('New list of nodes', r)
          for (let i of r) {
            let a = t.node(i)
            X.warn(' Now next level', i, a), a?.clusterNode && jae(a.graph, e + 1)
          }
        }, 'extractor')),
        (Kae = o((t, e) => {
          if (e.length === 0) return []
          let r = Object.assign([], e)
          return (
            e.forEach(n => {
              let i = t.children(n),
                a = Kae(t, i)
              r = [...r, ...a]
            }),
            r
          )
        }, 'sorter')),
        (Qae = o(t => Kae(t, t.children()), 'sortNodesByHierarchy'))
    })
  var ese = {}
  ur(ese, { render: () => BPe })
  var Jae,
    BPe,
    tse = N(() => {
      'use strict'
      JR()
      eN()
      Wo()
      FL()
      Ft()
      Zae()
      mw()
      aw()
      BL()
      yt()
      R2()
      Gt()
      ;(Jae = o(async (t, e, r, n, i, a) => {
        X.warn('Graph in recursive render:XAX', qo(e), i)
        let s = e.graph().rankdir
        X.trace('Dir in recursive render - dir:', s)
        let l = t.insert('g').attr('class', 'root')
        e.nodes() ? X.info('Recursive render XXX', e.nodes()) : X.info('No nodes found for', e), e.edges().length > 0 && X.info('Recursive edges', e.edge(e.edges()[0]))
        let u = l.insert('g').attr('class', 'clusters'),
          h = l.insert('g').attr('class', 'edgePaths'),
          f = l.insert('g').attr('class', 'edgeLabels'),
          d = l.insert('g').attr('class', 'nodes')
        await Promise.all(
          e.nodes().map(async function (y) {
            let v = e.node(y)
            if (i !== void 0) {
              let x = JSON.parse(JSON.stringify(i.clusterData))
              X.trace(
                `Setting data for parent cluster XXX
 Node.id = `,
                y,
                `
 data=`,
                x.height,
                `
Parent cluster`,
                i.height
              ),
                e.setNode(i.id, x),
                e.parent(y) || (X.trace('Setting parent', y, i.id), e.setParent(y, i.id, x))
            }
            if ((X.info('(Insert) Node XXX' + y + ': ' + JSON.stringify(e.node(y))), v?.clusterNode)) {
              X.info('Cluster identified XBX', y, v.width, e.node(y))
              let { ranksep: x, nodesep: b } = e.graph()
              v.graph.setGraph({ ...v.graph.graph(), ranksep: x + 25, nodesep: b })
              let T = await Jae(d, v.graph, r, n, e.node(y), a),
                S = T.elem
              Ke(v, S), (v.diff = T.diff || 0), X.info('New compound node after recursive render XAX', y, 'width', v.width, 'height', v.height), vee(S, v)
            } else
              e.children(y).length > 0
                ? (X.trace('Cluster - the non recursive path XBX', y, v.id, v, v.width, 'Graph:', e), X.trace(Ym(v.id, e)), Tr.set(v.id, { id: Ym(v.id, e), node: v }))
                : (X.trace('Node - the non recursive path XAX', y, d, e.node(y), s), await Am(d, e.node(y), { config: a, dir: s }))
          })
        ),
          await o(async () => {
            let y = e.edges().map(async function (v) {
              let x = e.edge(v.v, v.w, v.name)
              X.info('Edge ' + v.v + ' -> ' + v.w + ': ' + JSON.stringify(v)),
                X.info('Edge ' + v.v + ' -> ' + v.w + ': ', v, ' ', JSON.stringify(e.edge(v))),
                X.info('Fix', Tr, 'ids:', v.v, v.w, 'Translating: ', Tr.get(v.v), Tr.get(v.w)),
                await uw(f, x)
            })
            await Promise.all(y)
          }, 'processEdges')(),
          X.info('Graph before layout:', JSON.stringify(qo(e))),
          X.info('############################################# XXX'),
          X.info('###                Layout                 ### XXX'),
          X.info('############################################# XXX'),
          G2(e),
          X.info('Graph after layout:', JSON.stringify(qo(e)))
        let m = 0,
          { subGraphTitleTotalMargin: g } = Bu(a)
        return (
          await Promise.all(
            Qae(e).map(async function (y) {
              let v = e.node(y)
              if ((X.info('Position XBX => ' + y + ': (' + v.x, ',' + v.y, ') width: ', v.width, ' height: ', v.height), v?.clusterNode))
                (v.y += g), X.info('A tainted cluster node XBX1', y, v.id, v.width, v.height, v.x, v.y, e.parent(y)), (Tr.get(v.id).node = v), M2(v)
              else if (e.children(y).length > 0) {
                X.info('A pure cluster node XBX1', y, v.id, v.x, v.y, v.width, v.height, e.parent(y)), (v.height += g), e.node(v.parentId)
                let x = v?.padding / 2 || 0,
                  b = v?.labelBBox?.height || 0,
                  T = b - x || 0
                X.debug('OffsetY', T, 'labelHeight', b, 'halfPadding', x), await Cm(u, v), (Tr.get(v.id).node = v)
              } else {
                let x = e.node(v.parentId)
                ;(v.y += g / 2),
                  X.info('A regular node XBX1 - using the padding', v.id, 'parent', v.parentId, v.width, v.height, v.x, v.y, 'offsetY', v.offsetY, 'parent', x, x?.offsetY, v),
                  M2(v)
              }
            })
          ),
          e.edges().forEach(function (y) {
            let v = e.edge(y)
            X.info('Edge ' + y.v + ' -> ' + y.w + ': ' + JSON.stringify(v), v), v.points.forEach(S => (S.y += g / 2))
            let x = e.node(y.v)
            var b = e.node(y.w)
            let T = fw(h, v, Tr, r, x, b, n)
            hw(v, T)
          }),
          e.nodes().forEach(function (y) {
            let v = e.node(y)
            X.info(y, v.type, v.diff), v.isGroup && (m = v.diff)
          }),
          X.warn('Returning from recursive render XAX', l, m),
          { elem: l, diff: m }
        )
      }, 'recursiveRender')),
        (BPe = o(async (t, e) => {
          let r = new sn({ multigraph: !0, compound: !0 })
              .setGraph({
                rankdir: t.direction,
                nodesep: t.config?.nodeSpacing || t.config?.flowchart?.nodeSpacing || t.nodeSpacing,
                ranksep: t.config?.rankSpacing || t.config?.flowchart?.rankSpacing || t.rankSpacing,
                marginx: 8,
                marginy: 8
              })
              .setDefaultEdgeLabel(function () {
                return {}
              }),
            n = e.select('g')
          dw(n, t.markers, t.type, t.diagramId),
            xee(),
            yee(),
            hee(),
            Wae(),
            t.nodes.forEach(a => {
              r.setNode(a.id, { ...a }), a.parentId && r.setParent(a.id, a.parentId)
            }),
            X.debug('Edges:', t.edges),
            t.edges.forEach(a => {
              if (a.start === a.end) {
                let s = a.start,
                  l = s + '---' + s + '---1',
                  u = s + '---' + s + '---2',
                  h = r.node(s)
                r.setNode(l, { domId: l, id: l, parentId: h.parentId, labelStyle: '', label: '', padding: 0, shape: 'labelRect', style: '', width: 10, height: 10 }),
                  r.setParent(l, h.parentId),
                  r.setNode(u, { domId: u, id: u, parentId: h.parentId, labelStyle: '', padding: 0, shape: 'labelRect', label: '', style: '', width: 10, height: 10 }),
                  r.setParent(u, h.parentId)
                let f = structuredClone(a),
                  d = structuredClone(a),
                  p = structuredClone(a)
                ;(f.label = ''),
                  (f.arrowTypeEnd = 'none'),
                  (f.id = s + '-cyclic-special-1'),
                  (d.arrowTypeStart = 'none'),
                  (d.arrowTypeEnd = 'none'),
                  (d.id = s + '-cyclic-special-mid'),
                  (p.label = ''),
                  h.isGroup && ((f.fromCluster = s), (p.toCluster = s)),
                  (p.id = s + '-cyclic-special-2'),
                  (p.arrowTypeStart = 'none'),
                  r.setEdge(s, l, f, s + '-cyclic-special-0'),
                  r.setEdge(l, u, d, s + '-cyclic-special-1'),
                  r.setEdge(u, s, p, s + '-cyc<lic-special-2')
              } else r.setEdge(a.start, a.end, { ...a }, a.id)
            }),
            X.warn('Graph at first:', JSON.stringify(qo(r))),
            Xae(r),
            X.warn('Graph after XAX:', JSON.stringify(qo(r)))
          let i = me()
          await Jae(n, r, t.type, t.diagramId, void 0, i)
        }, 'render'))
    })
  var V2,
    tN,
    FPe,
    Rc,
    uf,
    rp = N(() => {
      'use strict'
      Tee()
      yt()
      ;(V2 = {}),
        (tN = o(t => {
          for (let e of t) V2[e.name] = e
        }, 'registerLayoutLoaders')),
        (FPe = o(() => {
          tN([{ name: 'dagre', loader: o(async () => await Promise.resolve().then(() => (tse(), ese)), 'loader') }])
        }, 'registerDefaultLayoutLoaders'))
      FPe()
      ;(Rc = o(async (t, e) => {
        if (!(t.layoutAlgorithm in V2)) throw new Error(`Unknown layout algorithm: ${t.layoutAlgorithm}`)
        let r = V2[t.layoutAlgorithm]
        return (await r.loader()).render(t, e, bee, { algorithm: r.algorithm })
      }, 'render')),
        (uf = o((t = '', { fallback: e = 'dagre' } = {}) => {
          if (t in V2) return t
          if (e in V2) return X.warn(`Layout algorithm ${t} is not registered. Using ${e} as fallback.`), e
          throw new Error(`Both layout algorithms ${t} and ${e} are not registered.`)
        }, 'getRegisteredLayoutAlgorithm'))
    })
  var Yo,
    $Pe,
    zPe,
    np = N(() => {
      'use strict'
      xi()
      yt()
      ;(Yo = o((t, e, r, n) => {
        t.attr('class', r)
        let { width: i, height: a, x: s, y: l } = $Pe(t, e)
        fn(t, a, i, n)
        let u = zPe(s, l, i, a, e)
        t.attr('viewBox', u), X.debug(`viewBox configured: ${u} with padding: ${e}`)
      }, 'setupViewPortForSVG')),
        ($Pe = o((t, e) => {
          let r = t.node()?.getBBox() || { width: 0, height: 0, x: 0, y: 0 }
          return { width: r.width + e * 2, height: r.height + e * 2, x: r.x, y: r.y }
        }, 'calculateDimensionsWithPadding')),
        (zPe = o((t, e, r, n, i) => `${t - i} ${e - i} ${r} ${n}`, 'createViewBox'))
    })
  var GPe,
    VPe,
    rse,
    nse = N(() => {
      'use strict'
      fr()
      Gt()
      yt()
      Sm()
      rp()
      np()
      er()
      ;(GPe = o(function (t, e) {
        return e.db.getClasses()
      }, 'getClasses')),
        (VPe = o(async function (t, e, r, n) {
          X.info('REF0:'), X.info('Drawing state diagram (v2)', e)
          let { securityLevel: i, flowchart: a, layout: s } = me(),
            l
          i === 'sandbox' && (l = Ge('#i' + e))
          let u = i === 'sandbox' ? l.nodes()[0].contentDocument : document
          X.debug('Before getData: ')
          let h = n.db.getData()
          X.debug('Data: ', h)
          let f = wc(e, i),
            d = n.db.getDirection()
          ;(h.type = n.type),
            (h.layoutAlgorithm = uf(s)),
            h.layoutAlgorithm === 'dagre' &&
              s === 'elk' &&
              X.warn(
                'flowchart-elk was moved to an external package in Mermaid v11. Please refer [release notes](https://github.com/mermaid-js/mermaid/releases/tag/v11.0.0) for more details. This diagram will be rendered using `dagre` layout as a fallback.'
              ),
            (h.direction = d),
            (h.nodeSpacing = a?.nodeSpacing || 50),
            (h.rankSpacing = a?.rankSpacing || 50),
            (h.markers = ['point', 'circle', 'cross']),
            (h.diagramId = e),
            X.debug('REF1:', h),
            await Rc(h, f)
          let p = h.config.flowchart?.diagramPadding ?? 8
          Vt.insertTitle(f, 'flowchartTitleText', a?.titleTopMargin || 0, n.db.getDiagramTitle()), Yo(f, p, 'flowchart', a?.useMaxWidth || !1)
          for (let m of h.nodes) {
            let g = Ge(`#${e} [id="${m.id}"]`)
            if (!g || !m.link) continue
            let y = u.createElementNS('http://www.w3.org/2000/svg', 'a')
            y.setAttributeNS('http://www.w3.org/2000/svg', 'class', m.cssClasses),
              y.setAttributeNS('http://www.w3.org/2000/svg', 'rel', 'noopener'),
              i === 'sandbox'
                ? y.setAttributeNS('http://www.w3.org/2000/svg', 'target', '_top')
                : m.linkTarget && y.setAttributeNS('http://www.w3.org/2000/svg', 'target', m.linkTarget)
            let v = g.insert(function () {
                return y
              }, ':first-child'),
              x = g.select('.label-container')
            x &&
              v.append(function () {
                return x.node()
              })
            let b = g.select('.label')
            b &&
              v.append(function () {
                return b.node()
              })
          }
        }, 'draw')),
        (rse = { getClasses: GPe, draw: VPe })
    })
  var rN,
    nN,
    ise = N(() => {
      'use strict'
      rN = (function () {
        var t = o(function (Hr, et, gt, Kt) {
            for (gt = gt || {}, Kt = Hr.length; Kt--; gt[Hr[Kt]] = et);
            return gt
          }, 'o'),
          e = [1, 4],
          r = [1, 3],
          n = [1, 5],
          i = [1, 8, 9, 10, 11, 27, 34, 36, 38, 44, 60, 84, 85, 86, 87, 88, 89, 102, 105, 106, 109, 111, 114, 115, 116, 121, 122, 123, 124],
          a = [2, 2],
          s = [1, 13],
          l = [1, 14],
          u = [1, 15],
          h = [1, 16],
          f = [1, 23],
          d = [1, 25],
          p = [1, 26],
          m = [1, 27],
          g = [1, 49],
          y = [1, 48],
          v = [1, 29],
          x = [1, 30],
          b = [1, 31],
          T = [1, 32],
          S = [1, 33],
          w = [1, 44],
          E = [1, 46],
          _ = [1, 42],
          C = [1, 47],
          D = [1, 43],
          O = [1, 50],
          R = [1, 45],
          k = [1, 51],
          L = [1, 52],
          A = [1, 34],
          I = [1, 35],
          M = [1, 36],
          P = [1, 37],
          B = [1, 57],
          F = [1, 8, 9, 10, 11, 27, 32, 34, 36, 38, 44, 60, 84, 85, 86, 87, 88, 89, 102, 105, 106, 109, 111, 114, 115, 116, 121, 122, 123, 124],
          z = [1, 61],
          $ = [1, 60],
          U = [1, 62],
          K = [8, 9, 11, 75, 77, 78],
          ee = [1, 78],
          Y = [1, 91],
          ce = [1, 96],
          Z = [1, 95],
          ue = [1, 92],
          Q = [1, 88],
          j = [1, 94],
          ne = [1, 90],
          te = [1, 97],
          he = [1, 93],
          le = [1, 98],
          J = [1, 89],
          Se = [8, 9, 10, 11, 40, 75, 77, 78],
          se = [8, 9, 10, 11, 40, 46, 75, 77, 78],
          ae = [8, 9, 10, 11, 29, 40, 44, 46, 48, 50, 52, 54, 56, 58, 60, 63, 65, 67, 68, 70, 75, 77, 78, 89, 102, 105, 106, 109, 111, 114, 115, 116],
          Oe = [8, 9, 11, 44, 60, 75, 77, 78, 89, 102, 105, 106, 109, 111, 114, 115, 116],
          ye = [44, 60, 89, 102, 105, 106, 109, 111, 114, 115, 116],
          Be = [1, 121],
          He = [1, 122],
          ze = [1, 124],
          Le = [1, 123],
          Ie = [44, 60, 62, 74, 89, 102, 105, 106, 109, 111, 114, 115, 116],
          xe = [1, 133],
          q = [1, 147],
          de = [1, 148],
          ie = [1, 149],
          oe = [1, 150],
          V = [1, 135],
          Te = [1, 137],
          W = [1, 141],
          pe = [1, 142],
          ve = [1, 143],
          Pe = [1, 144],
          _e = [1, 145],
          be = [1, 146],
          Ve = [1, 151],
          De = [1, 152],
          qe = [1, 131],
          at = [1, 132],
          Rt = [1, 139],
          st = [1, 134],
          Ue = [1, 138],
          ct = [1, 136],
          We = [8, 9, 10, 11, 27, 32, 34, 36, 38, 44, 60, 84, 85, 86, 87, 88, 89, 102, 105, 106, 109, 111, 114, 115, 116, 121, 122, 123, 124],
          ot = [1, 154],
          Yt = [1, 156],
          Tt = [8, 9, 11],
          Mt = [8, 9, 10, 11, 14, 44, 60, 89, 105, 106, 109, 111, 114, 115, 116],
          bt = [1, 176],
          ut = [1, 172],
          St = [1, 173],
          ft = [1, 177],
          vt = [1, 174],
          nt = [1, 175],
          pn = [77, 116, 119],
          kt = [8, 9, 10, 11, 12, 14, 27, 29, 32, 44, 60, 75, 84, 85, 86, 87, 88, 89, 90, 105, 109, 111, 114, 115, 116],
          On = [10, 106],
          tn = [31, 49, 51, 53, 55, 57, 62, 64, 66, 67, 69, 71, 116, 117, 118],
          Mr = [1, 247],
          Ir = [1, 245],
          Pn = [1, 249],
          Dt = [1, 243],
          Ce = [1, 244],
          tt = [1, 246],
          Ct = [1, 248],
          gr = [1, 250],
          rn = [1, 268],
          yn = [8, 9, 11, 106],
          Zr = [8, 9, 10, 11, 60, 84, 105, 106, 109, 110, 111, 112],
          Oi = {
            trace: o(function () {}, 'trace'),
            yy: {},
            symbols_: {
              error: 2,
              start: 3,
              graphConfig: 4,
              document: 5,
              line: 6,
              statement: 7,
              SEMI: 8,
              NEWLINE: 9,
              SPACE: 10,
              EOF: 11,
              GRAPH: 12,
              NODIR: 13,
              DIR: 14,
              FirstStmtSeparator: 15,
              ending: 16,
              endToken: 17,
              spaceList: 18,
              spaceListNewline: 19,
              vertexStatement: 20,
              separator: 21,
              styleStatement: 22,
              linkStyleStatement: 23,
              classDefStatement: 24,
              classStatement: 25,
              clickStatement: 26,
              subgraph: 27,
              textNoTags: 28,
              SQS: 29,
              text: 30,
              SQE: 31,
              end: 32,
              direction: 33,
              acc_title: 34,
              acc_title_value: 35,
              acc_descr: 36,
              acc_descr_value: 37,
              acc_descr_multiline_value: 38,
              shapeData: 39,
              SHAPE_DATA: 40,
              link: 41,
              node: 42,
              styledVertex: 43,
              AMP: 44,
              vertex: 45,
              STYLE_SEPARATOR: 46,
              idString: 47,
              DOUBLECIRCLESTART: 48,
              DOUBLECIRCLEEND: 49,
              PS: 50,
              PE: 51,
              '(-': 52,
              '-)': 53,
              STADIUMSTART: 54,
              STADIUMEND: 55,
              SUBROUTINESTART: 56,
              SUBROUTINEEND: 57,
              VERTEX_WITH_PROPS_START: 58,
              'NODE_STRING[field]': 59,
              COLON: 60,
              'NODE_STRING[value]': 61,
              PIPE: 62,
              CYLINDERSTART: 63,
              CYLINDEREND: 64,
              DIAMOND_START: 65,
              DIAMOND_STOP: 66,
              TAGEND: 67,
              TRAPSTART: 68,
              TRAPEND: 69,
              INVTRAPSTART: 70,
              INVTRAPEND: 71,
              linkStatement: 72,
              arrowText: 73,
              TESTSTR: 74,
              START_LINK: 75,
              edgeText: 76,
              LINK: 77,
              LINK_ID: 78,
              edgeTextToken: 79,
              STR: 80,
              MD_STR: 81,
              textToken: 82,
              keywords: 83,
              STYLE: 84,
              LINKSTYLE: 85,
              CLASSDEF: 86,
              CLASS: 87,
              CLICK: 88,
              DOWN: 89,
              UP: 90,
              textNoTagsToken: 91,
              stylesOpt: 92,
              'idString[vertex]': 93,
              'idString[class]': 94,
              CALLBACKNAME: 95,
              CALLBACKARGS: 96,
              HREF: 97,
              LINK_TARGET: 98,
              'STR[link]': 99,
              'STR[tooltip]': 100,
              alphaNum: 101,
              DEFAULT: 102,
              numList: 103,
              INTERPOLATE: 104,
              NUM: 105,
              COMMA: 106,
              style: 107,
              styleComponent: 108,
              NODE_STRING: 109,
              UNIT: 110,
              BRKT: 111,
              PCT: 112,
              idStringToken: 113,
              MINUS: 114,
              MULT: 115,
              UNICODE_TEXT: 116,
              TEXT: 117,
              TAGSTART: 118,
              EDGE_TEXT: 119,
              alphaNumToken: 120,
              direction_tb: 121,
              direction_bt: 122,
              direction_rl: 123,
              direction_lr: 124,
              $accept: 0,
              $end: 1
            },
            terminals_: {
              2: 'error',
              8: 'SEMI',
              9: 'NEWLINE',
              10: 'SPACE',
              11: 'EOF',
              12: 'GRAPH',
              13: 'NODIR',
              14: 'DIR',
              27: 'subgraph',
              29: 'SQS',
              31: 'SQE',
              32: 'end',
              34: 'acc_title',
              35: 'acc_title_value',
              36: 'acc_descr',
              37: 'acc_descr_value',
              38: 'acc_descr_multiline_value',
              40: 'SHAPE_DATA',
              44: 'AMP',
              46: 'STYLE_SEPARATOR',
              48: 'DOUBLECIRCLESTART',
              49: 'DOUBLECIRCLEEND',
              50: 'PS',
              51: 'PE',
              52: '(-',
              53: '-)',
              54: 'STADIUMSTART',
              55: 'STADIUMEND',
              56: 'SUBROUTINESTART',
              57: 'SUBROUTINEEND',
              58: 'VERTEX_WITH_PROPS_START',
              59: 'NODE_STRING[field]',
              60: 'COLON',
              61: 'NODE_STRING[value]',
              62: 'PIPE',
              63: 'CYLINDERSTART',
              64: 'CYLINDEREND',
              65: 'DIAMOND_START',
              66: 'DIAMOND_STOP',
              67: 'TAGEND',
              68: 'TRAPSTART',
              69: 'TRAPEND',
              70: 'INVTRAPSTART',
              71: 'INVTRAPEND',
              74: 'TESTSTR',
              75: 'START_LINK',
              77: 'LINK',
              78: 'LINK_ID',
              80: 'STR',
              81: 'MD_STR',
              84: 'STYLE',
              85: 'LINKSTYLE',
              86: 'CLASSDEF',
              87: 'CLASS',
              88: 'CLICK',
              89: 'DOWN',
              90: 'UP',
              93: 'idString[vertex]',
              94: 'idString[class]',
              95: 'CALLBACKNAME',
              96: 'CALLBACKARGS',
              97: 'HREF',
              98: 'LINK_TARGET',
              99: 'STR[link]',
              100: 'STR[tooltip]',
              102: 'DEFAULT',
              104: 'INTERPOLATE',
              105: 'NUM',
              106: 'COMMA',
              109: 'NODE_STRING',
              110: 'UNIT',
              111: 'BRKT',
              112: 'PCT',
              114: 'MINUS',
              115: 'MULT',
              116: 'UNICODE_TEXT',
              117: 'TEXT',
              118: 'TAGSTART',
              119: 'EDGE_TEXT',
              121: 'direction_tb',
              122: 'direction_bt',
              123: 'direction_rl',
              124: 'direction_lr'
            },
            productions_: [
              0,
              [3, 2],
              [5, 0],
              [5, 2],
              [6, 1],
              [6, 1],
              [6, 1],
              [6, 1],
              [6, 1],
              [4, 2],
              [4, 2],
              [4, 2],
              [4, 3],
              [16, 2],
              [16, 1],
              [17, 1],
              [17, 1],
              [17, 1],
              [15, 1],
              [15, 1],
              [15, 2],
              [19, 2],
              [19, 2],
              [19, 1],
              [19, 1],
              [18, 2],
              [18, 1],
              [7, 2],
              [7, 2],
              [7, 2],
              [7, 2],
              [7, 2],
              [7, 2],
              [7, 9],
              [7, 6],
              [7, 4],
              [7, 1],
              [7, 2],
              [7, 2],
              [7, 1],
              [21, 1],
              [21, 1],
              [21, 1],
              [39, 2],
              [39, 1],
              [20, 4],
              [20, 3],
              [20, 4],
              [20, 2],
              [20, 2],
              [20, 1],
              [42, 1],
              [42, 6],
              [42, 5],
              [43, 1],
              [43, 3],
              [45, 4],
              [45, 4],
              [45, 6],
              [45, 4],
              [45, 4],
              [45, 4],
              [45, 8],
              [45, 4],
              [45, 4],
              [45, 4],
              [45, 6],
              [45, 4],
              [45, 4],
              [45, 4],
              [45, 4],
              [45, 4],
              [45, 1],
              [41, 2],
              [41, 3],
              [41, 3],
              [41, 1],
              [41, 3],
              [41, 4],
              [76, 1],
              [76, 2],
              [76, 1],
              [76, 1],
              [72, 1],
              [72, 2],
              [73, 3],
              [30, 1],
              [30, 2],
              [30, 1],
              [30, 1],
              [83, 1],
              [83, 1],
              [83, 1],
              [83, 1],
              [83, 1],
              [83, 1],
              [83, 1],
              [83, 1],
              [83, 1],
              [83, 1],
              [83, 1],
              [28, 1],
              [28, 2],
              [28, 1],
              [28, 1],
              [24, 5],
              [25, 5],
              [26, 2],
              [26, 4],
              [26, 3],
              [26, 5],
              [26, 3],
              [26, 5],
              [26, 5],
              [26, 7],
              [26, 2],
              [26, 4],
              [26, 2],
              [26, 4],
              [26, 4],
              [26, 6],
              [22, 5],
              [23, 5],
              [23, 5],
              [23, 9],
              [23, 9],
              [23, 7],
              [23, 7],
              [103, 1],
              [103, 3],
              [92, 1],
              [92, 3],
              [107, 1],
              [107, 2],
              [108, 1],
              [108, 1],
              [108, 1],
              [108, 1],
              [108, 1],
              [108, 1],
              [108, 1],
              [108, 1],
              [113, 1],
              [113, 1],
              [113, 1],
              [113, 1],
              [113, 1],
              [113, 1],
              [113, 1],
              [113, 1],
              [113, 1],
              [113, 1],
              [113, 1],
              [82, 1],
              [82, 1],
              [82, 1],
              [82, 1],
              [91, 1],
              [91, 1],
              [91, 1],
              [91, 1],
              [91, 1],
              [91, 1],
              [91, 1],
              [91, 1],
              [91, 1],
              [91, 1],
              [91, 1],
              [79, 1],
              [79, 1],
              [120, 1],
              [120, 1],
              [120, 1],
              [120, 1],
              [120, 1],
              [120, 1],
              [120, 1],
              [120, 1],
              [120, 1],
              [120, 1],
              [120, 1],
              [47, 1],
              [47, 2],
              [101, 1],
              [101, 2],
              [33, 1],
              [33, 1],
              [33, 1],
              [33, 1]
            ],
            performAction: o(function (et, gt, Kt, lt, Cn, ge, Qf) {
              var we = ge.length - 1
              switch (Cn) {
                case 2:
                  this.$ = []
                  break
                case 3:
                  ;(!Array.isArray(ge[we]) || ge[we].length > 0) && ge[we - 1].push(ge[we]), (this.$ = ge[we - 1])
                  break
                case 4:
                case 183:
                  this.$ = ge[we]
                  break
                case 11:
                  lt.setDirection('TB'), (this.$ = 'TB')
                  break
                case 12:
                  lt.setDirection(ge[we - 1]), (this.$ = ge[we - 1])
                  break
                case 27:
                  this.$ = ge[we - 1].nodes
                  break
                case 28:
                case 29:
                case 30:
                case 31:
                case 32:
                  this.$ = []
                  break
                case 33:
                  this.$ = lt.addSubGraph(ge[we - 6], ge[we - 1], ge[we - 4])
                  break
                case 34:
                  this.$ = lt.addSubGraph(ge[we - 3], ge[we - 1], ge[we - 3])
                  break
                case 35:
                  this.$ = lt.addSubGraph(void 0, ge[we - 1], void 0)
                  break
                case 37:
                  ;(this.$ = ge[we].trim()), lt.setAccTitle(this.$)
                  break
                case 38:
                case 39:
                  ;(this.$ = ge[we].trim()), lt.setAccDescription(this.$)
                  break
                case 43:
                  this.$ = ge[we - 1] + ge[we]
                  break
                case 44:
                  this.$ = ge[we]
                  break
                case 45:
                  lt.addVertex(ge[we - 1][ge[we - 1].length - 1], void 0, void 0, void 0, void 0, void 0, void 0, ge[we]),
                    lt.addLink(ge[we - 3].stmt, ge[we - 1], ge[we - 2]),
                    (this.$ = { stmt: ge[we - 1], nodes: ge[we - 1].concat(ge[we - 3].nodes) })
                  break
                case 46:
                  lt.addLink(ge[we - 2].stmt, ge[we], ge[we - 1]), (this.$ = { stmt: ge[we], nodes: ge[we].concat(ge[we - 2].nodes) })
                  break
                case 47:
                  lt.addLink(ge[we - 3].stmt, ge[we - 1], ge[we - 2]), (this.$ = { stmt: ge[we - 1], nodes: ge[we - 1].concat(ge[we - 3].nodes) })
                  break
                case 48:
                  this.$ = { stmt: ge[we - 1], nodes: ge[we - 1] }
                  break
                case 49:
                  lt.addVertex(ge[we - 1][ge[we - 1].length - 1], void 0, void 0, void 0, void 0, void 0, void 0, ge[we]),
                    (this.$ = { stmt: ge[we - 1], nodes: ge[we - 1], shapeData: ge[we] })
                  break
                case 50:
                  this.$ = { stmt: ge[we], nodes: ge[we] }
                  break
                case 51:
                  this.$ = [ge[we]]
                  break
                case 52:
                  lt.addVertex(ge[we - 5][ge[we - 5].length - 1], void 0, void 0, void 0, void 0, void 0, void 0, ge[we - 4]), (this.$ = ge[we - 5].concat(ge[we]))
                  break
                case 53:
                  this.$ = ge[we - 4].concat(ge[we])
                  break
                case 54:
                  this.$ = ge[we]
                  break
                case 55:
                  ;(this.$ = ge[we - 2]), lt.setClass(ge[we - 2], ge[we])
                  break
                case 56:
                  ;(this.$ = ge[we - 3]), lt.addVertex(ge[we - 3], ge[we - 1], 'square')
                  break
                case 57:
                  ;(this.$ = ge[we - 3]), lt.addVertex(ge[we - 3], ge[we - 1], 'doublecircle')
                  break
                case 58:
                  ;(this.$ = ge[we - 5]), lt.addVertex(ge[we - 5], ge[we - 2], 'circle')
                  break
                case 59:
                  ;(this.$ = ge[we - 3]), lt.addVertex(ge[we - 3], ge[we - 1], 'ellipse')
                  break
                case 60:
                  ;(this.$ = ge[we - 3]), lt.addVertex(ge[we - 3], ge[we - 1], 'stadium')
                  break
                case 61:
                  ;(this.$ = ge[we - 3]), lt.addVertex(ge[we - 3], ge[we - 1], 'subroutine')
                  break
                case 62:
                  ;(this.$ = ge[we - 7]), lt.addVertex(ge[we - 7], ge[we - 1], 'rect', void 0, void 0, void 0, Object.fromEntries([[ge[we - 5], ge[we - 3]]]))
                  break
                case 63:
                  ;(this.$ = ge[we - 3]), lt.addVertex(ge[we - 3], ge[we - 1], 'cylinder')
                  break
                case 64:
                  ;(this.$ = ge[we - 3]), lt.addVertex(ge[we - 3], ge[we - 1], 'round')
                  break
                case 65:
                  ;(this.$ = ge[we - 3]), lt.addVertex(ge[we - 3], ge[we - 1], 'diamond')
                  break
                case 66:
                  ;(this.$ = ge[we - 5]), lt.addVertex(ge[we - 5], ge[we - 2], 'hexagon')
                  break
                case 67:
                  ;(this.$ = ge[we - 3]), lt.addVertex(ge[we - 3], ge[we - 1], 'odd')
                  break
                case 68:
                  ;(this.$ = ge[we - 3]), lt.addVertex(ge[we - 3], ge[we - 1], 'trapezoid')
                  break
                case 69:
                  ;(this.$ = ge[we - 3]), lt.addVertex(ge[we - 3], ge[we - 1], 'inv_trapezoid')
                  break
                case 70:
                  ;(this.$ = ge[we - 3]), lt.addVertex(ge[we - 3], ge[we - 1], 'lean_right')
                  break
                case 71:
                  ;(this.$ = ge[we - 3]), lt.addVertex(ge[we - 3], ge[we - 1], 'lean_left')
                  break
                case 72:
                  ;(this.$ = ge[we]), lt.addVertex(ge[we])
                  break
                case 73:
                  ;(ge[we - 1].text = ge[we]), (this.$ = ge[we - 1])
                  break
                case 74:
                case 75:
                  ;(ge[we - 2].text = ge[we - 1]), (this.$ = ge[we - 2])
                  break
                case 76:
                  this.$ = ge[we]
                  break
                case 77:
                  var Ei = lt.destructLink(ge[we], ge[we - 2])
                  this.$ = { type: Ei.type, stroke: Ei.stroke, length: Ei.length, text: ge[we - 1] }
                  break
                case 78:
                  var Ei = lt.destructLink(ge[we], ge[we - 2])
                  this.$ = { type: Ei.type, stroke: Ei.stroke, length: Ei.length, text: ge[we - 1], id: ge[we - 3] }
                  break
                case 79:
                  this.$ = { text: ge[we], type: 'text' }
                  break
                case 80:
                  this.$ = { text: ge[we - 1].text + '' + ge[we], type: ge[we - 1].type }
                  break
                case 81:
                  this.$ = { text: ge[we], type: 'string' }
                  break
                case 82:
                  this.$ = { text: ge[we], type: 'markdown' }
                  break
                case 83:
                  var Ei = lt.destructLink(ge[we])
                  this.$ = { type: Ei.type, stroke: Ei.stroke, length: Ei.length }
                  break
                case 84:
                  var Ei = lt.destructLink(ge[we])
                  this.$ = { type: Ei.type, stroke: Ei.stroke, length: Ei.length, id: ge[we - 1] }
                  break
                case 85:
                  this.$ = ge[we - 1]
                  break
                case 86:
                  this.$ = { text: ge[we], type: 'text' }
                  break
                case 87:
                  this.$ = { text: ge[we - 1].text + '' + ge[we], type: ge[we - 1].type }
                  break
                case 88:
                  this.$ = { text: ge[we], type: 'string' }
                  break
                case 89:
                case 104:
                  this.$ = { text: ge[we], type: 'markdown' }
                  break
                case 101:
                  this.$ = { text: ge[we], type: 'text' }
                  break
                case 102:
                  this.$ = { text: ge[we - 1].text + '' + ge[we], type: ge[we - 1].type }
                  break
                case 103:
                  this.$ = { text: ge[we], type: 'text' }
                  break
                case 105:
                  ;(this.$ = ge[we - 4]), lt.addClass(ge[we - 2], ge[we])
                  break
                case 106:
                  ;(this.$ = ge[we - 4]), lt.setClass(ge[we - 2], ge[we])
                  break
                case 107:
                case 115:
                  ;(this.$ = ge[we - 1]), lt.setClickEvent(ge[we - 1], ge[we])
                  break
                case 108:
                case 116:
                  ;(this.$ = ge[we - 3]), lt.setClickEvent(ge[we - 3], ge[we - 2]), lt.setTooltip(ge[we - 3], ge[we])
                  break
                case 109:
                  ;(this.$ = ge[we - 2]), lt.setClickEvent(ge[we - 2], ge[we - 1], ge[we])
                  break
                case 110:
                  ;(this.$ = ge[we - 4]), lt.setClickEvent(ge[we - 4], ge[we - 3], ge[we - 2]), lt.setTooltip(ge[we - 4], ge[we])
                  break
                case 111:
                  ;(this.$ = ge[we - 2]), lt.setLink(ge[we - 2], ge[we])
                  break
                case 112:
                  ;(this.$ = ge[we - 4]), lt.setLink(ge[we - 4], ge[we - 2]), lt.setTooltip(ge[we - 4], ge[we])
                  break
                case 113:
                  ;(this.$ = ge[we - 4]), lt.setLink(ge[we - 4], ge[we - 2], ge[we])
                  break
                case 114:
                  ;(this.$ = ge[we - 6]), lt.setLink(ge[we - 6], ge[we - 4], ge[we]), lt.setTooltip(ge[we - 6], ge[we - 2])
                  break
                case 117:
                  ;(this.$ = ge[we - 1]), lt.setLink(ge[we - 1], ge[we])
                  break
                case 118:
                  ;(this.$ = ge[we - 3]), lt.setLink(ge[we - 3], ge[we - 2]), lt.setTooltip(ge[we - 3], ge[we])
                  break
                case 119:
                  ;(this.$ = ge[we - 3]), lt.setLink(ge[we - 3], ge[we - 2], ge[we])
                  break
                case 120:
                  ;(this.$ = ge[we - 5]), lt.setLink(ge[we - 5], ge[we - 4], ge[we]), lt.setTooltip(ge[we - 5], ge[we - 2])
                  break
                case 121:
                  ;(this.$ = ge[we - 4]), lt.addVertex(ge[we - 2], void 0, void 0, ge[we])
                  break
                case 122:
                  ;(this.$ = ge[we - 4]), lt.updateLink([ge[we - 2]], ge[we])
                  break
                case 123:
                  ;(this.$ = ge[we - 4]), lt.updateLink(ge[we - 2], ge[we])
                  break
                case 124:
                  ;(this.$ = ge[we - 8]), lt.updateLinkInterpolate([ge[we - 6]], ge[we - 2]), lt.updateLink([ge[we - 6]], ge[we])
                  break
                case 125:
                  ;(this.$ = ge[we - 8]), lt.updateLinkInterpolate(ge[we - 6], ge[we - 2]), lt.updateLink(ge[we - 6], ge[we])
                  break
                case 126:
                  ;(this.$ = ge[we - 6]), lt.updateLinkInterpolate([ge[we - 4]], ge[we])
                  break
                case 127:
                  ;(this.$ = ge[we - 6]), lt.updateLinkInterpolate(ge[we - 4], ge[we])
                  break
                case 128:
                case 130:
                  this.$ = [ge[we]]
                  break
                case 129:
                case 131:
                  ge[we - 2].push(ge[we]), (this.$ = ge[we - 2])
                  break
                case 133:
                  this.$ = ge[we - 1] + ge[we]
                  break
                case 181:
                  this.$ = ge[we]
                  break
                case 182:
                  this.$ = ge[we - 1] + '' + ge[we]
                  break
                case 184:
                  this.$ = ge[we - 1] + '' + ge[we]
                  break
                case 185:
                  this.$ = { stmt: 'dir', value: 'TB' }
                  break
                case 186:
                  this.$ = { stmt: 'dir', value: 'BT' }
                  break
                case 187:
                  this.$ = { stmt: 'dir', value: 'RL' }
                  break
                case 188:
                  this.$ = { stmt: 'dir', value: 'LR' }
                  break
              }
            }, 'anonymous'),
            table: [
              { 3: 1, 4: 2, 9: e, 10: r, 12: n },
              { 1: [3] },
              t(i, a, { 5: 6 }),
              { 4: 7, 9: e, 10: r, 12: n },
              { 4: 8, 9: e, 10: r, 12: n },
              { 13: [1, 9], 14: [1, 10] },
              {
                1: [2, 1],
                6: 11,
                7: 12,
                8: s,
                9: l,
                10: u,
                11: h,
                20: 17,
                22: 18,
                23: 19,
                24: 20,
                25: 21,
                26: 22,
                27: f,
                33: 24,
                34: d,
                36: p,
                38: m,
                42: 28,
                43: 38,
                44: g,
                45: 39,
                47: 40,
                60: y,
                84: v,
                85: x,
                86: b,
                87: T,
                88: S,
                89: w,
                102: E,
                105: _,
                106: C,
                109: D,
                111: O,
                113: 41,
                114: R,
                115: k,
                116: L,
                121: A,
                122: I,
                123: M,
                124: P
              },
              t(i, [2, 9]),
              t(i, [2, 10]),
              t(i, [2, 11]),
              { 8: [1, 54], 9: [1, 55], 10: B, 15: 53, 18: 56 },
              t(F, [2, 3]),
              t(F, [2, 4]),
              t(F, [2, 5]),
              t(F, [2, 6]),
              t(F, [2, 7]),
              t(F, [2, 8]),
              { 8: z, 9: $, 11: U, 21: 58, 41: 59, 72: 63, 75: [1, 64], 77: [1, 66], 78: [1, 65] },
              { 8: z, 9: $, 11: U, 21: 67 },
              { 8: z, 9: $, 11: U, 21: 68 },
              { 8: z, 9: $, 11: U, 21: 69 },
              { 8: z, 9: $, 11: U, 21: 70 },
              { 8: z, 9: $, 11: U, 21: 71 },
              { 8: z, 9: $, 10: [1, 72], 11: U, 21: 73 },
              t(F, [2, 36]),
              { 35: [1, 74] },
              { 37: [1, 75] },
              t(F, [2, 39]),
              t(K, [2, 50], { 18: 76, 39: 77, 10: B, 40: ee }),
              { 10: [1, 79] },
              { 10: [1, 80] },
              { 10: [1, 81] },
              { 10: [1, 82] },
              { 14: Y, 44: ce, 60: Z, 80: [1, 86], 89: ue, 95: [1, 83], 97: [1, 84], 101: 85, 105: Q, 106: j, 109: ne, 111: te, 114: he, 115: le, 116: J, 120: 87 },
              t(F, [2, 185]),
              t(F, [2, 186]),
              t(F, [2, 187]),
              t(F, [2, 188]),
              t(Se, [2, 51]),
              t(Se, [2, 54], { 46: [1, 99] }),
              t(se, [2, 72], {
                113: 112,
                29: [1, 100],
                44: g,
                48: [1, 101],
                50: [1, 102],
                52: [1, 103],
                54: [1, 104],
                56: [1, 105],
                58: [1, 106],
                60: y,
                63: [1, 107],
                65: [1, 108],
                67: [1, 109],
                68: [1, 110],
                70: [1, 111],
                89: w,
                102: E,
                105: _,
                106: C,
                109: D,
                111: O,
                114: R,
                115: k,
                116: L
              }),
              t(ae, [2, 181]),
              t(ae, [2, 142]),
              t(ae, [2, 143]),
              t(ae, [2, 144]),
              t(ae, [2, 145]),
              t(ae, [2, 146]),
              t(ae, [2, 147]),
              t(ae, [2, 148]),
              t(ae, [2, 149]),
              t(ae, [2, 150]),
              t(ae, [2, 151]),
              t(ae, [2, 152]),
              t(i, [2, 12]),
              t(i, [2, 18]),
              t(i, [2, 19]),
              { 9: [1, 113] },
              t(Oe, [2, 26], { 18: 114, 10: B }),
              t(F, [2, 27]),
              { 42: 115, 43: 38, 44: g, 45: 39, 47: 40, 60: y, 89: w, 102: E, 105: _, 106: C, 109: D, 111: O, 113: 41, 114: R, 115: k, 116: L },
              t(F, [2, 40]),
              t(F, [2, 41]),
              t(F, [2, 42]),
              t(ye, [2, 76], { 73: 116, 62: [1, 118], 74: [1, 117] }),
              { 76: 119, 79: 120, 80: Be, 81: He, 116: ze, 119: Le },
              { 75: [1, 125], 77: [1, 126] },
              t(Ie, [2, 83]),
              t(F, [2, 28]),
              t(F, [2, 29]),
              t(F, [2, 30]),
              t(F, [2, 31]),
              t(F, [2, 32]),
              {
                10: xe,
                12: q,
                14: de,
                27: ie,
                28: 127,
                32: oe,
                44: V,
                60: Te,
                75: W,
                80: [1, 129],
                81: [1, 130],
                83: 140,
                84: pe,
                85: ve,
                86: Pe,
                87: _e,
                88: be,
                89: Ve,
                90: De,
                91: 128,
                105: qe,
                109: at,
                111: Rt,
                114: st,
                115: Ue,
                116: ct
              },
              t(We, a, { 5: 153 }),
              t(F, [2, 37]),
              t(F, [2, 38]),
              t(K, [2, 48], { 44: ot }),
              t(K, [2, 49], { 18: 155, 10: B, 40: Yt }),
              t(Se, [2, 44]),
              { 44: g, 47: 157, 60: y, 89: w, 102: E, 105: _, 106: C, 109: D, 111: O, 113: 41, 114: R, 115: k, 116: L },
              { 102: [1, 158], 103: 159, 105: [1, 160] },
              { 44: g, 47: 161, 60: y, 89: w, 102: E, 105: _, 106: C, 109: D, 111: O, 113: 41, 114: R, 115: k, 116: L },
              { 44: g, 47: 162, 60: y, 89: w, 102: E, 105: _, 106: C, 109: D, 111: O, 113: 41, 114: R, 115: k, 116: L },
              t(Tt, [2, 107], { 10: [1, 163], 96: [1, 164] }),
              { 80: [1, 165] },
              t(Tt, [2, 115], { 120: 167, 10: [1, 166], 14: Y, 44: ce, 60: Z, 89: ue, 105: Q, 106: j, 109: ne, 111: te, 114: he, 115: le, 116: J }),
              t(Tt, [2, 117], { 10: [1, 168] }),
              t(Mt, [2, 183]),
              t(Mt, [2, 170]),
              t(Mt, [2, 171]),
              t(Mt, [2, 172]),
              t(Mt, [2, 173]),
              t(Mt, [2, 174]),
              t(Mt, [2, 175]),
              t(Mt, [2, 176]),
              t(Mt, [2, 177]),
              t(Mt, [2, 178]),
              t(Mt, [2, 179]),
              t(Mt, [2, 180]),
              { 44: g, 47: 169, 60: y, 89: w, 102: E, 105: _, 106: C, 109: D, 111: O, 113: 41, 114: R, 115: k, 116: L },
              { 30: 170, 67: bt, 80: ut, 81: St, 82: 171, 116: ft, 117: vt, 118: nt },
              { 30: 178, 67: bt, 80: ut, 81: St, 82: 171, 116: ft, 117: vt, 118: nt },
              { 30: 180, 50: [1, 179], 67: bt, 80: ut, 81: St, 82: 171, 116: ft, 117: vt, 118: nt },
              { 30: 181, 67: bt, 80: ut, 81: St, 82: 171, 116: ft, 117: vt, 118: nt },
              { 30: 182, 67: bt, 80: ut, 81: St, 82: 171, 116: ft, 117: vt, 118: nt },
              { 30: 183, 67: bt, 80: ut, 81: St, 82: 171, 116: ft, 117: vt, 118: nt },
              { 109: [1, 184] },
              { 30: 185, 67: bt, 80: ut, 81: St, 82: 171, 116: ft, 117: vt, 118: nt },
              { 30: 186, 65: [1, 187], 67: bt, 80: ut, 81: St, 82: 171, 116: ft, 117: vt, 118: nt },
              { 30: 188, 67: bt, 80: ut, 81: St, 82: 171, 116: ft, 117: vt, 118: nt },
              { 30: 189, 67: bt, 80: ut, 81: St, 82: 171, 116: ft, 117: vt, 118: nt },
              { 30: 190, 67: bt, 80: ut, 81: St, 82: 171, 116: ft, 117: vt, 118: nt },
              t(ae, [2, 182]),
              t(i, [2, 20]),
              t(Oe, [2, 25]),
              t(K, [2, 46], { 39: 191, 18: 192, 10: B, 40: ee }),
              t(ye, [2, 73], { 10: [1, 193] }),
              { 10: [1, 194] },
              { 30: 195, 67: bt, 80: ut, 81: St, 82: 171, 116: ft, 117: vt, 118: nt },
              { 77: [1, 196], 79: 197, 116: ze, 119: Le },
              t(pn, [2, 79]),
              t(pn, [2, 81]),
              t(pn, [2, 82]),
              t(pn, [2, 168]),
              t(pn, [2, 169]),
              { 76: 198, 79: 120, 80: Be, 81: He, 116: ze, 119: Le },
              t(Ie, [2, 84]),
              {
                8: z,
                9: $,
                10: xe,
                11: U,
                12: q,
                14: de,
                21: 200,
                27: ie,
                29: [1, 199],
                32: oe,
                44: V,
                60: Te,
                75: W,
                83: 140,
                84: pe,
                85: ve,
                86: Pe,
                87: _e,
                88: be,
                89: Ve,
                90: De,
                91: 201,
                105: qe,
                109: at,
                111: Rt,
                114: st,
                115: Ue,
                116: ct
              },
              t(kt, [2, 101]),
              t(kt, [2, 103]),
              t(kt, [2, 104]),
              t(kt, [2, 157]),
              t(kt, [2, 158]),
              t(kt, [2, 159]),
              t(kt, [2, 160]),
              t(kt, [2, 161]),
              t(kt, [2, 162]),
              t(kt, [2, 163]),
              t(kt, [2, 164]),
              t(kt, [2, 165]),
              t(kt, [2, 166]),
              t(kt, [2, 167]),
              t(kt, [2, 90]),
              t(kt, [2, 91]),
              t(kt, [2, 92]),
              t(kt, [2, 93]),
              t(kt, [2, 94]),
              t(kt, [2, 95]),
              t(kt, [2, 96]),
              t(kt, [2, 97]),
              t(kt, [2, 98]),
              t(kt, [2, 99]),
              t(kt, [2, 100]),
              {
                6: 11,
                7: 12,
                8: s,
                9: l,
                10: u,
                11: h,
                20: 17,
                22: 18,
                23: 19,
                24: 20,
                25: 21,
                26: 22,
                27: f,
                32: [1, 202],
                33: 24,
                34: d,
                36: p,
                38: m,
                42: 28,
                43: 38,
                44: g,
                45: 39,
                47: 40,
                60: y,
                84: v,
                85: x,
                86: b,
                87: T,
                88: S,
                89: w,
                102: E,
                105: _,
                106: C,
                109: D,
                111: O,
                113: 41,
                114: R,
                115: k,
                116: L,
                121: A,
                122: I,
                123: M,
                124: P
              },
              { 10: B, 18: 203 },
              { 44: [1, 204] },
              t(Se, [2, 43]),
              { 10: [1, 205], 44: g, 60: y, 89: w, 102: E, 105: _, 106: C, 109: D, 111: O, 113: 112, 114: R, 115: k, 116: L },
              { 10: [1, 206] },
              { 10: [1, 207], 106: [1, 208] },
              t(On, [2, 128]),
              { 10: [1, 209], 44: g, 60: y, 89: w, 102: E, 105: _, 106: C, 109: D, 111: O, 113: 112, 114: R, 115: k, 116: L },
              { 10: [1, 210], 44: g, 60: y, 89: w, 102: E, 105: _, 106: C, 109: D, 111: O, 113: 112, 114: R, 115: k, 116: L },
              { 80: [1, 211] },
              t(Tt, [2, 109], { 10: [1, 212] }),
              t(Tt, [2, 111], { 10: [1, 213] }),
              { 80: [1, 214] },
              t(Mt, [2, 184]),
              { 80: [1, 215], 98: [1, 216] },
              t(Se, [2, 55], { 113: 112, 44: g, 60: y, 89: w, 102: E, 105: _, 106: C, 109: D, 111: O, 114: R, 115: k, 116: L }),
              { 31: [1, 217], 67: bt, 82: 218, 116: ft, 117: vt, 118: nt },
              t(tn, [2, 86]),
              t(tn, [2, 88]),
              t(tn, [2, 89]),
              t(tn, [2, 153]),
              t(tn, [2, 154]),
              t(tn, [2, 155]),
              t(tn, [2, 156]),
              { 49: [1, 219], 67: bt, 82: 218, 116: ft, 117: vt, 118: nt },
              { 30: 220, 67: bt, 80: ut, 81: St, 82: 171, 116: ft, 117: vt, 118: nt },
              { 51: [1, 221], 67: bt, 82: 218, 116: ft, 117: vt, 118: nt },
              { 53: [1, 222], 67: bt, 82: 218, 116: ft, 117: vt, 118: nt },
              { 55: [1, 223], 67: bt, 82: 218, 116: ft, 117: vt, 118: nt },
              { 57: [1, 224], 67: bt, 82: 218, 116: ft, 117: vt, 118: nt },
              { 60: [1, 225] },
              { 64: [1, 226], 67: bt, 82: 218, 116: ft, 117: vt, 118: nt },
              { 66: [1, 227], 67: bt, 82: 218, 116: ft, 117: vt, 118: nt },
              { 30: 228, 67: bt, 80: ut, 81: St, 82: 171, 116: ft, 117: vt, 118: nt },
              { 31: [1, 229], 67: bt, 82: 218, 116: ft, 117: vt, 118: nt },
              { 67: bt, 69: [1, 230], 71: [1, 231], 82: 218, 116: ft, 117: vt, 118: nt },
              { 67: bt, 69: [1, 233], 71: [1, 232], 82: 218, 116: ft, 117: vt, 118: nt },
              t(K, [2, 45], { 18: 155, 10: B, 40: Yt }),
              t(K, [2, 47], { 44: ot }),
              t(ye, [2, 75]),
              t(ye, [2, 74]),
              { 62: [1, 234], 67: bt, 82: 218, 116: ft, 117: vt, 118: nt },
              t(ye, [2, 77]),
              t(pn, [2, 80]),
              { 77: [1, 235], 79: 197, 116: ze, 119: Le },
              { 30: 236, 67: bt, 80: ut, 81: St, 82: 171, 116: ft, 117: vt, 118: nt },
              t(We, a, { 5: 237 }),
              t(kt, [2, 102]),
              t(F, [2, 35]),
              { 43: 238, 44: g, 45: 39, 47: 40, 60: y, 89: w, 102: E, 105: _, 106: C, 109: D, 111: O, 113: 41, 114: R, 115: k, 116: L },
              { 10: B, 18: 239 },
              { 10: Mr, 60: Ir, 84: Pn, 92: 240, 105: Dt, 107: 241, 108: 242, 109: Ce, 110: tt, 111: Ct, 112: gr },
              { 10: Mr, 60: Ir, 84: Pn, 92: 251, 104: [1, 252], 105: Dt, 107: 241, 108: 242, 109: Ce, 110: tt, 111: Ct, 112: gr },
              { 10: Mr, 60: Ir, 84: Pn, 92: 253, 104: [1, 254], 105: Dt, 107: 241, 108: 242, 109: Ce, 110: tt, 111: Ct, 112: gr },
              { 105: [1, 255] },
              { 10: Mr, 60: Ir, 84: Pn, 92: 256, 105: Dt, 107: 241, 108: 242, 109: Ce, 110: tt, 111: Ct, 112: gr },
              { 44: g, 47: 257, 60: y, 89: w, 102: E, 105: _, 106: C, 109: D, 111: O, 113: 41, 114: R, 115: k, 116: L },
              t(Tt, [2, 108]),
              { 80: [1, 258] },
              { 80: [1, 259], 98: [1, 260] },
              t(Tt, [2, 116]),
              t(Tt, [2, 118], { 10: [1, 261] }),
              t(Tt, [2, 119]),
              t(se, [2, 56]),
              t(tn, [2, 87]),
              t(se, [2, 57]),
              { 51: [1, 262], 67: bt, 82: 218, 116: ft, 117: vt, 118: nt },
              t(se, [2, 64]),
              t(se, [2, 59]),
              t(se, [2, 60]),
              t(se, [2, 61]),
              { 109: [1, 263] },
              t(se, [2, 63]),
              t(se, [2, 65]),
              { 66: [1, 264], 67: bt, 82: 218, 116: ft, 117: vt, 118: nt },
              t(se, [2, 67]),
              t(se, [2, 68]),
              t(se, [2, 70]),
              t(se, [2, 69]),
              t(se, [2, 71]),
              t([10, 44, 60, 89, 102, 105, 106, 109, 111, 114, 115, 116], [2, 85]),
              t(ye, [2, 78]),
              { 31: [1, 265], 67: bt, 82: 218, 116: ft, 117: vt, 118: nt },
              {
                6: 11,
                7: 12,
                8: s,
                9: l,
                10: u,
                11: h,
                20: 17,
                22: 18,
                23: 19,
                24: 20,
                25: 21,
                26: 22,
                27: f,
                32: [1, 266],
                33: 24,
                34: d,
                36: p,
                38: m,
                42: 28,
                43: 38,
                44: g,
                45: 39,
                47: 40,
                60: y,
                84: v,
                85: x,
                86: b,
                87: T,
                88: S,
                89: w,
                102: E,
                105: _,
                106: C,
                109: D,
                111: O,
                113: 41,
                114: R,
                115: k,
                116: L,
                121: A,
                122: I,
                123: M,
                124: P
              },
              t(Se, [2, 53]),
              { 43: 267, 44: g, 45: 39, 47: 40, 60: y, 89: w, 102: E, 105: _, 106: C, 109: D, 111: O, 113: 41, 114: R, 115: k, 116: L },
              t(Tt, [2, 121], { 106: rn }),
              t(yn, [2, 130], { 108: 269, 10: Mr, 60: Ir, 84: Pn, 105: Dt, 109: Ce, 110: tt, 111: Ct, 112: gr }),
              t(Zr, [2, 132]),
              t(Zr, [2, 134]),
              t(Zr, [2, 135]),
              t(Zr, [2, 136]),
              t(Zr, [2, 137]),
              t(Zr, [2, 138]),
              t(Zr, [2, 139]),
              t(Zr, [2, 140]),
              t(Zr, [2, 141]),
              t(Tt, [2, 122], { 106: rn }),
              { 10: [1, 270] },
              t(Tt, [2, 123], { 106: rn }),
              { 10: [1, 271] },
              t(On, [2, 129]),
              t(Tt, [2, 105], { 106: rn }),
              t(Tt, [2, 106], { 113: 112, 44: g, 60: y, 89: w, 102: E, 105: _, 106: C, 109: D, 111: O, 114: R, 115: k, 116: L }),
              t(Tt, [2, 110]),
              t(Tt, [2, 112], { 10: [1, 272] }),
              t(Tt, [2, 113]),
              { 98: [1, 273] },
              { 51: [1, 274] },
              { 62: [1, 275] },
              { 66: [1, 276] },
              { 8: z, 9: $, 11: U, 21: 277 },
              t(F, [2, 34]),
              t(Se, [2, 52]),
              { 10: Mr, 60: Ir, 84: Pn, 105: Dt, 107: 278, 108: 242, 109: Ce, 110: tt, 111: Ct, 112: gr },
              t(Zr, [2, 133]),
              { 14: Y, 44: ce, 60: Z, 89: ue, 101: 279, 105: Q, 106: j, 109: ne, 111: te, 114: he, 115: le, 116: J, 120: 87 },
              { 14: Y, 44: ce, 60: Z, 89: ue, 101: 280, 105: Q, 106: j, 109: ne, 111: te, 114: he, 115: le, 116: J, 120: 87 },
              { 98: [1, 281] },
              t(Tt, [2, 120]),
              t(se, [2, 58]),
              { 30: 282, 67: bt, 80: ut, 81: St, 82: 171, 116: ft, 117: vt, 118: nt },
              t(se, [2, 66]),
              t(We, a, { 5: 283 }),
              t(yn, [2, 131], { 108: 269, 10: Mr, 60: Ir, 84: Pn, 105: Dt, 109: Ce, 110: tt, 111: Ct, 112: gr }),
              t(Tt, [2, 126], { 120: 167, 10: [1, 284], 14: Y, 44: ce, 60: Z, 89: ue, 105: Q, 106: j, 109: ne, 111: te, 114: he, 115: le, 116: J }),
              t(Tt, [2, 127], { 120: 167, 10: [1, 285], 14: Y, 44: ce, 60: Z, 89: ue, 105: Q, 106: j, 109: ne, 111: te, 114: he, 115: le, 116: J }),
              t(Tt, [2, 114]),
              { 31: [1, 286], 67: bt, 82: 218, 116: ft, 117: vt, 118: nt },
              {
                6: 11,
                7: 12,
                8: s,
                9: l,
                10: u,
                11: h,
                20: 17,
                22: 18,
                23: 19,
                24: 20,
                25: 21,
                26: 22,
                27: f,
                32: [1, 287],
                33: 24,
                34: d,
                36: p,
                38: m,
                42: 28,
                43: 38,
                44: g,
                45: 39,
                47: 40,
                60: y,
                84: v,
                85: x,
                86: b,
                87: T,
                88: S,
                89: w,
                102: E,
                105: _,
                106: C,
                109: D,
                111: O,
                113: 41,
                114: R,
                115: k,
                116: L,
                121: A,
                122: I,
                123: M,
                124: P
              },
              { 10: Mr, 60: Ir, 84: Pn, 92: 288, 105: Dt, 107: 241, 108: 242, 109: Ce, 110: tt, 111: Ct, 112: gr },
              { 10: Mr, 60: Ir, 84: Pn, 92: 289, 105: Dt, 107: 241, 108: 242, 109: Ce, 110: tt, 111: Ct, 112: gr },
              t(se, [2, 62]),
              t(F, [2, 33]),
              t(Tt, [2, 124], { 106: rn }),
              t(Tt, [2, 125], { 106: rn })
            ],
            defaultActions: {},
            parseError: o(function (et, gt) {
              if (gt.recoverable) this.trace(et)
              else {
                var Kt = new Error(et)
                throw ((Kt.hash = gt), Kt)
              }
            }, 'parseError'),
            parse: o(function (et) {
              var gt = this,
                Kt = [0],
                lt = [],
                Cn = [null],
                ge = [],
                Qf = this.table,
                we = '',
                Ei = 0,
                l$ = 0,
                c$ = 0,
                tbe = 2,
                u$ = 1,
                rbe = ge.slice.call(arguments, 1),
                ji = Object.create(this.lexer),
                Zf = { yy: {} }
              for (var $C in this.yy) Object.prototype.hasOwnProperty.call(this.yy, $C) && (Zf.yy[$C] = this.yy[$C])
              ji.setInput(et, Zf.yy), (Zf.yy.lexer = ji), (Zf.yy.parser = this), typeof ji.yylloc > 'u' && (ji.yylloc = {})
              var zC = ji.yylloc
              ge.push(zC)
              var nbe = ji.options && ji.options.ranges
              typeof Zf.yy.parseError == 'function' ? (this.parseError = Zf.yy.parseError) : (this.parseError = Object.getPrototypeOf(this).parseError)
              function Qit(Xs) {
                ;(Kt.length = Kt.length - 2 * Xs), (Cn.length = Cn.length - Xs), (ge.length = ge.length - Xs)
              }
              o(Qit, 'popStack')
              function ibe() {
                var Xs
                return (Xs = lt.pop() || ji.lex() || u$), typeof Xs != 'number' && (Xs instanceof Array && ((lt = Xs), (Xs = lt.pop())), (Xs = gt.symbols_[Xs] || Xs)), Xs
              }
              o(ibe, 'lex')
              for (var Ka, GC, Jf, wo, Zit, VC, c0 = {}, z4, nu, h$, G4; ; ) {
                if (
                  ((Jf = Kt[Kt.length - 1]),
                  this.defaultActions[Jf] ? (wo = this.defaultActions[Jf]) : ((Ka === null || typeof Ka > 'u') && (Ka = ibe()), (wo = Qf[Jf] && Qf[Jf][Ka])),
                  typeof wo > 'u' || !wo.length || !wo[0])
                ) {
                  var UC = ''
                  G4 = []
                  for (z4 in Qf[Jf]) this.terminals_[z4] && z4 > tbe && G4.push("'" + this.terminals_[z4] + "'")
                  ji.showPosition
                    ? (UC =
                        'Parse error on line ' +
                        (Ei + 1) +
                        `:
` +
                        ji.showPosition() +
                        `
Expecting ` +
                        G4.join(', ') +
                        ", got '" +
                        (this.terminals_[Ka] || Ka) +
                        "'")
                    : (UC = 'Parse error on line ' + (Ei + 1) + ': Unexpected ' + (Ka == u$ ? 'end of input' : "'" + (this.terminals_[Ka] || Ka) + "'")),
                    this.parseError(UC, { text: ji.match, token: this.terminals_[Ka] || Ka, line: ji.yylineno, loc: zC, expected: G4 })
                }
                if (wo[0] instanceof Array && wo.length > 1) throw new Error('Parse Error: multiple actions possible at state: ' + Jf + ', token: ' + Ka)
                switch (wo[0]) {
                  case 1:
                    Kt.push(Ka),
                      Cn.push(ji.yytext),
                      ge.push(ji.yylloc),
                      Kt.push(wo[1]),
                      (Ka = null),
                      GC ? ((Ka = GC), (GC = null)) : ((l$ = ji.yyleng), (we = ji.yytext), (Ei = ji.yylineno), (zC = ji.yylloc), c$ > 0 && c$--)
                    break
                  case 2:
                    if (
                      ((nu = this.productions_[wo[1]][1]),
                      (c0.$ = Cn[Cn.length - nu]),
                      (c0._$ = {
                        first_line: ge[ge.length - (nu || 1)].first_line,
                        last_line: ge[ge.length - 1].last_line,
                        first_column: ge[ge.length - (nu || 1)].first_column,
                        last_column: ge[ge.length - 1].last_column
                      }),
                      nbe && (c0._$.range = [ge[ge.length - (nu || 1)].range[0], ge[ge.length - 1].range[1]]),
                      (VC = this.performAction.apply(c0, [we, l$, Ei, Zf.yy, wo[1], Cn, ge].concat(rbe))),
                      typeof VC < 'u')
                    )
                      return VC
                    nu && ((Kt = Kt.slice(0, -1 * nu * 2)), (Cn = Cn.slice(0, -1 * nu)), (ge = ge.slice(0, -1 * nu))),
                      Kt.push(this.productions_[wo[1]][0]),
                      Cn.push(c0.$),
                      ge.push(c0._$),
                      (h$ = Qf[Kt[Kt.length - 2]][Kt[Kt.length - 1]]),
                      Kt.push(h$)
                    break
                  case 3:
                    return !0
                }
              }
              return !0
            }, 'parse')
          },
          ei = (function () {
            var Hr = {
              EOF: 1,
              parseError: o(function (gt, Kt) {
                if (this.yy.parser) this.yy.parser.parseError(gt, Kt)
                else throw new Error(gt)
              }, 'parseError'),
              setInput: o(function (et, gt) {
                return (
                  (this.yy = gt || this.yy || {}),
                  (this._input = et),
                  (this._more = this._backtrack = this.done = !1),
                  (this.yylineno = this.yyleng = 0),
                  (this.yytext = this.matched = this.match = ''),
                  (this.conditionStack = ['INITIAL']),
                  (this.yylloc = { first_line: 1, first_column: 0, last_line: 1, last_column: 0 }),
                  this.options.ranges && (this.yylloc.range = [0, 0]),
                  (this.offset = 0),
                  this
                )
              }, 'setInput'),
              input: o(function () {
                var et = this._input[0]
                ;(this.yytext += et), this.yyleng++, this.offset++, (this.match += et), (this.matched += et)
                var gt = et.match(/(?:\r\n?|\n).*/g)
                return (
                  gt ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++,
                  this.options.ranges && this.yylloc.range[1]++,
                  (this._input = this._input.slice(1)),
                  et
                )
              }, 'input'),
              unput: o(function (et) {
                var gt = et.length,
                  Kt = et.split(/(?:\r\n?|\n)/g)
                ;(this._input = et + this._input), (this.yytext = this.yytext.substr(0, this.yytext.length - gt)), (this.offset -= gt)
                var lt = this.match.split(/(?:\r\n?|\n)/g)
                ;(this.match = this.match.substr(0, this.match.length - 1)),
                  (this.matched = this.matched.substr(0, this.matched.length - 1)),
                  Kt.length - 1 && (this.yylineno -= Kt.length - 1)
                var Cn = this.yylloc.range
                return (
                  (this.yylloc = {
                    first_line: this.yylloc.first_line,
                    last_line: this.yylineno + 1,
                    first_column: this.yylloc.first_column,
                    last_column: Kt ? (Kt.length === lt.length ? this.yylloc.first_column : 0) + lt[lt.length - Kt.length].length - Kt[0].length : this.yylloc.first_column - gt
                  }),
                  this.options.ranges && (this.yylloc.range = [Cn[0], Cn[0] + this.yyleng - gt]),
                  (this.yyleng = this.yytext.length),
                  this
                )
              }, 'unput'),
              more: o(function () {
                return (this._more = !0), this
              }, 'more'),
              reject: o(function () {
                if (this.options.backtrack_lexer) this._backtrack = !0
                else
                  return this.parseError(
                    'Lexical error on line ' +
                      (this.yylineno + 1) +
                      `. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
` +
                      this.showPosition(),
                    { text: '', token: null, line: this.yylineno }
                  )
                return this
              }, 'reject'),
              less: o(function (et) {
                this.unput(this.match.slice(et))
              }, 'less'),
              pastInput: o(function () {
                var et = this.matched.substr(0, this.matched.length - this.match.length)
                return (et.length > 20 ? '...' : '') + et.substr(-20).replace(/\n/g, '')
              }, 'pastInput'),
              upcomingInput: o(function () {
                var et = this.match
                return et.length < 20 && (et += this._input.substr(0, 20 - et.length)), (et.substr(0, 20) + (et.length > 20 ? '...' : '')).replace(/\n/g, '')
              }, 'upcomingInput'),
              showPosition: o(function () {
                var et = this.pastInput(),
                  gt = new Array(et.length + 1).join('-')
                return (
                  et +
                  this.upcomingInput() +
                  `
` +
                  gt +
                  '^'
                )
              }, 'showPosition'),
              test_match: o(function (et, gt) {
                var Kt, lt, Cn
                if (
                  (this.options.backtrack_lexer &&
                    ((Cn = {
                      yylineno: this.yylineno,
                      yylloc: { first_line: this.yylloc.first_line, last_line: this.last_line, first_column: this.yylloc.first_column, last_column: this.yylloc.last_column },
                      yytext: this.yytext,
                      match: this.match,
                      matches: this.matches,
                      matched: this.matched,
                      yyleng: this.yyleng,
                      offset: this.offset,
                      _more: this._more,
                      _input: this._input,
                      yy: this.yy,
                      conditionStack: this.conditionStack.slice(0),
                      done: this.done
                    }),
                    this.options.ranges && (Cn.yylloc.range = this.yylloc.range.slice(0))),
                  (lt = et[0].match(/(?:\r\n?|\n).*/g)),
                  lt && (this.yylineno += lt.length),
                  (this.yylloc = {
                    first_line: this.yylloc.last_line,
                    last_line: this.yylineno + 1,
                    first_column: this.yylloc.last_column,
                    last_column: lt ? lt[lt.length - 1].length - lt[lt.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + et[0].length
                  }),
                  (this.yytext += et[0]),
                  (this.match += et[0]),
                  (this.matches = et),
                  (this.yyleng = this.yytext.length),
                  this.options.ranges && (this.yylloc.range = [this.offset, (this.offset += this.yyleng)]),
                  (this._more = !1),
                  (this._backtrack = !1),
                  (this._input = this._input.slice(et[0].length)),
                  (this.matched += et[0]),
                  (Kt = this.performAction.call(this, this.yy, this, gt, this.conditionStack[this.conditionStack.length - 1])),
                  this.done && this._input && (this.done = !1),
                  Kt)
                )
                  return Kt
                if (this._backtrack) {
                  for (var ge in Cn) this[ge] = Cn[ge]
                  return !1
                }
                return !1
              }, 'test_match'),
              next: o(function () {
                if (this.done) return this.EOF
                this._input || (this.done = !0)
                var et, gt, Kt, lt
                this._more || ((this.yytext = ''), (this.match = ''))
                for (var Cn = this._currentRules(), ge = 0; ge < Cn.length; ge++)
                  if (((Kt = this._input.match(this.rules[Cn[ge]])), Kt && (!gt || Kt[0].length > gt[0].length))) {
                    if (((gt = Kt), (lt = ge), this.options.backtrack_lexer)) {
                      if (((et = this.test_match(Kt, Cn[ge])), et !== !1)) return et
                      if (this._backtrack) {
                        gt = !1
                        continue
                      } else return !1
                    } else if (!this.options.flex) break
                  }
                return gt
                  ? ((et = this.test_match(gt, Cn[lt])), et !== !1 ? et : !1)
                  : this._input === ''
                    ? this.EOF
                    : this.parseError(
                        'Lexical error on line ' +
                          (this.yylineno + 1) +
                          `. Unrecognized text.
` +
                          this.showPosition(),
                        { text: '', token: null, line: this.yylineno }
                      )
              }, 'next'),
              lex: o(function () {
                var gt = this.next()
                return gt || this.lex()
              }, 'lex'),
              begin: o(function (gt) {
                this.conditionStack.push(gt)
              }, 'begin'),
              popState: o(function () {
                var gt = this.conditionStack.length - 1
                return gt > 0 ? this.conditionStack.pop() : this.conditionStack[0]
              }, 'popState'),
              _currentRules: o(function () {
                return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]
                  ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
                  : this.conditions.INITIAL.rules
              }, '_currentRules'),
              topState: o(function (gt) {
                return (gt = this.conditionStack.length - 1 - Math.abs(gt || 0)), gt >= 0 ? this.conditionStack[gt] : 'INITIAL'
              }, 'topState'),
              pushState: o(function (gt) {
                this.begin(gt)
              }, 'pushState'),
              stateStackSize: o(function () {
                return this.conditionStack.length
              }, 'stateStackSize'),
              options: {},
              performAction: o(function (gt, Kt, lt, Cn) {
                var ge = Cn
                switch (lt) {
                  case 0:
                    return this.begin('acc_title'), 34
                    break
                  case 1:
                    return this.popState(), 'acc_title_value'
                    break
                  case 2:
                    return this.begin('acc_descr'), 36
                    break
                  case 3:
                    return this.popState(), 'acc_descr_value'
                    break
                  case 4:
                    this.begin('acc_descr_multiline')
                    break
                  case 5:
                    this.popState()
                    break
                  case 6:
                    return 'acc_descr_multiline_value'
                  case 7:
                    return this.pushState('shapeData'), (Kt.yytext = ''), 40
                    break
                  case 8:
                    return this.pushState('shapeDataStr'), 40
                    break
                  case 9:
                    return this.popState(), 40
                    break
                  case 10:
                    let Qf = /\n\s*/g
                    return (Kt.yytext = Kt.yytext.replace(Qf, '<br/>')), 40
                    break
                  case 11:
                    return 40
                  case 12:
                    this.popState()
                    break
                  case 13:
                    this.begin('callbackname')
                    break
                  case 14:
                    this.popState()
                    break
                  case 15:
                    this.popState(), this.begin('callbackargs')
                    break
                  case 16:
                    return 95
                  case 17:
                    this.popState()
                    break
                  case 18:
                    return 96
                  case 19:
                    return 'MD_STR'
                  case 20:
                    this.popState()
                    break
                  case 21:
                    this.begin('md_string')
                    break
                  case 22:
                    return 'STR'
                  case 23:
                    this.popState()
                    break
                  case 24:
                    this.pushState('string')
                    break
                  case 25:
                    return 84
                  case 26:
                    return 102
                  case 27:
                    return 85
                  case 28:
                    return 104
                  case 29:
                    return 86
                  case 30:
                    return 87
                  case 31:
                    return 97
                  case 32:
                    this.begin('click')
                    break
                  case 33:
                    this.popState()
                    break
                  case 34:
                    return 88
                  case 35:
                    return gt.lex.firstGraph() && this.begin('dir'), 12
                    break
                  case 36:
                    return gt.lex.firstGraph() && this.begin('dir'), 12
                    break
                  case 37:
                    return gt.lex.firstGraph() && this.begin('dir'), 12
                    break
                  case 38:
                    return 27
                  case 39:
                    return 32
                  case 40:
                    return 98
                  case 41:
                    return 98
                  case 42:
                    return 98
                  case 43:
                    return 98
                  case 44:
                    return this.popState(), 13
                    break
                  case 45:
                    return this.popState(), 14
                    break
                  case 46:
                    return this.popState(), 14
                    break
                  case 47:
                    return this.popState(), 14
                    break
                  case 48:
                    return this.popState(), 14
                    break
                  case 49:
                    return this.popState(), 14
                    break
                  case 50:
                    return this.popState(), 14
                    break
                  case 51:
                    return this.popState(), 14
                    break
                  case 52:
                    return this.popState(), 14
                    break
                  case 53:
                    return this.popState(), 14
                    break
                  case 54:
                    return this.popState(), 14
                    break
                  case 55:
                    return 121
                  case 56:
                    return 122
                  case 57:
                    return 123
                  case 58:
                    return 124
                  case 59:
                    return 78
                  case 60:
                    return 105
                  case 61:
                    return 111
                  case 62:
                    return 46
                  case 63:
                    return 60
                  case 64:
                    return 44
                  case 65:
                    return 8
                  case 66:
                    return 106
                  case 67:
                    return 115
                  case 68:
                    return this.popState(), 77
                    break
                  case 69:
                    return this.pushState('edgeText'), 75
                    break
                  case 70:
                    return 119
                  case 71:
                    return this.popState(), 77
                    break
                  case 72:
                    return this.pushState('thickEdgeText'), 75
                    break
                  case 73:
                    return 119
                  case 74:
                    return this.popState(), 77
                    break
                  case 75:
                    return this.pushState('dottedEdgeText'), 75
                    break
                  case 76:
                    return 119
                  case 77:
                    return 77
                  case 78:
                    return this.popState(), 53
                    break
                  case 79:
                    return 'TEXT'
                  case 80:
                    return this.pushState('ellipseText'), 52
                    break
                  case 81:
                    return this.popState(), 55
                    break
                  case 82:
                    return this.pushState('text'), 54
                    break
                  case 83:
                    return this.popState(), 57
                    break
                  case 84:
                    return this.pushState('text'), 56
                    break
                  case 85:
                    return 58
                  case 86:
                    return this.pushState('text'), 67
                    break
                  case 87:
                    return this.popState(), 64
                    break
                  case 88:
                    return this.pushState('text'), 63
                    break
                  case 89:
                    return this.popState(), 49
                    break
                  case 90:
                    return this.pushState('text'), 48
                    break
                  case 91:
                    return this.popState(), 69
                    break
                  case 92:
                    return this.popState(), 71
                    break
                  case 93:
                    return 117
                  case 94:
                    return this.pushState('trapText'), 68
                    break
                  case 95:
                    return this.pushState('trapText'), 70
                    break
                  case 96:
                    return 118
                  case 97:
                    return 67
                  case 98:
                    return 90
                  case 99:
                    return 'SEP'
                  case 100:
                    return 89
                  case 101:
                    return 115
                  case 102:
                    return 111
                  case 103:
                    return 44
                  case 104:
                    return 109
                  case 105:
                    return 114
                  case 106:
                    return 116
                  case 107:
                    return this.popState(), 62
                    break
                  case 108:
                    return this.pushState('text'), 62
                    break
                  case 109:
                    return this.popState(), 51
                    break
                  case 110:
                    return this.pushState('text'), 50
                    break
                  case 111:
                    return this.popState(), 31
                    break
                  case 112:
                    return this.pushState('text'), 29
                    break
                  case 113:
                    return this.popState(), 66
                    break
                  case 114:
                    return this.pushState('text'), 65
                    break
                  case 115:
                    return 'TEXT'
                  case 116:
                    return 'QUOTE'
                  case 117:
                    return 9
                  case 118:
                    return 10
                  case 119:
                    return 11
                }
              }, 'anonymous'),
              rules: [
                /^(?:accTitle\s*:\s*)/,
                /^(?:(?!\n||)*[^\n]*)/,
                /^(?:accDescr\s*:\s*)/,
                /^(?:(?!\n||)*[^\n]*)/,
                /^(?:accDescr\s*\{\s*)/,
                /^(?:[\}])/,
                /^(?:[^\}]*)/,
                /^(?:@\{)/,
                /^(?:["])/,
                /^(?:["])/,
                /^(?:[^\"]+)/,
                /^(?:[^}^"]+)/,
                /^(?:\})/,
                /^(?:call[\s]+)/,
                /^(?:\([\s]*\))/,
                /^(?:\()/,
                /^(?:[^(]*)/,
                /^(?:\))/,
                /^(?:[^)]*)/,
                /^(?:[^`"]+)/,
                /^(?:[`]["])/,
                /^(?:["][`])/,
                /^(?:[^"]+)/,
                /^(?:["])/,
                /^(?:["])/,
                /^(?:style\b)/,
                /^(?:default\b)/,
                /^(?:linkStyle\b)/,
                /^(?:interpolate\b)/,
                /^(?:classDef\b)/,
                /^(?:class\b)/,
                /^(?:href[\s])/,
                /^(?:click[\s]+)/,
                /^(?:[\s\n])/,
                /^(?:[^\s\n]*)/,
                /^(?:flowchart-elk\b)/,
                /^(?:graph\b)/,
                /^(?:flowchart\b)/,
                /^(?:subgraph\b)/,
                /^(?:end\b\s*)/,
                /^(?:_self\b)/,
                /^(?:_blank\b)/,
                /^(?:_parent\b)/,
                /^(?:_top\b)/,
                /^(?:(\r?\n)*\s*\n)/,
                /^(?:\s*LR\b)/,
                /^(?:\s*RL\b)/,
                /^(?:\s*TB\b)/,
                /^(?:\s*BT\b)/,
                /^(?:\s*TD\b)/,
                /^(?:\s*BR\b)/,
                /^(?:\s*<)/,
                /^(?:\s*>)/,
                /^(?:\s*\^)/,
                /^(?:\s*v\b)/,
                /^(?:.*direction\s+TB[^\n]*)/,
                /^(?:.*direction\s+BT[^\n]*)/,
                /^(?:.*direction\s+RL[^\n]*)/,
                /^(?:.*direction\s+LR[^\n]*)/,
                /^(?:[^\s\"]+@(?=[^\{\"]))/,
                /^(?:[0-9]+)/,
                /^(?:#)/,
                /^(?::::)/,
                /^(?::)/,
                /^(?:&)/,
                /^(?:;)/,
                /^(?:,)/,
                /^(?:\*)/,
                /^(?:\s*[xo<]?--+[-xo>]\s*)/,
                /^(?:\s*[xo<]?--\s*)/,
                /^(?:[^-]|-(?!-)+)/,
                /^(?:\s*[xo<]?==+[=xo>]\s*)/,
                /^(?:\s*[xo<]?==\s*)/,
                /^(?:[^=]|=(?!))/,
                /^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,
                /^(?:\s*[xo<]?-\.\s*)/,
                /^(?:[^\.]|\.(?!))/,
                /^(?:\s*~~[\~]+\s*)/,
                /^(?:[-/\)][\)])/,
                /^(?:[^\(\)\[\]\{\}]|!\)+)/,
                /^(?:\(-)/,
                /^(?:\]\))/,
                /^(?:\(\[)/,
                /^(?:\]\])/,
                /^(?:\[\[)/,
                /^(?:\[\|)/,
                /^(?:>)/,
                /^(?:\)\])/,
                /^(?:\[\()/,
                /^(?:\)\)\))/,
                /^(?:\(\(\()/,
                /^(?:[\\(?=\])][\]])/,
                /^(?:\/(?=\])\])/,
                /^(?:\/(?!\])|\\(?!\])|[^\\\[\]\(\)\{\}\/]+)/,
                /^(?:\[\/)/,
                /^(?:\[\\)/,
                /^(?:<)/,
                /^(?:>)/,
                /^(?:\^)/,
                /^(?:\\\|)/,
                /^(?:v\b)/,
                /^(?:\*)/,
                /^(?:#)/,
                /^(?:&)/,
                /^(?:([A-Za-z0-9!"\#$%&'*+\.`?\\_\/]|-(?=[^\>\-\.])|(?!))+)/,
                /^(?:-)/,
                /^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,
                /^(?:\|)/,
                /^(?:\|)/,
                /^(?:\))/,
                /^(?:\()/,
                /^(?:\])/,
                /^(?:\[)/,
                /^(?:(\}))/,
                /^(?:\{)/,
                /^(?:[^\[\]\(\)\{\}\|\"]+)/,
                /^(?:")/,
                /^(?:(\r?\n)+)/,
                /^(?:\s)/,
                /^(?:$)/
              ],
              conditions: {
                shapeDataEndBracket: { rules: [21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], inclusive: !1 },
                shapeDataStr: { rules: [9, 10, 21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], inclusive: !1 },
                shapeData: { rules: [8, 11, 12, 21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], inclusive: !1 },
                callbackargs: { rules: [17, 18, 21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], inclusive: !1 },
                callbackname: { rules: [14, 15, 16, 21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], inclusive: !1 },
                href: { rules: [21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], inclusive: !1 },
                click: { rules: [21, 24, 33, 34, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], inclusive: !1 },
                dottedEdgeText: { rules: [21, 24, 74, 76, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], inclusive: !1 },
                thickEdgeText: { rules: [21, 24, 71, 73, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], inclusive: !1 },
                edgeText: { rules: [21, 24, 68, 70, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], inclusive: !1 },
                trapText: { rules: [21, 24, 77, 80, 82, 84, 88, 90, 91, 92, 93, 94, 95, 108, 110, 112, 114], inclusive: !1 },
                ellipseText: { rules: [21, 24, 77, 78, 79, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], inclusive: !1 },
                text: { rules: [21, 24, 77, 80, 81, 82, 83, 84, 87, 88, 89, 90, 94, 95, 107, 108, 109, 110, 111, 112, 113, 114, 115], inclusive: !1 },
                vertex: { rules: [21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], inclusive: !1 },
                dir: { rules: [21, 24, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], inclusive: !1 },
                acc_descr_multiline: { rules: [5, 6, 21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], inclusive: !1 },
                acc_descr: { rules: [3, 21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], inclusive: !1 },
                acc_title: { rules: [1, 21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], inclusive: !1 },
                md_string: { rules: [19, 20, 21, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], inclusive: !1 },
                string: { rules: [21, 22, 23, 24, 77, 80, 82, 84, 88, 90, 94, 95, 108, 110, 112, 114], inclusive: !1 },
                INITIAL: {
                  rules: [
                    0, 2, 4, 7, 13, 21, 24, 25, 26, 27, 28, 29, 30, 31, 32, 35, 36, 37, 38, 39, 40, 41, 42, 43, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 71, 72,
                    74, 75, 77, 80, 82, 84, 85, 86, 88, 90, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 110, 112, 114, 116, 117, 118, 119
                  ],
                  inclusive: !0
                }
              }
            }
            return Hr
          })()
        Oi.lexer = ei
        function Sn() {
          this.yy = {}
        }
        return o(Sn, 'Parser'), (Sn.prototype = Oi), (Oi.Parser = Sn), new Sn()
      })()
      rN.parser = rN
      nN = rN
    })
  var ase,
    sse,
    ose = N(() => {
      'use strict'
      ise()
      ase = Object.assign({}, nN)
      ase.parse = t => {
        let e = t.replace(
          /}\s*\n/g,
          `}
`
        )
        return nN.parse(e)
      }
      sse = ase
    })
  var Nc,
    Xm = N(() => {
      'use strict'
      Nc = o(
        () => `
  /* Font Awesome icon styling - consolidated */
  .label-icon {
    display: inline-block;
    height: 1em;
    overflow: visible;
    vertical-align: -0.125em;
  }
  
  .node .label-icon path {
    fill: currentColor;
    stroke: revert;
    stroke-width: revert;
  }
`,
        'getIconStyles'
      )
    })
  var UPe,
    HPe,
    lse,
    cse = N(() => {
      'use strict'
      Ks()
      Xm()
      ;(UPe = o((t, e) => {
        let r = id,
          n = r(t, 'r'),
          i = r(t, 'g'),
          a = r(t, 'b')
        return Qa(n, i, a, e)
      }, 'fade')),
        (HPe = o(
          t => `.label {
    font-family: ${t.fontFamily};
    color: ${t.nodeTextColor || t.textColor};
  }
  .cluster-label text {
    fill: ${t.titleColor};
  }
  .cluster-label span {
    color: ${t.titleColor};
  }
  .cluster-label span p {
    background-color: transparent;
  }

  .label text,span {
    fill: ${t.nodeTextColor || t.textColor};
    color: ${t.nodeTextColor || t.textColor};
  }

  .node rect,
  .node circle,
  .node ellipse,
  .node polygon,
  .node path {
    fill: ${t.mainBkg};
    stroke: ${t.nodeBorder};
    stroke-width: 1px;
  }
  .rough-node .label text , .node .label text, .image-shape .label, .icon-shape .label {
    text-anchor: middle;
  }
  // .flowchart-label .text-outer-tspan {
  //   text-anchor: middle;
  // }
  // .flowchart-label .text-inner-tspan {
  //   text-anchor: start;
  // }

  .node .katex path {
    fill: #000;
    stroke: #000;
    stroke-width: 1px;
  }

  .rough-node .label,.node .label, .image-shape .label, .icon-shape .label {
    text-align: center;
  }
  .node.clickable {
    cursor: pointer;
  }


  .root .anchor path {
    fill: ${t.lineColor} !important;
    stroke-width: 0;
    stroke: ${t.lineColor};
  }

  .arrowheadPath {
    fill: ${t.arrowheadColor};
  }

  .edgePath .path {
    stroke: ${t.lineColor};
    stroke-width: 2.0px;
  }

  .flowchart-link {
    stroke: ${t.lineColor};
    fill: none;
  }

  .edgeLabel {
    background-color: ${t.edgeLabelBackground};
    p {
      background-color: ${t.edgeLabelBackground};
    }
    rect {
      opacity: 0.5;
      background-color: ${t.edgeLabelBackground};
      fill: ${t.edgeLabelBackground};
    }
    text-align: center;
  }

  /* For html labels only */
  .labelBkg {
    background-color: ${UPe(t.edgeLabelBackground, 0.5)};
    // background-color:
  }

  .cluster rect {
    fill: ${t.clusterBkg};
    stroke: ${t.clusterBorder};
    stroke-width: 1px;
  }

  .cluster text {
    fill: ${t.titleColor};
  }

  .cluster span {
    color: ${t.titleColor};
  }
  /* .cluster div {
    color: ${t.titleColor};
  } */

  div.mermaidTooltip {
    position: absolute;
    text-align: center;
    max-width: 200px;
    padding: 2px;
    font-family: ${t.fontFamily};
    font-size: 12px;
    background: ${t.tertiaryColor};
    border: 1px solid ${t.border2};
    border-radius: 2px;
    pointer-events: none;
    z-index: 100;
  }

  .flowchartTitleText {
    text-anchor: middle;
    font-size: 18px;
    fill: ${t.textColor};
  }

  rect.text {
    fill: none;
    stroke-width: 0;
  }

  .icon-shape, .image-shape {
    background-color: ${t.edgeLabelBackground};
    p {
      background-color: ${t.edgeLabelBackground};
      padding: 2px;
    }
    rect {
      opacity: 0.5;
      background-color: ${t.edgeLabelBackground};
      fill: ${t.edgeLabelBackground};
    }
    text-align: center;
  }
  ${Nc()}
`,
          'getStyles'
        )),
        (lse = HPe)
    })
  var xk = {}
  ur(xk, { diagram: () => WPe })
  var WPe,
    bk = N(() => {
      'use strict'
      Gt()
      lee()
      nse()
      ose()
      cse()
      WPe = {
        parser: sse,
        get db() {
          return new iw()
        },
        renderer: rse,
        styles: lse,
        init: o(t => {
          t.flowchart || (t.flowchart = {}),
            t.layout && nv({ layout: t.layout }),
            (t.flowchart.arrowMarkerAbsolute = t.arrowMarkerAbsolute),
            nv({ flowchart: { arrowMarkerAbsolute: t.arrowMarkerAbsolute } })
        }, 'init')
      }
    })
  var iN,
    pse,
    mse = N(() => {
      'use strict'
      iN = (function () {
        var t = o(function (te, he, le, J) {
            for (le = le || {}, J = te.length; J--; le[te[J]] = he);
            return le
          }, 'o'),
          e = [6, 8, 10, 22, 24, 26, 28, 33, 34, 35, 36, 37, 40, 43, 44, 50],
          r = [1, 10],
          n = [1, 11],
          i = [1, 12],
          a = [1, 13],
          s = [1, 20],
          l = [1, 21],
          u = [1, 22],
          h = [1, 23],
          f = [1, 24],
          d = [1, 19],
          p = [1, 25],
          m = [1, 26],
          g = [1, 18],
          y = [1, 33],
          v = [1, 34],
          x = [1, 35],
          b = [1, 36],
          T = [1, 37],
          S = [6, 8, 10, 13, 15, 17, 20, 21, 22, 24, 26, 28, 33, 34, 35, 36, 37, 40, 43, 44, 50, 63, 64, 65, 66, 67],
          w = [1, 42],
          E = [1, 43],
          _ = [1, 52],
          C = [40, 50, 68, 69],
          D = [1, 63],
          O = [1, 61],
          R = [1, 58],
          k = [1, 62],
          L = [1, 64],
          A = [6, 8, 10, 13, 17, 22, 24, 26, 28, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 48, 49, 50, 63, 64, 65, 66, 67],
          I = [63, 64, 65, 66, 67],
          M = [1, 81],
          P = [1, 80],
          B = [1, 78],
          F = [1, 79],
          z = [6, 10, 42, 47],
          $ = [6, 10, 13, 41, 42, 47, 48, 49],
          U = [1, 89],
          K = [1, 88],
          ee = [1, 87],
          Y = [19, 56],
          ce = [1, 98],
          Z = [1, 97],
          ue = [19, 56, 58, 60],
          Q = {
            trace: o(function () {}, 'trace'),
            yy: {},
            symbols_: {
              error: 2,
              start: 3,
              ER_DIAGRAM: 4,
              document: 5,
              EOF: 6,
              line: 7,
              SPACE: 8,
              statement: 9,
              NEWLINE: 10,
              entityName: 11,
              relSpec: 12,
              COLON: 13,
              role: 14,
              STYLE_SEPARATOR: 15,
              idList: 16,
              BLOCK_START: 17,
              attributes: 18,
              BLOCK_STOP: 19,
              SQS: 20,
              SQE: 21,
              title: 22,
              title_value: 23,
              acc_title: 24,
              acc_title_value: 25,
              acc_descr: 26,
              acc_descr_value: 27,
              acc_descr_multiline_value: 28,
              direction: 29,
              classDefStatement: 30,
              classStatement: 31,
              styleStatement: 32,
              direction_tb: 33,
              direction_bt: 34,
              direction_rl: 35,
              direction_lr: 36,
              CLASSDEF: 37,
              stylesOpt: 38,
              separator: 39,
              UNICODE_TEXT: 40,
              STYLE_TEXT: 41,
              COMMA: 42,
              CLASS: 43,
              STYLE: 44,
              style: 45,
              styleComponent: 46,
              SEMI: 47,
              NUM: 48,
              BRKT: 49,
              ENTITY_NAME: 50,
              attribute: 51,
              attributeType: 52,
              attributeName: 53,
              attributeKeyTypeList: 54,
              attributeComment: 55,
              ATTRIBUTE_WORD: 56,
              attributeKeyType: 57,
              ',': 58,
              ATTRIBUTE_KEY: 59,
              COMMENT: 60,
              cardinality: 61,
              relType: 62,
              ZERO_OR_ONE: 63,
              ZERO_OR_MORE: 64,
              ONE_OR_MORE: 65,
              ONLY_ONE: 66,
              MD_PARENT: 67,
              NON_IDENTIFYING: 68,
              IDENTIFYING: 69,
              WORD: 70,
              $accept: 0,
              $end: 1
            },
            terminals_: {
              2: 'error',
              4: 'ER_DIAGRAM',
              6: 'EOF',
              8: 'SPACE',
              10: 'NEWLINE',
              13: 'COLON',
              15: 'STYLE_SEPARATOR',
              17: 'BLOCK_START',
              19: 'BLOCK_STOP',
              20: 'SQS',
              21: 'SQE',
              22: 'title',
              23: 'title_value',
              24: 'acc_title',
              25: 'acc_title_value',
              26: 'acc_descr',
              27: 'acc_descr_value',
              28: 'acc_descr_multiline_value',
              33: 'direction_tb',
              34: 'direction_bt',
              35: 'direction_rl',
              36: 'direction_lr',
              37: 'CLASSDEF',
              40: 'UNICODE_TEXT',
              41: 'STYLE_TEXT',
              42: 'COMMA',
              43: 'CLASS',
              44: 'STYLE',
              47: 'SEMI',
              48: 'NUM',
              49: 'BRKT',
              50: 'ENTITY_NAME',
              56: 'ATTRIBUTE_WORD',
              58: ',',
              59: 'ATTRIBUTE_KEY',
              60: 'COMMENT',
              63: 'ZERO_OR_ONE',
              64: 'ZERO_OR_MORE',
              65: 'ONE_OR_MORE',
              66: 'ONLY_ONE',
              67: 'MD_PARENT',
              68: 'NON_IDENTIFYING',
              69: 'IDENTIFYING',
              70: 'WORD'
            },
            productions_: [
              0,
              [3, 3],
              [5, 0],
              [5, 2],
              [7, 2],
              [7, 1],
              [7, 1],
              [7, 1],
              [9, 5],
              [9, 9],
              [9, 7],
              [9, 7],
              [9, 4],
              [9, 6],
              [9, 3],
              [9, 5],
              [9, 1],
              [9, 3],
              [9, 7],
              [9, 9],
              [9, 6],
              [9, 8],
              [9, 4],
              [9, 6],
              [9, 2],
              [9, 2],
              [9, 2],
              [9, 1],
              [9, 1],
              [9, 1],
              [9, 1],
              [9, 1],
              [29, 1],
              [29, 1],
              [29, 1],
              [29, 1],
              [30, 4],
              [16, 1],
              [16, 1],
              [16, 3],
              [16, 3],
              [31, 3],
              [32, 4],
              [38, 1],
              [38, 3],
              [45, 1],
              [45, 2],
              [39, 1],
              [39, 1],
              [39, 1],
              [46, 1],
              [46, 1],
              [46, 1],
              [46, 1],
              [11, 1],
              [11, 1],
              [18, 1],
              [18, 2],
              [51, 2],
              [51, 3],
              [51, 3],
              [51, 4],
              [52, 1],
              [53, 1],
              [54, 1],
              [54, 3],
              [57, 1],
              [55, 1],
              [12, 3],
              [61, 1],
              [61, 1],
              [61, 1],
              [61, 1],
              [61, 1],
              [62, 1],
              [62, 1],
              [14, 1],
              [14, 1],
              [14, 1]
            ],
            performAction: o(function (he, le, J, Se, se, ae, Oe) {
              var ye = ae.length - 1
              switch (se) {
                case 1:
                  break
                case 2:
                  this.$ = []
                  break
                case 3:
                  ae[ye - 1].push(ae[ye]), (this.$ = ae[ye - 1])
                  break
                case 4:
                case 5:
                  this.$ = ae[ye]
                  break
                case 6:
                case 7:
                  this.$ = []
                  break
                case 8:
                  Se.addEntity(ae[ye - 4]), Se.addEntity(ae[ye - 2]), Se.addRelationship(ae[ye - 4], ae[ye], ae[ye - 2], ae[ye - 3])
                  break
                case 9:
                  Se.addEntity(ae[ye - 8]),
                    Se.addEntity(ae[ye - 4]),
                    Se.addRelationship(ae[ye - 8], ae[ye], ae[ye - 4], ae[ye - 5]),
                    Se.setClass([ae[ye - 8]], ae[ye - 6]),
                    Se.setClass([ae[ye - 4]], ae[ye - 2])
                  break
                case 10:
                  Se.addEntity(ae[ye - 6]), Se.addEntity(ae[ye - 2]), Se.addRelationship(ae[ye - 6], ae[ye], ae[ye - 2], ae[ye - 3]), Se.setClass([ae[ye - 6]], ae[ye - 4])
                  break
                case 11:
                  Se.addEntity(ae[ye - 6]), Se.addEntity(ae[ye - 4]), Se.addRelationship(ae[ye - 6], ae[ye], ae[ye - 4], ae[ye - 5]), Se.setClass([ae[ye - 4]], ae[ye - 2])
                  break
                case 12:
                  Se.addEntity(ae[ye - 3]), Se.addAttributes(ae[ye - 3], ae[ye - 1])
                  break
                case 13:
                  Se.addEntity(ae[ye - 5]), Se.addAttributes(ae[ye - 5], ae[ye - 1]), Se.setClass([ae[ye - 5]], ae[ye - 3])
                  break
                case 14:
                  Se.addEntity(ae[ye - 2])
                  break
                case 15:
                  Se.addEntity(ae[ye - 4]), Se.setClass([ae[ye - 4]], ae[ye - 2])
                  break
                case 16:
                  Se.addEntity(ae[ye])
                  break
                case 17:
                  Se.addEntity(ae[ye - 2]), Se.setClass([ae[ye - 2]], ae[ye])
                  break
                case 18:
                  Se.addEntity(ae[ye - 6], ae[ye - 4]), Se.addAttributes(ae[ye - 6], ae[ye - 1])
                  break
                case 19:
                  Se.addEntity(ae[ye - 8], ae[ye - 6]), Se.addAttributes(ae[ye - 8], ae[ye - 1]), Se.setClass([ae[ye - 8]], ae[ye - 3])
                  break
                case 20:
                  Se.addEntity(ae[ye - 5], ae[ye - 3])
                  break
                case 21:
                  Se.addEntity(ae[ye - 7], ae[ye - 5]), Se.setClass([ae[ye - 7]], ae[ye - 2])
                  break
                case 22:
                  Se.addEntity(ae[ye - 3], ae[ye - 1])
                  break
                case 23:
                  Se.addEntity(ae[ye - 5], ae[ye - 3]), Se.setClass([ae[ye - 5]], ae[ye])
                  break
                case 24:
                case 25:
                  ;(this.$ = ae[ye].trim()), Se.setAccTitle(this.$)
                  break
                case 26:
                case 27:
                  ;(this.$ = ae[ye].trim()), Se.setAccDescription(this.$)
                  break
                case 32:
                  Se.setDirection('TB')
                  break
                case 33:
                  Se.setDirection('BT')
                  break
                case 34:
                  Se.setDirection('RL')
                  break
                case 35:
                  Se.setDirection('LR')
                  break
                case 36:
                  ;(this.$ = ae[ye - 3]), Se.addClass(ae[ye - 2], ae[ye - 1])
                  break
                case 37:
                case 38:
                case 56:
                case 64:
                  this.$ = [ae[ye]]
                  break
                case 39:
                case 40:
                  this.$ = ae[ye - 2].concat([ae[ye]])
                  break
                case 41:
                  ;(this.$ = ae[ye - 2]), Se.setClass(ae[ye - 1], ae[ye])
                  break
                case 42:
                  ;(this.$ = ae[ye - 3]), Se.addCssStyles(ae[ye - 2], ae[ye - 1])
                  break
                case 43:
                  this.$ = [ae[ye]]
                  break
                case 44:
                  ae[ye - 2].push(ae[ye]), (this.$ = ae[ye - 2])
                  break
                case 46:
                  this.$ = ae[ye - 1] + ae[ye]
                  break
                case 54:
                case 76:
                case 77:
                  this.$ = ae[ye].replace(/"/g, '')
                  break
                case 55:
                case 78:
                  this.$ = ae[ye]
                  break
                case 57:
                  ae[ye].push(ae[ye - 1]), (this.$ = ae[ye])
                  break
                case 58:
                  this.$ = { type: ae[ye - 1], name: ae[ye] }
                  break
                case 59:
                  this.$ = { type: ae[ye - 2], name: ae[ye - 1], keys: ae[ye] }
                  break
                case 60:
                  this.$ = { type: ae[ye - 2], name: ae[ye - 1], comment: ae[ye] }
                  break
                case 61:
                  this.$ = { type: ae[ye - 3], name: ae[ye - 2], keys: ae[ye - 1], comment: ae[ye] }
                  break
                case 62:
                case 63:
                case 66:
                  this.$ = ae[ye]
                  break
                case 65:
                  ae[ye - 2].push(ae[ye]), (this.$ = ae[ye - 2])
                  break
                case 67:
                  this.$ = ae[ye].replace(/"/g, '')
                  break
                case 68:
                  this.$ = { cardA: ae[ye], relType: ae[ye - 1], cardB: ae[ye - 2] }
                  break
                case 69:
                  this.$ = Se.Cardinality.ZERO_OR_ONE
                  break
                case 70:
                  this.$ = Se.Cardinality.ZERO_OR_MORE
                  break
                case 71:
                  this.$ = Se.Cardinality.ONE_OR_MORE
                  break
                case 72:
                  this.$ = Se.Cardinality.ONLY_ONE
                  break
                case 73:
                  this.$ = Se.Cardinality.MD_PARENT
                  break
                case 74:
                  this.$ = Se.Identification.NON_IDENTIFYING
                  break
                case 75:
                  this.$ = Se.Identification.IDENTIFYING
                  break
              }
            }, 'anonymous'),
            table: [
              { 3: 1, 4: [1, 2] },
              { 1: [3] },
              t(e, [2, 2], { 5: 3 }),
              {
                6: [1, 4],
                7: 5,
                8: [1, 6],
                9: 7,
                10: [1, 8],
                11: 9,
                22: r,
                24: n,
                26: i,
                28: a,
                29: 14,
                30: 15,
                31: 16,
                32: 17,
                33: s,
                34: l,
                35: u,
                36: h,
                37: f,
                40: d,
                43: p,
                44: m,
                50: g
              },
              t(e, [2, 7], { 1: [2, 1] }),
              t(e, [2, 3]),
              { 9: 27, 11: 9, 22: r, 24: n, 26: i, 28: a, 29: 14, 30: 15, 31: 16, 32: 17, 33: s, 34: l, 35: u, 36: h, 37: f, 40: d, 43: p, 44: m, 50: g },
              t(e, [2, 5]),
              t(e, [2, 6]),
              t(e, [2, 16], { 12: 28, 61: 32, 15: [1, 29], 17: [1, 30], 20: [1, 31], 63: y, 64: v, 65: x, 66: b, 67: T }),
              { 23: [1, 38] },
              { 25: [1, 39] },
              { 27: [1, 40] },
              t(e, [2, 27]),
              t(e, [2, 28]),
              t(e, [2, 29]),
              t(e, [2, 30]),
              t(e, [2, 31]),
              t(S, [2, 54]),
              t(S, [2, 55]),
              t(e, [2, 32]),
              t(e, [2, 33]),
              t(e, [2, 34]),
              t(e, [2, 35]),
              { 16: 41, 40: w, 41: E },
              { 16: 44, 40: w, 41: E },
              { 16: 45, 40: w, 41: E },
              t(e, [2, 4]),
              { 11: 46, 40: d, 50: g },
              { 16: 47, 40: w, 41: E },
              { 18: 48, 19: [1, 49], 51: 50, 52: 51, 56: _ },
              { 11: 53, 40: d, 50: g },
              { 62: 54, 68: [1, 55], 69: [1, 56] },
              t(C, [2, 69]),
              t(C, [2, 70]),
              t(C, [2, 71]),
              t(C, [2, 72]),
              t(C, [2, 73]),
              t(e, [2, 24]),
              t(e, [2, 25]),
              t(e, [2, 26]),
              { 13: D, 38: 57, 41: O, 42: R, 45: 59, 46: 60, 48: k, 49: L },
              t(A, [2, 37]),
              t(A, [2, 38]),
              { 16: 65, 40: w, 41: E, 42: R },
              { 13: D, 38: 66, 41: O, 42: R, 45: 59, 46: 60, 48: k, 49: L },
              { 13: [1, 67], 15: [1, 68] },
              t(e, [2, 17], { 61: 32, 12: 69, 17: [1, 70], 42: R, 63: y, 64: v, 65: x, 66: b, 67: T }),
              { 19: [1, 71] },
              t(e, [2, 14]),
              { 18: 72, 19: [2, 56], 51: 50, 52: 51, 56: _ },
              { 53: 73, 56: [1, 74] },
              { 56: [2, 62] },
              { 21: [1, 75] },
              { 61: 76, 63: y, 64: v, 65: x, 66: b, 67: T },
              t(I, [2, 74]),
              t(I, [2, 75]),
              { 6: M, 10: P, 39: 77, 42: B, 47: F },
              { 40: [1, 82], 41: [1, 83] },
              t(z, [2, 43], { 46: 84, 13: D, 41: O, 48: k, 49: L }),
              t($, [2, 45]),
              t($, [2, 50]),
              t($, [2, 51]),
              t($, [2, 52]),
              t($, [2, 53]),
              t(e, [2, 41], { 42: R }),
              { 6: M, 10: P, 39: 85, 42: B, 47: F },
              { 14: 86, 40: U, 50: K, 70: ee },
              { 16: 90, 40: w, 41: E },
              { 11: 91, 40: d, 50: g },
              { 18: 92, 19: [1, 93], 51: 50, 52: 51, 56: _ },
              t(e, [2, 12]),
              { 19: [2, 57] },
              t(Y, [2, 58], { 54: 94, 55: 95, 57: 96, 59: ce, 60: Z }),
              t([19, 56, 59, 60], [2, 63]),
              t(e, [2, 22], { 15: [1, 100], 17: [1, 99] }),
              t([40, 50], [2, 68]),
              t(e, [2, 36]),
              { 13: D, 41: O, 45: 101, 46: 60, 48: k, 49: L },
              t(e, [2, 47]),
              t(e, [2, 48]),
              t(e, [2, 49]),
              t(A, [2, 39]),
              t(A, [2, 40]),
              t($, [2, 46]),
              t(e, [2, 42]),
              t(e, [2, 8]),
              t(e, [2, 76]),
              t(e, [2, 77]),
              t(e, [2, 78]),
              { 13: [1, 102], 42: R },
              { 13: [1, 104], 15: [1, 103] },
              { 19: [1, 105] },
              t(e, [2, 15]),
              t(Y, [2, 59], { 55: 106, 58: [1, 107], 60: Z }),
              t(Y, [2, 60]),
              t(ue, [2, 64]),
              t(Y, [2, 67]),
              t(ue, [2, 66]),
              { 18: 108, 19: [1, 109], 51: 50, 52: 51, 56: _ },
              { 16: 110, 40: w, 41: E },
              t(z, [2, 44], { 46: 84, 13: D, 41: O, 48: k, 49: L }),
              { 14: 111, 40: U, 50: K, 70: ee },
              { 16: 112, 40: w, 41: E },
              { 14: 113, 40: U, 50: K, 70: ee },
              t(e, [2, 13]),
              t(Y, [2, 61]),
              { 57: 114, 59: ce },
              { 19: [1, 115] },
              t(e, [2, 20]),
              t(e, [2, 23], { 17: [1, 116], 42: R }),
              t(e, [2, 11]),
              { 13: [1, 117], 42: R },
              t(e, [2, 10]),
              t(ue, [2, 65]),
              t(e, [2, 18]),
              { 18: 118, 19: [1, 119], 51: 50, 52: 51, 56: _ },
              { 14: 120, 40: U, 50: K, 70: ee },
              { 19: [1, 121] },
              t(e, [2, 21]),
              t(e, [2, 9]),
              t(e, [2, 19])
            ],
            defaultActions: { 52: [2, 62], 72: [2, 57] },
            parseError: o(function (he, le) {
              if (le.recoverable) this.trace(he)
              else {
                var J = new Error(he)
                throw ((J.hash = le), J)
              }
            }, 'parseError'),
            parse: o(function (he) {
              var le = this,
                J = [0],
                Se = [],
                se = [null],
                ae = [],
                Oe = this.table,
                ye = '',
                Be = 0,
                He = 0,
                ze = 0,
                Le = 2,
                Ie = 1,
                xe = ae.slice.call(arguments, 1),
                q = Object.create(this.lexer),
                de = { yy: {} }
              for (var ie in this.yy) Object.prototype.hasOwnProperty.call(this.yy, ie) && (de.yy[ie] = this.yy[ie])
              q.setInput(he, de.yy), (de.yy.lexer = q), (de.yy.parser = this), typeof q.yylloc > 'u' && (q.yylloc = {})
              var oe = q.yylloc
              ae.push(oe)
              var V = q.options && q.options.ranges
              typeof de.yy.parseError == 'function' ? (this.parseError = de.yy.parseError) : (this.parseError = Object.getPrototypeOf(this).parseError)
              function Te(ct) {
                ;(J.length = J.length - 2 * ct), (se.length = se.length - ct), (ae.length = ae.length - ct)
              }
              o(Te, 'popStack')
              function W() {
                var ct
                return (ct = Se.pop() || q.lex() || Ie), typeof ct != 'number' && (ct instanceof Array && ((Se = ct), (ct = Se.pop())), (ct = le.symbols_[ct] || ct)), ct
              }
              o(W, 'lex')
              for (var pe, ve, Pe, _e, be, Ve, De = {}, qe, at, Rt, st; ; ) {
                if (
                  ((Pe = J[J.length - 1]),
                  this.defaultActions[Pe] ? (_e = this.defaultActions[Pe]) : ((pe === null || typeof pe > 'u') && (pe = W()), (_e = Oe[Pe] && Oe[Pe][pe])),
                  typeof _e > 'u' || !_e.length || !_e[0])
                ) {
                  var Ue = ''
                  st = []
                  for (qe in Oe[Pe]) this.terminals_[qe] && qe > Le && st.push("'" + this.terminals_[qe] + "'")
                  q.showPosition
                    ? (Ue =
                        'Parse error on line ' +
                        (Be + 1) +
                        `:
` +
                        q.showPosition() +
                        `
Expecting ` +
                        st.join(', ') +
                        ", got '" +
                        (this.terminals_[pe] || pe) +
                        "'")
                    : (Ue = 'Parse error on line ' + (Be + 1) + ': Unexpected ' + (pe == Ie ? 'end of input' : "'" + (this.terminals_[pe] || pe) + "'")),
                    this.parseError(Ue, { text: q.match, token: this.terminals_[pe] || pe, line: q.yylineno, loc: oe, expected: st })
                }
                if (_e[0] instanceof Array && _e.length > 1) throw new Error('Parse Error: multiple actions possible at state: ' + Pe + ', token: ' + pe)
                switch (_e[0]) {
                  case 1:
                    J.push(pe),
                      se.push(q.yytext),
                      ae.push(q.yylloc),
                      J.push(_e[1]),
                      (pe = null),
                      ve ? ((pe = ve), (ve = null)) : ((He = q.yyleng), (ye = q.yytext), (Be = q.yylineno), (oe = q.yylloc), ze > 0 && ze--)
                    break
                  case 2:
                    if (
                      ((at = this.productions_[_e[1]][1]),
                      (De.$ = se[se.length - at]),
                      (De._$ = {
                        first_line: ae[ae.length - (at || 1)].first_line,
                        last_line: ae[ae.length - 1].last_line,
                        first_column: ae[ae.length - (at || 1)].first_column,
                        last_column: ae[ae.length - 1].last_column
                      }),
                      V && (De._$.range = [ae[ae.length - (at || 1)].range[0], ae[ae.length - 1].range[1]]),
                      (Ve = this.performAction.apply(De, [ye, He, Be, de.yy, _e[1], se, ae].concat(xe))),
                      typeof Ve < 'u')
                    )
                      return Ve
                    at && ((J = J.slice(0, -1 * at * 2)), (se = se.slice(0, -1 * at)), (ae = ae.slice(0, -1 * at))),
                      J.push(this.productions_[_e[1]][0]),
                      se.push(De.$),
                      ae.push(De._$),
                      (Rt = Oe[J[J.length - 2]][J[J.length - 1]]),
                      J.push(Rt)
                    break
                  case 3:
                    return !0
                }
              }
              return !0
            }, 'parse')
          },
          j = (function () {
            var te = {
              EOF: 1,
              parseError: o(function (le, J) {
                if (this.yy.parser) this.yy.parser.parseError(le, J)
                else throw new Error(le)
              }, 'parseError'),
              setInput: o(function (he, le) {
                return (
                  (this.yy = le || this.yy || {}),
                  (this._input = he),
                  (this._more = this._backtrack = this.done = !1),
                  (this.yylineno = this.yyleng = 0),
                  (this.yytext = this.matched = this.match = ''),
                  (this.conditionStack = ['INITIAL']),
                  (this.yylloc = { first_line: 1, first_column: 0, last_line: 1, last_column: 0 }),
                  this.options.ranges && (this.yylloc.range = [0, 0]),
                  (this.offset = 0),
                  this
                )
              }, 'setInput'),
              input: o(function () {
                var he = this._input[0]
                ;(this.yytext += he), this.yyleng++, this.offset++, (this.match += he), (this.matched += he)
                var le = he.match(/(?:\r\n?|\n).*/g)
                return (
                  le ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++,
                  this.options.ranges && this.yylloc.range[1]++,
                  (this._input = this._input.slice(1)),
                  he
                )
              }, 'input'),
              unput: o(function (he) {
                var le = he.length,
                  J = he.split(/(?:\r\n?|\n)/g)
                ;(this._input = he + this._input), (this.yytext = this.yytext.substr(0, this.yytext.length - le)), (this.offset -= le)
                var Se = this.match.split(/(?:\r\n?|\n)/g)
                ;(this.match = this.match.substr(0, this.match.length - 1)),
                  (this.matched = this.matched.substr(0, this.matched.length - 1)),
                  J.length - 1 && (this.yylineno -= J.length - 1)
                var se = this.yylloc.range
                return (
                  (this.yylloc = {
                    first_line: this.yylloc.first_line,
                    last_line: this.yylineno + 1,
                    first_column: this.yylloc.first_column,
                    last_column: J ? (J.length === Se.length ? this.yylloc.first_column : 0) + Se[Se.length - J.length].length - J[0].length : this.yylloc.first_column - le
                  }),
                  this.options.ranges && (this.yylloc.range = [se[0], se[0] + this.yyleng - le]),
                  (this.yyleng = this.yytext.length),
                  this
                )
              }, 'unput'),
              more: o(function () {
                return (this._more = !0), this
              }, 'more'),
              reject: o(function () {
                if (this.options.backtrack_lexer) this._backtrack = !0
                else
                  return this.parseError(
                    'Lexical error on line ' +
                      (this.yylineno + 1) +
                      `. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
` +
                      this.showPosition(),
                    { text: '', token: null, line: this.yylineno }
                  )
                return this
              }, 'reject'),
              less: o(function (he) {
                this.unput(this.match.slice(he))
              }, 'less'),
              pastInput: o(function () {
                var he = this.matched.substr(0, this.matched.length - this.match.length)
                return (he.length > 20 ? '...' : '') + he.substr(-20).replace(/\n/g, '')
              }, 'pastInput'),
              upcomingInput: o(function () {
                var he = this.match
                return he.length < 20 && (he += this._input.substr(0, 20 - he.length)), (he.substr(0, 20) + (he.length > 20 ? '...' : '')).replace(/\n/g, '')
              }, 'upcomingInput'),
              showPosition: o(function () {
                var he = this.pastInput(),
                  le = new Array(he.length + 1).join('-')
                return (
                  he +
                  this.upcomingInput() +
                  `
` +
                  le +
                  '^'
                )
              }, 'showPosition'),
              test_match: o(function (he, le) {
                var J, Se, se
                if (
                  (this.options.backtrack_lexer &&
                    ((se = {
                      yylineno: this.yylineno,
                      yylloc: { first_line: this.yylloc.first_line, last_line: this.last_line, first_column: this.yylloc.first_column, last_column: this.yylloc.last_column },
                      yytext: this.yytext,
                      match: this.match,
                      matches: this.matches,
                      matched: this.matched,
                      yyleng: this.yyleng,
                      offset: this.offset,
                      _more: this._more,
                      _input: this._input,
                      yy: this.yy,
                      conditionStack: this.conditionStack.slice(0),
                      done: this.done
                    }),
                    this.options.ranges && (se.yylloc.range = this.yylloc.range.slice(0))),
                  (Se = he[0].match(/(?:\r\n?|\n).*/g)),
                  Se && (this.yylineno += Se.length),
                  (this.yylloc = {
                    first_line: this.yylloc.last_line,
                    last_line: this.yylineno + 1,
                    first_column: this.yylloc.last_column,
                    last_column: Se ? Se[Se.length - 1].length - Se[Se.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + he[0].length
                  }),
                  (this.yytext += he[0]),
                  (this.match += he[0]),
                  (this.matches = he),
                  (this.yyleng = this.yytext.length),
                  this.options.ranges && (this.yylloc.range = [this.offset, (this.offset += this.yyleng)]),
                  (this._more = !1),
                  (this._backtrack = !1),
                  (this._input = this._input.slice(he[0].length)),
                  (this.matched += he[0]),
                  (J = this.performAction.call(this, this.yy, this, le, this.conditionStack[this.conditionStack.length - 1])),
                  this.done && this._input && (this.done = !1),
                  J)
                )
                  return J
                if (this._backtrack) {
                  for (var ae in se) this[ae] = se[ae]
                  return !1
                }
                return !1
              }, 'test_match'),
              next: o(function () {
                if (this.done) return this.EOF
                this._input || (this.done = !0)
                var he, le, J, Se
                this._more || ((this.yytext = ''), (this.match = ''))
                for (var se = this._currentRules(), ae = 0; ae < se.length; ae++)
                  if (((J = this._input.match(this.rules[se[ae]])), J && (!le || J[0].length > le[0].length))) {
                    if (((le = J), (Se = ae), this.options.backtrack_lexer)) {
                      if (((he = this.test_match(J, se[ae])), he !== !1)) return he
                      if (this._backtrack) {
                        le = !1
                        continue
                      } else return !1
                    } else if (!this.options.flex) break
                  }
                return le
                  ? ((he = this.test_match(le, se[Se])), he !== !1 ? he : !1)
                  : this._input === ''
                    ? this.EOF
                    : this.parseError(
                        'Lexical error on line ' +
                          (this.yylineno + 1) +
                          `. Unrecognized text.
` +
                          this.showPosition(),
                        { text: '', token: null, line: this.yylineno }
                      )
              }, 'next'),
              lex: o(function () {
                var le = this.next()
                return le || this.lex()
              }, 'lex'),
              begin: o(function (le) {
                this.conditionStack.push(le)
              }, 'begin'),
              popState: o(function () {
                var le = this.conditionStack.length - 1
                return le > 0 ? this.conditionStack.pop() : this.conditionStack[0]
              }, 'popState'),
              _currentRules: o(function () {
                return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]
                  ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
                  : this.conditions.INITIAL.rules
              }, '_currentRules'),
              topState: o(function (le) {
                return (le = this.conditionStack.length - 1 - Math.abs(le || 0)), le >= 0 ? this.conditionStack[le] : 'INITIAL'
              }, 'topState'),
              pushState: o(function (le) {
                this.begin(le)
              }, 'pushState'),
              stateStackSize: o(function () {
                return this.conditionStack.length
              }, 'stateStackSize'),
              options: { 'case-insensitive': !0 },
              performAction: o(function (le, J, Se, se) {
                var ae = se
                switch (Se) {
                  case 0:
                    return this.begin('acc_title'), 24
                    break
                  case 1:
                    return this.popState(), 'acc_title_value'
                    break
                  case 2:
                    return this.begin('acc_descr'), 26
                    break
                  case 3:
                    return this.popState(), 'acc_descr_value'
                    break
                  case 4:
                    this.begin('acc_descr_multiline')
                    break
                  case 5:
                    this.popState()
                    break
                  case 6:
                    return 'acc_descr_multiline_value'
                  case 7:
                    return 33
                  case 8:
                    return 34
                  case 9:
                    return 35
                  case 10:
                    return 36
                  case 11:
                    return 10
                  case 12:
                    break
                  case 13:
                    return 8
                  case 14:
                    return 50
                  case 15:
                    return 70
                  case 16:
                    return 4
                  case 17:
                    return this.begin('block'), 17
                    break
                  case 18:
                    return 49
                  case 19:
                    return 49
                  case 20:
                    return 42
                  case 21:
                    return 15
                  case 22:
                    return 13
                  case 23:
                    break
                  case 24:
                    return 59
                  case 25:
                    return 56
                  case 26:
                    return 56
                  case 27:
                    return 60
                  case 28:
                    break
                  case 29:
                    return this.popState(), 19
                    break
                  case 30:
                    return J.yytext[0]
                  case 31:
                    return 20
                  case 32:
                    return 21
                  case 33:
                    return this.begin('style'), 44
                    break
                  case 34:
                    return this.popState(), 10
                    break
                  case 35:
                    break
                  case 36:
                    return 13
                  case 37:
                    return 42
                  case 38:
                    return 49
                  case 39:
                    return this.begin('style'), 37
                    break
                  case 40:
                    return 43
                  case 41:
                    return 63
                  case 42:
                    return 65
                  case 43:
                    return 65
                  case 44:
                    return 65
                  case 45:
                    return 63
                  case 46:
                    return 63
                  case 47:
                    return 64
                  case 48:
                    return 64
                  case 49:
                    return 64
                  case 50:
                    return 64
                  case 51:
                    return 64
                  case 52:
                    return 65
                  case 53:
                    return 64
                  case 54:
                    return 65
                  case 55:
                    return 66
                  case 56:
                    return 66
                  case 57:
                    return 66
                  case 58:
                    return 66
                  case 59:
                    return 63
                  case 60:
                    return 64
                  case 61:
                    return 65
                  case 62:
                    return 67
                  case 63:
                    return 68
                  case 64:
                    return 69
                  case 65:
                    return 69
                  case 66:
                    return 68
                  case 67:
                    return 68
                  case 68:
                    return 68
                  case 69:
                    return 41
                  case 70:
                    return 47
                  case 71:
                    return 40
                  case 72:
                    return 48
                  case 73:
                    return J.yytext[0]
                  case 74:
                    return 6
                }
              }, 'anonymous'),
              rules: [
                /^(?:accTitle\s*:\s*)/i,
                /^(?:(?!\n||)*[^\n]*)/i,
                /^(?:accDescr\s*:\s*)/i,
                /^(?:(?!\n||)*[^\n]*)/i,
                /^(?:accDescr\s*\{\s*)/i,
                /^(?:[\}])/i,
                /^(?:[^\}]*)/i,
                /^(?:.*direction\s+TB[^\n]*)/i,
                /^(?:.*direction\s+BT[^\n]*)/i,
                /^(?:.*direction\s+RL[^\n]*)/i,
                /^(?:.*direction\s+LR[^\n]*)/i,
                /^(?:[\n]+)/i,
                /^(?:\s+)/i,
                /^(?:[\s]+)/i,
                /^(?:"[^"%\r\n\v\b\\]+")/i,
                /^(?:"[^"]*")/i,
                /^(?:erDiagram\b)/i,
                /^(?:\{)/i,
                /^(?:#)/i,
                /^(?:#)/i,
                /^(?:,)/i,
                /^(?::::)/i,
                /^(?::)/i,
                /^(?:\s+)/i,
                /^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i,
                /^(?:([^\s]*)[~].*[~]([^\s]*))/i,
                /^(?:([\*A-Za-z_\u00C0-\uFFFF][A-Za-z0-9\-\_\[\]\(\)\u00C0-\uFFFF\*]*))/i,
                /^(?:"[^"]*")/i,
                /^(?:[\n]+)/i,
                /^(?:\})/i,
                /^(?:.)/i,
                /^(?:\[)/i,
                /^(?:\])/i,
                /^(?:style\b)/i,
                /^(?:[\n]+)/i,
                /^(?:\s+)/i,
                /^(?::)/i,
                /^(?:,)/i,
                /^(?:#)/i,
                /^(?:classDef\b)/i,
                /^(?:class\b)/i,
                /^(?:one or zero\b)/i,
                /^(?:one or more\b)/i,
                /^(?:one or many\b)/i,
                /^(?:1\+)/i,
                /^(?:\|o\b)/i,
                /^(?:zero or one\b)/i,
                /^(?:zero or more\b)/i,
                /^(?:zero or many\b)/i,
                /^(?:0\+)/i,
                /^(?:\}o\b)/i,
                /^(?:many\(0\))/i,
                /^(?:many\(1\))/i,
                /^(?:many\b)/i,
                /^(?:\}\|)/i,
                /^(?:one\b)/i,
                /^(?:only one\b)/i,
                /^(?:1\b)/i,
                /^(?:\|\|)/i,
                /^(?:o\|)/i,
                /^(?:o\{)/i,
                /^(?:\|\{)/i,
                /^(?:\s*u\b)/i,
                /^(?:\.\.)/i,
                /^(?:--)/i,
                /^(?:to\b)/i,
                /^(?:optionally to\b)/i,
                /^(?:\.-)/i,
                /^(?:-\.)/i,
                /^(?:([^\x00-\x7F]|\w|-|\*)+)/i,
                /^(?:;)/i,
                /^(?:([^\x00-\x7F]|\w|-|\*)+)/i,
                /^(?:[0-9])/i,
                /^(?:.)/i,
                /^(?:$)/i
              ],
              conditions: {
                style: { rules: [34, 35, 36, 37, 38, 69, 70], inclusive: !1 },
                acc_descr_multiline: { rules: [5, 6], inclusive: !1 },
                acc_descr: { rules: [3], inclusive: !1 },
                acc_title: { rules: [1], inclusive: !1 },
                block: { rules: [23, 24, 25, 26, 27, 28, 29, 30], inclusive: !1 },
                INITIAL: {
                  rules: [
                    0, 2, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 31, 32, 33, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
                    58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 71, 72, 73, 74
                  ],
                  inclusive: !0
                }
              }
            }
            return te
          })()
        Q.lexer = j
        function ne() {
          this.yy = {}
        }
        return o(ne, 'Parser'), (ne.prototype = Q), (Q.Parser = ne), new ne()
      })()
      iN.parser = iN
      pse = iN
    })
  var Tk,
    gse = N(() => {
      'use strict'
      yt()
      Gt()
      ci()
      er()
      Tk = class {
        constructor() {
          this.entities = new Map()
          this.relationships = []
          this.classes = new Map()
          this.direction = 'TB'
          this.Cardinality = { ZERO_OR_ONE: 'ZERO_OR_ONE', ZERO_OR_MORE: 'ZERO_OR_MORE', ONE_OR_MORE: 'ONE_OR_MORE', ONLY_ONE: 'ONLY_ONE', MD_PARENT: 'MD_PARENT' }
          this.Identification = { NON_IDENTIFYING: 'NON_IDENTIFYING', IDENTIFYING: 'IDENTIFYING' }
          this.setAccTitle = Ar
          this.getAccTitle = Dr
          this.setAccDescription = Lr
          this.getAccDescription = Rr
          this.setDiagramTitle = Or
          this.getDiagramTitle = Nr
          this.getConfig = o(() => me().er, 'getConfig')
          this.clear(),
            (this.addEntity = this.addEntity.bind(this)),
            (this.addAttributes = this.addAttributes.bind(this)),
            (this.addRelationship = this.addRelationship.bind(this)),
            (this.setDirection = this.setDirection.bind(this)),
            (this.addCssStyles = this.addCssStyles.bind(this)),
            (this.addClass = this.addClass.bind(this)),
            (this.setClass = this.setClass.bind(this)),
            (this.setAccTitle = this.setAccTitle.bind(this)),
            (this.setAccDescription = this.setAccDescription.bind(this))
        }
        static {
          o(this, 'ErDB')
        }
        addEntity(e, r = '') {
          return (
            this.entities.has(e)
              ? !this.entities.get(e)?.alias && r && ((this.entities.get(e).alias = r), X.info(`Add alias '${r}' to entity '${e}'`))
              : (this.entities.set(e, {
                  id: `entity-${e}-${this.entities.size}`,
                  label: e,
                  attributes: [],
                  alias: r,
                  shape: 'erBox',
                  look: me().look ?? 'default',
                  cssClasses: 'default',
                  cssStyles: []
                }),
                X.info('Added new entity :', e)),
            this.entities.get(e)
          )
        }
        getEntity(e) {
          return this.entities.get(e)
        }
        getEntities() {
          return this.entities
        }
        getClasses() {
          return this.classes
        }
        addAttributes(e, r) {
          let n = this.addEntity(e),
            i
          for (i = r.length - 1; i >= 0; i--) r[i].keys || (r[i].keys = []), r[i].comment || (r[i].comment = ''), n.attributes.push(r[i]), X.debug('Added attribute ', r[i].name)
        }
        addRelationship(e, r, n, i) {
          let a = this.entities.get(e),
            s = this.entities.get(n)
          if (!a || !s) return
          let l = { entityA: a.id, roleA: r, entityB: s.id, relSpec: i }
          this.relationships.push(l), X.debug('Added new relationship :', l)
        }
        getRelationships() {
          return this.relationships
        }
        getDirection() {
          return this.direction
        }
        setDirection(e) {
          this.direction = e
        }
        getCompiledStyles(e) {
          let r = []
          for (let n of e) {
            let i = this.classes.get(n)
            i?.styles && (r = [...r, ...(i.styles ?? [])].map(a => a.trim())), i?.textStyles && (r = [...r, ...(i.textStyles ?? [])].map(a => a.trim()))
          }
          return r
        }
        addCssStyles(e, r) {
          for (let n of e) {
            let i = this.entities.get(n)
            if (!r || !i) return
            for (let a of r) i.cssStyles.push(a)
          }
        }
        addClass(e, r) {
          e.forEach(n => {
            let i = this.classes.get(n)
            i === void 0 && ((i = { id: n, styles: [], textStyles: [] }), this.classes.set(n, i)),
              r &&
                r.forEach(function (a) {
                  if (/color/.exec(a)) {
                    let s = a.replace('fill', 'bgFill')
                    i.textStyles.push(s)
                  }
                  i.styles.push(a)
                })
          })
        }
        setClass(e, r) {
          for (let n of e) {
            let i = this.entities.get(n)
            if (i) for (let a of r) i.cssClasses += ' ' + a
          }
        }
        clear() {
          ;(this.entities = new Map()), (this.classes = new Map()), (this.relationships = []), kr()
        }
        getData() {
          let e = [],
            r = [],
            n = me()
          for (let a of this.entities.keys()) {
            let s = this.entities.get(a)
            s && ((s.cssCompiledStyles = this.getCompiledStyles(s.cssClasses.split(' '))), e.push(s))
          }
          let i = 0
          for (let a of this.relationships) {
            let s = {
              id: Wh(a.entityA, a.entityB, { prefix: 'id', counter: i++ }),
              type: 'normal',
              curve: 'basis',
              start: a.entityA,
              end: a.entityB,
              label: a.roleA,
              labelpos: 'c',
              thickness: 'normal',
              classes: 'relationshipLine',
              arrowTypeStart: a.relSpec.cardB.toLowerCase(),
              arrowTypeEnd: a.relSpec.cardA.toLowerCase(),
              pattern: a.relSpec.relType == 'IDENTIFYING' ? 'solid' : 'dashed',
              look: n.look
            }
            r.push(s)
          }
          return { nodes: e, edges: r, other: {}, config: n, direction: 'TB' }
        }
      }
    })
  var aN = {}
  ur(aN, { draw: () => ZPe })
  var ZPe,
    yse = N(() => {
      'use strict'
      Gt()
      yt()
      Sm()
      rp()
      np()
      er()
      fr()
      ZPe = o(async function (t, e, r, n) {
        X.info('REF0:'), X.info('Drawing er diagram (unified)', e)
        let { securityLevel: i, er: a, layout: s } = me(),
          l = n.db.getData(),
          u = wc(e, i)
        ;(l.type = n.type),
          (l.layoutAlgorithm = uf(s)),
          (l.config.flowchart.nodeSpacing = a?.nodeSpacing || 140),
          (l.config.flowchart.rankSpacing = a?.rankSpacing || 80),
          (l.direction = n.db.getDirection()),
          (l.markers = ['only_one', 'zero_or_one', 'one_or_more', 'zero_or_more']),
          (l.diagramId = e),
          await Rc(l, u),
          l.layoutAlgorithm === 'elk' && u.select('.edges').lower()
        let h = u.selectAll('[id*="-background"]')
        Array.from(h).length > 0 &&
          h.each(function () {
            let d = Ge(this),
              m = d.attr('id').replace('-background', ''),
              g = u.select(`#${CSS.escape(m)}`)
            if (!g.empty()) {
              let y = g.attr('transform')
              d.attr('transform', y)
            }
          })
        let f = 8
        Vt.insertTitle(u, 'erDiagramTitleText', a?.titleTopMargin ?? 25, n.db.getDiagramTitle()), Yo(u, f, 'erDiagram', a?.useMaxWidth ?? !0)
      }, 'draw')
    })
  var JPe,
    eBe,
    vse,
    xse = N(() => {
      'use strict'
      Ks()
      ;(JPe = o((t, e) => {
        let r = id,
          n = r(t, 'r'),
          i = r(t, 'g'),
          a = r(t, 'b')
        return Qa(n, i, a, e)
      }, 'fade')),
        (eBe = o(
          t => `
  .entityBox {
    fill: ${t.mainBkg};
    stroke: ${t.nodeBorder};
  }

  .relationshipLabelBox {
    fill: ${t.tertiaryColor};
    opacity: 0.7;
    background-color: ${t.tertiaryColor};
      rect {
        opacity: 0.5;
      }
  }

  .labelBkg {
    background-color: ${JPe(t.tertiaryColor, 0.5)};
  }

  .edgeLabel .label {
    fill: ${t.nodeBorder};
    font-size: 14px;
  }

  .label {
    font-family: ${t.fontFamily};
    color: ${t.nodeTextColor || t.textColor};
  }

  .edge-pattern-dashed {
    stroke-dasharray: 8,8;
  }

  .node rect,
  .node circle,
  .node ellipse,
  .node polygon
  {
    fill: ${t.mainBkg};
    stroke: ${t.nodeBorder};
    stroke-width: 1px;
  }

  .relationshipLine {
    stroke: ${t.lineColor};
    stroke-width: 1;
    fill: none;
  }

  .marker {
    fill: none !important;
    stroke: ${t.lineColor} !important;
    stroke-width: 1;
  }
`,
          'getStyles'
        )),
        (vse = eBe)
    })
  var bse = {}
  ur(bse, { diagram: () => tBe })
  var tBe,
    Tse = N(() => {
      'use strict'
      mse()
      gse()
      yse()
      xse()
      tBe = {
        parser: pse,
        get db() {
          return new Tk()
        },
        renderer: aN,
        styles: vse
      }
    })
  function si(t) {
    return typeof t == 'object' && t !== null && typeof t.$type == 'string'
  }
  function ya(t) {
    return typeof t == 'object' && t !== null && typeof t.$refText == 'string'
  }
  function sN(t) {
    return typeof t == 'object' && t !== null && typeof t.name == 'string' && typeof t.type == 'string' && typeof t.path == 'string'
  }
  function ap(t) {
    return typeof t == 'object' && t !== null && si(t.container) && ya(t.reference) && typeof t.message == 'string'
  }
  function Ml(t) {
    return typeof t == 'object' && t !== null && Array.isArray(t.content)
  }
  function hf(t) {
    return typeof t == 'object' && t !== null && typeof t.tokenType == 'object'
  }
  function U2(t) {
    return Ml(t) && typeof t.fullText == 'string'
  }
  var ip,
    Il = N(() => {
      'use strict'
      o(si, 'isAstNode')
      o(ya, 'isReference')
      o(sN, 'isAstNodeDescription')
      o(ap, 'isLinkingError')
      ip = class {
        static {
          o(this, 'AbstractAstReflection')
        }
        constructor() {
          ;(this.subtypes = {}), (this.allSubtypes = {})
        }
        isInstance(e, r) {
          return si(e) && this.isSubtype(e.$type, r)
        }
        isSubtype(e, r) {
          if (e === r) return !0
          let n = this.subtypes[e]
          n || (n = this.subtypes[e] = {})
          let i = n[r]
          if (i !== void 0) return i
          {
            let a = this.computeIsSubtype(e, r)
            return (n[r] = a), a
          }
        }
        getAllSubTypes(e) {
          let r = this.allSubtypes[e]
          if (r) return r
          {
            let n = this.getAllTypes(),
              i = []
            for (let a of n) this.isSubtype(a, e) && i.push(a)
            return (this.allSubtypes[e] = i), i
          }
        }
      }
      o(Ml, 'isCompositeCstNode')
      o(hf, 'isLeafCstNode')
      o(U2, 'isRootCstNode')
    })
  function aBe(t) {
    return typeof t == 'string' ? t : typeof t > 'u' ? 'undefined' : typeof t.toString == 'function' ? t.toString() : Object.prototype.toString.call(t)
  }
  function wk(t) {
    return !!t && typeof t[Symbol.iterator] == 'function'
  }
  function en(...t) {
    if (t.length === 1) {
      let e = t[0]
      if (e instanceof co) return e
      if (wk(e))
        return new co(
          () => e[Symbol.iterator](),
          r => r.next()
        )
      if (typeof e.length == 'number')
        return new co(
          () => ({ index: 0 }),
          r => (r.index < e.length ? { done: !1, value: e[r.index++] } : Ba)
        )
    }
    return t.length > 1
      ? new co(
          () => ({ collIndex: 0, arrIndex: 0 }),
          e => {
            do {
              if (e.iterator) {
                let r = e.iterator.next()
                if (!r.done) return r
                e.iterator = void 0
              }
              if (e.array) {
                if (e.arrIndex < e.array.length) return { done: !1, value: e.array[e.arrIndex++] }
                ;(e.array = void 0), (e.arrIndex = 0)
              }
              if (e.collIndex < t.length) {
                let r = t[e.collIndex++]
                wk(r) ? (e.iterator = r[Symbol.iterator]()) : r && typeof r.length == 'number' && (e.array = r)
              }
            } while (e.iterator || e.array || e.collIndex < t.length)
            return Ba
          }
        )
      : H2
  }
  var co,
    H2,
    Ba,
    Mc,
    jm,
    Gs = N(() => {
      'use strict'
      co = class t {
        static {
          o(this, 'StreamImpl')
        }
        constructor(e, r) {
          ;(this.startFn = e), (this.nextFn = r)
        }
        iterator() {
          let e = { state: this.startFn(), next: o(() => this.nextFn(e.state), 'next'), [Symbol.iterator]: () => e }
          return e
        }
        [Symbol.iterator]() {
          return this.iterator()
        }
        isEmpty() {
          return !!this.iterator().next().done
        }
        count() {
          let e = this.iterator(),
            r = 0,
            n = e.next()
          for (; !n.done; ) r++, (n = e.next())
          return r
        }
        toArray() {
          let e = [],
            r = this.iterator(),
            n
          do (n = r.next()), n.value !== void 0 && e.push(n.value)
          while (!n.done)
          return e
        }
        toSet() {
          return new Set(this)
        }
        toMap(e, r) {
          let n = this.map(i => [e ? e(i) : i, r ? r(i) : i])
          return new Map(n)
        }
        toString() {
          return this.join()
        }
        concat(e) {
          return new t(
            () => ({ first: this.startFn(), firstDone: !1, iterator: e[Symbol.iterator]() }),
            r => {
              let n
              if (!r.firstDone) {
                do if (((n = this.nextFn(r.first)), !n.done)) return n
                while (!n.done)
                r.firstDone = !0
              }
              do if (((n = r.iterator.next()), !n.done)) return n
              while (!n.done)
              return Ba
            }
          )
        }
        join(e = ',') {
          let r = this.iterator(),
            n = '',
            i,
            a = !1
          do (i = r.next()), i.done || (a && (n += e), (n += aBe(i.value))), (a = !0)
          while (!i.done)
          return n
        }
        indexOf(e, r = 0) {
          let n = this.iterator(),
            i = 0,
            a = n.next()
          for (; !a.done; ) {
            if (i >= r && a.value === e) return i
            ;(a = n.next()), i++
          }
          return -1
        }
        every(e) {
          let r = this.iterator(),
            n = r.next()
          for (; !n.done; ) {
            if (!e(n.value)) return !1
            n = r.next()
          }
          return !0
        }
        some(e) {
          let r = this.iterator(),
            n = r.next()
          for (; !n.done; ) {
            if (e(n.value)) return !0
            n = r.next()
          }
          return !1
        }
        forEach(e) {
          let r = this.iterator(),
            n = 0,
            i = r.next()
          for (; !i.done; ) e(i.value, n), (i = r.next()), n++
        }
        map(e) {
          return new t(this.startFn, r => {
            let { done: n, value: i } = this.nextFn(r)
            return n ? Ba : { done: !1, value: e(i) }
          })
        }
        filter(e) {
          return new t(this.startFn, r => {
            let n
            do if (((n = this.nextFn(r)), !n.done && e(n.value))) return n
            while (!n.done)
            return Ba
          })
        }
        nonNullable() {
          return this.filter(e => e != null)
        }
        reduce(e, r) {
          let n = this.iterator(),
            i = r,
            a = n.next()
          for (; !a.done; ) i === void 0 ? (i = a.value) : (i = e(i, a.value)), (a = n.next())
          return i
        }
        reduceRight(e, r) {
          return this.recursiveReduce(this.iterator(), e, r)
        }
        recursiveReduce(e, r, n) {
          let i = e.next()
          if (i.done) return n
          let a = this.recursiveReduce(e, r, n)
          return a === void 0 ? i.value : r(a, i.value)
        }
        find(e) {
          let r = this.iterator(),
            n = r.next()
          for (; !n.done; ) {
            if (e(n.value)) return n.value
            n = r.next()
          }
        }
        findIndex(e) {
          let r = this.iterator(),
            n = 0,
            i = r.next()
          for (; !i.done; ) {
            if (e(i.value)) return n
            ;(i = r.next()), n++
          }
          return -1
        }
        includes(e) {
          let r = this.iterator(),
            n = r.next()
          for (; !n.done; ) {
            if (n.value === e) return !0
            n = r.next()
          }
          return !1
        }
        flatMap(e) {
          return new t(
            () => ({ this: this.startFn() }),
            r => {
              do {
                if (r.iterator) {
                  let a = r.iterator.next()
                  if (a.done) r.iterator = void 0
                  else return a
                }
                let { done: n, value: i } = this.nextFn(r.this)
                if (!n) {
                  let a = e(i)
                  if (wk(a)) r.iterator = a[Symbol.iterator]()
                  else return { done: !1, value: a }
                }
              } while (r.iterator)
              return Ba
            }
          )
        }
        flat(e) {
          if ((e === void 0 && (e = 1), e <= 0)) return this
          let r = e > 1 ? this.flat(e - 1) : this
          return new t(
            () => ({ this: r.startFn() }),
            n => {
              do {
                if (n.iterator) {
                  let s = n.iterator.next()
                  if (s.done) n.iterator = void 0
                  else return s
                }
                let { done: i, value: a } = r.nextFn(n.this)
                if (!i)
                  if (wk(a)) n.iterator = a[Symbol.iterator]()
                  else return { done: !1, value: a }
              } while (n.iterator)
              return Ba
            }
          )
        }
        head() {
          let r = this.iterator().next()
          if (!r.done) return r.value
        }
        tail(e = 1) {
          return new t(() => {
            let r = this.startFn()
            for (let n = 0; n < e; n++) if (this.nextFn(r).done) return r
            return r
          }, this.nextFn)
        }
        limit(e) {
          return new t(
            () => ({ size: 0, state: this.startFn() }),
            r => (r.size++, r.size > e ? Ba : this.nextFn(r.state))
          )
        }
        distinct(e) {
          return new t(
            () => ({ set: new Set(), internalState: this.startFn() }),
            r => {
              let n
              do
                if (((n = this.nextFn(r.internalState)), !n.done)) {
                  let i = e ? e(n.value) : n.value
                  if (!r.set.has(i)) return r.set.add(i), n
                }
              while (!n.done)
              return Ba
            }
          )
        }
        exclude(e, r) {
          let n = new Set()
          for (let i of e) {
            let a = r ? r(i) : i
            n.add(a)
          }
          return this.filter(i => {
            let a = r ? r(i) : i
            return !n.has(a)
          })
        }
      }
      o(aBe, 'toString')
      o(wk, 'isIterable')
      ;(H2 = new co(
        () => {},
        () => Ba
      )),
        (Ba = Object.freeze({ done: !0, value: void 0 }))
      o(en, 'stream')
      Mc = class extends co {
        static {
          o(this, 'TreeStreamImpl')
        }
        constructor(e, r, n) {
          super(
            () => ({ iterators: n?.includeRoot ? [[e][Symbol.iterator]()] : [r(e)[Symbol.iterator]()], pruned: !1 }),
            i => {
              for (i.pruned && (i.iterators.pop(), (i.pruned = !1)); i.iterators.length > 0; ) {
                let s = i.iterators[i.iterators.length - 1].next()
                if (s.done) i.iterators.pop()
                else return i.iterators.push(r(s.value)[Symbol.iterator]()), s
              }
              return Ba
            }
          )
        }
        iterator() {
          let e = {
            state: this.startFn(),
            next: o(() => this.nextFn(e.state), 'next'),
            prune: o(() => {
              e.state.pruned = !0
            }, 'prune'),
            [Symbol.iterator]: () => e
          }
          return e
        }
      }
      ;(function (t) {
        function e(a) {
          return a.reduce((s, l) => s + l, 0)
        }
        o(e, 'sum'), (t.sum = e)
        function r(a) {
          return a.reduce((s, l) => s * l, 0)
        }
        o(r, 'product'), (t.product = r)
        function n(a) {
          return a.reduce((s, l) => Math.min(s, l))
        }
        o(n, 'min'), (t.min = n)
        function i(a) {
          return a.reduce((s, l) => Math.max(s, l))
        }
        o(i, 'max'), (t.max = i)
      })(jm || (jm = {}))
    })
  var Ek = {}
  ur(Ek, {
    DefaultNameRegexp: () => kk,
    RangeComparison: () => Ic,
    compareRange: () => Sse,
    findCommentNode: () => uN,
    findDeclarationNodeAtOffset: () => oBe,
    findLeafNodeAtOffset: () => hN,
    findLeafNodeBeforeOffset: () => Cse,
    flattenCst: () => sBe,
    getInteriorNodes: () => uBe,
    getNextNode: () => lBe,
    getPreviousNode: () => _se,
    getStartlineNode: () => cBe,
    inRange: () => cN,
    isChildNode: () => lN,
    isCommentNode: () => oN,
    streamCst: () => sp,
    toDocumentSegment: () => op,
    tokenToRange: () => Km
  })
  function sp(t) {
    return new Mc(t, e => (Ml(e) ? e.content : []), { includeRoot: !0 })
  }
  function sBe(t) {
    return sp(t).filter(hf)
  }
  function lN(t, e) {
    for (; t.container; ) if (((t = t.container), t === e)) return !0
    return !1
  }
  function Km(t) {
    return { start: { character: t.startColumn - 1, line: t.startLine - 1 }, end: { character: t.endColumn, line: t.endLine - 1 } }
  }
  function op(t) {
    if (!t) return
    let { offset: e, end: r, range: n } = t
    return { range: n, offset: e, end: r, length: r - e }
  }
  function Sse(t, e) {
    if (t.end.line < e.start.line || (t.end.line === e.start.line && t.end.character <= e.start.character)) return Ic.Before
    if (t.start.line > e.end.line || (t.start.line === e.end.line && t.start.character >= e.end.character)) return Ic.After
    let r = t.start.line > e.start.line || (t.start.line === e.start.line && t.start.character >= e.start.character),
      n = t.end.line < e.end.line || (t.end.line === e.end.line && t.end.character <= e.end.character)
    return r && n ? Ic.Inside : r ? Ic.OverlapBack : n ? Ic.OverlapFront : Ic.Outside
  }
  function cN(t, e) {
    return Sse(t, e) > Ic.After
  }
  function oBe(t, e, r = kk) {
    if (t) {
      if (e > 0) {
        let n = e - t.offset,
          i = t.text.charAt(n)
        r.test(i) || e--
      }
      return hN(t, e)
    }
  }
  function uN(t, e) {
    if (t) {
      let r = _se(t, !0)
      if (r && oN(r, e)) return r
      if (U2(t)) {
        let n = t.content.findIndex(i => !i.hidden)
        for (let i = n - 1; i >= 0; i--) {
          let a = t.content[i]
          if (oN(a, e)) return a
        }
      }
    }
  }
  function oN(t, e) {
    return hf(t) && e.includes(t.tokenType.name)
  }
  function hN(t, e) {
    if (hf(t)) return t
    if (Ml(t)) {
      let r = Ase(t, e, !1)
      if (r) return hN(r, e)
    }
  }
  function Cse(t, e) {
    if (hf(t)) return t
    if (Ml(t)) {
      let r = Ase(t, e, !0)
      if (r) return Cse(r, e)
    }
  }
  function Ase(t, e, r) {
    let n = 0,
      i = t.content.length - 1,
      a
    for (; n <= i; ) {
      let s = Math.floor((n + i) / 2),
        l = t.content[s]
      if (l.offset <= e && l.end > e) return l
      l.end <= e ? ((a = r ? l : void 0), (n = s + 1)) : (i = s - 1)
    }
    return a
  }
  function _se(t, e = !0) {
    for (; t.container; ) {
      let r = t.container,
        n = r.content.indexOf(t)
      for (; n > 0; ) {
        n--
        let i = r.content[n]
        if (e || !i.hidden) return i
      }
      t = r
    }
  }
  function lBe(t, e = !0) {
    for (; t.container; ) {
      let r = t.container,
        n = r.content.indexOf(t),
        i = r.content.length - 1
      for (; n < i; ) {
        n++
        let a = r.content[n]
        if (e || !a.hidden) return a
      }
      t = r
    }
  }
  function cBe(t) {
    if (t.range.start.character === 0) return t
    let e = t.range.start.line,
      r = t,
      n
    for (; t.container; ) {
      let i = t.container,
        a = n ?? i.content.indexOf(t)
      if ((a === 0 ? ((t = i), (n = void 0)) : ((n = a - 1), (t = i.content[n])), t.range.start.line !== e)) break
      r = t
    }
    return r
  }
  function uBe(t, e) {
    let r = hBe(t, e)
    return r ? r.parent.content.slice(r.a + 1, r.b) : []
  }
  function hBe(t, e) {
    let r = Ese(t),
      n = Ese(e),
      i
    for (let a = 0; a < r.length && a < n.length; a++) {
      let s = r[a],
        l = n[a]
      if (s.parent === l.parent) i = { parent: s.parent, a: s.index, b: l.index }
      else break
    }
    return i
  }
  function Ese(t) {
    let e = []
    for (; t.container; ) {
      let r = t.container,
        n = r.content.indexOf(t)
      e.push({ parent: r, index: n }), (t = r)
    }
    return e.reverse()
  }
  var Ic,
    kk,
    Ol = N(() => {
      'use strict'
      Il()
      Gs()
      o(sp, 'streamCst')
      o(sBe, 'flattenCst')
      o(lN, 'isChildNode')
      o(Km, 'tokenToRange')
      o(op, 'toDocumentSegment')
      ;(function (t) {
        ;(t[(t.Before = 0)] = 'Before'),
          (t[(t.After = 1)] = 'After'),
          (t[(t.OverlapFront = 2)] = 'OverlapFront'),
          (t[(t.OverlapBack = 3)] = 'OverlapBack'),
          (t[(t.Inside = 4)] = 'Inside'),
          (t[(t.Outside = 5)] = 'Outside')
      })(Ic || (Ic = {}))
      o(Sse, 'compareRange')
      o(cN, 'inRange')
      kk = /^[\w\p{L}]$/u
      o(oBe, 'findDeclarationNodeAtOffset')
      o(uN, 'findCommentNode')
      o(oN, 'isCommentNode')
      o(hN, 'findLeafNodeAtOffset')
      o(Cse, 'findLeafNodeBeforeOffset')
      o(Ase, 'binarySearch')
      o(_se, 'getPreviousNode')
      o(lBe, 'getNextNode')
      o(cBe, 'getStartlineNode')
      o(uBe, 'getInteriorNodes')
      o(hBe, 'getCommonParent')
      o(Ese, 'getParentChain')
    })
  function Oc(t) {
    throw new Error('Error! The input value was not handled.')
  }
  var lp,
    Sk = N(() => {
      'use strict'
      lp = class extends Error {
        static {
          o(this, 'ErrorWithLocation')
        }
        constructor(e, r) {
          super(e ? `${r} at ${e.range.start.line}:${e.range.start.character}` : r)
        }
      }
      o(Oc, 'assertUnreachable')
    })
  var J2 = {}
  ur(J2, {
    AbstractElement: () => Jm,
    AbstractRule: () => Qm,
    AbstractType: () => Zm,
    Action: () => vg,
    Alternatives: () => xg,
    ArrayLiteral: () => eg,
    ArrayType: () => tg,
    Assignment: () => bg,
    BooleanLiteral: () => rg,
    CharacterRange: () => Tg,
    Condition: () => W2,
    Conjunction: () => ng,
    CrossReference: () => wg,
    Disjunction: () => ig,
    EndOfFile: () => kg,
    Grammar: () => ag,
    GrammarImport: () => Y2,
    Group: () => Eg,
    InferredType: () => sg,
    Interface: () => og,
    Keyword: () => Sg,
    LangiumGrammarAstReflection: () => Og,
    LangiumGrammarTerminals: () => fBe,
    NamedArgument: () => X2,
    NegatedToken: () => Cg,
    Negation: () => lg,
    NumberLiteral: () => cg,
    Parameter: () => ug,
    ParameterReference: () => hg,
    ParserRule: () => fg,
    ReferenceType: () => dg,
    RegexToken: () => Ag,
    ReturnType: () => j2,
    RuleCall: () => _g,
    SimpleType: () => pg,
    StringLiteral: () => mg,
    TerminalAlternatives: () => Dg,
    TerminalGroup: () => Lg,
    TerminalRule: () => cp,
    TerminalRuleCall: () => Rg,
    Type: () => gg,
    TypeAttribute: () => K2,
    TypeDefinition: () => Ck,
    UnionType: () => yg,
    UnorderedGroup: () => Ng,
    UntilToken: () => Mg,
    ValueLiteral: () => q2,
    Wildcard: () => Ig,
    isAbstractElement: () => Q2,
    isAbstractRule: () => dBe,
    isAbstractType: () => pBe,
    isAction: () => $u,
    isAlternatives: () => Lk,
    isArrayLiteral: () => xBe,
    isArrayType: () => fN,
    isAssignment: () => Pl,
    isBooleanLiteral: () => dN,
    isCharacterRange: () => TN,
    isCondition: () => mBe,
    isConjunction: () => pN,
    isCrossReference: () => up,
    isDisjunction: () => mN,
    isEndOfFile: () => wN,
    isFeatureName: () => gBe,
    isGrammar: () => bBe,
    isGrammarImport: () => TBe,
    isGroup: () => ff,
    isInferredType: () => Ak,
    isInterface: () => _k,
    isKeyword: () => Xo,
    isNamedArgument: () => wBe,
    isNegatedToken: () => kN,
    isNegation: () => gN,
    isNumberLiteral: () => kBe,
    isParameter: () => EBe,
    isParameterReference: () => yN,
    isParserRule: () => Fa,
    isPrimitiveType: () => Dse,
    isReferenceType: () => vN,
    isRegexToken: () => EN,
    isReturnType: () => xN,
    isRuleCall: () => Bl,
    isSimpleType: () => Dk,
    isStringLiteral: () => SBe,
    isTerminalAlternatives: () => SN,
    isTerminalGroup: () => CN,
    isTerminalRule: () => uo,
    isTerminalRuleCall: () => Rk,
    isType: () => Z2,
    isTypeAttribute: () => CBe,
    isTypeDefinition: () => yBe,
    isUnionType: () => bN,
    isUnorderedGroup: () => Nk,
    isUntilToken: () => AN,
    isValueLiteral: () => vBe,
    isWildcard: () => _N,
    reflection: () => cr
  })
  function dBe(t) {
    return cr.isInstance(t, Qm)
  }
  function pBe(t) {
    return cr.isInstance(t, Zm)
  }
  function mBe(t) {
    return cr.isInstance(t, W2)
  }
  function gBe(t) {
    return (
      Dse(t) ||
      t === 'current' ||
      t === 'entry' ||
      t === 'extends' ||
      t === 'false' ||
      t === 'fragment' ||
      t === 'grammar' ||
      t === 'hidden' ||
      t === 'import' ||
      t === 'interface' ||
      t === 'returns' ||
      t === 'terminal' ||
      t === 'true' ||
      t === 'type' ||
      t === 'infer' ||
      t === 'infers' ||
      t === 'with' ||
      (typeof t == 'string' && /\^?[_a-zA-Z][\w_]*/.test(t))
    )
  }
  function Dse(t) {
    return t === 'string' || t === 'number' || t === 'boolean' || t === 'Date' || t === 'bigint'
  }
  function yBe(t) {
    return cr.isInstance(t, Ck)
  }
  function vBe(t) {
    return cr.isInstance(t, q2)
  }
  function Q2(t) {
    return cr.isInstance(t, Jm)
  }
  function xBe(t) {
    return cr.isInstance(t, eg)
  }
  function fN(t) {
    return cr.isInstance(t, tg)
  }
  function dN(t) {
    return cr.isInstance(t, rg)
  }
  function pN(t) {
    return cr.isInstance(t, ng)
  }
  function mN(t) {
    return cr.isInstance(t, ig)
  }
  function bBe(t) {
    return cr.isInstance(t, ag)
  }
  function TBe(t) {
    return cr.isInstance(t, Y2)
  }
  function Ak(t) {
    return cr.isInstance(t, sg)
  }
  function _k(t) {
    return cr.isInstance(t, og)
  }
  function wBe(t) {
    return cr.isInstance(t, X2)
  }
  function gN(t) {
    return cr.isInstance(t, lg)
  }
  function kBe(t) {
    return cr.isInstance(t, cg)
  }
  function EBe(t) {
    return cr.isInstance(t, ug)
  }
  function yN(t) {
    return cr.isInstance(t, hg)
  }
  function Fa(t) {
    return cr.isInstance(t, fg)
  }
  function vN(t) {
    return cr.isInstance(t, dg)
  }
  function xN(t) {
    return cr.isInstance(t, j2)
  }
  function Dk(t) {
    return cr.isInstance(t, pg)
  }
  function SBe(t) {
    return cr.isInstance(t, mg)
  }
  function uo(t) {
    return cr.isInstance(t, cp)
  }
  function Z2(t) {
    return cr.isInstance(t, gg)
  }
  function CBe(t) {
    return cr.isInstance(t, K2)
  }
  function bN(t) {
    return cr.isInstance(t, yg)
  }
  function $u(t) {
    return cr.isInstance(t, vg)
  }
  function Lk(t) {
    return cr.isInstance(t, xg)
  }
  function Pl(t) {
    return cr.isInstance(t, bg)
  }
  function TN(t) {
    return cr.isInstance(t, Tg)
  }
  function up(t) {
    return cr.isInstance(t, wg)
  }
  function wN(t) {
    return cr.isInstance(t, kg)
  }
  function ff(t) {
    return cr.isInstance(t, Eg)
  }
  function Xo(t) {
    return cr.isInstance(t, Sg)
  }
  function kN(t) {
    return cr.isInstance(t, Cg)
  }
  function EN(t) {
    return cr.isInstance(t, Ag)
  }
  function Bl(t) {
    return cr.isInstance(t, _g)
  }
  function SN(t) {
    return cr.isInstance(t, Dg)
  }
  function CN(t) {
    return cr.isInstance(t, Lg)
  }
  function Rk(t) {
    return cr.isInstance(t, Rg)
  }
  function Nk(t) {
    return cr.isInstance(t, Ng)
  }
  function AN(t) {
    return cr.isInstance(t, Mg)
  }
  function _N(t) {
    return cr.isInstance(t, Ig)
  }
  var fBe,
    Qm,
    Zm,
    W2,
    Ck,
    q2,
    Jm,
    eg,
    tg,
    rg,
    ng,
    ig,
    ag,
    Y2,
    sg,
    og,
    X2,
    lg,
    cg,
    ug,
    hg,
    fg,
    dg,
    j2,
    pg,
    mg,
    cp,
    gg,
    K2,
    yg,
    vg,
    xg,
    bg,
    Tg,
    wg,
    kg,
    Eg,
    Sg,
    Cg,
    Ag,
    _g,
    Dg,
    Lg,
    Rg,
    Ng,
    Mg,
    Ig,
    Og,
    cr,
    Pc = N(() => {
      'use strict'
      Il()
      ;(fBe = {
        ID: /\^?[_a-zA-Z][\w_]*/,
        STRING: /"(\\.|[^"\\])*"|'(\\.|[^'\\])*'/,
        NUMBER: /NaN|-?((\d*\.\d+|\d+)([Ee][+-]?\d+)?|Infinity)/,
        RegexLiteral: /\/(?![*+?])(?:[^\r\n\[/\\]|\\.|\[(?:[^\r\n\]\\]|\\.)*\])+\/[a-z]*/,
        WS: /\s+/,
        ML_COMMENT: /\/\*[\s\S]*?\*\//,
        SL_COMMENT: /\/\/[^\n\r]*/
      }),
        (Qm = 'AbstractRule')
      o(dBe, 'isAbstractRule')
      Zm = 'AbstractType'
      o(pBe, 'isAbstractType')
      W2 = 'Condition'
      o(mBe, 'isCondition')
      o(gBe, 'isFeatureName')
      o(Dse, 'isPrimitiveType')
      Ck = 'TypeDefinition'
      o(yBe, 'isTypeDefinition')
      q2 = 'ValueLiteral'
      o(vBe, 'isValueLiteral')
      Jm = 'AbstractElement'
      o(Q2, 'isAbstractElement')
      eg = 'ArrayLiteral'
      o(xBe, 'isArrayLiteral')
      tg = 'ArrayType'
      o(fN, 'isArrayType')
      rg = 'BooleanLiteral'
      o(dN, 'isBooleanLiteral')
      ng = 'Conjunction'
      o(pN, 'isConjunction')
      ig = 'Disjunction'
      o(mN, 'isDisjunction')
      ag = 'Grammar'
      o(bBe, 'isGrammar')
      Y2 = 'GrammarImport'
      o(TBe, 'isGrammarImport')
      sg = 'InferredType'
      o(Ak, 'isInferredType')
      og = 'Interface'
      o(_k, 'isInterface')
      X2 = 'NamedArgument'
      o(wBe, 'isNamedArgument')
      lg = 'Negation'
      o(gN, 'isNegation')
      cg = 'NumberLiteral'
      o(kBe, 'isNumberLiteral')
      ug = 'Parameter'
      o(EBe, 'isParameter')
      hg = 'ParameterReference'
      o(yN, 'isParameterReference')
      fg = 'ParserRule'
      o(Fa, 'isParserRule')
      dg = 'ReferenceType'
      o(vN, 'isReferenceType')
      j2 = 'ReturnType'
      o(xN, 'isReturnType')
      pg = 'SimpleType'
      o(Dk, 'isSimpleType')
      mg = 'StringLiteral'
      o(SBe, 'isStringLiteral')
      cp = 'TerminalRule'
      o(uo, 'isTerminalRule')
      gg = 'Type'
      o(Z2, 'isType')
      K2 = 'TypeAttribute'
      o(CBe, 'isTypeAttribute')
      yg = 'UnionType'
      o(bN, 'isUnionType')
      vg = 'Action'
      o($u, 'isAction')
      xg = 'Alternatives'
      o(Lk, 'isAlternatives')
      bg = 'Assignment'
      o(Pl, 'isAssignment')
      Tg = 'CharacterRange'
      o(TN, 'isCharacterRange')
      wg = 'CrossReference'
      o(up, 'isCrossReference')
      kg = 'EndOfFile'
      o(wN, 'isEndOfFile')
      Eg = 'Group'
      o(ff, 'isGroup')
      Sg = 'Keyword'
      o(Xo, 'isKeyword')
      Cg = 'NegatedToken'
      o(kN, 'isNegatedToken')
      Ag = 'RegexToken'
      o(EN, 'isRegexToken')
      _g = 'RuleCall'
      o(Bl, 'isRuleCall')
      Dg = 'TerminalAlternatives'
      o(SN, 'isTerminalAlternatives')
      Lg = 'TerminalGroup'
      o(CN, 'isTerminalGroup')
      Rg = 'TerminalRuleCall'
      o(Rk, 'isTerminalRuleCall')
      Ng = 'UnorderedGroup'
      o(Nk, 'isUnorderedGroup')
      Mg = 'UntilToken'
      o(AN, 'isUntilToken')
      Ig = 'Wildcard'
      o(_N, 'isWildcard')
      ;(Og = class extends ip {
        static {
          o(this, 'LangiumGrammarAstReflection')
        }
        getAllTypes() {
          return [
            Jm,
            Qm,
            Zm,
            vg,
            xg,
            eg,
            tg,
            bg,
            rg,
            Tg,
            W2,
            ng,
            wg,
            ig,
            kg,
            ag,
            Y2,
            Eg,
            sg,
            og,
            Sg,
            X2,
            Cg,
            lg,
            cg,
            ug,
            hg,
            fg,
            dg,
            Ag,
            j2,
            _g,
            pg,
            mg,
            Dg,
            Lg,
            cp,
            Rg,
            gg,
            K2,
            Ck,
            yg,
            Ng,
            Mg,
            q2,
            Ig
          ]
        }
        computeIsSubtype(e, r) {
          switch (e) {
            case vg:
            case xg:
            case bg:
            case Tg:
            case wg:
            case kg:
            case Eg:
            case Sg:
            case Cg:
            case Ag:
            case _g:
            case Dg:
            case Lg:
            case Rg:
            case Ng:
            case Mg:
            case Ig:
              return this.isSubtype(Jm, r)
            case eg:
            case cg:
            case mg:
              return this.isSubtype(q2, r)
            case tg:
            case dg:
            case pg:
            case yg:
              return this.isSubtype(Ck, r)
            case rg:
              return this.isSubtype(W2, r) || this.isSubtype(q2, r)
            case ng:
            case ig:
            case lg:
            case hg:
              return this.isSubtype(W2, r)
            case sg:
            case og:
            case gg:
              return this.isSubtype(Zm, r)
            case fg:
              return this.isSubtype(Qm, r) || this.isSubtype(Zm, r)
            case cp:
              return this.isSubtype(Qm, r)
            default:
              return !1
          }
        }
        getReferenceType(e) {
          let r = `${e.container.$type}:${e.property}`
          switch (r) {
            case 'Action:type':
            case 'CrossReference:type':
            case 'Interface:superTypes':
            case 'ParserRule:returnType':
            case 'SimpleType:typeRef':
              return Zm
            case 'Grammar:hiddenTokens':
            case 'ParserRule:hiddenTokens':
            case 'RuleCall:rule':
              return Qm
            case 'Grammar:usedGrammars':
              return ag
            case 'NamedArgument:parameter':
            case 'ParameterReference:parameter':
              return ug
            case 'TerminalRuleCall:rule':
              return cp
            default:
              throw new Error(`${r} is not a valid reference id.`)
          }
        }
        getTypeMetaData(e) {
          switch (e) {
            case Jm:
              return { name: Jm, properties: [{ name: 'cardinality' }, { name: 'lookahead' }] }
            case eg:
              return { name: eg, properties: [{ name: 'elements', defaultValue: [] }] }
            case tg:
              return { name: tg, properties: [{ name: 'elementType' }] }
            case rg:
              return { name: rg, properties: [{ name: 'true', defaultValue: !1 }] }
            case ng:
              return { name: ng, properties: [{ name: 'left' }, { name: 'right' }] }
            case ig:
              return { name: ig, properties: [{ name: 'left' }, { name: 'right' }] }
            case ag:
              return {
                name: ag,
                properties: [
                  { name: 'definesHiddenTokens', defaultValue: !1 },
                  { name: 'hiddenTokens', defaultValue: [] },
                  { name: 'imports', defaultValue: [] },
                  { name: 'interfaces', defaultValue: [] },
                  { name: 'isDeclared', defaultValue: !1 },
                  { name: 'name' },
                  { name: 'rules', defaultValue: [] },
                  { name: 'types', defaultValue: [] },
                  { name: 'usedGrammars', defaultValue: [] }
                ]
              }
            case Y2:
              return { name: Y2, properties: [{ name: 'path' }] }
            case sg:
              return { name: sg, properties: [{ name: 'name' }] }
            case og:
              return { name: og, properties: [{ name: 'attributes', defaultValue: [] }, { name: 'name' }, { name: 'superTypes', defaultValue: [] }] }
            case X2:
              return { name: X2, properties: [{ name: 'calledByName', defaultValue: !1 }, { name: 'parameter' }, { name: 'value' }] }
            case lg:
              return { name: lg, properties: [{ name: 'value' }] }
            case cg:
              return { name: cg, properties: [{ name: 'value' }] }
            case ug:
              return { name: ug, properties: [{ name: 'name' }] }
            case hg:
              return { name: hg, properties: [{ name: 'parameter' }] }
            case fg:
              return {
                name: fg,
                properties: [
                  { name: 'dataType' },
                  { name: 'definesHiddenTokens', defaultValue: !1 },
                  { name: 'definition' },
                  { name: 'entry', defaultValue: !1 },
                  { name: 'fragment', defaultValue: !1 },
                  { name: 'hiddenTokens', defaultValue: [] },
                  { name: 'inferredType' },
                  { name: 'name' },
                  { name: 'parameters', defaultValue: [] },
                  { name: 'returnType' },
                  { name: 'wildcard', defaultValue: !1 }
                ]
              }
            case dg:
              return { name: dg, properties: [{ name: 'referenceType' }] }
            case j2:
              return { name: j2, properties: [{ name: 'name' }] }
            case pg:
              return { name: pg, properties: [{ name: 'primitiveType' }, { name: 'stringType' }, { name: 'typeRef' }] }
            case mg:
              return { name: mg, properties: [{ name: 'value' }] }
            case cp:
              return {
                name: cp,
                properties: [{ name: 'definition' }, { name: 'fragment', defaultValue: !1 }, { name: 'hidden', defaultValue: !1 }, { name: 'name' }, { name: 'type' }]
              }
            case gg:
              return { name: gg, properties: [{ name: 'name' }, { name: 'type' }] }
            case K2:
              return { name: K2, properties: [{ name: 'defaultValue' }, { name: 'isOptional', defaultValue: !1 }, { name: 'name' }, { name: 'type' }] }
            case yg:
              return { name: yg, properties: [{ name: 'types', defaultValue: [] }] }
            case vg:
              return {
                name: vg,
                properties: [{ name: 'cardinality' }, { name: 'feature' }, { name: 'inferredType' }, { name: 'lookahead' }, { name: 'operator' }, { name: 'type' }]
              }
            case xg:
              return { name: xg, properties: [{ name: 'cardinality' }, { name: 'elements', defaultValue: [] }, { name: 'lookahead' }] }
            case bg:
              return { name: bg, properties: [{ name: 'cardinality' }, { name: 'feature' }, { name: 'lookahead' }, { name: 'operator' }, { name: 'terminal' }] }
            case Tg:
              return { name: Tg, properties: [{ name: 'cardinality' }, { name: 'left' }, { name: 'lookahead' }, { name: 'right' }] }
            case wg:
              return {
                name: wg,
                properties: [{ name: 'cardinality' }, { name: 'deprecatedSyntax', defaultValue: !1 }, { name: 'lookahead' }, { name: 'terminal' }, { name: 'type' }]
              }
            case kg:
              return { name: kg, properties: [{ name: 'cardinality' }, { name: 'lookahead' }] }
            case Eg:
              return { name: Eg, properties: [{ name: 'cardinality' }, { name: 'elements', defaultValue: [] }, { name: 'guardCondition' }, { name: 'lookahead' }] }
            case Sg:
              return { name: Sg, properties: [{ name: 'cardinality' }, { name: 'lookahead' }, { name: 'value' }] }
            case Cg:
              return { name: Cg, properties: [{ name: 'cardinality' }, { name: 'lookahead' }, { name: 'terminal' }] }
            case Ag:
              return { name: Ag, properties: [{ name: 'cardinality' }, { name: 'lookahead' }, { name: 'regex' }] }
            case _g:
              return { name: _g, properties: [{ name: 'arguments', defaultValue: [] }, { name: 'cardinality' }, { name: 'lookahead' }, { name: 'rule' }] }
            case Dg:
              return { name: Dg, properties: [{ name: 'cardinality' }, { name: 'elements', defaultValue: [] }, { name: 'lookahead' }] }
            case Lg:
              return { name: Lg, properties: [{ name: 'cardinality' }, { name: 'elements', defaultValue: [] }, { name: 'lookahead' }] }
            case Rg:
              return { name: Rg, properties: [{ name: 'cardinality' }, { name: 'lookahead' }, { name: 'rule' }] }
            case Ng:
              return { name: Ng, properties: [{ name: 'cardinality' }, { name: 'elements', defaultValue: [] }, { name: 'lookahead' }] }
            case Mg:
              return { name: Mg, properties: [{ name: 'cardinality' }, { name: 'lookahead' }, { name: 'terminal' }] }
            case Ig:
              return { name: Ig, properties: [{ name: 'cardinality' }, { name: 'lookahead' }] }
            default:
              return { name: e, properties: [] }
          }
        }
      }),
        (cr = new Og())
    })
  var Ik = {}
  ur(Ik, {
    assignMandatoryProperties: () => RN,
    copyAstNode: () => LN,
    findLocalReferences: () => _Be,
    findRootNode: () => ex,
    getContainerOfType: () => hp,
    getDocument: () => $a,
    hasContainerOfType: () => ABe,
    linkContentToContainer: () => Mk,
    streamAllContents: () => Bc,
    streamAst: () => jo,
    streamContents: () => tx,
    streamReferences: () => Pg
  })
  function Mk(t) {
    for (let [e, r] of Object.entries(t))
      e.startsWith('$') ||
        (Array.isArray(r)
          ? r.forEach((n, i) => {
              si(n) && ((n.$container = t), (n.$containerProperty = e), (n.$containerIndex = i))
            })
          : si(r) && ((r.$container = t), (r.$containerProperty = e)))
  }
  function hp(t, e) {
    let r = t
    for (; r; ) {
      if (e(r)) return r
      r = r.$container
    }
  }
  function ABe(t, e) {
    let r = t
    for (; r; ) {
      if (e(r)) return !0
      r = r.$container
    }
    return !1
  }
  function $a(t) {
    let r = ex(t).$document
    if (!r) throw new Error('AST node has no document.')
    return r
  }
  function ex(t) {
    for (; t.$container; ) t = t.$container
    return t
  }
  function tx(t, e) {
    if (!t) throw new Error('Node must be an AstNode.')
    let r = e?.range
    return new co(
      () => ({ keys: Object.keys(t), keyIndex: 0, arrayIndex: 0 }),
      n => {
        for (; n.keyIndex < n.keys.length; ) {
          let i = n.keys[n.keyIndex]
          if (!i.startsWith('$')) {
            let a = t[i]
            if (si(a)) {
              if ((n.keyIndex++, DN(a, r))) return { done: !1, value: a }
            } else if (Array.isArray(a)) {
              for (; n.arrayIndex < a.length; ) {
                let s = n.arrayIndex++,
                  l = a[s]
                if (si(l) && DN(l, r)) return { done: !1, value: l }
              }
              n.arrayIndex = 0
            }
          }
          n.keyIndex++
        }
        return Ba
      }
    )
  }
  function Bc(t, e) {
    if (!t) throw new Error('Root node must be an AstNode.')
    return new Mc(t, r => tx(r, e))
  }
  function jo(t, e) {
    if (t) {
      if (e?.range && !DN(t, e.range)) return new Mc(t, () => [])
    } else throw new Error('Root node must be an AstNode.')
    return new Mc(t, r => tx(r, e), { includeRoot: !0 })
  }
  function DN(t, e) {
    var r
    if (!e) return !0
    let n = (r = t.$cstNode) === null || r === void 0 ? void 0 : r.range
    return n ? cN(n, e) : !1
  }
  function Pg(t) {
    return new co(
      () => ({ keys: Object.keys(t), keyIndex: 0, arrayIndex: 0 }),
      e => {
        for (; e.keyIndex < e.keys.length; ) {
          let r = e.keys[e.keyIndex]
          if (!r.startsWith('$')) {
            let n = t[r]
            if (ya(n)) return e.keyIndex++, { done: !1, value: { reference: n, container: t, property: r } }
            if (Array.isArray(n)) {
              for (; e.arrayIndex < n.length; ) {
                let i = e.arrayIndex++,
                  a = n[i]
                if (ya(a)) return { done: !1, value: { reference: a, container: t, property: r, index: i } }
              }
              e.arrayIndex = 0
            }
          }
          e.keyIndex++
        }
        return Ba
      }
    )
  }
  function _Be(t, e = $a(t).parseResult.value) {
    let r = []
    return (
      jo(e).forEach(n => {
        Pg(n).forEach(i => {
          i.reference.ref === t && r.push(i.reference)
        })
      }),
      en(r)
    )
  }
  function RN(t, e) {
    let r = t.getTypeMetaData(e.$type),
      n = e
    for (let i of r.properties) i.defaultValue !== void 0 && n[i.name] === void 0 && (n[i.name] = Lse(i.defaultValue))
  }
  function Lse(t) {
    return Array.isArray(t) ? [...t.map(Lse)] : t
  }
  function LN(t, e) {
    let r = { $type: t.$type }
    for (let [n, i] of Object.entries(t))
      if (!n.startsWith('$'))
        if (si(i)) r[n] = LN(i, e)
        else if (ya(i)) r[n] = e(r, n, i.$refNode, i.$refText)
        else if (Array.isArray(i)) {
          let a = []
          for (let s of i) si(s) ? a.push(LN(s, e)) : ya(s) ? a.push(e(r, n, s.$refNode, s.$refText)) : a.push(s)
          r[n] = a
        } else r[n] = i
    return Mk(r), r
  }
  var cs = N(() => {
    'use strict'
    Il()
    Gs()
    Ol()
    o(Mk, 'linkContentToContainer')
    o(hp, 'getContainerOfType')
    o(ABe, 'hasContainerOfType')
    o($a, 'getDocument')
    o(ex, 'findRootNode')
    o(tx, 'streamContents')
    o(Bc, 'streamAllContents')
    o(jo, 'streamAst')
    o(DN, 'isAstNodeInRange')
    o(Pg, 'streamReferences')
    o(_Be, 'findLocalReferences')
    o(RN, 'assignMandatoryProperties')
    o(Lse, 'copyDefaultValue')
    o(LN, 'copyAstNode')
  })
  function sr(t) {
    return t.charCodeAt(0)
  }
  function Ok(t, e) {
    Array.isArray(t)
      ? t.forEach(function (r) {
          e.push(r)
        })
      : e.push(t)
  }
  function Bg(t, e) {
    if (t[e] === !0) throw 'duplicate flag ' + e
    let r = t[e]
    t[e] = !0
  }
  function fp(t) {
    if (t === void 0) throw Error('Internal Error - Should never get here!')
    return !0
  }
  function rx() {
    throw Error('Internal Error - Should never get here!')
  }
  function NN(t) {
    return t.type === 'Character'
  }
  var MN = N(() => {
    'use strict'
    o(sr, 'cc')
    o(Ok, 'insertToSet')
    o(Bg, 'addFlag')
    o(fp, 'ASSERT_EXISTS')
    o(rx, 'ASSERT_NEVER_REACH_HERE')
    o(NN, 'isCharacter')
  })
  var nx,
    ix,
    IN,
    Rse = N(() => {
      'use strict'
      MN()
      nx = []
      for (let t = sr('0'); t <= sr('9'); t++) nx.push(t)
      ix = [sr('_')].concat(nx)
      for (let t = sr('a'); t <= sr('z'); t++) ix.push(t)
      for (let t = sr('A'); t <= sr('Z'); t++) ix.push(t)
      IN = [
        sr(' '),
        sr('\f'),
        sr(`
`),
        sr('\r'),
        sr('	'),
        sr('\v'),
        sr('	'),
        sr('\xA0'),
        sr('\u1680'),
        sr('\u2000'),
        sr('\u2001'),
        sr('\u2002'),
        sr('\u2003'),
        sr('\u2004'),
        sr('\u2005'),
        sr('\u2006'),
        sr('\u2007'),
        sr('\u2008'),
        sr('\u2009'),
        sr('\u200A'),
        sr('\u2028'),
        sr('\u2029'),
        sr('\u202F'),
        sr('\u205F'),
        sr('\u3000'),
        sr('\uFEFF')
      ]
    })
  var DBe,
    Pk,
    LBe,
    dp,
    Nse = N(() => {
      'use strict'
      MN()
      Rse()
      ;(DBe = /[0-9a-fA-F]/),
        (Pk = /[0-9]/),
        (LBe = /[1-9]/),
        (dp = class {
          static {
            o(this, 'RegExpParser')
          }
          constructor() {
            ;(this.idx = 0), (this.input = ''), (this.groupIdx = 0)
          }
          saveState() {
            return { idx: this.idx, input: this.input, groupIdx: this.groupIdx }
          }
          restoreState(e) {
            ;(this.idx = e.idx), (this.input = e.input), (this.groupIdx = e.groupIdx)
          }
          pattern(e) {
            ;(this.idx = 0), (this.input = e), (this.groupIdx = 0), this.consumeChar('/')
            let r = this.disjunction()
            this.consumeChar('/')
            let n = { type: 'Flags', loc: { begin: this.idx, end: e.length }, global: !1, ignoreCase: !1, multiLine: !1, unicode: !1, sticky: !1 }
            for (; this.isRegExpFlag(); )
              switch (this.popChar()) {
                case 'g':
                  Bg(n, 'global')
                  break
                case 'i':
                  Bg(n, 'ignoreCase')
                  break
                case 'm':
                  Bg(n, 'multiLine')
                  break
                case 'u':
                  Bg(n, 'unicode')
                  break
                case 'y':
                  Bg(n, 'sticky')
                  break
              }
            if (this.idx !== this.input.length) throw Error('Redundant input: ' + this.input.substring(this.idx))
            return { type: 'Pattern', flags: n, value: r, loc: this.loc(0) }
          }
          disjunction() {
            let e = [],
              r = this.idx
            for (e.push(this.alternative()); this.peekChar() === '|'; ) this.consumeChar('|'), e.push(this.alternative())
            return { type: 'Disjunction', value: e, loc: this.loc(r) }
          }
          alternative() {
            let e = [],
              r = this.idx
            for (; this.isTerm(); ) e.push(this.term())
            return { type: 'Alternative', value: e, loc: this.loc(r) }
          }
          term() {
            return this.isAssertion() ? this.assertion() : this.atom()
          }
          assertion() {
            let e = this.idx
            switch (this.popChar()) {
              case '^':
                return { type: 'StartAnchor', loc: this.loc(e) }
              case '$':
                return { type: 'EndAnchor', loc: this.loc(e) }
              case '\\':
                switch (this.popChar()) {
                  case 'b':
                    return { type: 'WordBoundary', loc: this.loc(e) }
                  case 'B':
                    return { type: 'NonWordBoundary', loc: this.loc(e) }
                }
                throw Error('Invalid Assertion Escape')
              case '(':
                this.consumeChar('?')
                let r
                switch (this.popChar()) {
                  case '=':
                    r = 'Lookahead'
                    break
                  case '!':
                    r = 'NegativeLookahead'
                    break
                }
                fp(r)
                let n = this.disjunction()
                return this.consumeChar(')'), { type: r, value: n, loc: this.loc(e) }
            }
            return rx()
          }
          quantifier(e = !1) {
            let r,
              n = this.idx
            switch (this.popChar()) {
              case '*':
                r = { atLeast: 0, atMost: 1 / 0 }
                break
              case '+':
                r = { atLeast: 1, atMost: 1 / 0 }
                break
              case '?':
                r = { atLeast: 0, atMost: 1 }
                break
              case '{':
                let i = this.integerIncludingZero()
                switch (this.popChar()) {
                  case '}':
                    r = { atLeast: i, atMost: i }
                    break
                  case ',':
                    let a
                    this.isDigit() ? ((a = this.integerIncludingZero()), (r = { atLeast: i, atMost: a })) : (r = { atLeast: i, atMost: 1 / 0 }), this.consumeChar('}')
                    break
                }
                if (e === !0 && r === void 0) return
                fp(r)
                break
            }
            if (!(e === !0 && r === void 0) && fp(r))
              return this.peekChar(0) === '?' ? (this.consumeChar('?'), (r.greedy = !1)) : (r.greedy = !0), (r.type = 'Quantifier'), (r.loc = this.loc(n)), r
          }
          atom() {
            let e,
              r = this.idx
            switch (this.peekChar()) {
              case '.':
                e = this.dotAll()
                break
              case '\\':
                e = this.atomEscape()
                break
              case '[':
                e = this.characterClass()
                break
              case '(':
                e = this.group()
                break
            }
            return (
              e === void 0 && this.isPatternCharacter() && (e = this.patternCharacter()),
              fp(e) ? ((e.loc = this.loc(r)), this.isQuantifier() && (e.quantifier = this.quantifier()), e) : rx()
            )
          }
          dotAll() {
            return (
              this.consumeChar('.'),
              {
                type: 'Set',
                complement: !0,
                value: [
                  sr(`
`),
                  sr('\r'),
                  sr('\u2028'),
                  sr('\u2029')
                ]
              }
            )
          }
          atomEscape() {
            switch ((this.consumeChar('\\'), this.peekChar())) {
              case '1':
              case '2':
              case '3':
              case '4':
              case '5':
              case '6':
              case '7':
              case '8':
              case '9':
                return this.decimalEscapeAtom()
              case 'd':
              case 'D':
              case 's':
              case 'S':
              case 'w':
              case 'W':
                return this.characterClassEscape()
              case 'f':
              case 'n':
              case 'r':
              case 't':
              case 'v':
                return this.controlEscapeAtom()
              case 'c':
                return this.controlLetterEscapeAtom()
              case '0':
                return this.nulCharacterAtom()
              case 'x':
                return this.hexEscapeSequenceAtom()
              case 'u':
                return this.regExpUnicodeEscapeSequenceAtom()
              default:
                return this.identityEscapeAtom()
            }
          }
          decimalEscapeAtom() {
            return { type: 'GroupBackReference', value: this.positiveInteger() }
          }
          characterClassEscape() {
            let e,
              r = !1
            switch (this.popChar()) {
              case 'd':
                e = nx
                break
              case 'D':
                ;(e = nx), (r = !0)
                break
              case 's':
                e = IN
                break
              case 'S':
                ;(e = IN), (r = !0)
                break
              case 'w':
                e = ix
                break
              case 'W':
                ;(e = ix), (r = !0)
                break
            }
            return fp(e) ? { type: 'Set', value: e, complement: r } : rx()
          }
          controlEscapeAtom() {
            let e
            switch (this.popChar()) {
              case 'f':
                e = sr('\f')
                break
              case 'n':
                e = sr(`
`)
                break
              case 'r':
                e = sr('\r')
                break
              case 't':
                e = sr('	')
                break
              case 'v':
                e = sr('\v')
                break
            }
            return fp(e) ? { type: 'Character', value: e } : rx()
          }
          controlLetterEscapeAtom() {
            this.consumeChar('c')
            let e = this.popChar()
            if (/[a-zA-Z]/.test(e) === !1) throw Error('Invalid ')
            return { type: 'Character', value: e.toUpperCase().charCodeAt(0) - 64 }
          }
          nulCharacterAtom() {
            return this.consumeChar('0'), { type: 'Character', value: sr('\0') }
          }
          hexEscapeSequenceAtom() {
            return this.consumeChar('x'), this.parseHexDigits(2)
          }
          regExpUnicodeEscapeSequenceAtom() {
            return this.consumeChar('u'), this.parseHexDigits(4)
          }
          identityEscapeAtom() {
            let e = this.popChar()
            return { type: 'Character', value: sr(e) }
          }
          classPatternCharacterAtom() {
            switch (this.peekChar()) {
              case `
`:
              case '\r':
              case '\u2028':
              case '\u2029':
              case '\\':
              case ']':
                throw Error('TBD')
              default:
                let e = this.popChar()
                return { type: 'Character', value: sr(e) }
            }
          }
          characterClass() {
            let e = [],
              r = !1
            for (this.consumeChar('['), this.peekChar(0) === '^' && (this.consumeChar('^'), (r = !0)); this.isClassAtom(); ) {
              let n = this.classAtom(),
                i = n.type === 'Character'
              if (NN(n) && this.isRangeDash()) {
                this.consumeChar('-')
                let a = this.classAtom(),
                  s = a.type === 'Character'
                if (NN(a)) {
                  if (a.value < n.value) throw Error('Range out of order in character class')
                  e.push({ from: n.value, to: a.value })
                } else Ok(n.value, e), e.push(sr('-')), Ok(a.value, e)
              } else Ok(n.value, e)
            }
            return this.consumeChar(']'), { type: 'Set', complement: r, value: e }
          }
          classAtom() {
            switch (this.peekChar()) {
              case ']':
              case `
`:
              case '\r':
              case '\u2028':
              case '\u2029':
                throw Error('TBD')
              case '\\':
                return this.classEscape()
              default:
                return this.classPatternCharacterAtom()
            }
          }
          classEscape() {
            switch ((this.consumeChar('\\'), this.peekChar())) {
              case 'b':
                return this.consumeChar('b'), { type: 'Character', value: sr('\b') }
              case 'd':
              case 'D':
              case 's':
              case 'S':
              case 'w':
              case 'W':
                return this.characterClassEscape()
              case 'f':
              case 'n':
              case 'r':
              case 't':
              case 'v':
                return this.controlEscapeAtom()
              case 'c':
                return this.controlLetterEscapeAtom()
              case '0':
                return this.nulCharacterAtom()
              case 'x':
                return this.hexEscapeSequenceAtom()
              case 'u':
                return this.regExpUnicodeEscapeSequenceAtom()
              default:
                return this.identityEscapeAtom()
            }
          }
          group() {
            let e = !0
            switch ((this.consumeChar('('), this.peekChar(0))) {
              case '?':
                this.consumeChar('?'), this.consumeChar(':'), (e = !1)
                break
              default:
                this.groupIdx++
                break
            }
            let r = this.disjunction()
            this.consumeChar(')')
            let n = { type: 'Group', capturing: e, value: r }
            return e && (n.idx = this.groupIdx), n
          }
          positiveInteger() {
            let e = this.popChar()
            if (LBe.test(e) === !1) throw Error('Expecting a positive integer')
            for (; Pk.test(this.peekChar(0)); ) e += this.popChar()
            return parseInt(e, 10)
          }
          integerIncludingZero() {
            let e = this.popChar()
            if (Pk.test(e) === !1) throw Error('Expecting an integer')
            for (; Pk.test(this.peekChar(0)); ) e += this.popChar()
            return parseInt(e, 10)
          }
          patternCharacter() {
            let e = this.popChar()
            switch (e) {
              case `
`:
              case '\r':
              case '\u2028':
              case '\u2029':
              case '^':
              case '$':
              case '\\':
              case '.':
              case '*':
              case '+':
              case '?':
              case '(':
              case ')':
              case '[':
              case '|':
                throw Error('TBD')
              default:
                return { type: 'Character', value: sr(e) }
            }
          }
          isRegExpFlag() {
            switch (this.peekChar(0)) {
              case 'g':
              case 'i':
              case 'm':
              case 'u':
              case 'y':
                return !0
              default:
                return !1
            }
          }
          isRangeDash() {
            return this.peekChar() === '-' && this.isClassAtom(1)
          }
          isDigit() {
            return Pk.test(this.peekChar(0))
          }
          isClassAtom(e = 0) {
            switch (this.peekChar(e)) {
              case ']':
              case `
`:
              case '\r':
              case '\u2028':
              case '\u2029':
                return !1
              default:
                return !0
            }
          }
          isTerm() {
            return this.isAtom() || this.isAssertion()
          }
          isAtom() {
            if (this.isPatternCharacter()) return !0
            switch (this.peekChar(0)) {
              case '.':
              case '\\':
              case '[':
              case '(':
                return !0
              default:
                return !1
            }
          }
          isAssertion() {
            switch (this.peekChar(0)) {
              case '^':
              case '$':
                return !0
              case '\\':
                switch (this.peekChar(1)) {
                  case 'b':
                  case 'B':
                    return !0
                  default:
                    return !1
                }
              case '(':
                return this.peekChar(1) === '?' && (this.peekChar(2) === '=' || this.peekChar(2) === '!')
              default:
                return !1
            }
          }
          isQuantifier() {
            let e = this.saveState()
            try {
              return this.quantifier(!0) !== void 0
            } catch {
              return !1
            } finally {
              this.restoreState(e)
            }
          }
          isPatternCharacter() {
            switch (this.peekChar()) {
              case '^':
              case '$':
              case '\\':
              case '.':
              case '*':
              case '+':
              case '?':
              case '(':
              case ')':
              case '[':
              case '|':
              case '/':
              case `
`:
              case '\r':
              case '\u2028':
              case '\u2029':
                return !1
              default:
                return !0
            }
          }
          parseHexDigits(e) {
            let r = ''
            for (let i = 0; i < e; i++) {
              let a = this.popChar()
              if (DBe.test(a) === !1) throw Error('Expecting a HexDecimal digits')
              r += a
            }
            return { type: 'Character', value: parseInt(r, 16) }
          }
          peekChar(e = 0) {
            return this.input[this.idx + e]
          }
          popChar() {
            let e = this.peekChar(0)
            return this.consumeChar(void 0), e
          }
          consumeChar(e) {
            if (e !== void 0 && this.input[this.idx] !== e) throw Error("Expected: '" + e + "' but found: '" + this.input[this.idx] + "' at offset: " + this.idx)
            if (this.idx >= this.input.length) throw Error('Unexpected end of input')
            this.idx++
          }
          loc(e) {
            return { begin: e, end: this.idx }
          }
        })
    })
  var Fc,
    Mse = N(() => {
      'use strict'
      Fc = class {
        static {
          o(this, 'BaseRegExpVisitor')
        }
        visitChildren(e) {
          for (let r in e) {
            let n = e[r]
            e.hasOwnProperty(r) &&
              (n.type !== void 0
                ? this.visit(n)
                : Array.isArray(n) &&
                  n.forEach(i => {
                    this.visit(i)
                  }, this))
          }
        }
        visit(e) {
          switch (e.type) {
            case 'Pattern':
              this.visitPattern(e)
              break
            case 'Flags':
              this.visitFlags(e)
              break
            case 'Disjunction':
              this.visitDisjunction(e)
              break
            case 'Alternative':
              this.visitAlternative(e)
              break
            case 'StartAnchor':
              this.visitStartAnchor(e)
              break
            case 'EndAnchor':
              this.visitEndAnchor(e)
              break
            case 'WordBoundary':
              this.visitWordBoundary(e)
              break
            case 'NonWordBoundary':
              this.visitNonWordBoundary(e)
              break
            case 'Lookahead':
              this.visitLookahead(e)
              break
            case 'NegativeLookahead':
              this.visitNegativeLookahead(e)
              break
            case 'Character':
              this.visitCharacter(e)
              break
            case 'Set':
              this.visitSet(e)
              break
            case 'Group':
              this.visitGroup(e)
              break
            case 'GroupBackReference':
              this.visitGroupBackReference(e)
              break
            case 'Quantifier':
              this.visitQuantifier(e)
              break
          }
          this.visitChildren(e)
        }
        visitPattern(e) {}
        visitFlags(e) {}
        visitDisjunction(e) {}
        visitAlternative(e) {}
        visitStartAnchor(e) {}
        visitEndAnchor(e) {}
        visitWordBoundary(e) {}
        visitNonWordBoundary(e) {}
        visitLookahead(e) {}
        visitNegativeLookahead(e) {}
        visitCharacter(e) {}
        visitSet(e) {}
        visitGroup(e) {}
        visitGroupBackReference(e) {}
        visitQuantifier(e) {}
      }
    })
  var ax = N(() => {
    'use strict'
    Nse()
    Mse()
  })
  var Bk = {}
  ur(Bk, {
    NEWLINE_REGEXP: () => PN,
    escapeRegExp: () => mp,
    getCaseInsensitivePattern: () => FN,
    getTerminalParts: () => RBe,
    isMultilineComment: () => BN,
    isWhitespace: () => Fg,
    partialMatches: () => $N,
    partialRegExp: () => Pse,
    whitespaceCharacters: () => Ose
  })
  function RBe(t) {
    try {
      typeof t != 'string' && (t = t.source), (t = `/${t}/`)
      let e = Ise.pattern(t),
        r = []
      for (let n of e.value.value) pp.reset(t), pp.visit(n), r.push({ start: pp.startRegexp, end: pp.endRegex })
      return r
    } catch {
      return []
    }
  }
  function BN(t) {
    try {
      return typeof t == 'string' && (t = new RegExp(t)), (t = t.toString()), pp.reset(t), pp.visit(Ise.pattern(t)), pp.multiline
    } catch {
      return !1
    }
  }
  function Fg(t) {
    let e = typeof t == 'string' ? new RegExp(t) : t
    return Ose.some(r => e.test(r))
  }
  function mp(t) {
    return t.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')
  }
  function FN(t) {
    return Array.prototype.map.call(t, e => (/\w/.test(e) ? `[${e.toLowerCase()}${e.toUpperCase()}]` : mp(e))).join('')
  }
  function $N(t, e) {
    let r = Pse(t),
      n = e.match(r)
    return !!n && n[0].length > 0
  }
  function Pse(t) {
    typeof t == 'string' && (t = new RegExp(t))
    let e = t,
      r = t.source,
      n = 0
    function i() {
      let a = '',
        s
      function l(h) {
        ;(a += r.substr(n, h)), (n += h)
      }
      o(l, 'appendRaw')
      function u(h) {
        ;(a += '(?:' + r.substr(n, h) + '|$)'), (n += h)
      }
      for (o(u, 'appendOptional'); n < r.length; )
        switch (r[n]) {
          case '\\':
            switch (r[n + 1]) {
              case 'c':
                u(3)
                break
              case 'x':
                u(4)
                break
              case 'u':
                e.unicode ? (r[n + 2] === '{' ? u(r.indexOf('}', n) - n + 1) : u(6)) : u(2)
                break
              case 'p':
              case 'P':
                e.unicode ? u(r.indexOf('}', n) - n + 1) : u(2)
                break
              case 'k':
                u(r.indexOf('>', n) - n + 1)
                break
              default:
                u(2)
                break
            }
            break
          case '[':
            ;(s = /\[(?:\\.|.)*?\]/g), (s.lastIndex = n), (s = s.exec(r) || []), u(s[0].length)
            break
          case '|':
          case '^':
          case '$':
          case '*':
          case '+':
          case '?':
            l(1)
            break
          case '{':
            ;(s = /\{\d+,?\d*\}/g), (s.lastIndex = n), (s = s.exec(r)), s ? l(s[0].length) : u(1)
            break
          case '(':
            if (r[n + 1] === '?')
              switch (r[n + 2]) {
                case ':':
                  ;(a += '(?:'), (n += 3), (a += i() + '|$)')
                  break
                case '=':
                  ;(a += '(?='), (n += 3), (a += i() + ')')
                  break
                case '!':
                  ;(s = n), (n += 3), i(), (a += r.substr(s, n - s))
                  break
                case '<':
                  switch (r[n + 3]) {
                    case '=':
                    case '!':
                      ;(s = n), (n += 4), i(), (a += r.substr(s, n - s))
                      break
                    default:
                      l(r.indexOf('>', n) - n + 1), (a += i() + '|$)')
                      break
                  }
                  break
              }
            else l(1), (a += i() + '|$)')
            break
          case ')':
            return ++n, a
          default:
            u(1)
            break
        }
      return a
    }
    return o(i, 'process'), new RegExp(i(), t.flags)
  }
  var PN,
    Ise,
    ON,
    pp,
    Ose,
    $g = N(() => {
      'use strict'
      ax()
      ;(PN = /\r?\n/gm),
        (Ise = new dp()),
        (ON = class extends Fc {
          static {
            o(this, 'TerminalRegExpVisitor')
          }
          constructor() {
            super(...arguments), (this.isStarting = !0), (this.endRegexpStack = []), (this.multiline = !1)
          }
          get endRegex() {
            return this.endRegexpStack.join('')
          }
          reset(e) {
            ;(this.multiline = !1), (this.regex = e), (this.startRegexp = ''), (this.isStarting = !0), (this.endRegexpStack = [])
          }
          visitGroup(e) {
            e.quantifier && ((this.isStarting = !1), (this.endRegexpStack = []))
          }
          visitCharacter(e) {
            let r = String.fromCharCode(e.value)
            if (
              (!this.multiline &&
                r ===
                  `
` &&
                (this.multiline = !0),
              e.quantifier)
            )
              (this.isStarting = !1), (this.endRegexpStack = [])
            else {
              let n = mp(r)
              this.endRegexpStack.push(n), this.isStarting && (this.startRegexp += n)
            }
          }
          visitSet(e) {
            if (!this.multiline) {
              let r = this.regex.substring(e.loc.begin, e.loc.end),
                n = new RegExp(r)
              this.multiline = !!`
`.match(n)
            }
            if (e.quantifier) (this.isStarting = !1), (this.endRegexpStack = [])
            else {
              let r = this.regex.substring(e.loc.begin, e.loc.end)
              this.endRegexpStack.push(r), this.isStarting && (this.startRegexp += r)
            }
          }
          visitChildren(e) {
            ;(e.type === 'Group' && e.quantifier) || super.visitChildren(e)
          }
        }),
        (pp = new ON())
      o(RBe, 'getTerminalParts')
      o(BN, 'isMultilineComment')
      Ose = `\f
\r	\v \xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF`.split('')
      o(Fg, 'isWhitespace')
      o(mp, 'escapeRegExp')
      o(FN, 'getCaseInsensitivePattern')
      o($N, 'partialMatches')
      o(Pse, 'partialRegExp')
    })
  var $k = {}
  ur($k, {
    findAssignment: () => XN,
    findNameAssignment: () => Fk,
    findNodeForKeyword: () => qN,
    findNodeForProperty: () => ox,
    findNodesForKeyword: () => NBe,
    findNodesForKeywordInternal: () => YN,
    findNodesForProperty: () => HN,
    getActionAtElement: () => Gse,
    getActionType: () => Use,
    getAllReachableRules: () => sx,
    getCrossReferenceTerminal: () => VN,
    getEntryRule: () => Bse,
    getExplicitRuleType: () => zg,
    getHiddenRules: () => Fse,
    getRuleType: () => jN,
    getRuleTypeName: () => BBe,
    getTypeName: () => cx,
    isArrayCardinality: () => IBe,
    isArrayOperator: () => OBe,
    isCommentTerminal: () => UN,
    isDataType: () => PBe,
    isDataTypeRule: () => lx,
    isOptionalCardinality: () => MBe,
    terminalRegex: () => Gg
  })
  function Bse(t) {
    return t.rules.find(e => Fa(e) && e.entry)
  }
  function Fse(t) {
    return t.rules.filter(e => uo(e) && e.hidden)
  }
  function sx(t, e) {
    let r = new Set(),
      n = Bse(t)
    if (!n) return new Set(t.rules)
    let i = [n].concat(Fse(t))
    for (let s of i) $se(s, r, e)
    let a = new Set()
    for (let s of t.rules) (r.has(s.name) || (uo(s) && s.hidden)) && a.add(s)
    return a
  }
  function $se(t, e, r) {
    e.add(t.name),
      Bc(t).forEach(n => {
        if (Bl(n) || (r && Rk(n))) {
          let i = n.rule.ref
          i && !e.has(i.name) && $se(i, e, r)
        }
      })
  }
  function VN(t) {
    if (t.terminal) return t.terminal
    if (t.type.ref) {
      let e = Fk(t.type.ref)
      return e?.terminal
    }
  }
  function UN(t) {
    return t.hidden && !Fg(Gg(t))
  }
  function HN(t, e) {
    return !t || !e ? [] : WN(t, e, t.astNode, !0)
  }
  function ox(t, e, r) {
    if (!t || !e) return
    let n = WN(t, e, t.astNode, !0)
    if (n.length !== 0) return r !== void 0 ? (r = Math.max(0, Math.min(r, n.length - 1))) : (r = 0), n[r]
  }
  function WN(t, e, r, n) {
    if (!n) {
      let i = hp(t.grammarSource, Pl)
      if (i && i.feature === e) return [t]
    }
    return Ml(t) && t.astNode === r ? t.content.flatMap(i => WN(i, e, r, !1)) : []
  }
  function NBe(t, e) {
    return t ? YN(t, e, t?.astNode) : []
  }
  function qN(t, e, r) {
    if (!t) return
    let n = YN(t, e, t?.astNode)
    if (n.length !== 0) return r !== void 0 ? (r = Math.max(0, Math.min(r, n.length - 1))) : (r = 0), n[r]
  }
  function YN(t, e, r) {
    if (t.astNode !== r) return []
    if (Xo(t.grammarSource) && t.grammarSource.value === e) return [t]
    let n = sp(t).iterator(),
      i,
      a = []
    do
      if (((i = n.next()), !i.done)) {
        let s = i.value
        s.astNode === r ? Xo(s.grammarSource) && s.grammarSource.value === e && a.push(s) : n.prune()
      }
    while (!i.done)
    return a
  }
  function XN(t) {
    var e
    let r = t.astNode
    for (; r === ((e = t.container) === null || e === void 0 ? void 0 : e.astNode); ) {
      let n = hp(t.grammarSource, Pl)
      if (n) return n
      t = t.container
    }
  }
  function Fk(t) {
    let e = t
    return Ak(e) && ($u(e.$container) ? (e = e.$container.$container) : Fa(e.$container) ? (e = e.$container) : Oc(e.$container)), zse(t, e, new Map())
  }
  function zse(t, e, r) {
    var n
    function i(a, s) {
      let l
      return hp(a, Pl) || (l = zse(s, s, r)), r.set(t, l), l
    }
    if ((o(i, 'go'), r.has(t))) return r.get(t)
    r.set(t, void 0)
    for (let a of Bc(e)) {
      if (Pl(a) && a.feature.toLowerCase() === 'name') return r.set(t, a), a
      if (Bl(a) && Fa(a.rule.ref)) return i(a, a.rule.ref)
      if (Dk(a) && !((n = a.typeRef) === null || n === void 0) && n.ref) return i(a, a.typeRef.ref)
    }
  }
  function Gse(t) {
    let e = t.$container
    if (ff(e)) {
      let r = e.elements,
        n = r.indexOf(t)
      for (let i = n - 1; i >= 0; i--) {
        let a = r[i]
        if ($u(a)) return a
        {
          let s = Bc(r[i]).find($u)
          if (s) return s
        }
      }
    }
    if (Q2(e)) return Gse(e)
  }
  function MBe(t, e) {
    return t === '?' || t === '*' || (ff(e) && !!e.guardCondition)
  }
  function IBe(t) {
    return t === '*' || t === '+'
  }
  function OBe(t) {
    return t === '+='
  }
  function lx(t) {
    return Vse(t, new Set())
  }
  function Vse(t, e) {
    if (e.has(t)) return !0
    e.add(t)
    for (let r of Bc(t))
      if (Bl(r)) {
        if (!r.rule.ref || (Fa(r.rule.ref) && !Vse(r.rule.ref, e))) return !1
      } else {
        if (Pl(r)) return !1
        if ($u(r)) return !1
      }
    return !!t.definition
  }
  function PBe(t) {
    return GN(t.type, new Set())
  }
  function GN(t, e) {
    if (e.has(t)) return !0
    if ((e.add(t), fN(t))) return !1
    if (vN(t)) return !1
    if (bN(t)) return t.types.every(r => GN(r, e))
    if (Dk(t)) {
      if (t.primitiveType !== void 0) return !0
      if (t.stringType !== void 0) return !0
      if (t.typeRef !== void 0) {
        let r = t.typeRef.ref
        return Z2(r) ? GN(r.type, e) : !1
      } else return !1
    } else return !1
  }
  function zg(t) {
    if (t.inferredType) return t.inferredType.name
    if (t.dataType) return t.dataType
    if (t.returnType) {
      let e = t.returnType.ref
      if (e) {
        if (Fa(e)) return e.name
        if (_k(e) || Z2(e)) return e.name
      }
    }
  }
  function cx(t) {
    var e
    if (Fa(t)) return lx(t) ? t.name : (e = zg(t)) !== null && e !== void 0 ? e : t.name
    if (_k(t) || Z2(t) || xN(t)) return t.name
    if ($u(t)) {
      let r = Use(t)
      if (r) return r
    } else if (Ak(t)) return t.name
    throw new Error('Cannot get name of Unknown Type')
  }
  function Use(t) {
    var e
    if (t.inferredType) return t.inferredType.name
    if (!((e = t.type) === null || e === void 0) && e.ref) return cx(t.type.ref)
  }
  function BBe(t) {
    var e, r, n
    return uo(t)
      ? (r = (e = t.type) === null || e === void 0 ? void 0 : e.name) !== null && r !== void 0
        ? r
        : 'string'
      : lx(t)
        ? t.name
        : (n = zg(t)) !== null && n !== void 0
          ? n
          : t.name
  }
  function jN(t) {
    var e, r, n
    return uo(t) ? ((r = (e = t.type) === null || e === void 0 ? void 0 : e.name) !== null && r !== void 0 ? r : 'string') : (n = zg(t)) !== null && n !== void 0 ? n : t.name
  }
  function Gg(t) {
    let e = { s: !1, i: !1, u: !1 },
      r = Vg(t.definition, e),
      n = Object.entries(e)
        .filter(([, i]) => i)
        .map(([i]) => i)
        .join('')
    return new RegExp(r, n)
  }
  function Vg(t, e) {
    if (SN(t)) return FBe(t)
    if (CN(t)) return $Be(t)
    if (TN(t)) return VBe(t)
    if (Rk(t)) {
      let r = t.rule.ref
      if (!r) throw new Error('Missing rule reference.')
      return zu(Vg(r.definition), { cardinality: t.cardinality, lookahead: t.lookahead })
    } else {
      if (kN(t)) return GBe(t)
      if (AN(t)) return zBe(t)
      if (EN(t)) {
        let r = t.regex.lastIndexOf('/'),
          n = t.regex.substring(1, r),
          i = t.regex.substring(r + 1)
        return e && ((e.i = i.includes('i')), (e.s = i.includes('s')), (e.u = i.includes('u'))), zu(n, { cardinality: t.cardinality, lookahead: t.lookahead, wrap: !1 })
      } else {
        if (_N(t)) return zu(KN, { cardinality: t.cardinality, lookahead: t.lookahead })
        throw new Error(`Invalid terminal element: ${t?.$type}`)
      }
    }
  }
  function FBe(t) {
    return zu(t.elements.map(e => Vg(e)).join('|'), { cardinality: t.cardinality, lookahead: t.lookahead })
  }
  function $Be(t) {
    return zu(t.elements.map(e => Vg(e)).join(''), { cardinality: t.cardinality, lookahead: t.lookahead })
  }
  function zBe(t) {
    return zu(`${KN}*?${Vg(t.terminal)}`, { cardinality: t.cardinality, lookahead: t.lookahead })
  }
  function GBe(t) {
    return zu(`(?!${Vg(t.terminal)})${KN}*?`, { cardinality: t.cardinality, lookahead: t.lookahead })
  }
  function VBe(t) {
    return t.right
      ? zu(`[${zN(t.left)}-${zN(t.right)}]`, { cardinality: t.cardinality, lookahead: t.lookahead, wrap: !1 })
      : zu(zN(t.left), { cardinality: t.cardinality, lookahead: t.lookahead, wrap: !1 })
  }
  function zN(t) {
    return mp(t.value)
  }
  function zu(t, e) {
    var r
    return (e.wrap !== !1 || e.lookahead) && (t = `(${(r = e.lookahead) !== null && r !== void 0 ? r : ''}${t})`), e.cardinality ? `${t}${e.cardinality}` : t
  }
  var KN,
    Fl = N(() => {
      'use strict'
      Sk()
      Pc()
      Il()
      cs()
      Ol()
      $g()
      o(Bse, 'getEntryRule')
      o(Fse, 'getHiddenRules')
      o(sx, 'getAllReachableRules')
      o($se, 'ruleDfs')
      o(VN, 'getCrossReferenceTerminal')
      o(UN, 'isCommentTerminal')
      o(HN, 'findNodesForProperty')
      o(ox, 'findNodeForProperty')
      o(WN, 'findNodesForPropertyInternal')
      o(NBe, 'findNodesForKeyword')
      o(qN, 'findNodeForKeyword')
      o(YN, 'findNodesForKeywordInternal')
      o(XN, 'findAssignment')
      o(Fk, 'findNameAssignment')
      o(zse, 'findNameAssignmentInternal')
      o(Gse, 'getActionAtElement')
      o(MBe, 'isOptionalCardinality')
      o(IBe, 'isArrayCardinality')
      o(OBe, 'isArrayOperator')
      o(lx, 'isDataTypeRule')
      o(Vse, 'isDataTypeRuleInternal')
      o(PBe, 'isDataType')
      o(GN, 'isDataTypeInternal')
      o(zg, 'getExplicitRuleType')
      o(cx, 'getTypeName')
      o(Use, 'getActionType')
      o(BBe, 'getRuleTypeName')
      o(jN, 'getRuleType')
      o(Gg, 'terminalRegex')
      KN = /[\s\S]/.source
      o(Vg, 'abstractElementToRegex')
      o(FBe, 'terminalAlternativesToRegex')
      o($Be, 'terminalGroupToRegex')
      o(zBe, 'untilTokenToRegex')
      o(GBe, 'negateTokenToRegex')
      o(VBe, 'characterRangeToRegex')
      o(zN, 'keywordToRegex')
      o(zu, 'withCardinality')
    })
  function QN(t) {
    let e = [],
      r = t.Grammar
    for (let n of r.rules) uo(n) && UN(n) && BN(Gg(n)) && e.push(n.name)
    return { multilineCommentRules: e, nameRegexp: kk }
  }
  var ZN = N(() => {
    'use strict'
    Ol()
    Fl()
    $g()
    Pc()
    o(QN, 'createGrammarConfig')
  })
  var JN = N(() => {
    'use strict'
  })
  function Ug(t) {
    console && console.error && console.error(`Error: ${t}`)
  }
  function ux(t) {
    console && console.warn && console.warn(`Warning: ${t}`)
  }
  var Hse = N(() => {
    'use strict'
    o(Ug, 'PRINT_ERROR')
    o(ux, 'PRINT_WARNING')
  })
  function hx(t) {
    let e = new Date().getTime(),
      r = t()
    return { time: new Date().getTime() - e, value: r }
  }
  var Wse = N(() => {
    'use strict'
    o(hx, 'timer')
  })
  function fx(t) {
    function e() {}
    o(e, 'FakeConstructor'), (e.prototype = t)
    let r = new e()
    function n() {
      return typeof r.bar
    }
    return o(n, 'fakeAccess'), n(), n(), t
    ;(0, eval)(t)
  }
  var qse = N(() => {
    'use strict'
    o(fx, 'toFastProperties')
  })
  var Hg = N(() => {
    'use strict'
    Hse()
    Wse()
    qse()
  })
  function UBe(t) {
    return HBe(t) ? t.LABEL : t.name
  }
  function HBe(t) {
    return Ti(t.LABEL) && t.LABEL !== ''
  }
  function zk(t) {
    return Je(t, Wg)
  }
  function Wg(t) {
    function e(r) {
      return Je(r, Wg)
    }
    if ((o(e, 'convertDefinition'), t instanceof on)) {
      let r = { type: 'NonTerminal', name: t.nonTerminalName, idx: t.idx }
      return Ti(t.label) && (r.label = t.label), r
    } else {
      if (t instanceof Dn) return { type: 'Alternative', definition: e(t.definition) }
      if (t instanceof ln) return { type: 'Option', idx: t.idx, definition: e(t.definition) }
      if (t instanceof Ln) return { type: 'RepetitionMandatory', idx: t.idx, definition: e(t.definition) }
      if (t instanceof Rn) return { type: 'RepetitionMandatoryWithSeparator', idx: t.idx, separator: Wg(new Er({ terminalType: t.separator })), definition: e(t.definition) }
      if (t instanceof Tn) return { type: 'RepetitionWithSeparator', idx: t.idx, separator: Wg(new Er({ terminalType: t.separator })), definition: e(t.definition) }
      if (t instanceof Pr) return { type: 'Repetition', idx: t.idx, definition: e(t.definition) }
      if (t instanceof wn) return { type: 'Alternation', idx: t.idx, definition: e(t.definition) }
      if (t instanceof Er) {
        let r = { type: 'Terminal', name: t.terminalType.name, label: UBe(t.terminalType), idx: t.idx }
        Ti(t.label) && (r.terminalLabel = t.label)
        let n = t.terminalType.PATTERN
        return t.terminalType.PATTERN && (r.pattern = Uo(n) ? n.source : n), r
      } else {
        if (t instanceof us) return { type: 'Rule', name: t.name, orgText: t.orgText, definition: e(t.definition) }
        throw Error('non exhaustive match')
      }
    }
  }
  var ho,
    on,
    us,
    Dn,
    ln,
    Ln,
    Rn,
    Pr,
    Tn,
    wn,
    Er,
    Gk = N(() => {
      'use strict'
      qt()
      o(UBe, 'tokenLabel')
      o(HBe, 'hasTokenLabel')
      ;(ho = class {
        static {
          o(this, 'AbstractProduction')
        }
        get definition() {
          return this._definition
        }
        set definition(e) {
          this._definition = e
        }
        constructor(e) {
          this._definition = e
        }
        accept(e) {
          e.visit(this),
            Ae(this.definition, r => {
              r.accept(e)
            })
        }
      }),
        (on = class extends ho {
          static {
            o(this, 'NonTerminal')
          }
          constructor(e) {
            super([]),
              (this.idx = 1),
              pa(
                this,
                zs(e, r => r !== void 0)
              )
          }
          set definition(e) {}
          get definition() {
            return this.referencedRule !== void 0 ? this.referencedRule.definition : []
          }
          accept(e) {
            e.visit(this)
          }
        }),
        (us = class extends ho {
          static {
            o(this, 'Rule')
          }
          constructor(e) {
            super(e.definition),
              (this.orgText = ''),
              pa(
                this,
                zs(e, r => r !== void 0)
              )
          }
        }),
        (Dn = class extends ho {
          static {
            o(this, 'Alternative')
          }
          constructor(e) {
            super(e.definition),
              (this.ignoreAmbiguities = !1),
              pa(
                this,
                zs(e, r => r !== void 0)
              )
          }
        }),
        (ln = class extends ho {
          static {
            o(this, 'Option')
          }
          constructor(e) {
            super(e.definition),
              (this.idx = 1),
              pa(
                this,
                zs(e, r => r !== void 0)
              )
          }
        }),
        (Ln = class extends ho {
          static {
            o(this, 'RepetitionMandatory')
          }
          constructor(e) {
            super(e.definition),
              (this.idx = 1),
              pa(
                this,
                zs(e, r => r !== void 0)
              )
          }
        }),
        (Rn = class extends ho {
          static {
            o(this, 'RepetitionMandatoryWithSeparator')
          }
          constructor(e) {
            super(e.definition),
              (this.idx = 1),
              pa(
                this,
                zs(e, r => r !== void 0)
              )
          }
        }),
        (Pr = class extends ho {
          static {
            o(this, 'Repetition')
          }
          constructor(e) {
            super(e.definition),
              (this.idx = 1),
              pa(
                this,
                zs(e, r => r !== void 0)
              )
          }
        }),
        (Tn = class extends ho {
          static {
            o(this, 'RepetitionWithSeparator')
          }
          constructor(e) {
            super(e.definition),
              (this.idx = 1),
              pa(
                this,
                zs(e, r => r !== void 0)
              )
          }
        }),
        (wn = class extends ho {
          static {
            o(this, 'Alternation')
          }
          get definition() {
            return this._definition
          }
          set definition(e) {
            this._definition = e
          }
          constructor(e) {
            super(e.definition),
              (this.idx = 1),
              (this.ignoreAmbiguities = !1),
              (this.hasPredicates = !1),
              pa(
                this,
                zs(e, r => r !== void 0)
              )
          }
        }),
        (Er = class {
          static {
            o(this, 'Terminal')
          }
          constructor(e) {
            ;(this.idx = 1),
              pa(
                this,
                zs(e, r => r !== void 0)
              )
          }
          accept(e) {
            e.visit(this)
          }
        })
      o(zk, 'serializeGrammar')
      o(Wg, 'serializeProduction')
    })
  var hs,
    Yse = N(() => {
      'use strict'
      Gk()
      hs = class {
        static {
          o(this, 'GAstVisitor')
        }
        visit(e) {
          let r = e
          switch (r.constructor) {
            case on:
              return this.visitNonTerminal(r)
            case Dn:
              return this.visitAlternative(r)
            case ln:
              return this.visitOption(r)
            case Ln:
              return this.visitRepetitionMandatory(r)
            case Rn:
              return this.visitRepetitionMandatoryWithSeparator(r)
            case Tn:
              return this.visitRepetitionWithSeparator(r)
            case Pr:
              return this.visitRepetition(r)
            case wn:
              return this.visitAlternation(r)
            case Er:
              return this.visitTerminal(r)
            case us:
              return this.visitRule(r)
            default:
              throw Error('non exhaustive match')
          }
        }
        visitNonTerminal(e) {}
        visitAlternative(e) {}
        visitOption(e) {}
        visitRepetition(e) {}
        visitRepetitionMandatory(e) {}
        visitRepetitionMandatoryWithSeparator(e) {}
        visitRepetitionWithSeparator(e) {}
        visitAlternation(e) {}
        visitTerminal(e) {}
        visitRule(e) {}
      }
    })
  function eM(t) {
    return t instanceof Dn || t instanceof ln || t instanceof Pr || t instanceof Ln || t instanceof Rn || t instanceof Tn || t instanceof Er || t instanceof us
  }
  function gp(t, e = []) {
    return t instanceof ln || t instanceof Pr || t instanceof Tn
      ? !0
      : t instanceof wn
        ? B2(t.definition, n => gp(n, e))
        : t instanceof on && Xn(e, t)
          ? !1
          : t instanceof ho
            ? (t instanceof on && e.push(t), Pa(t.definition, n => gp(n, e)))
            : !1
  }
  function tM(t) {
    return t instanceof wn
  }
  function Vs(t) {
    if (t instanceof on) return 'SUBRULE'
    if (t instanceof ln) return 'OPTION'
    if (t instanceof wn) return 'OR'
    if (t instanceof Ln) return 'AT_LEAST_ONE'
    if (t instanceof Rn) return 'AT_LEAST_ONE_SEP'
    if (t instanceof Tn) return 'MANY_SEP'
    if (t instanceof Pr) return 'MANY'
    if (t instanceof Er) return 'CONSUME'
    throw Error('non exhaustive match')
  }
  var Xse = N(() => {
    'use strict'
    qt()
    Gk()
    o(eM, 'isSequenceProd')
    o(gp, 'isOptionalProd')
    o(tM, 'isBranchingProd')
    o(Vs, 'getProductionDslName')
  })
  var fs = N(() => {
    'use strict'
    Gk()
    Yse()
    Xse()
  })
  function jse(t, e, r) {
    return [new ln({ definition: [new Er({ terminalType: t.separator })].concat(t.definition) })].concat(e, r)
  }
  var Gu,
    Vk = N(() => {
      'use strict'
      qt()
      fs()
      Gu = class {
        static {
          o(this, 'RestWalker')
        }
        walk(e, r = []) {
          Ae(e.definition, (n, i) => {
            let a = bi(e.definition, i + 1)
            if (n instanceof on) this.walkProdRef(n, a, r)
            else if (n instanceof Er) this.walkTerminal(n, a, r)
            else if (n instanceof Dn) this.walkFlat(n, a, r)
            else if (n instanceof ln) this.walkOption(n, a, r)
            else if (n instanceof Ln) this.walkAtLeastOne(n, a, r)
            else if (n instanceof Rn) this.walkAtLeastOneSep(n, a, r)
            else if (n instanceof Tn) this.walkManySep(n, a, r)
            else if (n instanceof Pr) this.walkMany(n, a, r)
            else if (n instanceof wn) this.walkOr(n, a, r)
            else throw Error('non exhaustive match')
          })
        }
        walkTerminal(e, r, n) {}
        walkProdRef(e, r, n) {}
        walkFlat(e, r, n) {
          let i = r.concat(n)
          this.walk(e, i)
        }
        walkOption(e, r, n) {
          let i = r.concat(n)
          this.walk(e, i)
        }
        walkAtLeastOne(e, r, n) {
          let i = [new ln({ definition: e.definition })].concat(r, n)
          this.walk(e, i)
        }
        walkAtLeastOneSep(e, r, n) {
          let i = jse(e, r, n)
          this.walk(e, i)
        }
        walkMany(e, r, n) {
          let i = [new ln({ definition: e.definition })].concat(r, n)
          this.walk(e, i)
        }
        walkManySep(e, r, n) {
          let i = jse(e, r, n)
          this.walk(e, i)
        }
        walkOr(e, r, n) {
          let i = r.concat(n)
          Ae(e.definition, a => {
            let s = new Dn({ definition: [a] })
            this.walk(s, i)
          })
        }
      }
      o(jse, 'restForRepetitionWithSeparator')
    })
  function yp(t) {
    if (t instanceof on) return yp(t.referencedRule)
    if (t instanceof Er) return YBe(t)
    if (eM(t)) return WBe(t)
    if (tM(t)) return qBe(t)
    throw Error('non exhaustive match')
  }
  function WBe(t) {
    let e = [],
      r = t.definition,
      n = 0,
      i = r.length > n,
      a,
      s = !0
    for (; i && s; ) (a = r[n]), (s = gp(a)), (e = e.concat(yp(a))), (n = n + 1), (i = r.length > n)
    return qm(e)
  }
  function qBe(t) {
    let e = Je(t.definition, r => yp(r))
    return qm(qr(e))
  }
  function YBe(t) {
    return [t.terminalType]
  }
  var rM = N(() => {
    'use strict'
    qt()
    fs()
    o(yp, 'first')
    o(WBe, 'firstForSequence')
    o(qBe, 'firstForBranching')
    o(YBe, 'firstForTerminal')
  })
  var Uk,
    nM = N(() => {
      'use strict'
      Uk = '_~IN~_'
    })
  function Kse(t) {
    let e = {}
    return (
      Ae(t, r => {
        let n = new iM(r).startWalking()
        pa(e, n)
      }),
      e
    )
  }
  function XBe(t, e) {
    return t.name + e + Uk
  }
  var iM,
    Qse = N(() => {
      'use strict'
      Vk()
      rM()
      qt()
      nM()
      fs()
      iM = class extends Gu {
        static {
          o(this, 'ResyncFollowsWalker')
        }
        constructor(e) {
          super(), (this.topProd = e), (this.follows = {})
        }
        startWalking() {
          return this.walk(this.topProd), this.follows
        }
        walkTerminal(e, r, n) {}
        walkProdRef(e, r, n) {
          let i = XBe(e.referencedRule, e.idx) + this.topProd.name,
            a = r.concat(n),
            s = new Dn({ definition: a }),
            l = yp(s)
          this.follows[i] = l
        }
      }
      o(Kse, 'computeAllProdsFollows')
      o(XBe, 'buildBetweenProdsFollowPrefix')
    })
  function qg(t) {
    let e = t.toString()
    if (Hk.hasOwnProperty(e)) return Hk[e]
    {
      let r = jBe.pattern(e)
      return (Hk[e] = r), r
    }
  }
  function Zse() {
    Hk = {}
  }
  var Hk,
    jBe,
    Wk = N(() => {
      'use strict'
      ax()
      ;(Hk = {}), (jBe = new dp())
      o(qg, 'getRegExpAst')
      o(Zse, 'clearRegExpParserCache')
    })
  function toe(t, e = !1) {
    try {
      let r = qg(t)
      return aM(r.value, {}, r.flags.ignoreCase)
    } catch (r) {
      if (r.message === eoe)
        e &&
          ux(`${dx}	Unable to optimize: < ${t.toString()} >
	Complement Sets cannot be automatically optimized.
	This will disable the lexer's first char optimizations.
	See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`)
      else {
        let n = ''
        e &&
          (n = `
	This will disable the lexer's first char optimizations.
	See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),
          Ug(
            `${dx}
	Failed parsing: < ${t.toString()} >
	Using the @chevrotain/regexp-to-ast library
	Please open an issue at: https://github.com/chevrotain/chevrotain/issues` + n
          )
      }
    }
    return []
  }
  function aM(t, e, r) {
    switch (t.type) {
      case 'Disjunction':
        for (let i = 0; i < t.value.length; i++) aM(t.value[i], e, r)
        break
      case 'Alternative':
        let n = t.value
        for (let i = 0; i < n.length; i++) {
          let a = n[i]
          switch (a.type) {
            case 'EndAnchor':
            case 'GroupBackReference':
            case 'Lookahead':
            case 'NegativeLookahead':
            case 'StartAnchor':
            case 'WordBoundary':
            case 'NonWordBoundary':
              continue
          }
          let s = a
          switch (s.type) {
            case 'Character':
              qk(s.value, e, r)
              break
            case 'Set':
              if (s.complement === !0) throw Error(eoe)
              Ae(s.value, u => {
                if (typeof u == 'number') qk(u, e, r)
                else {
                  let h = u
                  if (r === !0) for (let f = h.from; f <= h.to; f++) qk(f, e, r)
                  else {
                    for (let f = h.from; f <= h.to && f < Yg; f++) qk(f, e, r)
                    if (h.to >= Yg) {
                      let f = h.from >= Yg ? h.from : Yg,
                        d = h.to,
                        p = $c(f),
                        m = $c(d)
                      for (let g = p; g <= m; g++) e[g] = g
                    }
                  }
                }
              })
              break
            case 'Group':
              aM(s.value, e, r)
              break
            default:
              throw Error('Non Exhaustive Match')
          }
          let l = s.quantifier !== void 0 && s.quantifier.atLeast === 0
          if ((s.type === 'Group' && sM(s) === !1) || (s.type !== 'Group' && l === !1)) break
        }
        break
      default:
        throw Error('non exhaustive match!')
    }
    return br(e)
  }
  function qk(t, e, r) {
    let n = $c(t)
    ;(e[n] = n), r === !0 && KBe(t, e)
  }
  function KBe(t, e) {
    let r = String.fromCharCode(t),
      n = r.toUpperCase()
    if (n !== r) {
      let i = $c(n.charCodeAt(0))
      e[i] = i
    } else {
      let i = r.toLowerCase()
      if (i !== r) {
        let a = $c(i.charCodeAt(0))
        e[a] = a
      }
    }
  }
  function Jse(t, e) {
    return ls(t.value, r => {
      if (typeof r == 'number') return Xn(e, r)
      {
        let n = r
        return ls(e, i => n.from <= i && i <= n.to) !== void 0
      }
    })
  }
  function sM(t) {
    let e = t.quantifier
    return e && e.atLeast === 0 ? !0 : t.value ? (Pt(t.value) ? Pa(t.value, sM) : sM(t.value)) : !1
  }
  function Yk(t, e) {
    if (e instanceof RegExp) {
      let r = qg(e),
        n = new oM(t)
      return n.visit(r), n.found
    } else return ls(e, r => Xn(t, r.charCodeAt(0))) !== void 0
  }
  var eoe,
    dx,
    oM,
    roe = N(() => {
      'use strict'
      ax()
      qt()
      Hg()
      Wk()
      lM()
      ;(eoe = 'Complement Sets are not supported for first char optimization'),
        (dx = `Unable to use "first char" lexer optimizations:
`)
      o(toe, 'getOptimizedStartCodesIndices')
      o(aM, 'firstCharOptimizedIndices')
      o(qk, 'addOptimizedIdxToResult')
      o(KBe, 'handleIgnoreCase')
      o(Jse, 'findCode')
      o(sM, 'isWholeOptional')
      oM = class extends Fc {
        static {
          o(this, 'CharCodeFinder')
        }
        constructor(e) {
          super(), (this.targetCharCodes = e), (this.found = !1)
        }
        visitChildren(e) {
          if (this.found !== !0) {
            switch (e.type) {
              case 'Lookahead':
                this.visitLookahead(e)
                return
              case 'NegativeLookahead':
                this.visitNegativeLookahead(e)
                return
            }
            super.visitChildren(e)
          }
        }
        visitCharacter(e) {
          Xn(this.targetCharCodes, e.value) && (this.found = !0)
        }
        visitSet(e) {
          e.complement ? Jse(e, this.targetCharCodes) === void 0 && (this.found = !0) : Jse(e, this.targetCharCodes) !== void 0 && (this.found = !0)
        }
      }
      o(Yk, 'canMatchCharCode')
    })
  function aoe(t, e) {
    e = nf(e, {
      useSticky: uM,
      debug: !1,
      safeMode: !1,
      positionTracking: 'full',
      lineTerminatorCharacters: [
        '\r',
        `
`
      ],
      tracer: o((b, T) => T(), 'tracer')
    })
    let r = e.tracer
    r('initCharCodeToOptimizedIndexMap', () => {
      pFe()
    })
    let n
    r('Reject Lexer.NA', () => {
      n = sf(t, b => b[vp] === Kn.NA)
    })
    let i = !1,
      a
    r('Transform Patterns', () => {
      ;(i = !1),
        (a = Je(n, b => {
          let T = b[vp]
          if (Uo(T)) {
            let S = T.source
            return S.length === 1 && S !== '^' && S !== '$' && S !== '.' && !T.ignoreCase
              ? S
              : S.length === 2 && S[0] === '\\' && !Xn(['d', 'D', 's', 'S', 't', 'r', 'n', 't', '0', 'c', 'b', 'B', 'f', 'v', 'w', 'W'], S[1])
                ? S[1]
                : e.useSticky
                  ? ioe(T)
                  : noe(T)
          } else {
            if (Ai(T)) return (i = !0), { exec: T }
            if (typeof T == 'object') return (i = !0), T
            if (typeof T == 'string') {
              if (T.length === 1) return T
              {
                let S = T.replace(/[\\^$.*+?()[\]{}|]/g, '\\$&'),
                  w = new RegExp(S)
                return e.useSticky ? ioe(w) : noe(w)
              }
            } else throw Error('non exhaustive match')
          }
        }))
    })
    let s, l, u, h, f
    r('misc mapping', () => {
      ;(s = Je(n, b => b.tokenTypeIdx)),
        (l = Je(n, b => {
          let T = b.GROUP
          if (T !== Kn.SKIPPED) {
            if (Ti(T)) return T
            if (mr(T)) return !1
            throw Error('non exhaustive match')
          }
        })),
        (u = Je(n, b => {
          let T = b.LONGER_ALT
          if (T) return Pt(T) ? Je(T, w => ik(n, w)) : [ik(n, T)]
        })),
        (h = Je(n, b => b.PUSH_MODE)),
        (f = Je(n, b => Bt(b, 'POP_MODE')))
    })
    let d
    r('Line Terminator Handling', () => {
      let b = doe(e.lineTerminatorCharacters)
      ;(d = Je(n, T => !1)), e.positionTracking !== 'onlyOffset' && (d = Je(n, T => (Bt(T, 'LINE_BREAKS') ? !!T.LINE_BREAKS : foe(T, b) === !1 && Yk(b, T.PATTERN))))
    })
    let p, m, g, y
    r('Misc Mapping #2', () => {
      ;(p = Je(n, uoe)),
        (m = Je(a, fFe)),
        (g = Xr(
          n,
          (b, T) => {
            let S = T.GROUP
            return Ti(S) && S !== Kn.SKIPPED && (b[S] = []), b
          },
          {}
        )),
        (y = Je(a, (b, T) => ({
          pattern: a[T],
          longerAlt: u[T],
          canLineTerminator: d[T],
          isCustom: p[T],
          short: m[T],
          group: l[T],
          push: h[T],
          pop: f[T],
          tokenTypeIdx: s[T],
          tokenType: n[T]
        })))
    })
    let v = !0,
      x = []
    return (
      e.safeMode ||
        r('First Char Optimization', () => {
          x = Xr(
            n,
            (b, T, S) => {
              if (typeof T.PATTERN == 'string') {
                let w = T.PATTERN.charCodeAt(0),
                  E = $c(w)
                cM(b, E, y[S])
              } else if (Pt(T.START_CHARS_HINT)) {
                let w
                Ae(T.START_CHARS_HINT, E => {
                  let _ = typeof E == 'string' ? E.charCodeAt(0) : E,
                    C = $c(_)
                  w !== C && ((w = C), cM(b, C, y[S]))
                })
              } else if (Uo(T.PATTERN))
                if (T.PATTERN.unicode)
                  (v = !1),
                    e.ensureOptimizations &&
                      Ug(`${dx}	Unable to analyze < ${T.PATTERN.toString()} > pattern.
	The regexp unicode flag is not currently supported by the regexp-to-ast library.
	This will disable the lexer's first char optimizations.
	For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`)
                else {
                  let w = toe(T.PATTERN, e.ensureOptimizations)
                  hr(w) && (v = !1),
                    Ae(w, E => {
                      cM(b, E, y[S])
                    })
                }
              else
                e.ensureOptimizations &&
                  Ug(`${dx}	TokenType: <${T.name}> is using a custom token pattern without providing <start_chars_hint> parameter.
	This will disable the lexer's first char optimizations.
	For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),
                  (v = !1)
              return b
            },
            []
          )
        }),
      { emptyGroups: g, patternIdxToConfig: y, charCodeToPatternIdxToConfig: x, hasCustom: i, canBeOptimized: v }
    )
  }
  function soe(t, e) {
    let r = [],
      n = ZBe(t)
    r = r.concat(n.errors)
    let i = JBe(n.valid),
      a = i.valid
    return (r = r.concat(i.errors)), (r = r.concat(QBe(a))), (r = r.concat(oFe(a))), (r = r.concat(lFe(a, e))), (r = r.concat(cFe(a))), r
  }
  function QBe(t) {
    let e = [],
      r = Yr(t, n => Uo(n[vp]))
    return (e = e.concat(tFe(r))), (e = e.concat(iFe(r))), (e = e.concat(aFe(r))), (e = e.concat(sFe(r))), (e = e.concat(rFe(r))), e
  }
  function ZBe(t) {
    let e = Yr(t, i => !Bt(i, vp)),
      r = Je(e, i => ({ message: 'Token Type: ->' + i.name + "<- missing static 'PATTERN' property", type: jn.MISSING_PATTERN, tokenTypes: [i] })),
      n = af(t, e)
    return { errors: r, valid: n }
  }
  function JBe(t) {
    let e = Yr(t, i => {
        let a = i[vp]
        return !Uo(a) && !Ai(a) && !Bt(a, 'exec') && !Ti(a)
      }),
      r = Je(e, i => ({
        message:
          'Token Type: ->' +
          i.name +
          "<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",
        type: jn.INVALID_PATTERN,
        tokenTypes: [i]
      })),
      n = af(t, e)
    return { errors: r, valid: n }
  }
  function tFe(t) {
    class e extends Fc {
      static {
        o(this, 'EndAnchorFinder')
      }
      constructor() {
        super(...arguments), (this.found = !1)
      }
      visitEndAnchor(a) {
        this.found = !0
      }
    }
    let r = Yr(t, i => {
      let a = i.PATTERN
      try {
        let s = qg(a),
          l = new e()
        return l.visit(s), l.found
      } catch {
        return eFe.test(a.source)
      }
    })
    return Je(r, i => ({
      message:
        `Unexpected RegExp Anchor Error:
	Token Type: ->` +
        i.name +
        `<- static 'PATTERN' cannot contain end of input anchor '$'
	See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS	for details.`,
      type: jn.EOI_ANCHOR_FOUND,
      tokenTypes: [i]
    }))
  }
  function rFe(t) {
    let e = Yr(t, n => n.PATTERN.test(''))
    return Je(e, n => ({ message: 'Token Type: ->' + n.name + "<- static 'PATTERN' must not match an empty string", type: jn.EMPTY_MATCH_PATTERN, tokenTypes: [n] }))
  }
  function iFe(t) {
    class e extends Fc {
      static {
        o(this, 'StartAnchorFinder')
      }
      constructor() {
        super(...arguments), (this.found = !1)
      }
      visitStartAnchor(a) {
        this.found = !0
      }
    }
    let r = Yr(t, i => {
      let a = i.PATTERN
      try {
        let s = qg(a),
          l = new e()
        return l.visit(s), l.found
      } catch {
        return nFe.test(a.source)
      }
    })
    return Je(r, i => ({
      message:
        `Unexpected RegExp Anchor Error:
	Token Type: ->` +
        i.name +
        `<- static 'PATTERN' cannot contain start of input anchor '^'
	See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS	for details.`,
      type: jn.SOI_ANCHOR_FOUND,
      tokenTypes: [i]
    }))
  }
  function aFe(t) {
    let e = Yr(t, n => {
      let i = n[vp]
      return i instanceof RegExp && (i.multiline || i.global)
    })
    return Je(e, n => ({
      message: 'Token Type: ->' + n.name + "<- static 'PATTERN' may NOT contain global('g') or multiline('m')",
      type: jn.UNSUPPORTED_FLAGS_FOUND,
      tokenTypes: [n]
    }))
  }
  function sFe(t) {
    let e = [],
      r = Je(t, a => Xr(t, (s, l) => (a.PATTERN.source === l.PATTERN.source && !Xn(e, l) && l.PATTERN !== Kn.NA && (e.push(l), s.push(l)), s), []))
    r = Ac(r)
    let n = Yr(r, a => a.length > 1)
    return Je(n, a => {
      let s = Je(a, u => u.name)
      return {
        message: `The same RegExp pattern ->${ia(a).PATTERN}<-has been used in all of the following Token Types: ${s.join(', ')} <-`,
        type: jn.DUPLICATE_PATTERNS_FOUND,
        tokenTypes: a
      }
    })
  }
  function oFe(t) {
    let e = Yr(t, n => {
      if (!Bt(n, 'GROUP')) return !1
      let i = n.GROUP
      return i !== Kn.SKIPPED && i !== Kn.NA && !Ti(i)
    })
    return Je(e, n => ({
      message: 'Token Type: ->' + n.name + "<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",
      type: jn.INVALID_GROUP_TYPE_FOUND,
      tokenTypes: [n]
    }))
  }
  function lFe(t, e) {
    let r = Yr(t, i => i.PUSH_MODE !== void 0 && !Xn(e, i.PUSH_MODE))
    return Je(r, i => ({
      message: `Token Type: ->${i.name}<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->${i.PUSH_MODE}<-which does not exist`,
      type: jn.PUSH_MODE_DOES_NOT_EXIST,
      tokenTypes: [i]
    }))
  }
  function cFe(t) {
    let e = [],
      r = Xr(
        t,
        (n, i, a) => {
          let s = i.PATTERN
          return s === Kn.NA || (Ti(s) ? n.push({ str: s, idx: a, tokenType: i }) : Uo(s) && hFe(s) && n.push({ str: s.source, idx: a, tokenType: i })), n
        },
        []
      )
    return (
      Ae(t, (n, i) => {
        Ae(r, ({ str: a, idx: s, tokenType: l }) => {
          if (i < s && uFe(a, n.PATTERN)) {
            let u = `Token: ->${l.name}<- can never be matched.
Because it appears AFTER the Token Type ->${n.name}<-in the lexer's definition.
See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`
            e.push({ message: u, type: jn.UNREACHABLE_PATTERN, tokenTypes: [n, l] })
          }
        })
      }),
      e
    )
  }
  function uFe(t, e) {
    if (Uo(e)) {
      let r = e.exec(t)
      return r !== null && r.index === 0
    } else {
      if (Ai(e)) return e(t, 0, [], {})
      if (Bt(e, 'exec')) return e.exec(t, 0, [], {})
      if (typeof e == 'string') return e === t
      throw Error('non exhaustive match')
    }
  }
  function hFe(t) {
    return ls(['.', '\\', '[', ']', '|', '^', '$', '(', ')', '?', '*', '+', '{'], r => t.source.indexOf(r) !== -1) === void 0
  }
  function noe(t) {
    let e = t.ignoreCase ? 'i' : ''
    return new RegExp(`^(?:${t.source})`, e)
  }
  function ioe(t) {
    let e = t.ignoreCase ? 'iy' : 'y'
    return new RegExp(`${t.source}`, e)
  }
  function ooe(t, e, r) {
    let n = []
    return (
      Bt(t, Xg) ||
        n.push({
          message:
            'A MultiMode Lexer cannot be initialized without a <' +
            Xg +
            `> property in its definition
`,
          type: jn.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE
        }),
      Bt(t, Xk) ||
        n.push({
          message:
            'A MultiMode Lexer cannot be initialized without a <' +
            Xk +
            `> property in its definition
`,
          type: jn.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY
        }),
      Bt(t, Xk) &&
        Bt(t, Xg) &&
        !Bt(t.modes, t.defaultMode) &&
        n.push({
          message: `A MultiMode Lexer cannot be initialized with a ${Xg}: <${t.defaultMode}>which does not exist
`,
          type: jn.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST
        }),
      Bt(t, Xk) &&
        Ae(t.modes, (i, a) => {
          Ae(i, (s, l) => {
            if (mr(s))
              n.push({
                message: `A Lexer cannot be initialized using an undefined Token Type. Mode:<${a}> at index: <${l}>
`,
                type: jn.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED
              })
            else if (Bt(s, 'LONGER_ALT')) {
              let u = Pt(s.LONGER_ALT) ? s.LONGER_ALT : [s.LONGER_ALT]
              Ae(u, h => {
                !mr(h) &&
                  !Xn(i, h) &&
                  n.push({
                    message: `A MultiMode Lexer cannot be initialized with a longer_alt <${h.name}> on token <${s.name}> outside of mode <${a}>
`,
                    type: jn.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE
                  })
              })
            }
          })
        }),
      n
    )
  }
  function loe(t, e, r) {
    let n = [],
      i = !1,
      a = Ac(qr(br(t.modes))),
      s = sf(a, u => u[vp] === Kn.NA),
      l = doe(r)
    return (
      e &&
        Ae(s, u => {
          let h = foe(u, l)
          if (h !== !1) {
            let d = { message: dFe(u, h), type: h.issue, tokenType: u }
            n.push(d)
          } else Bt(u, 'LINE_BREAKS') ? u.LINE_BREAKS === !0 && (i = !0) : Yk(l, u.PATTERN) && (i = !0)
        }),
      e &&
        !i &&
        n.push({
          message: `Warning: No LINE_BREAKS Found.
	This Lexer has been defined to track line and column information,
	But none of the Token Types can be identified as matching a line terminator.
	See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS 
	for details.`,
          type: jn.NO_LINE_BREAKS_FLAGS
        }),
      n
    )
  }
  function coe(t) {
    let e = {},
      r = zr(t)
    return (
      Ae(r, n => {
        let i = t[n]
        if (Pt(i)) e[n] = []
        else throw Error('non exhaustive match')
      }),
      e
    )
  }
  function uoe(t) {
    let e = t.PATTERN
    if (Uo(e)) return !1
    if (Ai(e)) return !0
    if (Bt(e, 'exec')) return !0
    if (Ti(e)) return !1
    throw Error('non exhaustive match')
  }
  function fFe(t) {
    return Ti(t) && t.length === 1 ? t.charCodeAt(0) : !1
  }
  function foe(t, e) {
    if (Bt(t, 'LINE_BREAKS')) return !1
    if (Uo(t.PATTERN)) {
      try {
        Yk(e, t.PATTERN)
      } catch (r) {
        return { issue: jn.IDENTIFY_TERMINATOR, errMsg: r.message }
      }
      return !1
    } else {
      if (Ti(t.PATTERN)) return !1
      if (uoe(t)) return { issue: jn.CUSTOM_LINE_BREAK }
      throw Error('non exhaustive match')
    }
  }
  function dFe(t, e) {
    if (e.issue === jn.IDENTIFY_TERMINATOR)
      return `Warning: unable to identify line terminator usage in pattern.
	The problem is in the <${t.name}> Token Type
	 Root cause: ${e.errMsg}.
	For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR`
    if (e.issue === jn.CUSTOM_LINE_BREAK)
      return `Warning: A Custom Token Pattern should specify the <line_breaks> option.
	The problem is in the <${t.name}> Token Type
	For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK`
    throw Error('non exhaustive match')
  }
  function doe(t) {
    return Je(t, r => (Ti(r) ? r.charCodeAt(0) : r))
  }
  function cM(t, e, r) {
    t[e] === void 0 ? (t[e] = [r]) : t[e].push(r)
  }
  function $c(t) {
    return t < Yg ? t : jk[t]
  }
  function pFe() {
    if (hr(jk)) {
      jk = new Array(65536)
      for (let t = 0; t < 65536; t++) jk[t] = t > 255 ? 255 + ~~(t / 255) : t
    }
  }
  var vp,
    Xg,
    Xk,
    uM,
    eFe,
    nFe,
    hoe,
    Yg,
    jk,
    lM = N(() => {
      'use strict'
      ax()
      px()
      qt()
      Hg()
      roe()
      Wk()
      ;(vp = 'PATTERN'), (Xg = 'defaultMode'), (Xk = 'modes'), (uM = typeof new RegExp('(?:)').sticky == 'boolean')
      o(aoe, 'analyzeTokenTypes')
      o(soe, 'validatePatterns')
      o(QBe, 'validateRegExpPattern')
      o(ZBe, 'findMissingPatterns')
      o(JBe, 'findInvalidPatterns')
      eFe = /[^\\][$]/
      o(tFe, 'findEndOfInputAnchor')
      o(rFe, 'findEmptyMatchRegExps')
      nFe = /[^\\[][\^]|^\^/
      o(iFe, 'findStartOfInputAnchor')
      o(aFe, 'findUnsupportedFlags')
      o(sFe, 'findDuplicatePatterns')
      o(oFe, 'findInvalidGroupType')
      o(lFe, 'findModesThatDoNotExist')
      o(cFe, 'findUnreachablePatterns')
      o(uFe, 'testTokenType')
      o(hFe, 'noMetaChar')
      o(noe, 'addStartOfInput')
      o(ioe, 'addStickyFlag')
      o(ooe, 'performRuntimeChecks')
      o(loe, 'performWarningRuntimeChecks')
      o(coe, 'cloneEmptyGroups')
      o(uoe, 'isCustomPattern')
      o(fFe, 'isShortPattern')
      hoe = {
        test: o(function (t) {
          let e = t.length
          for (let r = this.lastIndex; r < e; r++) {
            let n = t.charCodeAt(r)
            if (n === 10) return (this.lastIndex = r + 1), !0
            if (n === 13) return t.charCodeAt(r + 1) === 10 ? (this.lastIndex = r + 2) : (this.lastIndex = r + 1), !0
          }
          return !1
        }, 'test'),
        lastIndex: 0
      }
      o(foe, 'checkLineBreaksIssues')
      o(dFe, 'buildLineBreakIssueMessage')
      o(doe, 'getCharCodes')
      o(cM, 'addToMapOfArrays')
      ;(Yg = 256), (jk = [])
      o($c, 'charCodeToOptimizedIndex')
      o(pFe, 'initCharCodeToOptimizedIndexMap')
    })
  function Vu(t, e) {
    let r = t.tokenTypeIdx
    return r === e.tokenTypeIdx ? !0 : e.isParent === !0 && e.categoryMatchesMap[r] === !0
  }
  function jg(t, e) {
    return t.tokenTypeIdx === e.tokenTypeIdx
  }
  function Uu(t) {
    let e = mFe(t)
    gFe(e),
      vFe(e),
      yFe(e),
      Ae(e, r => {
        r.isParent = r.categoryMatches.length > 0
      })
  }
  function mFe(t) {
    let e = an(t),
      r = t,
      n = !0
    for (; n; ) {
      r = Ac(qr(Je(r, a => a.CATEGORIES)))
      let i = af(r, e)
      ;(e = e.concat(i)), hr(i) ? (n = !1) : (r = i)
    }
    return e
  }
  function gFe(t) {
    Ae(t, e => {
      hM(e) || ((goe[poe] = e), (e.tokenTypeIdx = poe++)),
        moe(e) && !Pt(e.CATEGORIES) && (e.CATEGORIES = [e.CATEGORIES]),
        moe(e) || (e.CATEGORIES = []),
        xFe(e) || (e.categoryMatches = []),
        bFe(e) || (e.categoryMatchesMap = {})
    })
  }
  function yFe(t) {
    Ae(t, e => {
      ;(e.categoryMatches = []),
        Ae(e.categoryMatchesMap, (r, n) => {
          e.categoryMatches.push(goe[n].tokenTypeIdx)
        })
    })
  }
  function vFe(t) {
    Ae(t, e => {
      yoe([], e)
    })
  }
  function yoe(t, e) {
    Ae(t, r => {
      e.categoryMatchesMap[r.tokenTypeIdx] = !0
    }),
      Ae(e.CATEGORIES, r => {
        let n = t.concat(e)
        Xn(n, r) || yoe(n, r)
      })
  }
  function hM(t) {
    return Bt(t, 'tokenTypeIdx')
  }
  function moe(t) {
    return Bt(t, 'CATEGORIES')
  }
  function xFe(t) {
    return Bt(t, 'categoryMatches')
  }
  function bFe(t) {
    return Bt(t, 'categoryMatchesMap')
  }
  function voe(t) {
    return Bt(t, 'tokenTypeIdx')
  }
  var poe,
    goe,
    xp = N(() => {
      'use strict'
      qt()
      o(Vu, 'tokenStructuredMatcher')
      o(jg, 'tokenStructuredMatcherNoCategories')
      ;(poe = 1), (goe = {})
      o(Uu, 'augmentTokenTypes')
      o(mFe, 'expandCategories')
      o(gFe, 'assignTokenDefaultProps')
      o(yFe, 'assignCategoriesTokensProp')
      o(vFe, 'assignCategoriesMapProp')
      o(yoe, 'singleAssignCategoriesToksMap')
      o(hM, 'hasShortKeyProperty')
      o(moe, 'hasCategoriesProperty')
      o(xFe, 'hasExtendingTokensTypesProperty')
      o(bFe, 'hasExtendingTokensTypesMapProperty')
      o(voe, 'isTokenType')
    })
  var Kg,
    fM = N(() => {
      'use strict'
      Kg = {
        buildUnableToPopLexerModeMessage(t) {
          return `Unable to pop Lexer Mode after encountering Token ->${t.image}<- The Mode Stack is empty`
        },
        buildUnexpectedCharactersMessage(t, e, r, n, i) {
          return `unexpected character: ->${t.charAt(e)}<- at offset: ${e}, skipped ${r} characters.`
        }
      }
    })
  var jn,
    mx,
    Kn,
    px = N(() => {
      'use strict'
      lM()
      qt()
      Hg()
      xp()
      fM()
      Wk()
      ;(function (t) {
        ;(t[(t.MISSING_PATTERN = 0)] = 'MISSING_PATTERN'),
          (t[(t.INVALID_PATTERN = 1)] = 'INVALID_PATTERN'),
          (t[(t.EOI_ANCHOR_FOUND = 2)] = 'EOI_ANCHOR_FOUND'),
          (t[(t.UNSUPPORTED_FLAGS_FOUND = 3)] = 'UNSUPPORTED_FLAGS_FOUND'),
          (t[(t.DUPLICATE_PATTERNS_FOUND = 4)] = 'DUPLICATE_PATTERNS_FOUND'),
          (t[(t.INVALID_GROUP_TYPE_FOUND = 5)] = 'INVALID_GROUP_TYPE_FOUND'),
          (t[(t.PUSH_MODE_DOES_NOT_EXIST = 6)] = 'PUSH_MODE_DOES_NOT_EXIST'),
          (t[(t.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE = 7)] = 'MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE'),
          (t[(t.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY = 8)] = 'MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY'),
          (t[(t.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST = 9)] = 'MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST'),
          (t[(t.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED = 10)] = 'LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED'),
          (t[(t.SOI_ANCHOR_FOUND = 11)] = 'SOI_ANCHOR_FOUND'),
          (t[(t.EMPTY_MATCH_PATTERN = 12)] = 'EMPTY_MATCH_PATTERN'),
          (t[(t.NO_LINE_BREAKS_FLAGS = 13)] = 'NO_LINE_BREAKS_FLAGS'),
          (t[(t.UNREACHABLE_PATTERN = 14)] = 'UNREACHABLE_PATTERN'),
          (t[(t.IDENTIFY_TERMINATOR = 15)] = 'IDENTIFY_TERMINATOR'),
          (t[(t.CUSTOM_LINE_BREAK = 16)] = 'CUSTOM_LINE_BREAK'),
          (t[(t.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE = 17)] = 'MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE')
      })(jn || (jn = {}))
      mx = {
        deferDefinitionErrorsHandling: !1,
        positionTracking: 'full',
        lineTerminatorsPattern: /\n|\r\n?/g,
        lineTerminatorCharacters: [
          `
`,
          '\r'
        ],
        ensureOptimizations: !1,
        safeMode: !1,
        errorMessageProvider: Kg,
        traceInitPerf: !1,
        skipValidations: !1,
        recoveryEnabled: !0
      }
      Object.freeze(mx)
      Kn = class {
        static {
          o(this, 'Lexer')
        }
        constructor(e, r = mx) {
          if (
            ((this.lexerDefinition = e),
            (this.lexerDefinitionErrors = []),
            (this.lexerDefinitionWarning = []),
            (this.patternIdxToConfig = {}),
            (this.charCodeToPatternIdxToConfig = {}),
            (this.modes = []),
            (this.emptyGroups = {}),
            (this.trackStartLines = !0),
            (this.trackEndLines = !0),
            (this.hasCustom = !1),
            (this.canModeBeOptimized = {}),
            (this.TRACE_INIT = (i, a) => {
              if (this.traceInitPerf === !0) {
                this.traceInitIndent++
                let s = new Array(this.traceInitIndent + 1).join('	')
                this.traceInitIndent < this.traceInitMaxIdent && console.log(`${s}--> <${i}>`)
                let { time: l, value: u } = hx(a),
                  h = l > 10 ? console.warn : console.log
                return this.traceInitIndent < this.traceInitMaxIdent && h(`${s}<-- <${i}> time: ${l}ms`), this.traceInitIndent--, u
              } else return a()
            }),
            typeof r == 'boolean')
          )
            throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object.
a boolean 2nd argument is no longer supported`)
          this.config = pa({}, mx, r)
          let n = this.config.traceInitPerf
          n === !0 ? ((this.traceInitMaxIdent = 1 / 0), (this.traceInitPerf = !0)) : typeof n == 'number' && ((this.traceInitMaxIdent = n), (this.traceInitPerf = !0)),
            (this.traceInitIndent = -1),
            this.TRACE_INIT('Lexer Constructor', () => {
              let i,
                a = !0
              this.TRACE_INIT('Lexer Config handling', () => {
                if (this.config.lineTerminatorsPattern === mx.lineTerminatorsPattern) this.config.lineTerminatorsPattern = hoe
                else if (this.config.lineTerminatorCharacters === mx.lineTerminatorCharacters)
                  throw Error(`Error: Missing <lineTerminatorCharacters> property on the Lexer config.
	For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`)
                if (r.safeMode && r.ensureOptimizations) throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.')
                ;(this.trackStartLines = /full|onlyStart/i.test(this.config.positionTracking)),
                  (this.trackEndLines = /full/i.test(this.config.positionTracking)),
                  Pt(e) ? (i = { modes: { defaultMode: an(e) }, defaultMode: Xg }) : ((a = !1), (i = an(e)))
              }),
                this.config.skipValidations === !1 &&
                  (this.TRACE_INIT('performRuntimeChecks', () => {
                    this.lexerDefinitionErrors = this.lexerDefinitionErrors.concat(ooe(i, this.trackStartLines, this.config.lineTerminatorCharacters))
                  }),
                  this.TRACE_INIT('performWarningRuntimeChecks', () => {
                    this.lexerDefinitionWarning = this.lexerDefinitionWarning.concat(loe(i, this.trackStartLines, this.config.lineTerminatorCharacters))
                  })),
                (i.modes = i.modes ? i.modes : {}),
                Ae(i.modes, (l, u) => {
                  i.modes[u] = sf(l, h => mr(h))
                })
              let s = zr(i.modes)
              if (
                (Ae(i.modes, (l, u) => {
                  this.TRACE_INIT(`Mode: <${u}> processing`, () => {
                    if (
                      (this.modes.push(u),
                      this.config.skipValidations === !1 &&
                        this.TRACE_INIT('validatePatterns', () => {
                          this.lexerDefinitionErrors = this.lexerDefinitionErrors.concat(soe(l, s))
                        }),
                      hr(this.lexerDefinitionErrors))
                    ) {
                      Uu(l)
                      let h
                      this.TRACE_INIT('analyzeTokenTypes', () => {
                        h = aoe(l, {
                          lineTerminatorCharacters: this.config.lineTerminatorCharacters,
                          positionTracking: r.positionTracking,
                          ensureOptimizations: r.ensureOptimizations,
                          safeMode: r.safeMode,
                          tracer: this.TRACE_INIT
                        })
                      }),
                        (this.patternIdxToConfig[u] = h.patternIdxToConfig),
                        (this.charCodeToPatternIdxToConfig[u] = h.charCodeToPatternIdxToConfig),
                        (this.emptyGroups = pa({}, this.emptyGroups, h.emptyGroups)),
                        (this.hasCustom = h.hasCustom || this.hasCustom),
                        (this.canModeBeOptimized[u] = h.canBeOptimized)
                    }
                  })
                }),
                (this.defaultMode = i.defaultMode),
                !hr(this.lexerDefinitionErrors) && !this.config.deferDefinitionErrorsHandling)
              ) {
                let u = Je(this.lexerDefinitionErrors, h => h.message).join(`-----------------------
`)
                throw new Error(
                  `Errors detected in definition of Lexer:
` + u
                )
              }
              Ae(this.lexerDefinitionWarning, l => {
                ux(l.message)
              }),
                this.TRACE_INIT('Choosing sub-methods implementations', () => {
                  if (
                    (uM ? ((this.chopInput = ta), (this.match = this.matchWithTest)) : ((this.updateLastIndex = ai), (this.match = this.matchWithExec)),
                    a && (this.handleModes = ai),
                    this.trackStartLines === !1 && (this.computeNewColumn = ta),
                    this.trackEndLines === !1 && (this.updateTokenEndLineColumnLocation = ai),
                    /full/i.test(this.config.positionTracking))
                  )
                    this.createTokenInstance = this.createFullToken
                  else if (/onlyStart/i.test(this.config.positionTracking)) this.createTokenInstance = this.createStartOnlyToken
                  else if (/onlyOffset/i.test(this.config.positionTracking)) this.createTokenInstance = this.createOffsetOnlyToken
                  else throw Error(`Invalid <positionTracking> config option: "${this.config.positionTracking}"`)
                  this.hasCustom
                    ? ((this.addToken = this.addTokenUsingPush), (this.handlePayload = this.handlePayloadWithCustom))
                    : ((this.addToken = this.addTokenUsingMemberAccess), (this.handlePayload = this.handlePayloadNoCustom))
                }),
                this.TRACE_INIT('Failed Optimization Warnings', () => {
                  let l = Xr(this.canModeBeOptimized, (u, h, f) => (h === !1 && u.push(f), u), [])
                  if (r.ensureOptimizations && !hr(l))
                    throw Error(`Lexer Modes: < ${l.join(', ')} > cannot be optimized.
	 Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode.
	 Or inspect the console log for details on how to resolve these issues.`)
                }),
                this.TRACE_INIT('clearRegExpParserCache', () => {
                  Zse()
                }),
                this.TRACE_INIT('toFastProperties', () => {
                  fx(this)
                })
            })
        }
        tokenize(e, r = this.defaultMode) {
          if (!hr(this.lexerDefinitionErrors)) {
            let i = Je(this.lexerDefinitionErrors, a => a.message).join(`-----------------------
`)
            throw new Error(
              `Unable to Tokenize because Errors detected in definition of Lexer:
` + i
            )
          }
          return this.tokenizeInternal(e, r)
        }
        tokenizeInternal(e, r) {
          let n,
            i,
            a,
            s,
            l,
            u,
            h,
            f,
            d,
            p,
            m,
            g,
            y,
            v,
            x,
            b,
            T = e,
            S = T.length,
            w = 0,
            E = 0,
            _ = this.hasCustom ? 0 : Math.floor(e.length / 10),
            C = new Array(_),
            D = [],
            O = this.trackStartLines ? 1 : void 0,
            R = this.trackStartLines ? 1 : void 0,
            k = coe(this.emptyGroups),
            L = this.trackStartLines,
            A = this.config.lineTerminatorsPattern,
            I = 0,
            M = [],
            P = [],
            B = [],
            F = []
          Object.freeze(F)
          let z
          function $() {
            return M
          }
          o($, 'getPossiblePatternsSlow')
          function U(Z) {
            let ue = $c(Z),
              Q = P[ue]
            return Q === void 0 ? F : Q
          }
          o(U, 'getPossiblePatternsOptimized')
          let K = o(Z => {
            if (B.length === 1 && Z.tokenType.PUSH_MODE === void 0) {
              let ue = this.config.errorMessageProvider.buildUnableToPopLexerModeMessage(Z)
              D.push({ offset: Z.startOffset, line: Z.startLine, column: Z.startColumn, length: Z.image.length, message: ue })
            } else {
              B.pop()
              let ue = ma(B)
              ;(M = this.patternIdxToConfig[ue]), (P = this.charCodeToPatternIdxToConfig[ue]), (I = M.length)
              let Q = this.canModeBeOptimized[ue] && this.config.safeMode === !1
              P && Q ? (z = U) : (z = $)
            }
          }, 'pop_mode')
          function ee(Z) {
            B.push(Z), (P = this.charCodeToPatternIdxToConfig[Z]), (M = this.patternIdxToConfig[Z]), (I = M.length), (I = M.length)
            let ue = this.canModeBeOptimized[Z] && this.config.safeMode === !1
            P && ue ? (z = U) : (z = $)
          }
          o(ee, 'push_mode'), ee.call(this, r)
          let Y,
            ce = this.config.recoveryEnabled
          for (; w < S; ) {
            u = null
            let Z = T.charCodeAt(w),
              ue = z(Z),
              Q = ue.length
            for (n = 0; n < Q; n++) {
              Y = ue[n]
              let j = Y.pattern
              h = null
              let ne = Y.short
              if (
                (ne !== !1
                  ? Z === ne && (u = j)
                  : Y.isCustom === !0
                    ? ((b = j.exec(T, w, C, k)), b !== null ? ((u = b[0]), b.payload !== void 0 && (h = b.payload)) : (u = null))
                    : (this.updateLastIndex(j, w), (u = this.match(j, e, w))),
                u !== null)
              ) {
                if (((l = Y.longerAlt), l !== void 0)) {
                  let te = l.length
                  for (a = 0; a < te; a++) {
                    let he = M[l[a]],
                      le = he.pattern
                    if (
                      ((f = null),
                      he.isCustom === !0
                        ? ((b = le.exec(T, w, C, k)), b !== null ? ((s = b[0]), b.payload !== void 0 && (f = b.payload)) : (s = null))
                        : (this.updateLastIndex(le, w), (s = this.match(le, e, w))),
                      s && s.length > u.length)
                    ) {
                      ;(u = s), (h = f), (Y = he)
                      break
                    }
                  }
                }
                break
              }
            }
            if (u !== null) {
              if (
                ((d = u.length),
                (p = Y.group),
                p !== void 0 &&
                  ((m = Y.tokenTypeIdx),
                  (g = this.createTokenInstance(u, w, m, Y.tokenType, O, R, d)),
                  this.handlePayload(g, h),
                  p === !1 ? (E = this.addToken(C, E, g)) : k[p].push(g)),
                (e = this.chopInput(e, d)),
                (w = w + d),
                (R = this.computeNewColumn(R, d)),
                L === !0 && Y.canLineTerminator === !0)
              ) {
                let j = 0,
                  ne,
                  te
                A.lastIndex = 0
                do (ne = A.test(u)), ne === !0 && ((te = A.lastIndex - 1), j++)
                while (ne === !0)
                j !== 0 && ((O = O + j), (R = d - te), this.updateTokenEndLineColumnLocation(g, p, te, j, O, R, d))
              }
              this.handleModes(Y, K, ee, g)
            } else {
              let j = w,
                ne = O,
                te = R,
                he = ce === !1
              for (; he === !1 && w < S; )
                for (e = this.chopInput(e, 1), w++, i = 0; i < I; i++) {
                  let le = M[i],
                    J = le.pattern,
                    Se = le.short
                  if (
                    (Se !== !1
                      ? T.charCodeAt(w) === Se && (he = !0)
                      : le.isCustom === !0
                        ? (he = J.exec(T, w, C, k) !== null)
                        : (this.updateLastIndex(J, w), (he = J.exec(e) !== null)),
                    he === !0)
                  )
                    break
                }
              if (
                ((y = w - j),
                (R = this.computeNewColumn(R, y)),
                (x = this.config.errorMessageProvider.buildUnexpectedCharactersMessage(T, j, y, ne, te)),
                D.push({ offset: j, line: ne, column: te, length: y, message: x }),
                ce === !1)
              )
                break
            }
          }
          return this.hasCustom || (C.length = E), { tokens: C, groups: k, errors: D }
        }
        handleModes(e, r, n, i) {
          if (e.pop === !0) {
            let a = e.push
            r(i), a !== void 0 && n.call(this, a)
          } else e.push !== void 0 && n.call(this, e.push)
        }
        chopInput(e, r) {
          return e.substring(r)
        }
        updateLastIndex(e, r) {
          e.lastIndex = r
        }
        updateTokenEndLineColumnLocation(e, r, n, i, a, s, l) {
          let u, h
          r !== void 0 && ((u = n === l - 1), (h = u ? -1 : 0), (i === 1 && u === !0) || ((e.endLine = a + h), (e.endColumn = s - 1 + -h)))
        }
        computeNewColumn(e, r) {
          return e + r
        }
        createOffsetOnlyToken(e, r, n, i) {
          return { image: e, startOffset: r, tokenTypeIdx: n, tokenType: i }
        }
        createStartOnlyToken(e, r, n, i, a, s) {
          return { image: e, startOffset: r, startLine: a, startColumn: s, tokenTypeIdx: n, tokenType: i }
        }
        createFullToken(e, r, n, i, a, s, l) {
          return { image: e, startOffset: r, endOffset: r + l - 1, startLine: a, endLine: a, startColumn: s, endColumn: s + l - 1, tokenTypeIdx: n, tokenType: i }
        }
        addTokenUsingPush(e, r, n) {
          return e.push(n), r
        }
        addTokenUsingMemberAccess(e, r, n) {
          return (e[r] = n), r++, r
        }
        handlePayloadNoCustom(e, r) {}
        handlePayloadWithCustom(e, r) {
          r !== null && (e.payload = r)
        }
        matchWithTest(e, r, n) {
          return e.test(r) === !0 ? r.substring(n, e.lastIndex) : null
        }
        matchWithExec(e, r) {
          let n = e.exec(r)
          return n !== null ? n[0] : null
        }
      }
      Kn.SKIPPED =
        'This marks a skipped Token pattern, this means each token identified by it willbe consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.'
      Kn.NA = /NOT_APPLICABLE/
    })
  function Hu(t) {
    return dM(t) ? t.LABEL : t.name
  }
  function dM(t) {
    return Ti(t.LABEL) && t.LABEL !== ''
  }
  function df(t) {
    return wFe(t)
  }
  function wFe(t) {
    let e = t.pattern,
      r = {}
    if (((r.name = t.name), mr(e) || (r.PATTERN = e), Bt(t, TFe)))
      throw `The parent property is no longer supported.
See: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.`
    return (
      Bt(t, xoe) && (r.CATEGORIES = t[xoe]),
      Uu([r]),
      Bt(t, boe) && (r.LABEL = t[boe]),
      Bt(t, Toe) && (r.GROUP = t[Toe]),
      Bt(t, koe) && (r.POP_MODE = t[koe]),
      Bt(t, woe) && (r.PUSH_MODE = t[woe]),
      Bt(t, Eoe) && (r.LONGER_ALT = t[Eoe]),
      Bt(t, Soe) && (r.LINE_BREAKS = t[Soe]),
      Bt(t, Coe) && (r.START_CHARS_HINT = t[Coe]),
      r
    )
  }
  function Wu(t, e, r, n, i, a, s, l) {
    return { image: e, startOffset: r, endOffset: n, startLine: i, endLine: a, startColumn: s, endColumn: l, tokenTypeIdx: t.tokenTypeIdx, tokenType: t }
  }
  function gx(t, e) {
    return Vu(t, e)
  }
  var TFe,
    xoe,
    boe,
    Toe,
    woe,
    koe,
    Eoe,
    Soe,
    Coe,
    fo,
    bp = N(() => {
      'use strict'
      qt()
      px()
      xp()
      o(Hu, 'tokenLabel')
      o(dM, 'hasTokenLabel')
      ;(TFe = 'parent'),
        (xoe = 'categories'),
        (boe = 'label'),
        (Toe = 'group'),
        (woe = 'push_mode'),
        (koe = 'pop_mode'),
        (Eoe = 'longer_alt'),
        (Soe = 'line_breaks'),
        (Coe = 'start_chars_hint')
      o(df, 'createToken')
      o(wFe, 'createTokenInternal')
      fo = df({ name: 'EOF', pattern: Kn.NA })
      Uu([fo])
      o(Wu, 'createTokenInstance')
      o(gx, 'tokenMatcher')
    })
  var qu,
    Aoe,
    $l,
    Qg = N(() => {
      'use strict'
      bp()
      qt()
      fs()
      qu = {
        buildMismatchTokenMessage({ expected: t, actual: e, previous: r, ruleName: n }) {
          return `Expecting ${dM(t) ? `--> ${Hu(t)} <--` : `token of type --> ${t.name} <--`} but found --> '${e.image}' <--`
        },
        buildNotAllInputParsedMessage({ firstRedundant: t, ruleName: e }) {
          return 'Redundant input, expecting EOF but found: ' + t.image
        },
        buildNoViableAltMessage({ expectedPathsPerAlt: t, actual: e, previous: r, customUserDescription: n, ruleName: i }) {
          let a = 'Expecting: ',
            l =
              `
but found: '` +
              ia(e).image +
              "'"
          if (n) return a + n + l
          {
            let u = Xr(t, (p, m) => p.concat(m), []),
              h = Je(u, p => `[${Je(p, m => Hu(m)).join(', ')}]`),
              d = `one of these possible Token sequences:
${Je(h, (p, m) => `  ${m + 1}. ${p}`).join(`
`)}`
            return a + d + l
          }
        },
        buildEarlyExitMessage({ expectedIterationPaths: t, actual: e, customUserDescription: r, ruleName: n }) {
          let i = 'Expecting: ',
            s =
              `
but found: '` +
              ia(e).image +
              "'"
          if (r) return i + r + s
          {
            let u = `expecting at least one iteration which starts with one of these possible Token sequences::
  <${Je(t, h => `[${Je(h, f => Hu(f)).join(',')}]`).join(' ,')}>`
            return i + u + s
          }
        }
      }
      Object.freeze(qu)
      ;(Aoe = {
        buildRuleNotFoundError(t, e) {
          return (
            'Invalid grammar, reference to a rule which is not defined: ->' +
            e.nonTerminalName +
            `<-
inside top level rule: ->` +
            t.name +
            '<-'
          )
        }
      }),
        ($l = {
          buildDuplicateFoundError(t, e) {
            function r(f) {
              return f instanceof Er ? f.terminalType.name : f instanceof on ? f.nonTerminalName : ''
            }
            o(r, 'getExtraProductionArgument')
            let n = t.name,
              i = ia(e),
              a = i.idx,
              s = Vs(i),
              l = r(i),
              u = a > 0,
              h = `->${s}${u ? a : ''}<- ${l ? `with argument: ->${l}<-` : ''}
                  appears more than once (${e.length} times) in the top level rule: ->${n}<-.                  
                  For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES 
                  `
            return (
              (h = h.replace(/[ \t]+/g, ' ')),
              (h = h.replace(
                /\s\s+/g,
                `
`
              )),
              h
            )
          },
          buildNamespaceConflictError(t) {
            return `Namespace conflict found in grammar.
The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <${t.name}>.
To resolve this make sure each Terminal and Non-Terminal names are unique
This is easy to accomplish by using the convention that Terminal names start with an uppercase letter
and Non-Terminal names start with a lower case letter.`
          },
          buildAlternationPrefixAmbiguityError(t) {
            let e = Je(t.prefixPath, i => Hu(i)).join(', '),
              r = t.alternation.idx === 0 ? '' : t.alternation.idx
            return `Ambiguous alternatives: <${t.ambiguityIndices.join(' ,')}> due to common lookahead prefix
in <OR${r}> inside <${t.topLevelRule.name}> Rule,
<${e}> may appears as a prefix path in all these alternatives.
See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX
For Further details.`
          },
          buildAlternationAmbiguityError(t) {
            let e = Je(t.prefixPath, i => Hu(i)).join(', '),
              r = t.alternation.idx === 0 ? '' : t.alternation.idx,
              n = `Ambiguous Alternatives Detected: <${t.ambiguityIndices.join(' ,')}> in <OR${r}> inside <${t.topLevelRule.name}> Rule,
<${e}> may appears as a prefix path in all these alternatives.
`
            return (
              (n =
                n +
                `See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES
For Further details.`),
              n
            )
          },
          buildEmptyRepetitionError(t) {
            let e = Vs(t.repetition)
            return (
              t.repetition.idx !== 0 && (e += t.repetition.idx),
              `The repetition <${e}> within Rule <${t.topLevelRule.name}> can never consume any tokens.
This could lead to an infinite loop.`
            )
          },
          buildTokenNameError(t) {
            return 'deprecated'
          },
          buildEmptyAlternationError(t) {
            return `Ambiguous empty alternative: <${t.emptyChoiceIdx + 1}> in <OR${t.alternation.idx}> inside <${t.topLevelRule.name}> Rule.
Only the last alternative may be an empty alternative.`
          },
          buildTooManyAlternativesError(t) {
            return `An Alternation cannot have more than 256 alternatives:
<OR${t.alternation.idx}> inside <${t.topLevelRule.name}> Rule.
 has ${t.alternation.definition.length + 1} alternatives.`
          },
          buildLeftRecursionError(t) {
            let e = t.topLevelRule.name,
              r = Je(t.leftRecursionPath, a => a.name),
              n = `${e} --> ${r.concat([e]).join(' --> ')}`
            return `Left Recursion found in grammar.
rule: <${e}> can be invoked from itself (directly or indirectly)
without consuming any Tokens. The grammar path that causes this is: 
 ${n}
 To fix this refactor your grammar to remove the left recursion.
see: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`
          },
          buildInvalidRuleNameError(t) {
            return 'deprecated'
          },
          buildDuplicateRuleNameError(t) {
            let e
            return (
              t.topLevelRule instanceof us ? (e = t.topLevelRule.name) : (e = t.topLevelRule),
              `Duplicate definition, rule: ->${e}<- is already defined in the grammar: ->${t.grammarName}<-`
            )
          }
        })
    })
  function _oe(t, e) {
    let r = new pM(t, e)
    return r.resolveRefs(), r.errors
  }
  var pM,
    Doe = N(() => {
      'use strict'
      Us()
      qt()
      fs()
      o(_oe, 'resolveGrammar')
      pM = class extends hs {
        static {
          o(this, 'GastRefResolverVisitor')
        }
        constructor(e, r) {
          super(), (this.nameToTopRule = e), (this.errMsgProvider = r), (this.errors = [])
        }
        resolveRefs() {
          Ae(br(this.nameToTopRule), e => {
            ;(this.currTopLevel = e), e.accept(this)
          })
        }
        visitNonTerminal(e) {
          let r = this.nameToTopRule[e.nonTerminalName]
          if (r) e.referencedRule = r
          else {
            let n = this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel, e)
            this.errors.push({ message: n, type: Vi.UNRESOLVED_SUBRULE_REF, ruleName: this.currTopLevel.name, unresolvedRefName: e.nonTerminalName })
          }
        }
      }
    })
  function Jk(t, e, r = []) {
    r = an(r)
    let n = [],
      i = 0
    function a(l) {
      return l.concat(bi(t, i + 1))
    }
    o(a, 'remainingPathWith')
    function s(l) {
      let u = Jk(a(l), e, r)
      return n.concat(u)
    }
    for (o(s, 'getAlternativesForProd'); r.length < e && i < t.length; ) {
      let l = t[i]
      if (l instanceof Dn) return s(l.definition)
      if (l instanceof on) return s(l.definition)
      if (l instanceof ln) n = s(l.definition)
      else if (l instanceof Ln) {
        let u = l.definition.concat([new Pr({ definition: l.definition })])
        return s(u)
      } else if (l instanceof Rn) {
        let u = [new Dn({ definition: l.definition }), new Pr({ definition: [new Er({ terminalType: l.separator })].concat(l.definition) })]
        return s(u)
      } else if (l instanceof Tn) {
        let u = l.definition.concat([new Pr({ definition: [new Er({ terminalType: l.separator })].concat(l.definition) })])
        n = s(u)
      } else if (l instanceof Pr) {
        let u = l.definition.concat([new Pr({ definition: l.definition })])
        n = s(u)
      } else {
        if (l instanceof wn)
          return (
            Ae(l.definition, u => {
              hr(u.definition) === !1 && (n = s(u.definition))
            }),
            n
          )
        if (l instanceof Er) r.push(l.terminalType)
        else throw Error('non exhaustive match')
      }
      i++
    }
    return n.push({ partialPath: r, suffixDef: bi(t, i) }), n
  }
  function eE(t, e, r, n) {
    let i = 'EXIT_NONE_TERMINAL',
      a = [i],
      s = 'EXIT_ALTERNATIVE',
      l = !1,
      u = e.length,
      h = u - n - 1,
      f = [],
      d = []
    for (d.push({ idx: -1, def: t, ruleStack: [], occurrenceStack: [] }); !hr(d); ) {
      let p = d.pop()
      if (p === s) {
        l && ma(d).idx <= h && d.pop()
        continue
      }
      let m = p.def,
        g = p.idx,
        y = p.ruleStack,
        v = p.occurrenceStack
      if (hr(m)) continue
      let x = m[0]
      if (x === i) {
        let b = { idx: g, def: bi(m), ruleStack: Fu(y), occurrenceStack: Fu(v) }
        d.push(b)
      } else if (x instanceof Er)
        if (g < u - 1) {
          let b = g + 1,
            T = e[b]
          if (r(T, x.terminalType)) {
            let S = { idx: b, def: bi(m), ruleStack: y, occurrenceStack: v }
            d.push(S)
          }
        } else if (g === u - 1) f.push({ nextTokenType: x.terminalType, nextTokenOccurrence: x.idx, ruleStack: y, occurrenceStack: v }), (l = !0)
        else throw Error('non exhaustive match')
      else if (x instanceof on) {
        let b = an(y)
        b.push(x.nonTerminalName)
        let T = an(v)
        T.push(x.idx)
        let S = { idx: g, def: x.definition.concat(a, bi(m)), ruleStack: b, occurrenceStack: T }
        d.push(S)
      } else if (x instanceof ln) {
        let b = { idx: g, def: bi(m), ruleStack: y, occurrenceStack: v }
        d.push(b), d.push(s)
        let T = { idx: g, def: x.definition.concat(bi(m)), ruleStack: y, occurrenceStack: v }
        d.push(T)
      } else if (x instanceof Ln) {
        let b = new Pr({ definition: x.definition, idx: x.idx }),
          T = x.definition.concat([b], bi(m)),
          S = { idx: g, def: T, ruleStack: y, occurrenceStack: v }
        d.push(S)
      } else if (x instanceof Rn) {
        let b = new Er({ terminalType: x.separator }),
          T = new Pr({ definition: [b].concat(x.definition), idx: x.idx }),
          S = x.definition.concat([T], bi(m)),
          w = { idx: g, def: S, ruleStack: y, occurrenceStack: v }
        d.push(w)
      } else if (x instanceof Tn) {
        let b = { idx: g, def: bi(m), ruleStack: y, occurrenceStack: v }
        d.push(b), d.push(s)
        let T = new Er({ terminalType: x.separator }),
          S = new Pr({ definition: [T].concat(x.definition), idx: x.idx }),
          w = x.definition.concat([S], bi(m)),
          E = { idx: g, def: w, ruleStack: y, occurrenceStack: v }
        d.push(E)
      } else if (x instanceof Pr) {
        let b = { idx: g, def: bi(m), ruleStack: y, occurrenceStack: v }
        d.push(b), d.push(s)
        let T = new Pr({ definition: x.definition, idx: x.idx }),
          S = x.definition.concat([T], bi(m)),
          w = { idx: g, def: S, ruleStack: y, occurrenceStack: v }
        d.push(w)
      } else if (x instanceof wn)
        for (let b = x.definition.length - 1; b >= 0; b--) {
          let T = x.definition[b],
            S = { idx: g, def: T.definition.concat(bi(m)), ruleStack: y, occurrenceStack: v }
          d.push(S), d.push(s)
        }
      else if (x instanceof Dn) d.push({ idx: g, def: x.definition.concat(bi(m)), ruleStack: y, occurrenceStack: v })
      else if (x instanceof us) d.push(kFe(x, g, y, v))
      else throw Error('non exhaustive match')
    }
    return f
  }
  function kFe(t, e, r, n) {
    let i = an(r)
    i.push(t.name)
    let a = an(n)
    return a.push(1), { idx: e, def: t.definition, ruleStack: i, occurrenceStack: a }
  }
  var mM,
    Kk,
    Zg,
    Qk,
    yx,
    Zk,
    vx,
    xx = N(() => {
      'use strict'
      qt()
      rM()
      Vk()
      fs()
      ;(mM = class extends Gu {
        static {
          o(this, 'AbstractNextPossibleTokensWalker')
        }
        constructor(e, r) {
          super(),
            (this.topProd = e),
            (this.path = r),
            (this.possibleTokTypes = []),
            (this.nextProductionName = ''),
            (this.nextProductionOccurrence = 0),
            (this.found = !1),
            (this.isAtEndOfPath = !1)
        }
        startWalking() {
          if (((this.found = !1), this.path.ruleStack[0] !== this.topProd.name)) throw Error("The path does not start with the walker's top Rule!")
          return (
            (this.ruleStack = an(this.path.ruleStack).reverse()),
            (this.occurrenceStack = an(this.path.occurrenceStack).reverse()),
            this.ruleStack.pop(),
            this.occurrenceStack.pop(),
            this.updateExpectedNext(),
            this.walk(this.topProd),
            this.possibleTokTypes
          )
        }
        walk(e, r = []) {
          this.found || super.walk(e, r)
        }
        walkProdRef(e, r, n) {
          if (e.referencedRule.name === this.nextProductionName && e.idx === this.nextProductionOccurrence) {
            let i = r.concat(n)
            this.updateExpectedNext(), this.walk(e.referencedRule, i)
          }
        }
        updateExpectedNext() {
          hr(this.ruleStack)
            ? ((this.nextProductionName = ''), (this.nextProductionOccurrence = 0), (this.isAtEndOfPath = !0))
            : ((this.nextProductionName = this.ruleStack.pop()), (this.nextProductionOccurrence = this.occurrenceStack.pop()))
        }
      }),
        (Kk = class extends mM {
          static {
            o(this, 'NextAfterTokenWalker')
          }
          constructor(e, r) {
            super(e, r),
              (this.path = r),
              (this.nextTerminalName = ''),
              (this.nextTerminalOccurrence = 0),
              (this.nextTerminalName = this.path.lastTok.name),
              (this.nextTerminalOccurrence = this.path.lastTokOccurrence)
          }
          walkTerminal(e, r, n) {
            if (this.isAtEndOfPath && e.terminalType.name === this.nextTerminalName && e.idx === this.nextTerminalOccurrence && !this.found) {
              let i = r.concat(n),
                a = new Dn({ definition: i })
              ;(this.possibleTokTypes = yp(a)), (this.found = !0)
            }
          }
        }),
        (Zg = class extends Gu {
          static {
            o(this, 'AbstractNextTerminalAfterProductionWalker')
          }
          constructor(e, r) {
            super(), (this.topRule = e), (this.occurrence = r), (this.result = { token: void 0, occurrence: void 0, isEndOfRule: void 0 })
          }
          startWalking() {
            return this.walk(this.topRule), this.result
          }
        }),
        (Qk = class extends Zg {
          static {
            o(this, 'NextTerminalAfterManyWalker')
          }
          walkMany(e, r, n) {
            if (e.idx === this.occurrence) {
              let i = ia(r.concat(n))
              ;(this.result.isEndOfRule = i === void 0), i instanceof Er && ((this.result.token = i.terminalType), (this.result.occurrence = i.idx))
            } else super.walkMany(e, r, n)
          }
        }),
        (yx = class extends Zg {
          static {
            o(this, 'NextTerminalAfterManySepWalker')
          }
          walkManySep(e, r, n) {
            if (e.idx === this.occurrence) {
              let i = ia(r.concat(n))
              ;(this.result.isEndOfRule = i === void 0), i instanceof Er && ((this.result.token = i.terminalType), (this.result.occurrence = i.idx))
            } else super.walkManySep(e, r, n)
          }
        }),
        (Zk = class extends Zg {
          static {
            o(this, 'NextTerminalAfterAtLeastOneWalker')
          }
          walkAtLeastOne(e, r, n) {
            if (e.idx === this.occurrence) {
              let i = ia(r.concat(n))
              ;(this.result.isEndOfRule = i === void 0), i instanceof Er && ((this.result.token = i.terminalType), (this.result.occurrence = i.idx))
            } else super.walkAtLeastOne(e, r, n)
          }
        }),
        (vx = class extends Zg {
          static {
            o(this, 'NextTerminalAfterAtLeastOneSepWalker')
          }
          walkAtLeastOneSep(e, r, n) {
            if (e.idx === this.occurrence) {
              let i = ia(r.concat(n))
              ;(this.result.isEndOfRule = i === void 0), i instanceof Er && ((this.result.token = i.terminalType), (this.result.occurrence = i.idx))
            } else super.walkAtLeastOneSep(e, r, n)
          }
        })
      o(Jk, 'possiblePathsFrom')
      o(eE, 'nextPossibleTokensAfter')
      o(kFe, 'expandTopLevelRule')
    })
  function bx(t) {
    if (t instanceof ln || t === 'Option') return Qn.OPTION
    if (t instanceof Pr || t === 'Repetition') return Qn.REPETITION
    if (t instanceof Ln || t === 'RepetitionMandatory') return Qn.REPETITION_MANDATORY
    if (t instanceof Rn || t === 'RepetitionMandatoryWithSeparator') return Qn.REPETITION_MANDATORY_WITH_SEPARATOR
    if (t instanceof Tn || t === 'RepetitionWithSeparator') return Qn.REPETITION_WITH_SEPARATOR
    if (t instanceof wn || t === 'Alternation') return Qn.ALTERNATION
    throw Error('non exhaustive match')
  }
  function rE(t) {
    let { occurrence: e, rule: r, prodType: n, maxLookahead: i } = t,
      a = bx(n)
    return a === Qn.ALTERNATION ? Jg(e, r, i) : e1(e, r, a, i)
  }
  function Roe(t, e, r, n, i, a) {
    let s = Jg(t, e, r),
      l = Boe(s) ? jg : Vu
    return a(s, n, l, i)
  }
  function Noe(t, e, r, n, i, a) {
    let s = e1(t, e, i, r),
      l = Boe(s) ? jg : Vu
    return a(s[0], l, n)
  }
  function Moe(t, e, r, n) {
    let i = t.length,
      a = Pa(t, s => Pa(s, l => l.length === 1))
    if (e)
      return function (s) {
        let l = Je(s, u => u.GATE)
        for (let u = 0; u < i; u++) {
          let h = t[u],
            f = h.length,
            d = l[u]
          if (!(d !== void 0 && d.call(this) === !1))
            e: for (let p = 0; p < f; p++) {
              let m = h[p],
                g = m.length
              for (let y = 0; y < g; y++) {
                let v = this.LA(y + 1)
                if (r(v, m[y]) === !1) continue e
              }
              return u
            }
        }
      }
    if (a && !n) {
      let s = Je(t, u => qr(u)),
        l = Xr(
          s,
          (u, h, f) => (
            Ae(h, d => {
              Bt(u, d.tokenTypeIdx) || (u[d.tokenTypeIdx] = f),
                Ae(d.categoryMatches, p => {
                  Bt(u, p) || (u[p] = f)
                })
            }),
            u
          ),
          {}
        )
      return function () {
        let u = this.LA(1)
        return l[u.tokenTypeIdx]
      }
    } else
      return function () {
        for (let s = 0; s < i; s++) {
          let l = t[s],
            u = l.length
          e: for (let h = 0; h < u; h++) {
            let f = l[h],
              d = f.length
            for (let p = 0; p < d; p++) {
              let m = this.LA(p + 1)
              if (r(m, f[p]) === !1) continue e
            }
            return s
          }
        }
      }
  }
  function Ioe(t, e, r) {
    let n = Pa(t, a => a.length === 1),
      i = t.length
    if (n && !r) {
      let a = qr(t)
      if (a.length === 1 && hr(a[0].categoryMatches)) {
        let l = a[0].tokenTypeIdx
        return function () {
          return this.LA(1).tokenTypeIdx === l
        }
      } else {
        let s = Xr(
          a,
          (l, u, h) => (
            (l[u.tokenTypeIdx] = !0),
            Ae(u.categoryMatches, f => {
              l[f] = !0
            }),
            l
          ),
          []
        )
        return function () {
          let l = this.LA(1)
          return s[l.tokenTypeIdx] === !0
        }
      }
    } else
      return function () {
        e: for (let a = 0; a < i; a++) {
          let s = t[a],
            l = s.length
          for (let u = 0; u < l; u++) {
            let h = this.LA(u + 1)
            if (e(h, s[u]) === !1) continue e
          }
          return !0
        }
        return !1
      }
  }
  function Loe(t) {
    let e = new Array(t)
    for (let r = 0; r < t; r++) e[r] = []
    return e
  }
  function gM(t) {
    let e = ['']
    for (let r = 0; r < t.length; r++) {
      let n = t[r],
        i = []
      for (let a = 0; a < e.length; a++) {
        let s = e[a]
        i.push(s + '_' + n.tokenTypeIdx)
        for (let l = 0; l < n.categoryMatches.length; l++) {
          let u = '_' + n.categoryMatches[l]
          i.push(s + u)
        }
      }
      e = i
    }
    return e
  }
  function EFe(t, e, r) {
    for (let n = 0; n < t.length; n++) {
      if (n === r) continue
      let i = t[n]
      for (let a = 0; a < e.length; a++) {
        let s = e[a]
        if (i[s] === !0) return !1
      }
    }
    return !0
  }
  function Ooe(t, e) {
    let r = Je(t, s => Jk([s], 1)),
      n = Loe(r.length),
      i = Je(r, s => {
        let l = {}
        return (
          Ae(s, u => {
            let h = gM(u.partialPath)
            Ae(h, f => {
              l[f] = !0
            })
          }),
          l
        )
      }),
      a = r
    for (let s = 1; s <= e; s++) {
      let l = a
      a = Loe(l.length)
      for (let u = 0; u < l.length; u++) {
        let h = l[u]
        for (let f = 0; f < h.length; f++) {
          let d = h[f].partialPath,
            p = h[f].suffixDef,
            m = gM(d)
          if (EFe(i, m, u) || hr(p) || d.length === e) {
            let y = n[u]
            if (nE(y, d) === !1) {
              y.push(d)
              for (let v = 0; v < m.length; v++) {
                let x = m[v]
                i[u][x] = !0
              }
            }
          } else {
            let y = Jk(p, s + 1, d)
            ;(a[u] = a[u].concat(y)),
              Ae(y, v => {
                let x = gM(v.partialPath)
                Ae(x, b => {
                  i[u][b] = !0
                })
              })
          }
        }
      }
    }
    return n
  }
  function Jg(t, e, r, n) {
    let i = new tE(t, Qn.ALTERNATION, n)
    return e.accept(i), Ooe(i.result, r)
  }
  function e1(t, e, r, n) {
    let i = new tE(t, r)
    e.accept(i)
    let a = i.result,
      l = new yM(e, t, r).startWalking(),
      u = new Dn({ definition: a }),
      h = new Dn({ definition: l })
    return Ooe([u, h], n)
  }
  function nE(t, e) {
    e: for (let r = 0; r < t.length; r++) {
      let n = t[r]
      if (n.length === e.length) {
        for (let i = 0; i < n.length; i++) {
          let a = e[i],
            s = n[i]
          if ((a === s || s.categoryMatchesMap[a.tokenTypeIdx] !== void 0) === !1) continue e
        }
        return !0
      }
    }
    return !1
  }
  function Poe(t, e) {
    return (
      t.length < e.length &&
      Pa(t, (r, n) => {
        let i = e[n]
        return r === i || i.categoryMatchesMap[r.tokenTypeIdx]
      })
    )
  }
  function Boe(t) {
    return Pa(t, e => Pa(e, r => Pa(r, n => hr(n.categoryMatches))))
  }
  var Qn,
    yM,
    tE,
    t1 = N(() => {
      'use strict'
      qt()
      xx()
      Vk()
      xp()
      fs()
      ;(function (t) {
        ;(t[(t.OPTION = 0)] = 'OPTION'),
          (t[(t.REPETITION = 1)] = 'REPETITION'),
          (t[(t.REPETITION_MANDATORY = 2)] = 'REPETITION_MANDATORY'),
          (t[(t.REPETITION_MANDATORY_WITH_SEPARATOR = 3)] = 'REPETITION_MANDATORY_WITH_SEPARATOR'),
          (t[(t.REPETITION_WITH_SEPARATOR = 4)] = 'REPETITION_WITH_SEPARATOR'),
          (t[(t.ALTERNATION = 5)] = 'ALTERNATION')
      })(Qn || (Qn = {}))
      o(bx, 'getProdType')
      o(rE, 'getLookaheadPaths')
      o(Roe, 'buildLookaheadFuncForOr')
      o(Noe, 'buildLookaheadFuncForOptionalProd')
      o(Moe, 'buildAlternativesLookAheadFunc')
      o(Ioe, 'buildSingleAlternativeLookaheadFunction')
      ;(yM = class extends Gu {
        static {
          o(this, 'RestDefinitionFinderWalker')
        }
        constructor(e, r, n) {
          super(), (this.topProd = e), (this.targetOccurrence = r), (this.targetProdType = n)
        }
        startWalking() {
          return this.walk(this.topProd), this.restDef
        }
        checkIsTarget(e, r, n, i) {
          return e.idx === this.targetOccurrence && this.targetProdType === r ? ((this.restDef = n.concat(i)), !0) : !1
        }
        walkOption(e, r, n) {
          this.checkIsTarget(e, Qn.OPTION, r, n) || super.walkOption(e, r, n)
        }
        walkAtLeastOne(e, r, n) {
          this.checkIsTarget(e, Qn.REPETITION_MANDATORY, r, n) || super.walkOption(e, r, n)
        }
        walkAtLeastOneSep(e, r, n) {
          this.checkIsTarget(e, Qn.REPETITION_MANDATORY_WITH_SEPARATOR, r, n) || super.walkOption(e, r, n)
        }
        walkMany(e, r, n) {
          this.checkIsTarget(e, Qn.REPETITION, r, n) || super.walkOption(e, r, n)
        }
        walkManySep(e, r, n) {
          this.checkIsTarget(e, Qn.REPETITION_WITH_SEPARATOR, r, n) || super.walkOption(e, r, n)
        }
      }),
        (tE = class extends hs {
          static {
            o(this, 'InsideDefinitionFinderVisitor')
          }
          constructor(e, r, n) {
            super(), (this.targetOccurrence = e), (this.targetProdType = r), (this.targetRef = n), (this.result = [])
          }
          checkIsTarget(e, r) {
            e.idx === this.targetOccurrence && this.targetProdType === r && (this.targetRef === void 0 || e === this.targetRef) && (this.result = e.definition)
          }
          visitOption(e) {
            this.checkIsTarget(e, Qn.OPTION)
          }
          visitRepetition(e) {
            this.checkIsTarget(e, Qn.REPETITION)
          }
          visitRepetitionMandatory(e) {
            this.checkIsTarget(e, Qn.REPETITION_MANDATORY)
          }
          visitRepetitionMandatoryWithSeparator(e) {
            this.checkIsTarget(e, Qn.REPETITION_MANDATORY_WITH_SEPARATOR)
          }
          visitRepetitionWithSeparator(e) {
            this.checkIsTarget(e, Qn.REPETITION_WITH_SEPARATOR)
          }
          visitAlternation(e) {
            this.checkIsTarget(e, Qn.ALTERNATION)
          }
        })
      o(Loe, 'initializeArrayOfArrays')
      o(gM, 'pathToHashKeys')
      o(EFe, 'isUniquePrefixHash')
      o(Ooe, 'lookAheadSequenceFromAlternatives')
      o(Jg, 'getLookaheadPathsForOr')
      o(e1, 'getLookaheadPathsForOptionalProd')
      o(nE, 'containsPath')
      o(Poe, 'isStrictPrefixOfPath')
      o(Boe, 'areTokenCategoriesNotUsed')
    })
  function Foe(t) {
    let e = t.lookaheadStrategy.validate({ rules: t.rules, tokenTypes: t.tokenTypes, grammarName: t.grammarName })
    return Je(e, r => Object.assign({ type: Vi.CUSTOM_LOOKAHEAD_VALIDATION }, r))
  }
  function $oe(t, e, r, n) {
    let i = ga(t, u => SFe(u, r)),
      a = RFe(t, e, r),
      s = ga(t, u => _Fe(u, r)),
      l = ga(t, u => AFe(u, t, n, r))
    return i.concat(a, s, l)
  }
  function SFe(t, e) {
    let r = new vM()
    t.accept(r)
    let n = r.allProductions,
      i = yR(n, CFe),
      a = zs(i, l => l.length > 1)
    return Je(br(a), l => {
      let u = ia(l),
        h = e.buildDuplicateFoundError(t, l),
        f = Vs(u),
        d = { message: h, type: Vi.DUPLICATE_PRODUCTIONS, ruleName: t.name, dslName: f, occurrence: u.idx },
        p = zoe(u)
      return p && (d.parameter = p), d
    })
  }
  function CFe(t) {
    return `${Vs(t)}_#_${t.idx}_#_${zoe(t)}`
  }
  function zoe(t) {
    return t instanceof Er ? t.terminalType.name : t instanceof on ? t.nonTerminalName : ''
  }
  function AFe(t, e, r, n) {
    let i = []
    if (Xr(e, (s, l) => (l.name === t.name ? s + 1 : s), 0) > 1) {
      let s = n.buildDuplicateRuleNameError({ topLevelRule: t, grammarName: r })
      i.push({ message: s, type: Vi.DUPLICATE_RULE_NAME, ruleName: t.name })
    }
    return i
  }
  function Goe(t, e, r) {
    let n = [],
      i
    return (
      Xn(e, t) ||
        ((i = `Invalid rule override, rule: ->${t}<- cannot be overridden in the grammar: ->${r}<-as it is not defined in any of the super grammars `),
        n.push({ message: i, type: Vi.INVALID_RULE_OVERRIDE, ruleName: t })),
      n
    )
  }
  function bM(t, e, r, n = []) {
    let i = [],
      a = iE(e.definition)
    if (hr(a)) return []
    {
      let s = t.name
      Xn(a, t) && i.push({ message: r.buildLeftRecursionError({ topLevelRule: t, leftRecursionPath: n }), type: Vi.LEFT_RECURSION, ruleName: s })
      let u = af(a, n.concat([t])),
        h = ga(u, f => {
          let d = an(n)
          return d.push(f), bM(t, f, r, d)
        })
      return i.concat(h)
    }
  }
  function iE(t) {
    let e = []
    if (hr(t)) return e
    let r = ia(t)
    if (r instanceof on) e.push(r.referencedRule)
    else if (r instanceof Dn || r instanceof ln || r instanceof Ln || r instanceof Rn || r instanceof Tn || r instanceof Pr) e = e.concat(iE(r.definition))
    else if (r instanceof wn) e = qr(Je(r.definition, a => iE(a.definition)))
    else if (!(r instanceof Er)) throw Error('non exhaustive match')
    let n = gp(r),
      i = t.length > 1
    if (n && i) {
      let a = bi(t)
      return e.concat(iE(a))
    } else return e
  }
  function Voe(t, e) {
    let r = new Tx()
    t.accept(r)
    let n = r.alternations
    return ga(n, a => {
      let s = Fu(a.definition)
      return ga(s, (l, u) => {
        let h = eE([l], [], Vu, 1)
        return hr(h)
          ? [
              {
                message: e.buildEmptyAlternationError({ topLevelRule: t, alternation: a, emptyChoiceIdx: u }),
                type: Vi.NONE_LAST_EMPTY_ALT,
                ruleName: t.name,
                occurrence: a.idx,
                alternative: u + 1
              }
            ]
          : []
      })
    })
  }
  function Uoe(t, e, r) {
    let n = new Tx()
    t.accept(n)
    let i = n.alternations
    return (
      (i = sf(i, s => s.ignoreAmbiguities === !0)),
      ga(i, s => {
        let l = s.idx,
          u = s.maxLookahead || e,
          h = Jg(l, t, u, s),
          f = DFe(h, s, t, r),
          d = LFe(h, s, t, r)
        return f.concat(d)
      })
    )
  }
  function _Fe(t, e) {
    let r = new Tx()
    t.accept(r)
    let n = r.alternations
    return ga(n, a =>
      a.definition.length > 255
        ? [{ message: e.buildTooManyAlternativesError({ topLevelRule: t, alternation: a }), type: Vi.TOO_MANY_ALTS, ruleName: t.name, occurrence: a.idx }]
        : []
    )
  }
  function Hoe(t, e, r) {
    let n = []
    return (
      Ae(t, i => {
        let a = new xM()
        i.accept(a)
        let s = a.allProductions
        Ae(s, l => {
          let u = bx(l),
            h = l.maxLookahead || e,
            f = l.idx,
            p = e1(f, i, u, h)[0]
          if (hr(qr(p))) {
            let m = r.buildEmptyRepetitionError({ topLevelRule: i, repetition: l })
            n.push({ message: m, type: Vi.NO_NON_EMPTY_LOOKAHEAD, ruleName: i.name })
          }
        })
      }),
      n
    )
  }
  function DFe(t, e, r, n) {
    let i = [],
      a = Xr(
        t,
        (l, u, h) => (
          e.definition[h].ignoreAmbiguities === !0 ||
            Ae(u, f => {
              let d = [h]
              Ae(t, (p, m) => {
                h !== m && nE(p, f) && e.definition[m].ignoreAmbiguities !== !0 && d.push(m)
              }),
                d.length > 1 && !nE(i, f) && (i.push(f), l.push({ alts: d, path: f }))
            }),
          l
        ),
        []
      )
    return Je(a, l => {
      let u = Je(l.alts, f => f + 1)
      return {
        message: n.buildAlternationAmbiguityError({ topLevelRule: r, alternation: e, ambiguityIndices: u, prefixPath: l.path }),
        type: Vi.AMBIGUOUS_ALTS,
        ruleName: r.name,
        occurrence: e.idx,
        alternatives: l.alts
      }
    })
  }
  function LFe(t, e, r, n) {
    let i = Xr(
      t,
      (s, l, u) => {
        let h = Je(l, f => ({ idx: u, path: f }))
        return s.concat(h)
      },
      []
    )
    return Ac(
      ga(i, s => {
        if (e.definition[s.idx].ignoreAmbiguities === !0) return []
        let u = s.idx,
          h = s.path,
          f = Yr(i, p => e.definition[p.idx].ignoreAmbiguities !== !0 && p.idx < u && Poe(p.path, h))
        return Je(f, p => {
          let m = [p.idx + 1, u + 1],
            g = e.idx === 0 ? '' : e.idx
          return {
            message: n.buildAlternationPrefixAmbiguityError({ topLevelRule: r, alternation: e, ambiguityIndices: m, prefixPath: p.path }),
            type: Vi.AMBIGUOUS_PREFIX_ALTS,
            ruleName: r.name,
            occurrence: g,
            alternatives: m
          }
        })
      })
    )
  }
  function RFe(t, e, r) {
    let n = [],
      i = Je(e, a => a.name)
    return (
      Ae(t, a => {
        let s = a.name
        if (Xn(i, s)) {
          let l = r.buildNamespaceConflictError(a)
          n.push({ message: l, type: Vi.CONFLICT_TOKENS_RULES_NAMESPACE, ruleName: s })
        }
      }),
      n
    )
  }
  var vM,
    Tx,
    xM,
    wx = N(() => {
      'use strict'
      qt()
      Us()
      fs()
      t1()
      xx()
      xp()
      o(Foe, 'validateLookahead')
      o($oe, 'validateGrammar')
      o(SFe, 'validateDuplicateProductions')
      o(CFe, 'identifyProductionForDuplicates')
      o(zoe, 'getExtraProductionArgument')
      vM = class extends hs {
        static {
          o(this, 'OccurrenceValidationCollector')
        }
        constructor() {
          super(...arguments), (this.allProductions = [])
        }
        visitNonTerminal(e) {
          this.allProductions.push(e)
        }
        visitOption(e) {
          this.allProductions.push(e)
        }
        visitRepetitionWithSeparator(e) {
          this.allProductions.push(e)
        }
        visitRepetitionMandatory(e) {
          this.allProductions.push(e)
        }
        visitRepetitionMandatoryWithSeparator(e) {
          this.allProductions.push(e)
        }
        visitRepetition(e) {
          this.allProductions.push(e)
        }
        visitAlternation(e) {
          this.allProductions.push(e)
        }
        visitTerminal(e) {
          this.allProductions.push(e)
        }
      }
      o(AFe, 'validateRuleDoesNotAlreadyExist')
      o(Goe, 'validateRuleIsOverridden')
      o(bM, 'validateNoLeftRecursion')
      o(iE, 'getFirstNoneTerminal')
      Tx = class extends hs {
        static {
          o(this, 'OrCollector')
        }
        constructor() {
          super(...arguments), (this.alternations = [])
        }
        visitAlternation(e) {
          this.alternations.push(e)
        }
      }
      o(Voe, 'validateEmptyOrAlternative')
      o(Uoe, 'validateAmbiguousAlternationAlternatives')
      xM = class extends hs {
        static {
          o(this, 'RepetitionCollector')
        }
        constructor() {
          super(...arguments), (this.allProductions = [])
        }
        visitRepetitionWithSeparator(e) {
          this.allProductions.push(e)
        }
        visitRepetitionMandatory(e) {
          this.allProductions.push(e)
        }
        visitRepetitionMandatoryWithSeparator(e) {
          this.allProductions.push(e)
        }
        visitRepetition(e) {
          this.allProductions.push(e)
        }
      }
      o(_Fe, 'validateTooManyAlts')
      o(Hoe, 'validateSomeNonEmptyLookaheadPath')
      o(DFe, 'checkAlternativesAmbiguities')
      o(LFe, 'checkPrefixAlternativesAmbiguities')
      o(RFe, 'checkTerminalAndNoneTerminalsNameSpace')
    })
  function Woe(t) {
    let e = nf(t, { errMsgProvider: Aoe }),
      r = {}
    return (
      Ae(t.rules, n => {
        r[n.name] = n
      }),
      _oe(r, e.errMsgProvider)
    )
  }
  function qoe(t) {
    return (t = nf(t, { errMsgProvider: $l })), $oe(t.rules, t.tokenTypes, t.errMsgProvider, t.grammarName)
  }
  var Yoe = N(() => {
    'use strict'
    qt()
    Doe()
    wx()
    Qg()
    o(Woe, 'resolveGrammar')
    o(qoe, 'validateGrammar')
  })
  function pf(t) {
    return Xn(Zoe, t.name)
  }
  var Xoe,
    joe,
    Koe,
    Qoe,
    Zoe,
    r1,
    Tp,
    kx,
    Ex,
    Sx,
    n1 = N(() => {
      'use strict'
      qt()
      ;(Xoe = 'MismatchedTokenException'), (joe = 'NoViableAltException'), (Koe = 'EarlyExitException'), (Qoe = 'NotAllInputParsedException'), (Zoe = [Xoe, joe, Koe, Qoe])
      Object.freeze(Zoe)
      o(pf, 'isRecognitionException')
      ;(r1 = class extends Error {
        static {
          o(this, 'RecognitionException')
        }
        constructor(e, r) {
          super(e),
            (this.token = r),
            (this.resyncedTokens = []),
            Object.setPrototypeOf(this, new.target.prototype),
            Error.captureStackTrace && Error.captureStackTrace(this, this.constructor)
        }
      }),
        (Tp = class extends r1 {
          static {
            o(this, 'MismatchedTokenException')
          }
          constructor(e, r, n) {
            super(e, r), (this.previousToken = n), (this.name = Xoe)
          }
        }),
        (kx = class extends r1 {
          static {
            o(this, 'NoViableAltException')
          }
          constructor(e, r, n) {
            super(e, r), (this.previousToken = n), (this.name = joe)
          }
        }),
        (Ex = class extends r1 {
          static {
            o(this, 'NotAllInputParsedException')
          }
          constructor(e, r) {
            super(e, r), (this.name = Qoe)
          }
        }),
        (Sx = class extends r1 {
          static {
            o(this, 'EarlyExitException')
          }
          constructor(e, r, n) {
            super(e, r), (this.previousToken = n), (this.name = Koe)
          }
        })
    })
  function NFe(t, e, r, n, i, a, s) {
    let l = this.getKeyForAutomaticLookahead(n, i),
      u = this.firstAfterRepMap[l]
    if (u === void 0) {
      let p = this.getCurrRuleFullName(),
        m = this.getGAstProductions()[p]
      ;(u = new a(m, i).startWalking()), (this.firstAfterRepMap[l] = u)
    }
    let h = u.token,
      f = u.occurrence,
      d = u.isEndOfRule
    this.RULE_STACK.length === 1 && d && h === void 0 && ((h = fo), (f = 1)),
      !(h === void 0 || f === void 0) && this.shouldInRepetitionRecoveryBeTried(h, f, s) && this.tryInRepetitionRecovery(t, e, r, h)
  }
  var TM,
    kM,
    wM,
    aE,
    EM = N(() => {
      'use strict'
      bp()
      qt()
      n1()
      nM()
      Us()
      ;(TM = {}),
        (kM = 'InRuleRecoveryException'),
        (wM = class extends Error {
          static {
            o(this, 'InRuleRecoveryException')
          }
          constructor(e) {
            super(e), (this.name = kM)
          }
        }),
        (aE = class {
          static {
            o(this, 'Recoverable')
          }
          initRecoverable(e) {
            ;(this.firstAfterRepMap = {}),
              (this.resyncFollows = {}),
              (this.recoveryEnabled = Bt(e, 'recoveryEnabled') ? e.recoveryEnabled : ds.recoveryEnabled),
              this.recoveryEnabled && (this.attemptInRepetitionRecovery = NFe)
          }
          getTokenToInsert(e) {
            let r = Wu(e, '', NaN, NaN, NaN, NaN, NaN, NaN)
            return (r.isInsertedInRecovery = !0), r
          }
          canTokenTypeBeInsertedInRecovery(e) {
            return !0
          }
          canTokenTypeBeDeletedInRecovery(e) {
            return !0
          }
          tryInRepetitionRecovery(e, r, n, i) {
            let a = this.findReSyncTokenType(),
              s = this.exportLexerState(),
              l = [],
              u = !1,
              h = this.LA(1),
              f = this.LA(1),
              d = o(() => {
                let p = this.LA(0),
                  m = this.errorMessageProvider.buildMismatchTokenMessage({ expected: i, actual: h, previous: p, ruleName: this.getCurrRuleFullName() }),
                  g = new Tp(m, h, this.LA(0))
                ;(g.resyncedTokens = Fu(l)), this.SAVE_ERROR(g)
              }, 'generateErrorMessage')
            for (; !u; )
              if (this.tokenMatcher(f, i)) {
                d()
                return
              } else if (n.call(this)) {
                d(), e.apply(this, r)
                return
              } else this.tokenMatcher(f, a) ? (u = !0) : ((f = this.SKIP_TOKEN()), this.addToResyncTokens(f, l))
            this.importLexerState(s)
          }
          shouldInRepetitionRecoveryBeTried(e, r, n) {
            return !(n === !1 || this.tokenMatcher(this.LA(1), e) || this.isBackTracking() || this.canPerformInRuleRecovery(e, this.getFollowsForInRuleRecovery(e, r)))
          }
          getFollowsForInRuleRecovery(e, r) {
            let n = this.getCurrentGrammarPath(e, r)
            return this.getNextPossibleTokenTypes(n)
          }
          tryInRuleRecovery(e, r) {
            if (this.canRecoverWithSingleTokenInsertion(e, r)) return this.getTokenToInsert(e)
            if (this.canRecoverWithSingleTokenDeletion(e)) {
              let n = this.SKIP_TOKEN()
              return this.consumeToken(), n
            }
            throw new wM('sad sad panda')
          }
          canPerformInRuleRecovery(e, r) {
            return this.canRecoverWithSingleTokenInsertion(e, r) || this.canRecoverWithSingleTokenDeletion(e)
          }
          canRecoverWithSingleTokenInsertion(e, r) {
            if (!this.canTokenTypeBeInsertedInRecovery(e) || hr(r)) return !1
            let n = this.LA(1)
            return ls(r, a => this.tokenMatcher(n, a)) !== void 0
          }
          canRecoverWithSingleTokenDeletion(e) {
            return this.canTokenTypeBeDeletedInRecovery(e) ? this.tokenMatcher(this.LA(2), e) : !1
          }
          isInCurrentRuleReSyncSet(e) {
            let r = this.getCurrFollowKey(),
              n = this.getFollowSetFromFollowKey(r)
            return Xn(n, e)
          }
          findReSyncTokenType() {
            let e = this.flattenFollowSet(),
              r = this.LA(1),
              n = 2
            for (;;) {
              let i = ls(e, a => gx(r, a))
              if (i !== void 0) return i
              ;(r = this.LA(n)), n++
            }
          }
          getCurrFollowKey() {
            if (this.RULE_STACK.length === 1) return TM
            let e = this.getLastExplicitRuleShortName(),
              r = this.getLastExplicitRuleOccurrenceIndex(),
              n = this.getPreviousExplicitRuleShortName()
            return { ruleName: this.shortRuleNameToFullName(e), idxInCallingRule: r, inRule: this.shortRuleNameToFullName(n) }
          }
          buildFullFollowKeyStack() {
            let e = this.RULE_STACK,
              r = this.RULE_OCCURRENCE_STACK
            return Je(e, (n, i) => (i === 0 ? TM : { ruleName: this.shortRuleNameToFullName(n), idxInCallingRule: r[i], inRule: this.shortRuleNameToFullName(e[i - 1]) }))
          }
          flattenFollowSet() {
            let e = Je(this.buildFullFollowKeyStack(), r => this.getFollowSetFromFollowKey(r))
            return qr(e)
          }
          getFollowSetFromFollowKey(e) {
            if (e === TM) return [fo]
            let r = e.ruleName + e.idxInCallingRule + Uk + e.inRule
            return this.resyncFollows[r]
          }
          addToResyncTokens(e, r) {
            return this.tokenMatcher(e, fo) || r.push(e), r
          }
          reSyncTo(e) {
            let r = [],
              n = this.LA(1)
            for (; this.tokenMatcher(n, e) === !1; ) (n = this.SKIP_TOKEN()), this.addToResyncTokens(n, r)
            return Fu(r)
          }
          attemptInRepetitionRecovery(e, r, n, i, a, s, l) {}
          getCurrentGrammarPath(e, r) {
            let n = this.getHumanReadableRuleStack(),
              i = an(this.RULE_OCCURRENCE_STACK)
            return { ruleStack: n, occurrenceStack: i, lastTok: e, lastTokOccurrence: r }
          }
          getHumanReadableRuleStack() {
            return Je(this.RULE_STACK, e => this.shortRuleNameToFullName(e))
          }
        })
      o(NFe, 'attemptInRepetitionRecovery')
    })
  function sE(t, e, r) {
    return r | e | t
  }
  var oE = N(() => {
    'use strict'
    o(sE, 'getKeyForAutomaticLookahead')
  })
  var Yu,
    SM = N(() => {
      'use strict'
      qt()
      Qg()
      Us()
      wx()
      t1()
      Yu = class {
        static {
          o(this, 'LLkLookaheadStrategy')
        }
        constructor(e) {
          var r
          this.maxLookahead = (r = e?.maxLookahead) !== null && r !== void 0 ? r : ds.maxLookahead
        }
        validate(e) {
          let r = this.validateNoLeftRecursion(e.rules)
          if (hr(r)) {
            let n = this.validateEmptyOrAlternatives(e.rules),
              i = this.validateAmbiguousAlternationAlternatives(e.rules, this.maxLookahead),
              a = this.validateSomeNonEmptyLookaheadPath(e.rules, this.maxLookahead)
            return [...r, ...n, ...i, ...a]
          }
          return r
        }
        validateNoLeftRecursion(e) {
          return ga(e, r => bM(r, r, $l))
        }
        validateEmptyOrAlternatives(e) {
          return ga(e, r => Voe(r, $l))
        }
        validateAmbiguousAlternationAlternatives(e, r) {
          return ga(e, n => Uoe(n, r, $l))
        }
        validateSomeNonEmptyLookaheadPath(e, r) {
          return Hoe(e, r, $l)
        }
        buildLookaheadForAlternation(e) {
          return Roe(e.prodOccurrence, e.rule, e.maxLookahead, e.hasPredicates, e.dynamicTokensEnabled, Moe)
        }
        buildLookaheadForOptional(e) {
          return Noe(e.prodOccurrence, e.rule, e.maxLookahead, e.dynamicTokensEnabled, bx(e.prodType), Ioe)
        }
      }
    })
  function MFe(t) {
    lE.reset(), t.accept(lE)
    let e = lE.dslMethods
    return lE.reset(), e
  }
  var cE,
    CM,
    lE,
    Joe = N(() => {
      'use strict'
      qt()
      Us()
      oE()
      fs()
      SM()
      ;(cE = class {
        static {
          o(this, 'LooksAhead')
        }
        initLooksAhead(e) {
          ;(this.dynamicTokensEnabled = Bt(e, 'dynamicTokensEnabled') ? e.dynamicTokensEnabled : ds.dynamicTokensEnabled),
            (this.maxLookahead = Bt(e, 'maxLookahead') ? e.maxLookahead : ds.maxLookahead),
            (this.lookaheadStrategy = Bt(e, 'lookaheadStrategy') ? e.lookaheadStrategy : new Yu({ maxLookahead: this.maxLookahead })),
            (this.lookAheadFuncsCache = new Map())
        }
        preComputeLookaheadFunctions(e) {
          Ae(e, r => {
            this.TRACE_INIT(`${r.name} Rule Lookahead`, () => {
              let { alternation: n, repetition: i, option: a, repetitionMandatory: s, repetitionMandatoryWithSeparator: l, repetitionWithSeparator: u } = MFe(r)
              Ae(n, h => {
                let f = h.idx === 0 ? '' : h.idx
                this.TRACE_INIT(`${Vs(h)}${f}`, () => {
                  let d = this.lookaheadStrategy.buildLookaheadForAlternation({
                      prodOccurrence: h.idx,
                      rule: r,
                      maxLookahead: h.maxLookahead || this.maxLookahead,
                      hasPredicates: h.hasPredicates,
                      dynamicTokensEnabled: this.dynamicTokensEnabled
                    }),
                    p = sE(this.fullRuleNameToShort[r.name], 256, h.idx)
                  this.setLaFuncCache(p, d)
                })
              }),
                Ae(i, h => {
                  this.computeLookaheadFunc(r, h.idx, 768, 'Repetition', h.maxLookahead, Vs(h))
                }),
                Ae(a, h => {
                  this.computeLookaheadFunc(r, h.idx, 512, 'Option', h.maxLookahead, Vs(h))
                }),
                Ae(s, h => {
                  this.computeLookaheadFunc(r, h.idx, 1024, 'RepetitionMandatory', h.maxLookahead, Vs(h))
                }),
                Ae(l, h => {
                  this.computeLookaheadFunc(r, h.idx, 1536, 'RepetitionMandatoryWithSeparator', h.maxLookahead, Vs(h))
                }),
                Ae(u, h => {
                  this.computeLookaheadFunc(r, h.idx, 1280, 'RepetitionWithSeparator', h.maxLookahead, Vs(h))
                })
            })
          })
        }
        computeLookaheadFunc(e, r, n, i, a, s) {
          this.TRACE_INIT(`${s}${r === 0 ? '' : r}`, () => {
            let l = this.lookaheadStrategy.buildLookaheadForOptional({
                prodOccurrence: r,
                rule: e,
                maxLookahead: a || this.maxLookahead,
                dynamicTokensEnabled: this.dynamicTokensEnabled,
                prodType: i
              }),
              u = sE(this.fullRuleNameToShort[e.name], n, r)
            this.setLaFuncCache(u, l)
          })
        }
        getKeyForAutomaticLookahead(e, r) {
          let n = this.getLastExplicitRuleShortName()
          return sE(n, e, r)
        }
        getLaFuncFromCache(e) {
          return this.lookAheadFuncsCache.get(e)
        }
        setLaFuncCache(e, r) {
          this.lookAheadFuncsCache.set(e, r)
        }
      }),
        (CM = class extends hs {
          static {
            o(this, 'DslMethodsCollectorVisitor')
          }
          constructor() {
            super(...arguments),
              (this.dslMethods = { option: [], alternation: [], repetition: [], repetitionWithSeparator: [], repetitionMandatory: [], repetitionMandatoryWithSeparator: [] })
          }
          reset() {
            this.dslMethods = { option: [], alternation: [], repetition: [], repetitionWithSeparator: [], repetitionMandatory: [], repetitionMandatoryWithSeparator: [] }
          }
          visitOption(e) {
            this.dslMethods.option.push(e)
          }
          visitRepetitionWithSeparator(e) {
            this.dslMethods.repetitionWithSeparator.push(e)
          }
          visitRepetitionMandatory(e) {
            this.dslMethods.repetitionMandatory.push(e)
          }
          visitRepetitionMandatoryWithSeparator(e) {
            this.dslMethods.repetitionMandatoryWithSeparator.push(e)
          }
          visitRepetition(e) {
            this.dslMethods.repetition.push(e)
          }
          visitAlternation(e) {
            this.dslMethods.alternation.push(e)
          }
        }),
        (lE = new CM())
      o(MFe, 'collectMethods')
    })
  function DM(t, e) {
    isNaN(t.startOffset) === !0 ? ((t.startOffset = e.startOffset), (t.endOffset = e.endOffset)) : t.endOffset < e.endOffset && (t.endOffset = e.endOffset)
  }
  function LM(t, e) {
    isNaN(t.startOffset) === !0
      ? ((t.startOffset = e.startOffset),
        (t.startColumn = e.startColumn),
        (t.startLine = e.startLine),
        (t.endOffset = e.endOffset),
        (t.endColumn = e.endColumn),
        (t.endLine = e.endLine))
      : t.endOffset < e.endOffset && ((t.endOffset = e.endOffset), (t.endColumn = e.endColumn), (t.endLine = e.endLine))
  }
  function ele(t, e, r) {
    t.children[r] === void 0 ? (t.children[r] = [e]) : t.children[r].push(e)
  }
  function tle(t, e, r) {
    t.children[e] === void 0 ? (t.children[e] = [r]) : t.children[e].push(r)
  }
  var rle = N(() => {
    'use strict'
    o(DM, 'setNodeLocationOnlyOffset')
    o(LM, 'setNodeLocationFull')
    o(ele, 'addTerminalToCst')
    o(tle, 'addNoneTerminalToCst')
  })
  function RM(t, e) {
    Object.defineProperty(t, IFe, { enumerable: !1, configurable: !0, writable: !1, value: e })
  }
  var IFe,
    nle = N(() => {
      'use strict'
      IFe = 'name'
      o(RM, 'defineNameProp')
    })
  function OFe(t, e) {
    let r = zr(t),
      n = r.length
    for (let i = 0; i < n; i++) {
      let a = r[i],
        s = t[a],
        l = s.length
      for (let u = 0; u < l; u++) {
        let h = s[u]
        h.tokenTypeIdx === void 0 && this[h.name](h.children, e)
      }
    }
  }
  function ile(t, e) {
    let r = o(function () {}, 'derivedConstructor')
    RM(r, t + 'BaseSemantics')
    let n = {
      visit: o(function (i, a) {
        if ((Pt(i) && (i = i[0]), !mr(i))) return this[i.name](i.children, a)
      }, 'visit'),
      validateVisitor: o(function () {
        let i = PFe(this, e)
        if (!hr(i)) {
          let a = Je(i, s => s.msg)
          throw Error(`Errors Detected in CST Visitor <${this.constructor.name}>:
	${a
    .join(
      `

`
    )
    .replace(
      /\n/g,
      `
	`
    )}`)
        }
      }, 'validateVisitor')
    }
    return (r.prototype = n), (r.prototype.constructor = r), (r._RULE_NAMES = e), r
  }
  function ale(t, e, r) {
    let n = o(function () {}, 'derivedConstructor')
    RM(n, t + 'BaseSemanticsWithDefaults')
    let i = Object.create(r.prototype)
    return (
      Ae(e, a => {
        i[a] = OFe
      }),
      (n.prototype = i),
      (n.prototype.constructor = n),
      n
    )
  }
  function PFe(t, e) {
    return BFe(t, e)
  }
  function BFe(t, e) {
    let r = Yr(e, i => Ai(t[i]) === !1),
      n = Je(r, i => ({ msg: `Missing visitor method: <${i}> on ${t.constructor.name} CST Visitor.`, type: NM.MISSING_METHOD, methodName: i }))
    return Ac(n)
  }
  var NM,
    sle = N(() => {
      'use strict'
      qt()
      nle()
      o(OFe, 'defaultVisit')
      o(ile, 'createBaseSemanticVisitorConstructor')
      o(ale, 'createBaseVisitorConstructorWithDefaults')
      ;(function (t) {
        ;(t[(t.REDUNDANT_METHOD = 0)] = 'REDUNDANT_METHOD'), (t[(t.MISSING_METHOD = 1)] = 'MISSING_METHOD')
      })(NM || (NM = {}))
      o(PFe, 'validateVisitor')
      o(BFe, 'validateMissingCstMethods')
    })
  var dE,
    ole = N(() => {
      'use strict'
      rle()
      qt()
      sle()
      Us()
      dE = class {
        static {
          o(this, 'TreeBuilder')
        }
        initTreeBuilder(e) {
          if (
            ((this.CST_STACK = []),
            (this.outputCst = e.outputCst),
            (this.nodeLocationTracking = Bt(e, 'nodeLocationTracking') ? e.nodeLocationTracking : ds.nodeLocationTracking),
            !this.outputCst)
          )
            (this.cstInvocationStateUpdate = ai), (this.cstFinallyStateUpdate = ai), (this.cstPostTerminal = ai), (this.cstPostNonTerminal = ai), (this.cstPostRule = ai)
          else if (/full/i.test(this.nodeLocationTracking))
            this.recoveryEnabled
              ? ((this.setNodeLocationFromToken = LM),
                (this.setNodeLocationFromNode = LM),
                (this.cstPostRule = ai),
                (this.setInitialNodeLocation = this.setInitialNodeLocationFullRecovery))
              : ((this.setNodeLocationFromToken = ai),
                (this.setNodeLocationFromNode = ai),
                (this.cstPostRule = this.cstPostRuleFull),
                (this.setInitialNodeLocation = this.setInitialNodeLocationFullRegular))
          else if (/onlyOffset/i.test(this.nodeLocationTracking))
            this.recoveryEnabled
              ? ((this.setNodeLocationFromToken = DM),
                (this.setNodeLocationFromNode = DM),
                (this.cstPostRule = ai),
                (this.setInitialNodeLocation = this.setInitialNodeLocationOnlyOffsetRecovery))
              : ((this.setNodeLocationFromToken = ai),
                (this.setNodeLocationFromNode = ai),
                (this.cstPostRule = this.cstPostRuleOnlyOffset),
                (this.setInitialNodeLocation = this.setInitialNodeLocationOnlyOffsetRegular))
          else if (/none/i.test(this.nodeLocationTracking))
            (this.setNodeLocationFromToken = ai), (this.setNodeLocationFromNode = ai), (this.cstPostRule = ai), (this.setInitialNodeLocation = ai)
          else throw Error(`Invalid <nodeLocationTracking> config option: "${e.nodeLocationTracking}"`)
        }
        setInitialNodeLocationOnlyOffsetRecovery(e) {
          e.location = { startOffset: NaN, endOffset: NaN }
        }
        setInitialNodeLocationOnlyOffsetRegular(e) {
          e.location = { startOffset: this.LA(1).startOffset, endOffset: NaN }
        }
        setInitialNodeLocationFullRecovery(e) {
          e.location = { startOffset: NaN, startLine: NaN, startColumn: NaN, endOffset: NaN, endLine: NaN, endColumn: NaN }
        }
        setInitialNodeLocationFullRegular(e) {
          let r = this.LA(1)
          e.location = { startOffset: r.startOffset, startLine: r.startLine, startColumn: r.startColumn, endOffset: NaN, endLine: NaN, endColumn: NaN }
        }
        cstInvocationStateUpdate(e) {
          let r = { name: e, children: Object.create(null) }
          this.setInitialNodeLocation(r), this.CST_STACK.push(r)
        }
        cstFinallyStateUpdate() {
          this.CST_STACK.pop()
        }
        cstPostRuleFull(e) {
          let r = this.LA(0),
            n = e.location
          n.startOffset <= r.startOffset
            ? ((n.endOffset = r.endOffset), (n.endLine = r.endLine), (n.endColumn = r.endColumn))
            : ((n.startOffset = NaN), (n.startLine = NaN), (n.startColumn = NaN))
        }
        cstPostRuleOnlyOffset(e) {
          let r = this.LA(0),
            n = e.location
          n.startOffset <= r.startOffset ? (n.endOffset = r.endOffset) : (n.startOffset = NaN)
        }
        cstPostTerminal(e, r) {
          let n = this.CST_STACK[this.CST_STACK.length - 1]
          ele(n, r, e), this.setNodeLocationFromToken(n.location, r)
        }
        cstPostNonTerminal(e, r) {
          let n = this.CST_STACK[this.CST_STACK.length - 1]
          tle(n, r, e), this.setNodeLocationFromNode(n.location, e.location)
        }
        getBaseCstVisitorConstructor() {
          if (mr(this.baseCstVisitorConstructor)) {
            let e = ile(this.className, zr(this.gastProductionsCache))
            return (this.baseCstVisitorConstructor = e), e
          }
          return this.baseCstVisitorConstructor
        }
        getBaseCstVisitorConstructorWithDefaults() {
          if (mr(this.baseCstVisitorWithDefaultsConstructor)) {
            let e = ale(this.className, zr(this.gastProductionsCache), this.getBaseCstVisitorConstructor())
            return (this.baseCstVisitorWithDefaultsConstructor = e), e
          }
          return this.baseCstVisitorWithDefaultsConstructor
        }
        getLastExplicitRuleShortName() {
          let e = this.RULE_STACK
          return e[e.length - 1]
        }
        getPreviousExplicitRuleShortName() {
          let e = this.RULE_STACK
          return e[e.length - 2]
        }
        getLastExplicitRuleOccurrenceIndex() {
          let e = this.RULE_OCCURRENCE_STACK
          return e[e.length - 1]
        }
      }
    })
  var pE,
    lle = N(() => {
      'use strict'
      Us()
      pE = class {
        static {
          o(this, 'LexerAdapter')
        }
        initLexerAdapter() {
          ;(this.tokVector = []), (this.tokVectorLength = 0), (this.currIdx = -1)
        }
        set input(e) {
          if (this.selfAnalysisDone !== !0) throw Error("Missing <performSelfAnalysis> invocation at the end of the Parser's constructor.")
          this.reset(), (this.tokVector = e), (this.tokVectorLength = e.length)
        }
        get input() {
          return this.tokVector
        }
        SKIP_TOKEN() {
          return this.currIdx <= this.tokVector.length - 2 ? (this.consumeToken(), this.LA(1)) : i1
        }
        LA(e) {
          let r = this.currIdx + e
          return r < 0 || this.tokVectorLength <= r ? i1 : this.tokVector[r]
        }
        consumeToken() {
          this.currIdx++
        }
        exportLexerState() {
          return this.currIdx
        }
        importLexerState(e) {
          this.currIdx = e
        }
        resetLexerState() {
          this.currIdx = -1
        }
        moveToTerminatedState() {
          this.currIdx = this.tokVector.length - 1
        }
        getLexerPosition() {
          return this.exportLexerState()
        }
      }
    })
  var mE,
    cle = N(() => {
      'use strict'
      qt()
      n1()
      Us()
      Qg()
      wx()
      fs()
      mE = class {
        static {
          o(this, 'RecognizerApi')
        }
        ACTION(e) {
          return e.call(this)
        }
        consume(e, r, n) {
          return this.consumeInternal(r, e, n)
        }
        subrule(e, r, n) {
          return this.subruleInternal(r, e, n)
        }
        option(e, r) {
          return this.optionInternal(r, e)
        }
        or(e, r) {
          return this.orInternal(r, e)
        }
        many(e, r) {
          return this.manyInternal(e, r)
        }
        atLeastOne(e, r) {
          return this.atLeastOneInternal(e, r)
        }
        CONSUME(e, r) {
          return this.consumeInternal(e, 0, r)
        }
        CONSUME1(e, r) {
          return this.consumeInternal(e, 1, r)
        }
        CONSUME2(e, r) {
          return this.consumeInternal(e, 2, r)
        }
        CONSUME3(e, r) {
          return this.consumeInternal(e, 3, r)
        }
        CONSUME4(e, r) {
          return this.consumeInternal(e, 4, r)
        }
        CONSUME5(e, r) {
          return this.consumeInternal(e, 5, r)
        }
        CONSUME6(e, r) {
          return this.consumeInternal(e, 6, r)
        }
        CONSUME7(e, r) {
          return this.consumeInternal(e, 7, r)
        }
        CONSUME8(e, r) {
          return this.consumeInternal(e, 8, r)
        }
        CONSUME9(e, r) {
          return this.consumeInternal(e, 9, r)
        }
        SUBRULE(e, r) {
          return this.subruleInternal(e, 0, r)
        }
        SUBRULE1(e, r) {
          return this.subruleInternal(e, 1, r)
        }
        SUBRULE2(e, r) {
          return this.subruleInternal(e, 2, r)
        }
        SUBRULE3(e, r) {
          return this.subruleInternal(e, 3, r)
        }
        SUBRULE4(e, r) {
          return this.subruleInternal(e, 4, r)
        }
        SUBRULE5(e, r) {
          return this.subruleInternal(e, 5, r)
        }
        SUBRULE6(e, r) {
          return this.subruleInternal(e, 6, r)
        }
        SUBRULE7(e, r) {
          return this.subruleInternal(e, 7, r)
        }
        SUBRULE8(e, r) {
          return this.subruleInternal(e, 8, r)
        }
        SUBRULE9(e, r) {
          return this.subruleInternal(e, 9, r)
        }
        OPTION(e) {
          return this.optionInternal(e, 0)
        }
        OPTION1(e) {
          return this.optionInternal(e, 1)
        }
        OPTION2(e) {
          return this.optionInternal(e, 2)
        }
        OPTION3(e) {
          return this.optionInternal(e, 3)
        }
        OPTION4(e) {
          return this.optionInternal(e, 4)
        }
        OPTION5(e) {
          return this.optionInternal(e, 5)
        }
        OPTION6(e) {
          return this.optionInternal(e, 6)
        }
        OPTION7(e) {
          return this.optionInternal(e, 7)
        }
        OPTION8(e) {
          return this.optionInternal(e, 8)
        }
        OPTION9(e) {
          return this.optionInternal(e, 9)
        }
        OR(e) {
          return this.orInternal(e, 0)
        }
        OR1(e) {
          return this.orInternal(e, 1)
        }
        OR2(e) {
          return this.orInternal(e, 2)
        }
        OR3(e) {
          return this.orInternal(e, 3)
        }
        OR4(e) {
          return this.orInternal(e, 4)
        }
        OR5(e) {
          return this.orInternal(e, 5)
        }
        OR6(e) {
          return this.orInternal(e, 6)
        }
        OR7(e) {
          return this.orInternal(e, 7)
        }
        OR8(e) {
          return this.orInternal(e, 8)
        }
        OR9(e) {
          return this.orInternal(e, 9)
        }
        MANY(e) {
          this.manyInternal(0, e)
        }
        MANY1(e) {
          this.manyInternal(1, e)
        }
        MANY2(e) {
          this.manyInternal(2, e)
        }
        MANY3(e) {
          this.manyInternal(3, e)
        }
        MANY4(e) {
          this.manyInternal(4, e)
        }
        MANY5(e) {
          this.manyInternal(5, e)
        }
        MANY6(e) {
          this.manyInternal(6, e)
        }
        MANY7(e) {
          this.manyInternal(7, e)
        }
        MANY8(e) {
          this.manyInternal(8, e)
        }
        MANY9(e) {
          this.manyInternal(9, e)
        }
        MANY_SEP(e) {
          this.manySepFirstInternal(0, e)
        }
        MANY_SEP1(e) {
          this.manySepFirstInternal(1, e)
        }
        MANY_SEP2(e) {
          this.manySepFirstInternal(2, e)
        }
        MANY_SEP3(e) {
          this.manySepFirstInternal(3, e)
        }
        MANY_SEP4(e) {
          this.manySepFirstInternal(4, e)
        }
        MANY_SEP5(e) {
          this.manySepFirstInternal(5, e)
        }
        MANY_SEP6(e) {
          this.manySepFirstInternal(6, e)
        }
        MANY_SEP7(e) {
          this.manySepFirstInternal(7, e)
        }
        MANY_SEP8(e) {
          this.manySepFirstInternal(8, e)
        }
        MANY_SEP9(e) {
          this.manySepFirstInternal(9, e)
        }
        AT_LEAST_ONE(e) {
          this.atLeastOneInternal(0, e)
        }
        AT_LEAST_ONE1(e) {
          return this.atLeastOneInternal(1, e)
        }
        AT_LEAST_ONE2(e) {
          this.atLeastOneInternal(2, e)
        }
        AT_LEAST_ONE3(e) {
          this.atLeastOneInternal(3, e)
        }
        AT_LEAST_ONE4(e) {
          this.atLeastOneInternal(4, e)
        }
        AT_LEAST_ONE5(e) {
          this.atLeastOneInternal(5, e)
        }
        AT_LEAST_ONE6(e) {
          this.atLeastOneInternal(6, e)
        }
        AT_LEAST_ONE7(e) {
          this.atLeastOneInternal(7, e)
        }
        AT_LEAST_ONE8(e) {
          this.atLeastOneInternal(8, e)
        }
        AT_LEAST_ONE9(e) {
          this.atLeastOneInternal(9, e)
        }
        AT_LEAST_ONE_SEP(e) {
          this.atLeastOneSepFirstInternal(0, e)
        }
        AT_LEAST_ONE_SEP1(e) {
          this.atLeastOneSepFirstInternal(1, e)
        }
        AT_LEAST_ONE_SEP2(e) {
          this.atLeastOneSepFirstInternal(2, e)
        }
        AT_LEAST_ONE_SEP3(e) {
          this.atLeastOneSepFirstInternal(3, e)
        }
        AT_LEAST_ONE_SEP4(e) {
          this.atLeastOneSepFirstInternal(4, e)
        }
        AT_LEAST_ONE_SEP5(e) {
          this.atLeastOneSepFirstInternal(5, e)
        }
        AT_LEAST_ONE_SEP6(e) {
          this.atLeastOneSepFirstInternal(6, e)
        }
        AT_LEAST_ONE_SEP7(e) {
          this.atLeastOneSepFirstInternal(7, e)
        }
        AT_LEAST_ONE_SEP8(e) {
          this.atLeastOneSepFirstInternal(8, e)
        }
        AT_LEAST_ONE_SEP9(e) {
          this.atLeastOneSepFirstInternal(9, e)
        }
        RULE(e, r, n = a1) {
          if (Xn(this.definedRulesNames, e)) {
            let s = { message: $l.buildDuplicateRuleNameError({ topLevelRule: e, grammarName: this.className }), type: Vi.DUPLICATE_RULE_NAME, ruleName: e }
            this.definitionErrors.push(s)
          }
          this.definedRulesNames.push(e)
          let i = this.defineRule(e, r, n)
          return (this[e] = i), i
        }
        OVERRIDE_RULE(e, r, n = a1) {
          let i = Goe(e, this.definedRulesNames, this.className)
          this.definitionErrors = this.definitionErrors.concat(i)
          let a = this.defineRule(e, r, n)
          return (this[e] = a), a
        }
        BACKTRACK(e, r) {
          return function () {
            this.isBackTrackingStack.push(1)
            let n = this.saveRecogState()
            try {
              return e.apply(this, r), !0
            } catch (i) {
              if (pf(i)) return !1
              throw i
            } finally {
              this.reloadRecogState(n), this.isBackTrackingStack.pop()
            }
          }
        }
        getGAstProductions() {
          return this.gastProductionsCache
        }
        getSerializedGastProductions() {
          return zk(br(this.gastProductionsCache))
        }
      }
    })
  var gE,
    ule = N(() => {
      'use strict'
      qt()
      oE()
      n1()
      t1()
      xx()
      Us()
      EM()
      bp()
      xp()
      gE = class {
        static {
          o(this, 'RecognizerEngine')
        }
        initRecognizerEngine(e, r) {
          if (
            ((this.className = this.constructor.name),
            (this.shortRuleNameToFull = {}),
            (this.fullRuleNameToShort = {}),
            (this.ruleShortNameIdx = 256),
            (this.tokenMatcher = jg),
            (this.subruleIdx = 0),
            (this.definedRulesNames = []),
            (this.tokensMap = {}),
            (this.isBackTrackingStack = []),
            (this.RULE_STACK = []),
            (this.RULE_OCCURRENCE_STACK = []),
            (this.gastProductionsCache = {}),
            Bt(r, 'serializedGrammar'))
          )
            throw Error(`The Parser's configuration can no longer contain a <serializedGrammar> property.
	See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0
	For Further details.`)
          if (Pt(e)) {
            if (hr(e))
              throw Error(`A Token Vocabulary cannot be empty.
	Note that the first argument for the parser constructor
	is no longer a Token vector (since v4.0).`)
            if (typeof e[0].startOffset == 'number')
              throw Error(`The Parser constructor no longer accepts a token vector as the first argument.
	See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0
	For Further details.`)
          }
          if (Pt(e)) this.tokensMap = Xr(e, (a, s) => ((a[s.name] = s), a), {})
          else if (Bt(e, 'modes') && Pa(qr(br(e.modes)), voe)) {
            let a = qr(br(e.modes)),
              s = qm(a)
            this.tokensMap = Xr(s, (l, u) => ((l[u.name] = u), l), {})
          } else if (bn(e)) this.tokensMap = an(e)
          else throw new Error('<tokensDictionary> argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition')
          this.tokensMap.EOF = fo
          let n = Bt(e, 'modes') ? qr(br(e.modes)) : br(e),
            i = Pa(n, a => hr(a.categoryMatches))
          ;(this.tokenMatcher = i ? jg : Vu), Uu(br(this.tokensMap))
        }
        defineRule(e, r, n) {
          if (this.selfAnalysisDone)
            throw Error(`Grammar rule <${e}> may not be defined after the 'performSelfAnalysis' method has been called'
Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`)
          let i = Bt(n, 'resyncEnabled') ? n.resyncEnabled : a1.resyncEnabled,
            a = Bt(n, 'recoveryValueFunc') ? n.recoveryValueFunc : a1.recoveryValueFunc,
            s = this.ruleShortNameIdx << 12
          this.ruleShortNameIdx++, (this.shortRuleNameToFull[s] = e), (this.fullRuleNameToShort[e] = s)
          let l
          return (
            this.outputCst === !0
              ? (l = o(function (...f) {
                  try {
                    this.ruleInvocationStateUpdate(s, e, this.subruleIdx), r.apply(this, f)
                    let d = this.CST_STACK[this.CST_STACK.length - 1]
                    return this.cstPostRule(d), d
                  } catch (d) {
                    return this.invokeRuleCatch(d, i, a)
                  } finally {
                    this.ruleFinallyStateUpdate()
                  }
                }, 'invokeRuleWithTry'))
              : (l = o(function (...f) {
                  try {
                    return this.ruleInvocationStateUpdate(s, e, this.subruleIdx), r.apply(this, f)
                  } catch (d) {
                    return this.invokeRuleCatch(d, i, a)
                  } finally {
                    this.ruleFinallyStateUpdate()
                  }
                }, 'invokeRuleWithTryCst')),
            Object.assign(l, { ruleName: e, originalGrammarAction: r })
          )
        }
        invokeRuleCatch(e, r, n) {
          let i = this.RULE_STACK.length === 1,
            a = r && !this.isBackTracking() && this.recoveryEnabled
          if (pf(e)) {
            let s = e
            if (a) {
              let l = this.findReSyncTokenType()
              if (this.isInCurrentRuleReSyncSet(l))
                if (((s.resyncedTokens = this.reSyncTo(l)), this.outputCst)) {
                  let u = this.CST_STACK[this.CST_STACK.length - 1]
                  return (u.recoveredNode = !0), u
                } else return n(e)
              else {
                if (this.outputCst) {
                  let u = this.CST_STACK[this.CST_STACK.length - 1]
                  ;(u.recoveredNode = !0), (s.partialCstResult = u)
                }
                throw s
              }
            } else {
              if (i) return this.moveToTerminatedState(), n(e)
              throw s
            }
          } else throw e
        }
        optionInternal(e, r) {
          let n = this.getKeyForAutomaticLookahead(512, r)
          return this.optionInternalLogic(e, r, n)
        }
        optionInternalLogic(e, r, n) {
          let i = this.getLaFuncFromCache(n),
            a
          if (typeof e != 'function') {
            a = e.DEF
            let s = e.GATE
            if (s !== void 0) {
              let l = i
              i = o(() => s.call(this) && l.call(this), 'lookAheadFunc')
            }
          } else a = e
          if (i.call(this) === !0) return a.call(this)
        }
        atLeastOneInternal(e, r) {
          let n = this.getKeyForAutomaticLookahead(1024, e)
          return this.atLeastOneInternalLogic(e, r, n)
        }
        atLeastOneInternalLogic(e, r, n) {
          let i = this.getLaFuncFromCache(n),
            a
          if (typeof r != 'function') {
            a = r.DEF
            let s = r.GATE
            if (s !== void 0) {
              let l = i
              i = o(() => s.call(this) && l.call(this), 'lookAheadFunc')
            }
          } else a = r
          if (i.call(this) === !0) {
            let s = this.doSingleRepetition(a)
            for (; i.call(this) === !0 && s === !0; ) s = this.doSingleRepetition(a)
          } else throw this.raiseEarlyExitException(e, Qn.REPETITION_MANDATORY, r.ERR_MSG)
          this.attemptInRepetitionRecovery(this.atLeastOneInternal, [e, r], i, 1024, e, Zk)
        }
        atLeastOneSepFirstInternal(e, r) {
          let n = this.getKeyForAutomaticLookahead(1536, e)
          this.atLeastOneSepFirstInternalLogic(e, r, n)
        }
        atLeastOneSepFirstInternalLogic(e, r, n) {
          let i = r.DEF,
            a = r.SEP
          if (this.getLaFuncFromCache(n).call(this) === !0) {
            i.call(this)
            let l = o(() => this.tokenMatcher(this.LA(1), a), 'separatorLookAheadFunc')
            for (; this.tokenMatcher(this.LA(1), a) === !0; ) this.CONSUME(a), i.call(this)
            this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal, [e, a, l, i, vx], l, 1536, e, vx)
          } else throw this.raiseEarlyExitException(e, Qn.REPETITION_MANDATORY_WITH_SEPARATOR, r.ERR_MSG)
        }
        manyInternal(e, r) {
          let n = this.getKeyForAutomaticLookahead(768, e)
          return this.manyInternalLogic(e, r, n)
        }
        manyInternalLogic(e, r, n) {
          let i = this.getLaFuncFromCache(n),
            a
          if (typeof r != 'function') {
            a = r.DEF
            let l = r.GATE
            if (l !== void 0) {
              let u = i
              i = o(() => l.call(this) && u.call(this), 'lookaheadFunction')
            }
          } else a = r
          let s = !0
          for (; i.call(this) === !0 && s === !0; ) s = this.doSingleRepetition(a)
          this.attemptInRepetitionRecovery(this.manyInternal, [e, r], i, 768, e, Qk, s)
        }
        manySepFirstInternal(e, r) {
          let n = this.getKeyForAutomaticLookahead(1280, e)
          this.manySepFirstInternalLogic(e, r, n)
        }
        manySepFirstInternalLogic(e, r, n) {
          let i = r.DEF,
            a = r.SEP
          if (this.getLaFuncFromCache(n).call(this) === !0) {
            i.call(this)
            let l = o(() => this.tokenMatcher(this.LA(1), a), 'separatorLookAheadFunc')
            for (; this.tokenMatcher(this.LA(1), a) === !0; ) this.CONSUME(a), i.call(this)
            this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal, [e, a, l, i, yx], l, 1280, e, yx)
          }
        }
        repetitionSepSecondInternal(e, r, n, i, a) {
          for (; n(); ) this.CONSUME(r), i.call(this)
          this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal, [e, r, n, i, a], n, 1536, e, a)
        }
        doSingleRepetition(e) {
          let r = this.getLexerPosition()
          return e.call(this), this.getLexerPosition() > r
        }
        orInternal(e, r) {
          let n = this.getKeyForAutomaticLookahead(256, r),
            i = Pt(e) ? e : e.DEF,
            s = this.getLaFuncFromCache(n).call(this, i)
          if (s !== void 0) return i[s].ALT.call(this)
          this.raiseNoAltException(r, e.ERR_MSG)
        }
        ruleFinallyStateUpdate() {
          if ((this.RULE_STACK.pop(), this.RULE_OCCURRENCE_STACK.pop(), this.cstFinallyStateUpdate(), this.RULE_STACK.length === 0 && this.isAtEndOfInput() === !1)) {
            let e = this.LA(1),
              r = this.errorMessageProvider.buildNotAllInputParsedMessage({ firstRedundant: e, ruleName: this.getCurrRuleFullName() })
            this.SAVE_ERROR(new Ex(r, e))
          }
        }
        subruleInternal(e, r, n) {
          let i
          try {
            let a = n !== void 0 ? n.ARGS : void 0
            return (this.subruleIdx = r), (i = e.apply(this, a)), this.cstPostNonTerminal(i, n !== void 0 && n.LABEL !== void 0 ? n.LABEL : e.ruleName), i
          } catch (a) {
            throw this.subruleInternalError(a, n, e.ruleName)
          }
        }
        subruleInternalError(e, r, n) {
          throw (
            (pf(e) && e.partialCstResult !== void 0 && (this.cstPostNonTerminal(e.partialCstResult, r !== void 0 && r.LABEL !== void 0 ? r.LABEL : n), delete e.partialCstResult),
            e)
          )
        }
        consumeInternal(e, r, n) {
          let i
          try {
            let a = this.LA(1)
            this.tokenMatcher(a, e) === !0 ? (this.consumeToken(), (i = a)) : this.consumeInternalError(e, a, n)
          } catch (a) {
            i = this.consumeInternalRecovery(e, r, a)
          }
          return this.cstPostTerminal(n !== void 0 && n.LABEL !== void 0 ? n.LABEL : e.name, i), i
        }
        consumeInternalError(e, r, n) {
          let i,
            a = this.LA(0)
          throw (
            (n !== void 0 && n.ERR_MSG
              ? (i = n.ERR_MSG)
              : (i = this.errorMessageProvider.buildMismatchTokenMessage({ expected: e, actual: r, previous: a, ruleName: this.getCurrRuleFullName() })),
            this.SAVE_ERROR(new Tp(i, r, a)))
          )
        }
        consumeInternalRecovery(e, r, n) {
          if (this.recoveryEnabled && n.name === 'MismatchedTokenException' && !this.isBackTracking()) {
            let i = this.getFollowsForInRuleRecovery(e, r)
            try {
              return this.tryInRuleRecovery(e, i)
            } catch (a) {
              throw a.name === kM ? n : a
            }
          } else throw n
        }
        saveRecogState() {
          let e = this.errors,
            r = an(this.RULE_STACK)
          return { errors: e, lexerState: this.exportLexerState(), RULE_STACK: r, CST_STACK: this.CST_STACK }
        }
        reloadRecogState(e) {
          ;(this.errors = e.errors), this.importLexerState(e.lexerState), (this.RULE_STACK = e.RULE_STACK)
        }
        ruleInvocationStateUpdate(e, r, n) {
          this.RULE_OCCURRENCE_STACK.push(n), this.RULE_STACK.push(e), this.cstInvocationStateUpdate(r)
        }
        isBackTracking() {
          return this.isBackTrackingStack.length !== 0
        }
        getCurrRuleFullName() {
          let e = this.getLastExplicitRuleShortName()
          return this.shortRuleNameToFull[e]
        }
        shortRuleNameToFullName(e) {
          return this.shortRuleNameToFull[e]
        }
        isAtEndOfInput() {
          return this.tokenMatcher(this.LA(1), fo)
        }
        reset() {
          this.resetLexerState(),
            (this.subruleIdx = 0),
            (this.isBackTrackingStack = []),
            (this.errors = []),
            (this.RULE_STACK = []),
            (this.CST_STACK = []),
            (this.RULE_OCCURRENCE_STACK = [])
        }
      }
    })
  var yE,
    hle = N(() => {
      'use strict'
      n1()
      qt()
      t1()
      Us()
      yE = class {
        static {
          o(this, 'ErrorHandler')
        }
        initErrorHandler(e) {
          ;(this._errors = []), (this.errorMessageProvider = Bt(e, 'errorMessageProvider') ? e.errorMessageProvider : ds.errorMessageProvider)
        }
        SAVE_ERROR(e) {
          if (pf(e)) return (e.context = { ruleStack: this.getHumanReadableRuleStack(), ruleOccurrenceStack: an(this.RULE_OCCURRENCE_STACK) }), this._errors.push(e), e
          throw Error('Trying to save an Error which is not a RecognitionException')
        }
        get errors() {
          return an(this._errors)
        }
        set errors(e) {
          this._errors = e
        }
        raiseEarlyExitException(e, r, n) {
          let i = this.getCurrRuleFullName(),
            a = this.getGAstProductions()[i],
            l = e1(e, a, r, this.maxLookahead)[0],
            u = []
          for (let f = 1; f <= this.maxLookahead; f++) u.push(this.LA(f))
          let h = this.errorMessageProvider.buildEarlyExitMessage({ expectedIterationPaths: l, actual: u, previous: this.LA(0), customUserDescription: n, ruleName: i })
          throw this.SAVE_ERROR(new Sx(h, this.LA(1), this.LA(0)))
        }
        raiseNoAltException(e, r) {
          let n = this.getCurrRuleFullName(),
            i = this.getGAstProductions()[n],
            a = Jg(e, i, this.maxLookahead),
            s = []
          for (let h = 1; h <= this.maxLookahead; h++) s.push(this.LA(h))
          let l = this.LA(0),
            u = this.errorMessageProvider.buildNoViableAltMessage({
              expectedPathsPerAlt: a,
              actual: s,
              previous: l,
              customUserDescription: r,
              ruleName: this.getCurrRuleFullName()
            })
          throw this.SAVE_ERROR(new kx(u, this.LA(1), l))
        }
      }
    })
  var vE,
    fle = N(() => {
      'use strict'
      xx()
      qt()
      vE = class {
        static {
          o(this, 'ContentAssist')
        }
        initContentAssist() {}
        computeContentAssist(e, r) {
          let n = this.gastProductionsCache[e]
          if (mr(n)) throw Error(`Rule ->${e}<- does not exist in this grammar.`)
          return eE([n], r, this.tokenMatcher, this.maxLookahead)
        }
        getNextPossibleTokenTypes(e) {
          let r = ia(e.ruleStack),
            i = this.getGAstProductions()[r]
          return new Kk(i, e).startWalking()
        }
      }
    })
  function Ax(t, e, r, n = !1) {
    bE(r)
    let i = ma(this.recordingProdStack),
      a = Ai(e) ? e : e.DEF,
      s = new t({ definition: [], idx: r })
    return (
      n && (s.separator = e.SEP),
      Bt(e, 'MAX_LOOKAHEAD') && (s.maxLookahead = e.MAX_LOOKAHEAD),
      this.recordingProdStack.push(s),
      a.call(this),
      i.definition.push(s),
      this.recordingProdStack.pop(),
      TE
    )
  }
  function zFe(t, e) {
    bE(e)
    let r = ma(this.recordingProdStack),
      n = Pt(t) === !1,
      i = n === !1 ? t : t.DEF,
      a = new wn({ definition: [], idx: e, ignoreAmbiguities: n && t.IGNORE_AMBIGUITIES === !0 })
    Bt(t, 'MAX_LOOKAHEAD') && (a.maxLookahead = t.MAX_LOOKAHEAD)
    let s = B2(i, l => Ai(l.GATE))
    return (
      (a.hasPredicates = s),
      r.definition.push(a),
      Ae(i, l => {
        let u = new Dn({ definition: [] })
        a.definition.push(u),
          Bt(l, 'IGNORE_AMBIGUITIES') ? (u.ignoreAmbiguities = l.IGNORE_AMBIGUITIES) : Bt(l, 'GATE') && (u.ignoreAmbiguities = !0),
          this.recordingProdStack.push(u),
          l.ALT.call(this),
          this.recordingProdStack.pop()
      }),
      TE
    )
  }
  function mle(t) {
    return t === 0 ? '' : `${t}`
  }
  function bE(t) {
    if (t < 0 || t > ple) {
      let e = new Error(`Invalid DSL Method idx value: <${t}>
	Idx value must be a none negative value smaller than ${ple + 1}`)
      throw ((e.KNOWN_RECORDER_ERROR = !0), e)
    }
  }
  var TE,
    dle,
    ple,
    gle,
    yle,
    $Fe,
    xE,
    vle = N(() => {
      'use strict'
      qt()
      fs()
      px()
      xp()
      bp()
      Us()
      oE()
      TE = { description: 'This Object indicates the Parser is during Recording Phase' }
      Object.freeze(TE)
      ;(dle = !0), (ple = Math.pow(2, 8) - 1), (gle = df({ name: 'RECORDING_PHASE_TOKEN', pattern: Kn.NA }))
      Uu([gle])
      yle = Wu(
        gle,
        `This IToken indicates the Parser is in Recording Phase
	See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,
        -1,
        -1,
        -1,
        -1,
        -1,
        -1
      )
      Object.freeze(yle)
      ;($Fe = {
        name: `This CSTNode indicates the Parser is in Recording Phase
	See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,
        children: {}
      }),
        (xE = class {
          static {
            o(this, 'GastRecorder')
          }
          initGastRecorder(e) {
            ;(this.recordingProdStack = []), (this.RECORDING_PHASE = !1)
          }
          enableRecording() {
            ;(this.RECORDING_PHASE = !0),
              this.TRACE_INIT('Enable Recording', () => {
                for (let e = 0; e < 10; e++) {
                  let r = e > 0 ? e : ''
                  ;(this[`CONSUME${r}`] = function (n, i) {
                    return this.consumeInternalRecord(n, e, i)
                  }),
                    (this[`SUBRULE${r}`] = function (n, i) {
                      return this.subruleInternalRecord(n, e, i)
                    }),
                    (this[`OPTION${r}`] = function (n) {
                      return this.optionInternalRecord(n, e)
                    }),
                    (this[`OR${r}`] = function (n) {
                      return this.orInternalRecord(n, e)
                    }),
                    (this[`MANY${r}`] = function (n) {
                      this.manyInternalRecord(e, n)
                    }),
                    (this[`MANY_SEP${r}`] = function (n) {
                      this.manySepFirstInternalRecord(e, n)
                    }),
                    (this[`AT_LEAST_ONE${r}`] = function (n) {
                      this.atLeastOneInternalRecord(e, n)
                    }),
                    (this[`AT_LEAST_ONE_SEP${r}`] = function (n) {
                      this.atLeastOneSepFirstInternalRecord(e, n)
                    })
                }
                ;(this.consume = function (e, r, n) {
                  return this.consumeInternalRecord(r, e, n)
                }),
                  (this.subrule = function (e, r, n) {
                    return this.subruleInternalRecord(r, e, n)
                  }),
                  (this.option = function (e, r) {
                    return this.optionInternalRecord(r, e)
                  }),
                  (this.or = function (e, r) {
                    return this.orInternalRecord(r, e)
                  }),
                  (this.many = function (e, r) {
                    this.manyInternalRecord(e, r)
                  }),
                  (this.atLeastOne = function (e, r) {
                    this.atLeastOneInternalRecord(e, r)
                  }),
                  (this.ACTION = this.ACTION_RECORD),
                  (this.BACKTRACK = this.BACKTRACK_RECORD),
                  (this.LA = this.LA_RECORD)
              })
          }
          disableRecording() {
            ;(this.RECORDING_PHASE = !1),
              this.TRACE_INIT('Deleting Recording methods', () => {
                let e = this
                for (let r = 0; r < 10; r++) {
                  let n = r > 0 ? r : ''
                  delete e[`CONSUME${n}`],
                    delete e[`SUBRULE${n}`],
                    delete e[`OPTION${n}`],
                    delete e[`OR${n}`],
                    delete e[`MANY${n}`],
                    delete e[`MANY_SEP${n}`],
                    delete e[`AT_LEAST_ONE${n}`],
                    delete e[`AT_LEAST_ONE_SEP${n}`]
                }
                delete e.consume, delete e.subrule, delete e.option, delete e.or, delete e.many, delete e.atLeastOne, delete e.ACTION, delete e.BACKTRACK, delete e.LA
              })
          }
          ACTION_RECORD(e) {}
          BACKTRACK_RECORD(e, r) {
            return () => !0
          }
          LA_RECORD(e) {
            return i1
          }
          topLevelRuleRecord(e, r) {
            try {
              let n = new us({ definition: [], name: e })
              return (n.name = e), this.recordingProdStack.push(n), r.call(this), this.recordingProdStack.pop(), n
            } catch (n) {
              if (n.KNOWN_RECORDER_ERROR !== !0)
                try {
                  n.message =
                    n.message +
                    `
	 This error was thrown during the "grammar recording phase" For more info see:
	https://chevrotain.io/docs/guide/internals.html#grammar-recording`
                } catch {
                  throw n
                }
              throw n
            }
          }
          optionInternalRecord(e, r) {
            return Ax.call(this, ln, e, r)
          }
          atLeastOneInternalRecord(e, r) {
            Ax.call(this, Ln, r, e)
          }
          atLeastOneSepFirstInternalRecord(e, r) {
            Ax.call(this, Rn, r, e, dle)
          }
          manyInternalRecord(e, r) {
            Ax.call(this, Pr, r, e)
          }
          manySepFirstInternalRecord(e, r) {
            Ax.call(this, Tn, r, e, dle)
          }
          orInternalRecord(e, r) {
            return zFe.call(this, e, r)
          }
          subruleInternalRecord(e, r, n) {
            if ((bE(r), !e || Bt(e, 'ruleName') === !1)) {
              let l = new Error(`<SUBRULE${mle(r)}> argument is invalid expecting a Parser method reference but got: <${JSON.stringify(e)}>
 inside top level rule: <${this.recordingProdStack[0].name}>`)
              throw ((l.KNOWN_RECORDER_ERROR = !0), l)
            }
            let i = ma(this.recordingProdStack),
              a = e.ruleName,
              s = new on({ idx: r, nonTerminalName: a, label: n?.LABEL, referencedRule: void 0 })
            return i.definition.push(s), this.outputCst ? $Fe : TE
          }
          consumeInternalRecord(e, r, n) {
            if ((bE(r), !hM(e))) {
              let s = new Error(`<CONSUME${mle(r)}> argument is invalid expecting a TokenType reference but got: <${JSON.stringify(e)}>
 inside top level rule: <${this.recordingProdStack[0].name}>`)
              throw ((s.KNOWN_RECORDER_ERROR = !0), s)
            }
            let i = ma(this.recordingProdStack),
              a = new Er({ idx: r, terminalType: e, label: n?.LABEL })
            return i.definition.push(a), yle
          }
        })
      o(Ax, 'recordProd')
      o(zFe, 'recordOrProd')
      o(mle, 'getIdxSuffix')
      o(bE, 'assertMethodIdxIsValid')
    })
  var wE,
    xle = N(() => {
      'use strict'
      qt()
      Hg()
      Us()
      wE = class {
        static {
          o(this, 'PerformanceTracer')
        }
        initPerformanceTracer(e) {
          if (Bt(e, 'traceInitPerf')) {
            let r = e.traceInitPerf,
              n = typeof r == 'number'
            ;(this.traceInitMaxIdent = n ? r : 1 / 0), (this.traceInitPerf = n ? r > 0 : r)
          } else (this.traceInitMaxIdent = 0), (this.traceInitPerf = ds.traceInitPerf)
          this.traceInitIndent = -1
        }
        TRACE_INIT(e, r) {
          if (this.traceInitPerf === !0) {
            this.traceInitIndent++
            let n = new Array(this.traceInitIndent + 1).join('	')
            this.traceInitIndent < this.traceInitMaxIdent && console.log(`${n}--> <${e}>`)
            let { time: i, value: a } = hx(r),
              s = i > 10 ? console.warn : console.log
            return this.traceInitIndent < this.traceInitMaxIdent && s(`${n}<-- <${e}> time: ${i}ms`), this.traceInitIndent--, a
          } else return r()
        }
      }
    })
  function ble(t, e) {
    e.forEach(r => {
      let n = r.prototype
      Object.getOwnPropertyNames(n).forEach(i => {
        if (i === 'constructor') return
        let a = Object.getOwnPropertyDescriptor(n, i)
        a && (a.get || a.set) ? Object.defineProperty(t.prototype, i, a) : (t.prototype[i] = r.prototype[i])
      })
    })
  }
  var Tle = N(() => {
    'use strict'
    o(ble, 'applyMixins')
  })
  function kE(t = void 0) {
    return function () {
      return t
    }
  }
  var i1,
    ds,
    a1,
    Vi,
    _x,
    Dx,
    Us = N(() => {
      'use strict'
      qt()
      Hg()
      Qse()
      bp()
      Qg()
      Yoe()
      EM()
      Joe()
      ole()
      lle()
      cle()
      ule()
      hle()
      fle()
      vle()
      xle()
      Tle()
      wx()
      i1 = Wu(fo, '', NaN, NaN, NaN, NaN, NaN, NaN)
      Object.freeze(i1)
      ;(ds = Object.freeze({
        recoveryEnabled: !1,
        maxLookahead: 3,
        dynamicTokensEnabled: !1,
        outputCst: !0,
        errorMessageProvider: qu,
        nodeLocationTracking: 'none',
        traceInitPerf: !1,
        skipValidations: !1
      })),
        (a1 = Object.freeze({ recoveryValueFunc: o(() => {}, 'recoveryValueFunc'), resyncEnabled: !0 }))
      ;(function (t) {
        ;(t[(t.INVALID_RULE_NAME = 0)] = 'INVALID_RULE_NAME'),
          (t[(t.DUPLICATE_RULE_NAME = 1)] = 'DUPLICATE_RULE_NAME'),
          (t[(t.INVALID_RULE_OVERRIDE = 2)] = 'INVALID_RULE_OVERRIDE'),
          (t[(t.DUPLICATE_PRODUCTIONS = 3)] = 'DUPLICATE_PRODUCTIONS'),
          (t[(t.UNRESOLVED_SUBRULE_REF = 4)] = 'UNRESOLVED_SUBRULE_REF'),
          (t[(t.LEFT_RECURSION = 5)] = 'LEFT_RECURSION'),
          (t[(t.NONE_LAST_EMPTY_ALT = 6)] = 'NONE_LAST_EMPTY_ALT'),
          (t[(t.AMBIGUOUS_ALTS = 7)] = 'AMBIGUOUS_ALTS'),
          (t[(t.CONFLICT_TOKENS_RULES_NAMESPACE = 8)] = 'CONFLICT_TOKENS_RULES_NAMESPACE'),
          (t[(t.INVALID_TOKEN_NAME = 9)] = 'INVALID_TOKEN_NAME'),
          (t[(t.NO_NON_EMPTY_LOOKAHEAD = 10)] = 'NO_NON_EMPTY_LOOKAHEAD'),
          (t[(t.AMBIGUOUS_PREFIX_ALTS = 11)] = 'AMBIGUOUS_PREFIX_ALTS'),
          (t[(t.TOO_MANY_ALTS = 12)] = 'TOO_MANY_ALTS'),
          (t[(t.CUSTOM_LOOKAHEAD_VALIDATION = 13)] = 'CUSTOM_LOOKAHEAD_VALIDATION')
      })(Vi || (Vi = {}))
      o(kE, 'EMPTY_ALT')
      _x = class t {
        static {
          o(this, 'Parser')
        }
        static performSelfAnalysis(e) {
          throw Error('The **static** `performSelfAnalysis` method has been deprecated.	\nUse the **instance** method with the same name instead.')
        }
        performSelfAnalysis() {
          this.TRACE_INIT('performSelfAnalysis', () => {
            let e
            this.selfAnalysisDone = !0
            let r = this.className
            this.TRACE_INIT('toFastProps', () => {
              fx(this)
            }),
              this.TRACE_INIT('Grammar Recording', () => {
                try {
                  this.enableRecording(),
                    Ae(this.definedRulesNames, i => {
                      let s = this[i].originalGrammarAction,
                        l
                      this.TRACE_INIT(`${i} Rule`, () => {
                        l = this.topLevelRuleRecord(i, s)
                      }),
                        (this.gastProductionsCache[i] = l)
                    })
                } finally {
                  this.disableRecording()
                }
              })
            let n = []
            if (
              (this.TRACE_INIT('Grammar Resolving', () => {
                ;(n = Woe({ rules: br(this.gastProductionsCache) })), (this.definitionErrors = this.definitionErrors.concat(n))
              }),
              this.TRACE_INIT('Grammar Validations', () => {
                if (hr(n) && this.skipValidations === !1) {
                  let i = qoe({ rules: br(this.gastProductionsCache), tokenTypes: br(this.tokensMap), errMsgProvider: $l, grammarName: r }),
                    a = Foe({ lookaheadStrategy: this.lookaheadStrategy, rules: br(this.gastProductionsCache), tokenTypes: br(this.tokensMap), grammarName: r })
                  this.definitionErrors = this.definitionErrors.concat(i, a)
                }
              }),
              hr(this.definitionErrors) &&
                (this.recoveryEnabled &&
                  this.TRACE_INIT('computeAllProdsFollows', () => {
                    let i = Kse(br(this.gastProductionsCache))
                    this.resyncFollows = i
                  }),
                this.TRACE_INIT('ComputeLookaheadFunctions', () => {
                  var i, a
                  ;(a = (i = this.lookaheadStrategy).initialize) === null || a === void 0 || a.call(i, { rules: br(this.gastProductionsCache) }),
                    this.preComputeLookaheadFunctions(br(this.gastProductionsCache))
                })),
              !t.DEFER_DEFINITION_ERRORS_HANDLING && !hr(this.definitionErrors))
            )
              throw (
                ((e = Je(this.definitionErrors, i => i.message)),
                new Error(`Parser Definition Errors detected:
 ${e.join(`
-------------------------------
`)}`))
              )
          })
        }
        constructor(e, r) {
          ;(this.definitionErrors = []), (this.selfAnalysisDone = !1)
          let n = this
          if (
            (n.initErrorHandler(r),
            n.initLexerAdapter(),
            n.initLooksAhead(r),
            n.initRecognizerEngine(e, r),
            n.initRecoverable(r),
            n.initTreeBuilder(r),
            n.initContentAssist(),
            n.initGastRecorder(r),
            n.initPerformanceTracer(r),
            Bt(r, 'ignoredIssues'))
          )
            throw new Error(`The <ignoredIssues> IParserConfig property has been deprecated.
	Please use the <IGNORE_AMBIGUITIES> flag on the relevant DSL method instead.
	See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES
	For further details.`)
          this.skipValidations = Bt(r, 'skipValidations') ? r.skipValidations : ds.skipValidations
        }
      }
      _x.DEFER_DEFINITION_ERRORS_HANDLING = !1
      ble(_x, [aE, cE, dE, pE, gE, mE, yE, vE, xE, wE])
      Dx = class extends _x {
        static {
          o(this, 'EmbeddedActionsParser')
        }
        constructor(e, r = ds) {
          let n = an(r)
          ;(n.outputCst = !1), super(e, n)
        }
      }
    })
  var wle = N(() => {
    'use strict'
    fs()
  })
  var kle = N(() => {
    'use strict'
  })
  var Ele = N(() => {
    'use strict'
    wle()
    kle()
  })
  var Sle = N(() => {
    'use strict'
    JN()
  })
  var mf = N(() => {
    'use strict'
    JN()
    Us()
    px()
    bp()
    t1()
    SM()
    Qg()
    n1()
    fM()
    fs()
    fs()
    Ele()
    Sle()
  })
  function wp(t, e, r) {
    return `${t.name}_${e}_${r}`
  }
  function Dle(t) {
    let e = { decisionMap: {}, decisionStates: [], ruleToStartState: new Map(), ruleToStopState: new Map(), states: [] }
    YFe(e, t)
    let r = t.length
    for (let n = 0; n < r; n++) {
      let i = t[n],
        a = kp(e, i, i)
      a !== void 0 && i$e(e, i, a)
    }
    return e
  }
  function YFe(t, e) {
    let r = e.length
    for (let n = 0; n < r; n++) {
      let i = e[n],
        a = aa(t, i, void 0, { type: VFe }),
        s = aa(t, i, void 0, { type: l1 })
      ;(a.stop = s), t.ruleToStartState.set(i, a), t.ruleToStopState.set(i, s)
    }
  }
  function Lle(t, e, r) {
    return r instanceof Er
      ? IM(t, e, r.terminalType, r)
      : r instanceof on
        ? n$e(t, e, r)
        : r instanceof wn
          ? ZFe(t, e, r)
          : r instanceof ln
            ? JFe(t, e, r)
            : r instanceof Pr
              ? XFe(t, e, r)
              : r instanceof Tn
                ? jFe(t, e, r)
                : r instanceof Ln
                  ? KFe(t, e, r)
                  : r instanceof Rn
                    ? QFe(t, e, r)
                    : kp(t, e, r)
  }
  function XFe(t, e, r) {
    let n = aa(t, e, r, { type: Ale })
    yf(t, n)
    let i = c1(t, e, n, r, kp(t, e, r))
    return Nle(t, e, r, i)
  }
  function jFe(t, e, r) {
    let n = aa(t, e, r, { type: Ale })
    yf(t, n)
    let i = c1(t, e, n, r, kp(t, e, r)),
      a = IM(t, e, r.separator, r)
    return Nle(t, e, r, i, a)
  }
  function KFe(t, e, r) {
    let n = aa(t, e, r, { type: Cle })
    yf(t, n)
    let i = c1(t, e, n, r, kp(t, e, r))
    return Rle(t, e, r, i)
  }
  function QFe(t, e, r) {
    let n = aa(t, e, r, { type: Cle })
    yf(t, n)
    let i = c1(t, e, n, r, kp(t, e, r)),
      a = IM(t, e, r.separator, r)
    return Rle(t, e, r, i, a)
  }
  function ZFe(t, e, r) {
    let n = aa(t, e, r, { type: gf })
    yf(t, n)
    let i = Je(r.definition, s => Lle(t, e, s))
    return c1(t, e, n, r, ...i)
  }
  function JFe(t, e, r) {
    let n = aa(t, e, r, { type: gf })
    yf(t, n)
    let i = c1(t, e, n, r, kp(t, e, r))
    return e$e(t, e, r, i)
  }
  function kp(t, e, r) {
    let n = Yr(
      Je(r.definition, i => Lle(t, e, i)),
      i => i !== void 0
    )
    return n.length === 1 ? n[0] : n.length === 0 ? void 0 : r$e(t, n)
  }
  function Rle(t, e, r, n, i) {
    let a = n.left,
      s = n.right,
      l = aa(t, e, r, { type: qFe })
    yf(t, l)
    let u = aa(t, e, r, { type: _le })
    return (
      (a.loopback = l),
      (u.loopback = l),
      (t.decisionMap[wp(e, i ? 'RepetitionMandatoryWithSeparator' : 'RepetitionMandatory', r.idx)] = l),
      Di(s, l),
      i === void 0 ? (Di(l, a), Di(l, u)) : (Di(l, u), Di(l, i.left), Di(i.right, a)),
      { left: a, right: u }
    )
  }
  function Nle(t, e, r, n, i) {
    let a = n.left,
      s = n.right,
      l = aa(t, e, r, { type: WFe })
    yf(t, l)
    let u = aa(t, e, r, { type: _le }),
      h = aa(t, e, r, { type: HFe })
    return (
      (l.loopback = h),
      (u.loopback = h),
      Di(l, a),
      Di(l, u),
      Di(s, h),
      i !== void 0 ? (Di(h, u), Di(h, i.left), Di(i.right, a)) : Di(h, l),
      (t.decisionMap[wp(e, i ? 'RepetitionWithSeparator' : 'Repetition', r.idx)] = l),
      { left: l, right: u }
    )
  }
  function e$e(t, e, r, n) {
    let i = n.left,
      a = n.right
    return Di(i, a), (t.decisionMap[wp(e, 'Option', r.idx)] = i), n
  }
  function yf(t, e) {
    return t.decisionStates.push(e), (e.decision = t.decisionStates.length - 1), e.decision
  }
  function c1(t, e, r, n, ...i) {
    let a = aa(t, e, n, { type: UFe, start: r })
    r.end = a
    for (let l of i) l !== void 0 ? (Di(r, l.left), Di(l.right, a)) : Di(r, a)
    let s = { left: r, right: a }
    return (t.decisionMap[wp(e, t$e(n), n.idx)] = r), s
  }
  function t$e(t) {
    if (t instanceof wn) return 'Alternation'
    if (t instanceof ln) return 'Option'
    if (t instanceof Pr) return 'Repetition'
    if (t instanceof Tn) return 'RepetitionWithSeparator'
    if (t instanceof Ln) return 'RepetitionMandatory'
    if (t instanceof Rn) return 'RepetitionMandatoryWithSeparator'
    throw new Error('Invalid production type encountered')
  }
  function r$e(t, e) {
    let r = e.length
    for (let a = 0; a < r - 1; a++) {
      let s = e[a],
        l
      s.left.transitions.length === 1 && (l = s.left.transitions[0])
      let u = l instanceof o1,
        h = l,
        f = e[a + 1].left
      s.left.type === gf && s.right.type === gf && l !== void 0 && ((u && h.followState === s.right) || l.target === s.right)
        ? (u ? (h.followState = f) : (l.target = f), a$e(t, s.right))
        : Di(s.right, f)
    }
    let n = e[0],
      i = e[r - 1]
    return { left: n.left, right: i.right }
  }
  function IM(t, e, r, n) {
    let i = aa(t, e, n, { type: gf }),
      a = aa(t, e, n, { type: gf })
    return OM(i, new s1(a, r)), { left: i, right: a }
  }
  function n$e(t, e, r) {
    let n = r.referencedRule,
      i = t.ruleToStartState.get(n),
      a = aa(t, e, r, { type: gf }),
      s = aa(t, e, r, { type: gf }),
      l = new o1(i, n, s)
    return OM(a, l), { left: a, right: s }
  }
  function i$e(t, e, r) {
    let n = t.ruleToStartState.get(e)
    Di(n, r.left)
    let i = t.ruleToStopState.get(e)
    return Di(r.right, i), { left: n, right: i }
  }
  function Di(t, e) {
    let r = new Rx(e)
    OM(t, r)
  }
  function aa(t, e, r, n) {
    let i = Object.assign({ atn: t, production: r, epsilonOnlyTransitions: !1, rule: e, transitions: [], nextTokenWithinRule: [], stateNumber: t.states.length }, n)
    return t.states.push(i), i
  }
  function OM(t, e) {
    t.transitions.length === 0 && (t.epsilonOnlyTransitions = e.isEpsilon()), t.transitions.push(e)
  }
  function a$e(t, e) {
    t.states.splice(t.states.indexOf(e), 1)
  }
  var gf,
    VFe,
    Cle,
    Ale,
    l1,
    UFe,
    HFe,
    WFe,
    qFe,
    _le,
    Lx,
    s1,
    Rx,
    o1,
    Mle = N(() => {
      'use strict'
      Um()
      fR()
      mf()
      o(wp, 'buildATNKey')
      ;(gf = 1),
        (VFe = 2),
        (Cle = 4),
        (Ale = 5),
        (l1 = 7),
        (UFe = 8),
        (HFe = 9),
        (WFe = 10),
        (qFe = 11),
        (_le = 12),
        (Lx = class {
          static {
            o(this, 'AbstractTransition')
          }
          constructor(e) {
            this.target = e
          }
          isEpsilon() {
            return !1
          }
        }),
        (s1 = class extends Lx {
          static {
            o(this, 'AtomTransition')
          }
          constructor(e, r) {
            super(e), (this.tokenType = r)
          }
        }),
        (Rx = class extends Lx {
          static {
            o(this, 'EpsilonTransition')
          }
          constructor(e) {
            super(e)
          }
          isEpsilon() {
            return !0
          }
        }),
        (o1 = class extends Lx {
          static {
            o(this, 'RuleTransition')
          }
          constructor(e, r, n) {
            super(e), (this.rule = r), (this.followState = n)
          }
          isEpsilon() {
            return !0
          }
        })
      o(Dle, 'createATN')
      o(YFe, 'createRuleStartAndStopATNStates')
      o(Lle, 'atom')
      o(XFe, 'repetition')
      o(jFe, 'repetitionSep')
      o(KFe, 'repetitionMandatory')
      o(QFe, 'repetitionMandatorySep')
      o(ZFe, 'alternation')
      o(JFe, 'option')
      o(kp, 'block')
      o(Rle, 'plus')
      o(Nle, 'star')
      o(e$e, 'optional')
      o(yf, 'defineDecisionState')
      o(c1, 'makeAlts')
      o(t$e, 'getProdType')
      o(r$e, 'makeBlock')
      o(IM, 'tokenRef')
      o(n$e, 'ruleRef')
      o(i$e, 'buildRuleHandle')
      o(Di, 'epsilon')
      o(aa, 'newState')
      o(OM, 'addTransition')
      o(a$e, 'removeState')
    })
  function PM(t, e = !0) {
    return `${e ? `a${t.alt}` : ''}s${t.state.stateNumber}:${t.stack.map(r => r.stateNumber.toString()).join('_')}`
  }
  var Nx,
    u1,
    Ile = N(() => {
      'use strict'
      Um()
      ;(Nx = {}),
        (u1 = class {
          static {
            o(this, 'ATNConfigSet')
          }
          constructor() {
            ;(this.map = {}), (this.configs = [])
          }
          get size() {
            return this.configs.length
          }
          finalize() {
            this.map = {}
          }
          add(e) {
            let r = PM(e)
            r in this.map || ((this.map[r] = this.configs.length), this.configs.push(e))
          }
          get elements() {
            return this.configs
          }
          get alts() {
            return Je(this.configs, e => e.alt)
          }
          get key() {
            let e = ''
            for (let r in this.map) e += r + ':'
            return e
          }
        })
      o(PM, 'getATNConfigKey')
    })
  function s$e(t, e) {
    let r = {}
    return n => {
      let i = n.toString(),
        a = r[i]
      return a !== void 0 || ((a = { atnStartState: t, decision: e, states: {} }), (r[i] = a)), a
    }
  }
  function Ple(t, e = !0) {
    let r = new Set()
    for (let n of t) {
      let i = new Set()
      for (let a of n) {
        if (a === void 0) {
          if (e) break
          return !1
        }
        let s = [a.tokenTypeIdx].concat(a.categoryMatches)
        for (let l of s)
          if (r.has(l)) {
            if (!i.has(l)) return !1
          } else r.add(l), i.add(l)
      }
    }
    return !0
  }
  function o$e(t) {
    let e = t.decisionStates.length,
      r = Array(e)
    for (let n = 0; n < e; n++) r[n] = s$e(t.decisionStates[n], n)
    return r
  }
  function BM(t, e, r, n) {
    let i = t[e](r),
      a = i.start
    if (a === void 0) {
      let l = v$e(i.atnStartState)
      ;(a = $le(i, Fle(l))), (i.start = a)
    }
    return l$e.apply(this, [i, a, r, n])
  }
  function l$e(t, e, r, n) {
    let i = e,
      a = 1,
      s = [],
      l = this.LA(a++)
    for (;;) {
      let u = p$e(i, l)
      if ((u === void 0 && (u = c$e.apply(this, [t, i, l, a, r, n])), u === Nx)) return d$e(s, i, l)
      if (u.isAcceptState === !0) return u.prediction
      ;(i = u), s.push(l), (l = this.LA(a++))
    }
  }
  function c$e(t, e, r, n, i, a) {
    let s = m$e(e.configs, r, i)
    if (s.size === 0) return Ble(t, e, r, Nx), Nx
    let l = Fle(s),
      u = y$e(s, i)
    if (u !== void 0) (l.isAcceptState = !0), (l.prediction = u), (l.configs.uniqueAlt = u)
    else if (w$e(s)) {
      let h = Nl(s.alts)
      ;(l.isAcceptState = !0), (l.prediction = h), (l.configs.uniqueAlt = h), u$e.apply(this, [t, n, s.alts, a])
    }
    return (l = Ble(t, e, r, l)), l
  }
  function u$e(t, e, r, n) {
    let i = []
    for (let h = 1; h <= e; h++) i.push(this.LA(h).tokenType)
    let a = t.atnStartState,
      s = a.rule,
      l = a.production,
      u = h$e({ topLevelRule: s, ambiguityIndices: r, production: l, prefixPath: i })
    n(u)
  }
  function h$e(t) {
    let e = Je(t.prefixPath, i => Hu(i)).join(', '),
      r = t.production.idx === 0 ? '' : t.production.idx,
      n = `Ambiguous Alternatives Detected: <${t.ambiguityIndices.join(', ')}> in <${f$e(t.production)}${r}> inside <${t.topLevelRule.name}> Rule,
<${e}> may appears as a prefix path in all these alternatives.
`
    return (
      (n =
        n +
        `See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES
For Further details.`),
      n
    )
  }
  function f$e(t) {
    if (t instanceof on) return 'SUBRULE'
    if (t instanceof ln) return 'OPTION'
    if (t instanceof wn) return 'OR'
    if (t instanceof Ln) return 'AT_LEAST_ONE'
    if (t instanceof Rn) return 'AT_LEAST_ONE_SEP'
    if (t instanceof Tn) return 'MANY_SEP'
    if (t instanceof Pr) return 'MANY'
    if (t instanceof Er) return 'CONSUME'
    throw Error('non exhaustive match')
  }
  function d$e(t, e, r) {
    let n = ga(e.configs.elements, a => a.state.transitions),
      i = die(
        n.filter(a => a instanceof s1).map(a => a.tokenType),
        a => a.tokenTypeIdx
      )
    return { actualToken: r, possibleTokenTypes: i, tokenPath: t }
  }
  function p$e(t, e) {
    return t.edges[e.tokenTypeIdx]
  }
  function m$e(t, e, r) {
    let n = new u1(),
      i = []
    for (let s of t.elements) {
      if (r.is(s.alt) === !1) continue
      if (s.state.type === l1) {
        i.push(s)
        continue
      }
      let l = s.state.transitions.length
      for (let u = 0; u < l; u++) {
        let h = s.state.transitions[u],
          f = g$e(h, e)
        f !== void 0 && n.add({ state: f, alt: s.alt, stack: s.stack })
      }
    }
    let a
    if ((i.length === 0 && n.size === 1 && (a = n), a === void 0)) {
      a = new u1()
      for (let s of n.elements) SE(s, a)
    }
    if (i.length > 0 && !b$e(a)) for (let s of i) a.add(s)
    return a
  }
  function g$e(t, e) {
    if (t instanceof s1 && gx(e, t.tokenType)) return t.target
  }
  function y$e(t, e) {
    let r
    for (let n of t.elements)
      if (e.is(n.alt) === !0) {
        if (r === void 0) r = n.alt
        else if (r !== n.alt) return
      }
    return r
  }
  function Fle(t) {
    return { configs: t, edges: {}, isAcceptState: !1, prediction: -1 }
  }
  function Ble(t, e, r, n) {
    return (n = $le(t, n)), (e.edges[r.tokenTypeIdx] = n), n
  }
  function $le(t, e) {
    if (e === Nx) return e
    let r = e.configs.key,
      n = t.states[r]
    return n !== void 0 ? n : (e.configs.finalize(), (t.states[r] = e), e)
  }
  function v$e(t) {
    let e = new u1(),
      r = t.transitions.length
    for (let n = 0; n < r; n++) {
      let a = { state: t.transitions[n].target, alt: n, stack: [] }
      SE(a, e)
    }
    return e
  }
  function SE(t, e) {
    let r = t.state
    if (r.type === l1) {
      if (t.stack.length > 0) {
        let i = [...t.stack],
          s = { state: i.pop(), alt: t.alt, stack: i }
        SE(s, e)
      } else e.add(t)
      return
    }
    r.epsilonOnlyTransitions || e.add(t)
    let n = r.transitions.length
    for (let i = 0; i < n; i++) {
      let a = r.transitions[i],
        s = x$e(t, a)
      s !== void 0 && SE(s, e)
    }
  }
  function x$e(t, e) {
    if (e instanceof Rx) return { state: e.target, alt: t.alt, stack: t.stack }
    if (e instanceof o1) {
      let r = [...t.stack, e.followState]
      return { state: e.target, alt: t.alt, stack: r }
    }
  }
  function b$e(t) {
    for (let e of t.elements) if (e.state.type === l1) return !0
    return !1
  }
  function T$e(t) {
    for (let e of t.elements) if (e.state.type !== l1) return !1
    return !0
  }
  function w$e(t) {
    if (T$e(t)) return !0
    let e = k$e(t.elements)
    return E$e(e) && !S$e(e)
  }
  function k$e(t) {
    let e = new Map()
    for (let r of t) {
      let n = PM(r, !1),
        i = e.get(n)
      i === void 0 && ((i = {}), e.set(n, i)), (i[r.alt] = !0)
    }
    return e
  }
  function E$e(t) {
    for (let e of Array.from(t.values())) if (Object.keys(e).length > 1) return !0
    return !1
  }
  function S$e(t) {
    for (let e of Array.from(t.values())) if (Object.keys(e).length === 1) return !0
    return !1
  }
  var EE,
    Ole,
    Mx,
    zle = N(() => {
      'use strict'
      mf()
      Mle()
      Ile()
      bR()
      pR()
      pie()
      Um()
      Sw()
      ek()
      ak()
      ER()
      o(s$e, 'createDFACache')
      ;(EE = class {
        static {
          o(this, 'PredicateSet')
        }
        constructor() {
          this.predicates = []
        }
        is(e) {
          return e >= this.predicates.length || this.predicates[e]
        }
        set(e, r) {
          this.predicates[e] = r
        }
        toString() {
          let e = '',
            r = this.predicates.length
          for (let n = 0; n < r; n++) e += this.predicates[n] === !0 ? '1' : '0'
          return e
        }
      }),
        (Ole = new EE()),
        (Mx = class extends Yu {
          static {
            o(this, 'LLStarLookaheadStrategy')
          }
          constructor(e) {
            var r
            super(), (this.logging = (r = e?.logging) !== null && r !== void 0 ? r : n => console.log(n))
          }
          initialize(e) {
            ;(this.atn = Dle(e.rules)), (this.dfas = o$e(this.atn))
          }
          validateAmbiguousAlternationAlternatives() {
            return []
          }
          validateEmptyOrAlternatives() {
            return []
          }
          buildLookaheadForAlternation(e) {
            let { prodOccurrence: r, rule: n, hasPredicates: i, dynamicTokensEnabled: a } = e,
              s = this.dfas,
              l = this.logging,
              u = wp(n, 'Alternation', r),
              f = this.atn.decisionMap[u].decision,
              d = Je(rE({ maxLookahead: 1, occurrence: r, prodType: 'Alternation', rule: n }), p => Je(p, m => m[0]))
            if (Ple(d, !1) && !a) {
              let p = Xr(
                d,
                (m, g, y) => (
                  Ae(g, v => {
                    v &&
                      ((m[v.tokenTypeIdx] = y),
                      Ae(v.categoryMatches, x => {
                        m[x] = y
                      }))
                  }),
                  m
                ),
                {}
              )
              return i
                ? function (m) {
                    var g
                    let y = this.LA(1),
                      v = p[y.tokenTypeIdx]
                    if (m !== void 0 && v !== void 0) {
                      let x = (g = m[v]) === null || g === void 0 ? void 0 : g.GATE
                      if (x !== void 0 && x.call(this) === !1) return
                    }
                    return v
                  }
                : function () {
                    let m = this.LA(1)
                    return p[m.tokenTypeIdx]
                  }
            } else
              return i
                ? function (p) {
                    let m = new EE(),
                      g = p === void 0 ? 0 : p.length
                    for (let v = 0; v < g; v++) {
                      let x = p?.[v].GATE
                      m.set(v, x === void 0 || x.call(this))
                    }
                    let y = BM.call(this, s, f, m, l)
                    return typeof y == 'number' ? y : void 0
                  }
                : function () {
                    let p = BM.call(this, s, f, Ole, l)
                    return typeof p == 'number' ? p : void 0
                  }
          }
          buildLookaheadForOptional(e) {
            let { prodOccurrence: r, rule: n, prodType: i, dynamicTokensEnabled: a } = e,
              s = this.dfas,
              l = this.logging,
              u = wp(n, i, r),
              f = this.atn.decisionMap[u].decision,
              d = Je(rE({ maxLookahead: 1, occurrence: r, prodType: i, rule: n }), p => Je(p, m => m[0]))
            if (Ple(d) && d[0][0] && !a) {
              let p = d[0],
                m = qr(p)
              if (m.length === 1 && hr(m[0].categoryMatches)) {
                let y = m[0].tokenTypeIdx
                return function () {
                  return this.LA(1).tokenTypeIdx === y
                }
              } else {
                let g = Xr(
                  m,
                  (y, v) => (
                    v !== void 0 &&
                      ((y[v.tokenTypeIdx] = !0),
                      Ae(v.categoryMatches, x => {
                        y[x] = !0
                      })),
                    y
                  ),
                  {}
                )
                return function () {
                  let y = this.LA(1)
                  return g[y.tokenTypeIdx] === !0
                }
              }
            }
            return function () {
              let p = BM.call(this, s, f, Ole, l)
              return typeof p == 'object' ? !1 : p === 0
            }
          }
        })
      o(Ple, 'isLL1Sequence')
      o(o$e, 'initATNSimulator')
      o(BM, 'adaptivePredict')
      o(l$e, 'performLookahead')
      o(c$e, 'computeLookaheadTarget')
      o(u$e, 'reportLookaheadAmbiguity')
      o(h$e, 'buildAmbiguityError')
      o(f$e, 'getProductionDslName')
      o(d$e, 'buildAdaptivePredictError')
      o(p$e, 'getExistingTargetState')
      o(m$e, 'computeReachSet')
      o(g$e, 'getReachableTarget')
      o(y$e, 'getUniqueAlt')
      o(Fle, 'newDFAState')
      o(Ble, 'addDFAEdge')
      o($le, 'addDFAState')
      o(v$e, 'computeStartState')
      o(SE, 'closure')
      o(x$e, 'getEpsilonTarget')
      o(b$e, 'hasConfigInRuleStopState')
      o(T$e, 'allConfigsInRuleStopStates')
      o(w$e, 'hasConflictTerminatingPrediction')
      o(k$e, 'getConflictingAltSets')
      o(E$e, 'hasConflictingAltSet')
      o(S$e, 'hasStateAssociatedWithOneAlt')
    })
  var Gle = N(() => {
    'use strict'
    zle()
  })
  var Vle,
    FM,
    Ule,
    CE,
    jr,
    Br,
    AE,
    Hle,
    $M,
    Wle,
    qle,
    Yle,
    Xle,
    zM,
    jle,
    Kle,
    Qle,
    _E,
    h1,
    f1,
    GM,
    d1,
    Zle,
    VM,
    UM,
    HM,
    WM,
    qM,
    Jle,
    ece,
    YM,
    tce,
    XM,
    Ix,
    rce,
    nce,
    ice,
    ace,
    sce,
    oce,
    lce,
    cce,
    DE,
    uce,
    hce,
    fce,
    dce,
    pce,
    mce,
    gce,
    yce,
    vce,
    xce,
    bce,
    LE,
    Tce,
    wce,
    kce,
    Ece,
    Sce,
    Cce,
    Ace,
    _ce,
    Dce,
    Lce,
    Rce,
    Nce,
    Mce,
    jM,
    KM,
    Ice,
    Oce,
    Pce,
    Bce,
    Fce,
    $ce,
    zce,
    Gce,
    Vce,
    QM,
    $e,
    ZM = N(() => {
      'use strict'
      ;(function (t) {
        function e(r) {
          return typeof r == 'string'
        }
        o(e, 'is'), (t.is = e)
      })(Vle || (Vle = {}))
      ;(function (t) {
        function e(r) {
          return typeof r == 'string'
        }
        o(e, 'is'), (t.is = e)
      })(FM || (FM = {}))
      ;(function (t) {
        ;(t.MIN_VALUE = -2147483648), (t.MAX_VALUE = 2147483647)
        function e(r) {
          return typeof r == 'number' && t.MIN_VALUE <= r && r <= t.MAX_VALUE
        }
        o(e, 'is'), (t.is = e)
      })(Ule || (Ule = {}))
      ;(function (t) {
        ;(t.MIN_VALUE = 0), (t.MAX_VALUE = 2147483647)
        function e(r) {
          return typeof r == 'number' && t.MIN_VALUE <= r && r <= t.MAX_VALUE
        }
        o(e, 'is'), (t.is = e)
      })(CE || (CE = {}))
      ;(function (t) {
        function e(n, i) {
          return n === Number.MAX_VALUE && (n = CE.MAX_VALUE), i === Number.MAX_VALUE && (i = CE.MAX_VALUE), { line: n, character: i }
        }
        o(e, 'create'), (t.create = e)
        function r(n) {
          let i = n
          return $e.objectLiteral(i) && $e.uinteger(i.line) && $e.uinteger(i.character)
        }
        o(r, 'is'), (t.is = r)
      })(jr || (jr = {}))
      ;(function (t) {
        function e(n, i, a, s) {
          if ($e.uinteger(n) && $e.uinteger(i) && $e.uinteger(a) && $e.uinteger(s)) return { start: jr.create(n, i), end: jr.create(a, s) }
          if (jr.is(n) && jr.is(i)) return { start: n, end: i }
          throw new Error(`Range#create called with invalid arguments[${n}, ${i}, ${a}, ${s}]`)
        }
        o(e, 'create'), (t.create = e)
        function r(n) {
          let i = n
          return $e.objectLiteral(i) && jr.is(i.start) && jr.is(i.end)
        }
        o(r, 'is'), (t.is = r)
      })(Br || (Br = {}))
      ;(function (t) {
        function e(n, i) {
          return { uri: n, range: i }
        }
        o(e, 'create'), (t.create = e)
        function r(n) {
          let i = n
          return $e.objectLiteral(i) && Br.is(i.range) && ($e.string(i.uri) || $e.undefined(i.uri))
        }
        o(r, 'is'), (t.is = r)
      })(AE || (AE = {}))
      ;(function (t) {
        function e(n, i, a, s) {
          return { targetUri: n, targetRange: i, targetSelectionRange: a, originSelectionRange: s }
        }
        o(e, 'create'), (t.create = e)
        function r(n) {
          let i = n
          return (
            $e.objectLiteral(i) &&
            Br.is(i.targetRange) &&
            $e.string(i.targetUri) &&
            Br.is(i.targetSelectionRange) &&
            (Br.is(i.originSelectionRange) || $e.undefined(i.originSelectionRange))
          )
        }
        o(r, 'is'), (t.is = r)
      })(Hle || (Hle = {}))
      ;(function (t) {
        function e(n, i, a, s) {
          return { red: n, green: i, blue: a, alpha: s }
        }
        o(e, 'create'), (t.create = e)
        function r(n) {
          let i = n
          return $e.objectLiteral(i) && $e.numberRange(i.red, 0, 1) && $e.numberRange(i.green, 0, 1) && $e.numberRange(i.blue, 0, 1) && $e.numberRange(i.alpha, 0, 1)
        }
        o(r, 'is'), (t.is = r)
      })($M || ($M = {}))
      ;(function (t) {
        function e(n, i) {
          return { range: n, color: i }
        }
        o(e, 'create'), (t.create = e)
        function r(n) {
          let i = n
          return $e.objectLiteral(i) && Br.is(i.range) && $M.is(i.color)
        }
        o(r, 'is'), (t.is = r)
      })(Wle || (Wle = {}))
      ;(function (t) {
        function e(n, i, a) {
          return { label: n, textEdit: i, additionalTextEdits: a }
        }
        o(e, 'create'), (t.create = e)
        function r(n) {
          let i = n
          return (
            $e.objectLiteral(i) &&
            $e.string(i.label) &&
            ($e.undefined(i.textEdit) || f1.is(i)) &&
            ($e.undefined(i.additionalTextEdits) || $e.typedArray(i.additionalTextEdits, f1.is))
          )
        }
        o(r, 'is'), (t.is = r)
      })(qle || (qle = {}))
      ;(function (t) {
        ;(t.Comment = 'comment'), (t.Imports = 'imports'), (t.Region = 'region')
      })(Yle || (Yle = {}))
      ;(function (t) {
        function e(n, i, a, s, l, u) {
          let h = { startLine: n, endLine: i }
          return $e.defined(a) && (h.startCharacter = a), $e.defined(s) && (h.endCharacter = s), $e.defined(l) && (h.kind = l), $e.defined(u) && (h.collapsedText = u), h
        }
        o(e, 'create'), (t.create = e)
        function r(n) {
          let i = n
          return (
            $e.objectLiteral(i) &&
            $e.uinteger(i.startLine) &&
            $e.uinteger(i.startLine) &&
            ($e.undefined(i.startCharacter) || $e.uinteger(i.startCharacter)) &&
            ($e.undefined(i.endCharacter) || $e.uinteger(i.endCharacter)) &&
            ($e.undefined(i.kind) || $e.string(i.kind))
          )
        }
        o(r, 'is'), (t.is = r)
      })(Xle || (Xle = {}))
      ;(function (t) {
        function e(n, i) {
          return { location: n, message: i }
        }
        o(e, 'create'), (t.create = e)
        function r(n) {
          let i = n
          return $e.defined(i) && AE.is(i.location) && $e.string(i.message)
        }
        o(r, 'is'), (t.is = r)
      })(zM || (zM = {}))
      ;(function (t) {
        ;(t.Error = 1), (t.Warning = 2), (t.Information = 3), (t.Hint = 4)
      })(jle || (jle = {}))
      ;(function (t) {
        ;(t.Unnecessary = 1), (t.Deprecated = 2)
      })(Kle || (Kle = {}))
      ;(function (t) {
        function e(r) {
          let n = r
          return $e.objectLiteral(n) && $e.string(n.href)
        }
        o(e, 'is'), (t.is = e)
      })(Qle || (Qle = {}))
      ;(function (t) {
        function e(n, i, a, s, l, u) {
          let h = { range: n, message: i }
          return $e.defined(a) && (h.severity = a), $e.defined(s) && (h.code = s), $e.defined(l) && (h.source = l), $e.defined(u) && (h.relatedInformation = u), h
        }
        o(e, 'create'), (t.create = e)
        function r(n) {
          var i
          let a = n
          return (
            $e.defined(a) &&
            Br.is(a.range) &&
            $e.string(a.message) &&
            ($e.number(a.severity) || $e.undefined(a.severity)) &&
            ($e.integer(a.code) || $e.string(a.code) || $e.undefined(a.code)) &&
            ($e.undefined(a.codeDescription) || $e.string((i = a.codeDescription) === null || i === void 0 ? void 0 : i.href)) &&
            ($e.string(a.source) || $e.undefined(a.source)) &&
            ($e.undefined(a.relatedInformation) || $e.typedArray(a.relatedInformation, zM.is))
          )
        }
        o(r, 'is'), (t.is = r)
      })(_E || (_E = {}))
      ;(function (t) {
        function e(n, i, ...a) {
          let s = { title: n, command: i }
          return $e.defined(a) && a.length > 0 && (s.arguments = a), s
        }
        o(e, 'create'), (t.create = e)
        function r(n) {
          let i = n
          return $e.defined(i) && $e.string(i.title) && $e.string(i.command)
        }
        o(r, 'is'), (t.is = r)
      })(h1 || (h1 = {}))
      ;(function (t) {
        function e(a, s) {
          return { range: a, newText: s }
        }
        o(e, 'replace'), (t.replace = e)
        function r(a, s) {
          return { range: { start: a, end: a }, newText: s }
        }
        o(r, 'insert'), (t.insert = r)
        function n(a) {
          return { range: a, newText: '' }
        }
        o(n, 'del'), (t.del = n)
        function i(a) {
          let s = a
          return $e.objectLiteral(s) && $e.string(s.newText) && Br.is(s.range)
        }
        o(i, 'is'), (t.is = i)
      })(f1 || (f1 = {}))
      ;(function (t) {
        function e(n, i, a) {
          let s = { label: n }
          return i !== void 0 && (s.needsConfirmation = i), a !== void 0 && (s.description = a), s
        }
        o(e, 'create'), (t.create = e)
        function r(n) {
          let i = n
          return (
            $e.objectLiteral(i) &&
            $e.string(i.label) &&
            ($e.boolean(i.needsConfirmation) || i.needsConfirmation === void 0) &&
            ($e.string(i.description) || i.description === void 0)
          )
        }
        o(r, 'is'), (t.is = r)
      })(GM || (GM = {}))
      ;(function (t) {
        function e(r) {
          let n = r
          return $e.string(n)
        }
        o(e, 'is'), (t.is = e)
      })(d1 || (d1 = {}))
      ;(function (t) {
        function e(a, s, l) {
          return { range: a, newText: s, annotationId: l }
        }
        o(e, 'replace'), (t.replace = e)
        function r(a, s, l) {
          return { range: { start: a, end: a }, newText: s, annotationId: l }
        }
        o(r, 'insert'), (t.insert = r)
        function n(a, s) {
          return { range: a, newText: '', annotationId: s }
        }
        o(n, 'del'), (t.del = n)
        function i(a) {
          let s = a
          return f1.is(s) && (GM.is(s.annotationId) || d1.is(s.annotationId))
        }
        o(i, 'is'), (t.is = i)
      })(Zle || (Zle = {}))
      ;(function (t) {
        function e(n, i) {
          return { textDocument: n, edits: i }
        }
        o(e, 'create'), (t.create = e)
        function r(n) {
          let i = n
          return $e.defined(i) && YM.is(i.textDocument) && Array.isArray(i.edits)
        }
        o(r, 'is'), (t.is = r)
      })(VM || (VM = {}))
      ;(function (t) {
        function e(n, i, a) {
          let s = { kind: 'create', uri: n }
          return i !== void 0 && (i.overwrite !== void 0 || i.ignoreIfExists !== void 0) && (s.options = i), a !== void 0 && (s.annotationId = a), s
        }
        o(e, 'create'), (t.create = e)
        function r(n) {
          let i = n
          return (
            i &&
            i.kind === 'create' &&
            $e.string(i.uri) &&
            (i.options === void 0 ||
              ((i.options.overwrite === void 0 || $e.boolean(i.options.overwrite)) && (i.options.ignoreIfExists === void 0 || $e.boolean(i.options.ignoreIfExists)))) &&
            (i.annotationId === void 0 || d1.is(i.annotationId))
          )
        }
        o(r, 'is'), (t.is = r)
      })(UM || (UM = {}))
      ;(function (t) {
        function e(n, i, a, s) {
          let l = { kind: 'rename', oldUri: n, newUri: i }
          return a !== void 0 && (a.overwrite !== void 0 || a.ignoreIfExists !== void 0) && (l.options = a), s !== void 0 && (l.annotationId = s), l
        }
        o(e, 'create'), (t.create = e)
        function r(n) {
          let i = n
          return (
            i &&
            i.kind === 'rename' &&
            $e.string(i.oldUri) &&
            $e.string(i.newUri) &&
            (i.options === void 0 ||
              ((i.options.overwrite === void 0 || $e.boolean(i.options.overwrite)) && (i.options.ignoreIfExists === void 0 || $e.boolean(i.options.ignoreIfExists)))) &&
            (i.annotationId === void 0 || d1.is(i.annotationId))
          )
        }
        o(r, 'is'), (t.is = r)
      })(HM || (HM = {}))
      ;(function (t) {
        function e(n, i, a) {
          let s = { kind: 'delete', uri: n }
          return i !== void 0 && (i.recursive !== void 0 || i.ignoreIfNotExists !== void 0) && (s.options = i), a !== void 0 && (s.annotationId = a), s
        }
        o(e, 'create'), (t.create = e)
        function r(n) {
          let i = n
          return (
            i &&
            i.kind === 'delete' &&
            $e.string(i.uri) &&
            (i.options === void 0 ||
              ((i.options.recursive === void 0 || $e.boolean(i.options.recursive)) && (i.options.ignoreIfNotExists === void 0 || $e.boolean(i.options.ignoreIfNotExists)))) &&
            (i.annotationId === void 0 || d1.is(i.annotationId))
          )
        }
        o(r, 'is'), (t.is = r)
      })(WM || (WM = {}))
      ;(function (t) {
        function e(r) {
          let n = r
          return (
            n &&
            (n.changes !== void 0 || n.documentChanges !== void 0) &&
            (n.documentChanges === void 0 || n.documentChanges.every(i => ($e.string(i.kind) ? UM.is(i) || HM.is(i) || WM.is(i) : VM.is(i))))
          )
        }
        o(e, 'is'), (t.is = e)
      })(qM || (qM = {}))
      ;(function (t) {
        function e(n) {
          return { uri: n }
        }
        o(e, 'create'), (t.create = e)
        function r(n) {
          let i = n
          return $e.defined(i) && $e.string(i.uri)
        }
        o(r, 'is'), (t.is = r)
      })(Jle || (Jle = {}))
      ;(function (t) {
        function e(n, i) {
          return { uri: n, version: i }
        }
        o(e, 'create'), (t.create = e)
        function r(n) {
          let i = n
          return $e.defined(i) && $e.string(i.uri) && $e.integer(i.version)
        }
        o(r, 'is'), (t.is = r)
      })(ece || (ece = {}))
      ;(function (t) {
        function e(n, i) {
          return { uri: n, version: i }
        }
        o(e, 'create'), (t.create = e)
        function r(n) {
          let i = n
          return $e.defined(i) && $e.string(i.uri) && (i.version === null || $e.integer(i.version))
        }
        o(r, 'is'), (t.is = r)
      })(YM || (YM = {}))
      ;(function (t) {
        function e(n, i, a, s) {
          return { uri: n, languageId: i, version: a, text: s }
        }
        o(e, 'create'), (t.create = e)
        function r(n) {
          let i = n
          return $e.defined(i) && $e.string(i.uri) && $e.string(i.languageId) && $e.integer(i.version) && $e.string(i.text)
        }
        o(r, 'is'), (t.is = r)
      })(tce || (tce = {}))
      ;(function (t) {
        ;(t.PlainText = 'plaintext'), (t.Markdown = 'markdown')
        function e(r) {
          let n = r
          return n === t.PlainText || n === t.Markdown
        }
        o(e, 'is'), (t.is = e)
      })(XM || (XM = {}))
      ;(function (t) {
        function e(r) {
          let n = r
          return $e.objectLiteral(r) && XM.is(n.kind) && $e.string(n.value)
        }
        o(e, 'is'), (t.is = e)
      })(Ix || (Ix = {}))
      ;(function (t) {
        ;(t.Text = 1),
          (t.Method = 2),
          (t.Function = 3),
          (t.Constructor = 4),
          (t.Field = 5),
          (t.Variable = 6),
          (t.Class = 7),
          (t.Interface = 8),
          (t.Module = 9),
          (t.Property = 10),
          (t.Unit = 11),
          (t.Value = 12),
          (t.Enum = 13),
          (t.Keyword = 14),
          (t.Snippet = 15),
          (t.Color = 16),
          (t.File = 17),
          (t.Reference = 18),
          (t.Folder = 19),
          (t.EnumMember = 20),
          (t.Constant = 21),
          (t.Struct = 22),
          (t.Event = 23),
          (t.Operator = 24),
          (t.TypeParameter = 25)
      })(rce || (rce = {}))
      ;(function (t) {
        ;(t.PlainText = 1), (t.Snippet = 2)
      })(nce || (nce = {}))
      ;(function (t) {
        t.Deprecated = 1
      })(ice || (ice = {}))
      ;(function (t) {
        function e(n, i, a) {
          return { newText: n, insert: i, replace: a }
        }
        o(e, 'create'), (t.create = e)
        function r(n) {
          let i = n
          return i && $e.string(i.newText) && Br.is(i.insert) && Br.is(i.replace)
        }
        o(r, 'is'), (t.is = r)
      })(ace || (ace = {}))
      ;(function (t) {
        ;(t.asIs = 1), (t.adjustIndentation = 2)
      })(sce || (sce = {}))
      ;(function (t) {
        function e(r) {
          let n = r
          return n && ($e.string(n.detail) || n.detail === void 0) && ($e.string(n.description) || n.description === void 0)
        }
        o(e, 'is'), (t.is = e)
      })(oce || (oce = {}))
      ;(function (t) {
        function e(r) {
          return { label: r }
        }
        o(e, 'create'), (t.create = e)
      })(lce || (lce = {}))
      ;(function (t) {
        function e(r, n) {
          return { items: r || [], isIncomplete: !!n }
        }
        o(e, 'create'), (t.create = e)
      })(cce || (cce = {}))
      ;(function (t) {
        function e(n) {
          return n.replace(/[\\`*_{}[\]()#+\-.!]/g, '\\$&')
        }
        o(e, 'fromPlainText'), (t.fromPlainText = e)
        function r(n) {
          let i = n
          return $e.string(i) || ($e.objectLiteral(i) && $e.string(i.language) && $e.string(i.value))
        }
        o(r, 'is'), (t.is = r)
      })(DE || (DE = {}))
      ;(function (t) {
        function e(r) {
          let n = r
          return !!n && $e.objectLiteral(n) && (Ix.is(n.contents) || DE.is(n.contents) || $e.typedArray(n.contents, DE.is)) && (r.range === void 0 || Br.is(r.range))
        }
        o(e, 'is'), (t.is = e)
      })(uce || (uce = {}))
      ;(function (t) {
        function e(r, n) {
          return n ? { label: r, documentation: n } : { label: r }
        }
        o(e, 'create'), (t.create = e)
      })(hce || (hce = {}))
      ;(function (t) {
        function e(r, n, ...i) {
          let a = { label: r }
          return $e.defined(n) && (a.documentation = n), $e.defined(i) ? (a.parameters = i) : (a.parameters = []), a
        }
        o(e, 'create'), (t.create = e)
      })(fce || (fce = {}))
      ;(function (t) {
        ;(t.Text = 1), (t.Read = 2), (t.Write = 3)
      })(dce || (dce = {}))
      ;(function (t) {
        function e(r, n) {
          let i = { range: r }
          return $e.number(n) && (i.kind = n), i
        }
        o(e, 'create'), (t.create = e)
      })(pce || (pce = {}))
      ;(function (t) {
        ;(t.File = 1),
          (t.Module = 2),
          (t.Namespace = 3),
          (t.Package = 4),
          (t.Class = 5),
          (t.Method = 6),
          (t.Property = 7),
          (t.Field = 8),
          (t.Constructor = 9),
          (t.Enum = 10),
          (t.Interface = 11),
          (t.Function = 12),
          (t.Variable = 13),
          (t.Constant = 14),
          (t.String = 15),
          (t.Number = 16),
          (t.Boolean = 17),
          (t.Array = 18),
          (t.Object = 19),
          (t.Key = 20),
          (t.Null = 21),
          (t.EnumMember = 22),
          (t.Struct = 23),
          (t.Event = 24),
          (t.Operator = 25),
          (t.TypeParameter = 26)
      })(mce || (mce = {}))
      ;(function (t) {
        t.Deprecated = 1
      })(gce || (gce = {}))
      ;(function (t) {
        function e(r, n, i, a, s) {
          let l = { name: r, kind: n, location: { uri: a, range: i } }
          return s && (l.containerName = s), l
        }
        o(e, 'create'), (t.create = e)
      })(yce || (yce = {}))
      ;(function (t) {
        function e(r, n, i, a) {
          return a !== void 0 ? { name: r, kind: n, location: { uri: i, range: a } } : { name: r, kind: n, location: { uri: i } }
        }
        o(e, 'create'), (t.create = e)
      })(vce || (vce = {}))
      ;(function (t) {
        function e(n, i, a, s, l, u) {
          let h = { name: n, detail: i, kind: a, range: s, selectionRange: l }
          return u !== void 0 && (h.children = u), h
        }
        o(e, 'create'), (t.create = e)
        function r(n) {
          let i = n
          return (
            i &&
            $e.string(i.name) &&
            $e.number(i.kind) &&
            Br.is(i.range) &&
            Br.is(i.selectionRange) &&
            (i.detail === void 0 || $e.string(i.detail)) &&
            (i.deprecated === void 0 || $e.boolean(i.deprecated)) &&
            (i.children === void 0 || Array.isArray(i.children)) &&
            (i.tags === void 0 || Array.isArray(i.tags))
          )
        }
        o(r, 'is'), (t.is = r)
      })(xce || (xce = {}))
      ;(function (t) {
        ;(t.Empty = ''),
          (t.QuickFix = 'quickfix'),
          (t.Refactor = 'refactor'),
          (t.RefactorExtract = 'refactor.extract'),
          (t.RefactorInline = 'refactor.inline'),
          (t.RefactorRewrite = 'refactor.rewrite'),
          (t.Source = 'source'),
          (t.SourceOrganizeImports = 'source.organizeImports'),
          (t.SourceFixAll = 'source.fixAll')
      })(bce || (bce = {}))
      ;(function (t) {
        ;(t.Invoked = 1), (t.Automatic = 2)
      })(LE || (LE = {}))
      ;(function (t) {
        function e(n, i, a) {
          let s = { diagnostics: n }
          return i != null && (s.only = i), a != null && (s.triggerKind = a), s
        }
        o(e, 'create'), (t.create = e)
        function r(n) {
          let i = n
          return (
            $e.defined(i) &&
            $e.typedArray(i.diagnostics, _E.is) &&
            (i.only === void 0 || $e.typedArray(i.only, $e.string)) &&
            (i.triggerKind === void 0 || i.triggerKind === LE.Invoked || i.triggerKind === LE.Automatic)
          )
        }
        o(r, 'is'), (t.is = r)
      })(Tce || (Tce = {}))
      ;(function (t) {
        function e(n, i, a) {
          let s = { title: n },
            l = !0
          return typeof i == 'string' ? ((l = !1), (s.kind = i)) : h1.is(i) ? (s.command = i) : (s.edit = i), l && a !== void 0 && (s.kind = a), s
        }
        o(e, 'create'), (t.create = e)
        function r(n) {
          let i = n
          return (
            i &&
            $e.string(i.title) &&
            (i.diagnostics === void 0 || $e.typedArray(i.diagnostics, _E.is)) &&
            (i.kind === void 0 || $e.string(i.kind)) &&
            (i.edit !== void 0 || i.command !== void 0) &&
            (i.command === void 0 || h1.is(i.command)) &&
            (i.isPreferred === void 0 || $e.boolean(i.isPreferred)) &&
            (i.edit === void 0 || qM.is(i.edit))
          )
        }
        o(r, 'is'), (t.is = r)
      })(wce || (wce = {}))
      ;(function (t) {
        function e(n, i) {
          let a = { range: n }
          return $e.defined(i) && (a.data = i), a
        }
        o(e, 'create'), (t.create = e)
        function r(n) {
          let i = n
          return $e.defined(i) && Br.is(i.range) && ($e.undefined(i.command) || h1.is(i.command))
        }
        o(r, 'is'), (t.is = r)
      })(kce || (kce = {}))
      ;(function (t) {
        function e(n, i) {
          return { tabSize: n, insertSpaces: i }
        }
        o(e, 'create'), (t.create = e)
        function r(n) {
          let i = n
          return $e.defined(i) && $e.uinteger(i.tabSize) && $e.boolean(i.insertSpaces)
        }
        o(r, 'is'), (t.is = r)
      })(Ece || (Ece = {}))
      ;(function (t) {
        function e(n, i, a) {
          return { range: n, target: i, data: a }
        }
        o(e, 'create'), (t.create = e)
        function r(n) {
          let i = n
          return $e.defined(i) && Br.is(i.range) && ($e.undefined(i.target) || $e.string(i.target))
        }
        o(r, 'is'), (t.is = r)
      })(Sce || (Sce = {}))
      ;(function (t) {
        function e(n, i) {
          return { range: n, parent: i }
        }
        o(e, 'create'), (t.create = e)
        function r(n) {
          let i = n
          return $e.objectLiteral(i) && Br.is(i.range) && (i.parent === void 0 || t.is(i.parent))
        }
        o(r, 'is'), (t.is = r)
      })(Cce || (Cce = {}))
      ;(function (t) {
        ;(t.namespace = 'namespace'),
          (t.type = 'type'),
          (t.class = 'class'),
          (t.enum = 'enum'),
          (t.interface = 'interface'),
          (t.struct = 'struct'),
          (t.typeParameter = 'typeParameter'),
          (t.parameter = 'parameter'),
          (t.variable = 'variable'),
          (t.property = 'property'),
          (t.enumMember = 'enumMember'),
          (t.event = 'event'),
          (t.function = 'function'),
          (t.method = 'method'),
          (t.macro = 'macro'),
          (t.keyword = 'keyword'),
          (t.modifier = 'modifier'),
          (t.comment = 'comment'),
          (t.string = 'string'),
          (t.number = 'number'),
          (t.regexp = 'regexp'),
          (t.operator = 'operator'),
          (t.decorator = 'decorator')
      })(Ace || (Ace = {}))
      ;(function (t) {
        ;(t.declaration = 'declaration'),
          (t.definition = 'definition'),
          (t.readonly = 'readonly'),
          (t.static = 'static'),
          (t.deprecated = 'deprecated'),
          (t.abstract = 'abstract'),
          (t.async = 'async'),
          (t.modification = 'modification'),
          (t.documentation = 'documentation'),
          (t.defaultLibrary = 'defaultLibrary')
      })(_ce || (_ce = {}))
      ;(function (t) {
        function e(r) {
          let n = r
          return $e.objectLiteral(n) && (n.resultId === void 0 || typeof n.resultId == 'string') && Array.isArray(n.data) && (n.data.length === 0 || typeof n.data[0] == 'number')
        }
        o(e, 'is'), (t.is = e)
      })(Dce || (Dce = {}))
      ;(function (t) {
        function e(n, i) {
          return { range: n, text: i }
        }
        o(e, 'create'), (t.create = e)
        function r(n) {
          let i = n
          return i != null && Br.is(i.range) && $e.string(i.text)
        }
        o(r, 'is'), (t.is = r)
      })(Lce || (Lce = {}))
      ;(function (t) {
        function e(n, i, a) {
          return { range: n, variableName: i, caseSensitiveLookup: a }
        }
        o(e, 'create'), (t.create = e)
        function r(n) {
          let i = n
          return i != null && Br.is(i.range) && $e.boolean(i.caseSensitiveLookup) && ($e.string(i.variableName) || i.variableName === void 0)
        }
        o(r, 'is'), (t.is = r)
      })(Rce || (Rce = {}))
      ;(function (t) {
        function e(n, i) {
          return { range: n, expression: i }
        }
        o(e, 'create'), (t.create = e)
        function r(n) {
          let i = n
          return i != null && Br.is(i.range) && ($e.string(i.expression) || i.expression === void 0)
        }
        o(r, 'is'), (t.is = r)
      })(Nce || (Nce = {}))
      ;(function (t) {
        function e(n, i) {
          return { frameId: n, stoppedLocation: i }
        }
        o(e, 'create'), (t.create = e)
        function r(n) {
          let i = n
          return $e.defined(i) && Br.is(n.stoppedLocation)
        }
        o(r, 'is'), (t.is = r)
      })(Mce || (Mce = {}))
      ;(function (t) {
        ;(t.Type = 1), (t.Parameter = 2)
        function e(r) {
          return r === 1 || r === 2
        }
        o(e, 'is'), (t.is = e)
      })(jM || (jM = {}))
      ;(function (t) {
        function e(n) {
          return { value: n }
        }
        o(e, 'create'), (t.create = e)
        function r(n) {
          let i = n
          return (
            $e.objectLiteral(i) &&
            (i.tooltip === void 0 || $e.string(i.tooltip) || Ix.is(i.tooltip)) &&
            (i.location === void 0 || AE.is(i.location)) &&
            (i.command === void 0 || h1.is(i.command))
          )
        }
        o(r, 'is'), (t.is = r)
      })(KM || (KM = {}))
      ;(function (t) {
        function e(n, i, a) {
          let s = { position: n, label: i }
          return a !== void 0 && (s.kind = a), s
        }
        o(e, 'create'), (t.create = e)
        function r(n) {
          let i = n
          return (
            ($e.objectLiteral(i) && jr.is(i.position) && ($e.string(i.label) || $e.typedArray(i.label, KM.is)) && (i.kind === void 0 || jM.is(i.kind)) && i.textEdits === void 0) ||
            ($e.typedArray(i.textEdits, f1.is) &&
              (i.tooltip === void 0 || $e.string(i.tooltip) || Ix.is(i.tooltip)) &&
              (i.paddingLeft === void 0 || $e.boolean(i.paddingLeft)) &&
              (i.paddingRight === void 0 || $e.boolean(i.paddingRight)))
          )
        }
        o(r, 'is'), (t.is = r)
      })(Ice || (Ice = {}))
      ;(function (t) {
        function e(r) {
          return { kind: 'snippet', value: r }
        }
        o(e, 'createSnippet'), (t.createSnippet = e)
      })(Oce || (Oce = {}))
      ;(function (t) {
        function e(r, n, i, a) {
          return { insertText: r, filterText: n, range: i, command: a }
        }
        o(e, 'create'), (t.create = e)
      })(Pce || (Pce = {}))
      ;(function (t) {
        function e(r) {
          return { items: r }
        }
        o(e, 'create'), (t.create = e)
      })(Bce || (Bce = {}))
      ;(function (t) {
        ;(t.Invoked = 0), (t.Automatic = 1)
      })(Fce || (Fce = {}))
      ;(function (t) {
        function e(r, n) {
          return { range: r, text: n }
        }
        o(e, 'create'), (t.create = e)
      })($ce || ($ce = {}))
      ;(function (t) {
        function e(r, n) {
          return { triggerKind: r, selectedCompletionInfo: n }
        }
        o(e, 'create'), (t.create = e)
      })(zce || (zce = {}))
      ;(function (t) {
        function e(r) {
          let n = r
          return $e.objectLiteral(n) && FM.is(n.uri) && $e.string(n.name)
        }
        o(e, 'is'), (t.is = e)
      })(Gce || (Gce = {}))
      ;(function (t) {
        function e(a, s, l, u) {
          return new QM(a, s, l, u)
        }
        o(e, 'create'), (t.create = e)
        function r(a) {
          let s = a
          return !!(
            $e.defined(s) &&
            $e.string(s.uri) &&
            ($e.undefined(s.languageId) || $e.string(s.languageId)) &&
            $e.uinteger(s.lineCount) &&
            $e.func(s.getText) &&
            $e.func(s.positionAt) &&
            $e.func(s.offsetAt)
          )
        }
        o(r, 'is'), (t.is = r)
        function n(a, s) {
          let l = a.getText(),
            u = i(s, (f, d) => {
              let p = f.range.start.line - d.range.start.line
              return p === 0 ? f.range.start.character - d.range.start.character : p
            }),
            h = l.length
          for (let f = u.length - 1; f >= 0; f--) {
            let d = u[f],
              p = a.offsetAt(d.range.start),
              m = a.offsetAt(d.range.end)
            if (m <= h) l = l.substring(0, p) + d.newText + l.substring(m, l.length)
            else throw new Error('Overlapping edit')
            h = p
          }
          return l
        }
        o(n, 'applyEdits'), (t.applyEdits = n)
        function i(a, s) {
          if (a.length <= 1) return a
          let l = (a.length / 2) | 0,
            u = a.slice(0, l),
            h = a.slice(l)
          i(u, s), i(h, s)
          let f = 0,
            d = 0,
            p = 0
          for (; f < u.length && d < h.length; ) s(u[f], h[d]) <= 0 ? (a[p++] = u[f++]) : (a[p++] = h[d++])
          for (; f < u.length; ) a[p++] = u[f++]
          for (; d < h.length; ) a[p++] = h[d++]
          return a
        }
        o(i, 'mergeSort')
      })(Vce || (Vce = {}))
      QM = class {
        static {
          o(this, 'FullTextDocument')
        }
        constructor(e, r, n, i) {
          ;(this._uri = e), (this._languageId = r), (this._version = n), (this._content = i), (this._lineOffsets = void 0)
        }
        get uri() {
          return this._uri
        }
        get languageId() {
          return this._languageId
        }
        get version() {
          return this._version
        }
        getText(e) {
          if (e) {
            let r = this.offsetAt(e.start),
              n = this.offsetAt(e.end)
            return this._content.substring(r, n)
          }
          return this._content
        }
        update(e, r) {
          ;(this._content = e.text), (this._version = r), (this._lineOffsets = void 0)
        }
        getLineOffsets() {
          if (this._lineOffsets === void 0) {
            let e = [],
              r = this._content,
              n = !0
            for (let i = 0; i < r.length; i++) {
              n && (e.push(i), (n = !1))
              let a = r.charAt(i)
              ;(n =
                a === '\r' ||
                a ===
                  `
`),
                a === '\r' &&
                  i + 1 < r.length &&
                  r.charAt(i + 1) ===
                    `
` &&
                  i++
            }
            n && r.length > 0 && e.push(r.length), (this._lineOffsets = e)
          }
          return this._lineOffsets
        }
        positionAt(e) {
          e = Math.max(Math.min(e, this._content.length), 0)
          let r = this.getLineOffsets(),
            n = 0,
            i = r.length
          if (i === 0) return jr.create(0, e)
          for (; n < i; ) {
            let s = Math.floor((n + i) / 2)
            r[s] > e ? (i = s) : (n = s + 1)
          }
          let a = n - 1
          return jr.create(a, e - r[a])
        }
        offsetAt(e) {
          let r = this.getLineOffsets()
          if (e.line >= r.length) return this._content.length
          if (e.line < 0) return 0
          let n = r[e.line],
            i = e.line + 1 < r.length ? r[e.line + 1] : this._content.length
          return Math.max(Math.min(n + e.character, i), n)
        }
        get lineCount() {
          return this.getLineOffsets().length
        }
      }
      ;(function (t) {
        let e = Object.prototype.toString
        function r(m) {
          return typeof m < 'u'
        }
        o(r, 'defined'), (t.defined = r)
        function n(m) {
          return typeof m > 'u'
        }
        o(n, 'undefined'), (t.undefined = n)
        function i(m) {
          return m === !0 || m === !1
        }
        o(i, 'boolean'), (t.boolean = i)
        function a(m) {
          return e.call(m) === '[object String]'
        }
        o(a, 'string'), (t.string = a)
        function s(m) {
          return e.call(m) === '[object Number]'
        }
        o(s, 'number'), (t.number = s)
        function l(m, g, y) {
          return e.call(m) === '[object Number]' && g <= m && m <= y
        }
        o(l, 'numberRange'), (t.numberRange = l)
        function u(m) {
          return e.call(m) === '[object Number]' && -2147483648 <= m && m <= 2147483647
        }
        o(u, 'integer'), (t.integer = u)
        function h(m) {
          return e.call(m) === '[object Number]' && 0 <= m && m <= 2147483647
        }
        o(h, 'uinteger'), (t.uinteger = h)
        function f(m) {
          return e.call(m) === '[object Function]'
        }
        o(f, 'func'), (t.func = f)
        function d(m) {
          return m !== null && typeof m == 'object'
        }
        o(d, 'objectLiteral'), (t.objectLiteral = d)
        function p(m, g) {
          return Array.isArray(m) && m.every(g)
        }
        o(p, 'typedArray'), (t.typedArray = p)
      })($e || ($e = {}))
    })
  var Ox,
    Px,
    Ep,
    Sp,
    JM,
    p1,
    RE = N(() => {
      'use strict'
      ZM()
      Ol()
      ;(Ox = class {
        static {
          o(this, 'CstNodeBuilder')
        }
        constructor() {
          this.nodeStack = []
        }
        get current() {
          var e
          return (e = this.nodeStack[this.nodeStack.length - 1]) !== null && e !== void 0 ? e : this.rootNode
        }
        buildRootNode(e) {
          return (this.rootNode = new p1(e)), (this.rootNode.root = this.rootNode), (this.nodeStack = [this.rootNode]), this.rootNode
        }
        buildCompositeNode(e) {
          let r = new Sp()
          return (r.grammarSource = e), (r.root = this.rootNode), this.current.content.push(r), this.nodeStack.push(r), r
        }
        buildLeafNode(e, r) {
          let n = new Ep(e.startOffset, e.image.length, Km(e), e.tokenType, !r)
          return (n.grammarSource = r), (n.root = this.rootNode), this.current.content.push(n), n
        }
        removeNode(e) {
          let r = e.container
          if (r) {
            let n = r.content.indexOf(e)
            n >= 0 && r.content.splice(n, 1)
          }
        }
        addHiddenNodes(e) {
          let r = []
          for (let a of e) {
            let s = new Ep(a.startOffset, a.image.length, Km(a), a.tokenType, !0)
            ;(s.root = this.rootNode), r.push(s)
          }
          let n = this.current,
            i = !1
          if (n.content.length > 0) {
            n.content.push(...r)
            return
          }
          for (; n.container; ) {
            let a = n.container.content.indexOf(n)
            if (a > 0) {
              n.container.content.splice(a, 0, ...r), (i = !0)
              break
            }
            n = n.container
          }
          i || this.rootNode.content.unshift(...r)
        }
        construct(e) {
          let r = this.current
          typeof e.$type == 'string' && (this.current.astNode = e), (e.$cstNode = r)
          let n = this.nodeStack.pop()
          n?.content.length === 0 && this.removeNode(n)
        }
      }),
        (Px = class {
          static {
            o(this, 'AbstractCstNode')
          }
          get parent() {
            return this.container
          }
          get feature() {
            return this.grammarSource
          }
          get hidden() {
            return !1
          }
          get astNode() {
            var e, r
            let n =
              typeof ((e = this._astNode) === null || e === void 0 ? void 0 : e.$type) == 'string'
                ? this._astNode
                : (r = this.container) === null || r === void 0
                  ? void 0
                  : r.astNode
            if (!n) throw new Error('This node has no associated AST element')
            return n
          }
          set astNode(e) {
            this._astNode = e
          }
          get element() {
            return this.astNode
          }
          get text() {
            return this.root.fullText.substring(this.offset, this.end)
          }
        }),
        (Ep = class extends Px {
          static {
            o(this, 'LeafCstNodeImpl')
          }
          get offset() {
            return this._offset
          }
          get length() {
            return this._length
          }
          get end() {
            return this._offset + this._length
          }
          get hidden() {
            return this._hidden
          }
          get tokenType() {
            return this._tokenType
          }
          get range() {
            return this._range
          }
          constructor(e, r, n, i, a = !1) {
            super(), (this._hidden = a), (this._offset = e), (this._tokenType = i), (this._length = r), (this._range = n)
          }
        }),
        (Sp = class extends Px {
          static {
            o(this, 'CompositeCstNodeImpl')
          }
          constructor() {
            super(...arguments), (this.content = new JM(this))
          }
          get children() {
            return this.content
          }
          get offset() {
            var e, r
            return (r = (e = this.firstNonHiddenNode) === null || e === void 0 ? void 0 : e.offset) !== null && r !== void 0 ? r : 0
          }
          get length() {
            return this.end - this.offset
          }
          get end() {
            var e, r
            return (r = (e = this.lastNonHiddenNode) === null || e === void 0 ? void 0 : e.end) !== null && r !== void 0 ? r : 0
          }
          get range() {
            let e = this.firstNonHiddenNode,
              r = this.lastNonHiddenNode
            if (e && r) {
              if (this._rangeCache === void 0) {
                let { range: n } = e,
                  { range: i } = r
                this._rangeCache = { start: n.start, end: i.end.line < n.start.line ? n.start : i.end }
              }
              return this._rangeCache
            } else return { start: jr.create(0, 0), end: jr.create(0, 0) }
          }
          get firstNonHiddenNode() {
            for (let e of this.content) if (!e.hidden) return e
            return this.content[0]
          }
          get lastNonHiddenNode() {
            for (let e = this.content.length - 1; e >= 0; e--) {
              let r = this.content[e]
              if (!r.hidden) return r
            }
            return this.content[this.content.length - 1]
          }
        }),
        (JM = class t extends Array {
          static {
            o(this, 'CstNodeContainer')
          }
          constructor(e) {
            super(), (this.parent = e), Object.setPrototypeOf(this, t.prototype)
          }
          push(...e) {
            return this.addParents(e), super.push(...e)
          }
          unshift(...e) {
            return this.addParents(e), super.unshift(...e)
          }
          splice(e, r, ...n) {
            return this.addParents(n), super.splice(e, r, ...n)
          }
          addParents(e) {
            for (let r of e) r.container = this.parent
          }
        }),
        (p1 = class extends Sp {
          static {
            o(this, 'RootCstNodeImpl')
          }
          get text() {
            return this._text.substring(this.offset, this.end)
          }
          get fullText() {
            return this._text
          }
          constructor(e) {
            super(), (this._text = ''), (this._text = e ?? '')
          }
        })
    })
  function eI(t) {
    return t.$type === NE
  }
  var NE,
    Uce,
    Hce,
    Bx,
    Fx,
    ME,
    m1,
    $x,
    C$e,
    tI,
    zx = N(() => {
      'use strict'
      mf()
      Gle()
      Pc()
      Fl()
      cs()
      RE()
      NE = Symbol('Datatype')
      o(eI, 'isDataTypeNode')
      ;(Uce = '\u200B'),
        (Hce = o(t => (t.endsWith(Uce) ? t : t + Uce), 'withRuleSuffix')),
        (Bx = class {
          static {
            o(this, 'AbstractLangiumParser')
          }
          constructor(e) {
            ;(this._unorderedGroups = new Map()), (this.allRules = new Map()), (this.lexer = e.parser.Lexer)
            let r = this.lexer.definition,
              n = e.LanguageMetaData.mode === 'production'
            this.wrapper = new tI(r, Object.assign(Object.assign({}, e.parser.ParserConfig), { skipValidations: n, errorMessageProvider: e.parser.ParserErrorMessageProvider }))
          }
          alternatives(e, r) {
            this.wrapper.wrapOr(e, r)
          }
          optional(e, r) {
            this.wrapper.wrapOption(e, r)
          }
          many(e, r) {
            this.wrapper.wrapMany(e, r)
          }
          atLeastOne(e, r) {
            this.wrapper.wrapAtLeastOne(e, r)
          }
          getRule(e) {
            return this.allRules.get(e)
          }
          isRecording() {
            return this.wrapper.IS_RECORDING
          }
          get unorderedGroups() {
            return this._unorderedGroups
          }
          getRuleStack() {
            return this.wrapper.RULE_STACK
          }
          finalize() {
            this.wrapper.wrapSelfAnalysis()
          }
        }),
        (Fx = class extends Bx {
          static {
            o(this, 'LangiumParser')
          }
          get current() {
            return this.stack[this.stack.length - 1]
          }
          constructor(e) {
            super(e),
              (this.nodeBuilder = new Ox()),
              (this.stack = []),
              (this.assignmentMap = new Map()),
              (this.linker = e.references.Linker),
              (this.converter = e.parser.ValueConverter),
              (this.astReflection = e.shared.AstReflection)
          }
          rule(e, r) {
            let n = this.computeRuleType(e),
              i = this.wrapper.DEFINE_RULE(Hce(e.name), this.startImplementation(n, r).bind(this))
            return this.allRules.set(e.name, i), e.entry && (this.mainRule = i), i
          }
          computeRuleType(e) {
            if (!e.fragment) {
              if (lx(e)) return NE
              {
                let r = zg(e)
                return r ?? e.name
              }
            }
          }
          parse(e, r = {}) {
            this.nodeBuilder.buildRootNode(e)
            let n = (this.lexerResult = this.lexer.tokenize(e))
            this.wrapper.input = n.tokens
            let i = r.rule ? this.allRules.get(r.rule) : this.mainRule
            if (!i) throw new Error(r.rule ? `No rule found with name '${r.rule}'` : 'No main rule available.')
            let a = i.call(this.wrapper, {})
            return (
              this.nodeBuilder.addHiddenNodes(n.hidden),
              this.unorderedGroups.clear(),
              (this.lexerResult = void 0),
              { value: a, lexerErrors: n.errors, lexerReport: n.report, parserErrors: this.wrapper.errors }
            )
          }
          startImplementation(e, r) {
            return n => {
              let i = !this.isRecording() && e !== void 0
              if (i) {
                let s = { $type: e }
                this.stack.push(s), e === NE && (s.value = '')
              }
              let a
              try {
                a = r(n)
              } catch {
                a = void 0
              }
              return a === void 0 && i && (a = this.construct()), a
            }
          }
          extractHiddenTokens(e) {
            let r = this.lexerResult.hidden
            if (!r.length) return []
            let n = e.startOffset
            for (let i = 0; i < r.length; i++) if (r[i].startOffset > n) return r.splice(0, i)
            return r.splice(0, r.length)
          }
          consume(e, r, n) {
            let i = this.wrapper.wrapConsume(e, r)
            if (!this.isRecording() && this.isValidToken(i)) {
              let a = this.extractHiddenTokens(i)
              this.nodeBuilder.addHiddenNodes(a)
              let s = this.nodeBuilder.buildLeafNode(i, n),
                { assignment: l, isCrossRef: u } = this.getAssignment(n),
                h = this.current
              if (l) {
                let f = Xo(n) ? i.image : this.converter.convert(i.image, s)
                this.assign(l.operator, l.feature, f, s, u)
              } else if (eI(h)) {
                let f = i.image
                Xo(n) || (f = this.converter.convert(f, s).toString()), (h.value += f)
              }
            }
          }
          isValidToken(e) {
            return !e.isInsertedInRecovery && !isNaN(e.startOffset) && typeof e.endOffset == 'number' && !isNaN(e.endOffset)
          }
          subrule(e, r, n, i, a) {
            let s
            !this.isRecording() && !n && (s = this.nodeBuilder.buildCompositeNode(i))
            let l = this.wrapper.wrapSubrule(e, r, a)
            !this.isRecording() && s && s.length > 0 && this.performSubruleAssignment(l, i, s)
          }
          performSubruleAssignment(e, r, n) {
            let { assignment: i, isCrossRef: a } = this.getAssignment(r)
            if (i) this.assign(i.operator, i.feature, e, n, a)
            else if (!i) {
              let s = this.current
              if (eI(s)) s.value += e.toString()
              else if (typeof e == 'object' && e) {
                let u = this.assignWithoutOverride(e, s)
                this.stack.pop(), this.stack.push(u)
              }
            }
          }
          action(e, r) {
            if (!this.isRecording()) {
              let n = this.current
              if (r.feature && r.operator) {
                ;(n = this.construct()), this.nodeBuilder.removeNode(n.$cstNode), this.nodeBuilder.buildCompositeNode(r).content.push(n.$cstNode)
                let a = { $type: e }
                this.stack.push(a), this.assign(r.operator, r.feature, n, n.$cstNode, !1)
              } else n.$type = e
            }
          }
          construct() {
            if (this.isRecording()) return
            let e = this.current
            return Mk(e), this.nodeBuilder.construct(e), this.stack.pop(), eI(e) ? this.converter.convert(e.value, e.$cstNode) : (RN(this.astReflection, e), e)
          }
          getAssignment(e) {
            if (!this.assignmentMap.has(e)) {
              let r = hp(e, Pl)
              this.assignmentMap.set(e, { assignment: r, isCrossRef: r ? up(r.terminal) : !1 })
            }
            return this.assignmentMap.get(e)
          }
          assign(e, r, n, i, a) {
            let s = this.current,
              l
            switch ((a && typeof n == 'string' ? (l = this.linker.buildReference(s, r, i, n)) : (l = n), e)) {
              case '=': {
                s[r] = l
                break
              }
              case '?=': {
                s[r] = !0
                break
              }
              case '+=':
                Array.isArray(s[r]) || (s[r] = []), s[r].push(l)
            }
          }
          assignWithoutOverride(e, r) {
            for (let [i, a] of Object.entries(r)) {
              let s = e[i]
              s === void 0 ? (e[i] = a) : Array.isArray(s) && Array.isArray(a) && (a.push(...s), (e[i] = a))
            }
            let n = e.$cstNode
            return n && ((n.astNode = void 0), (e.$cstNode = void 0)), e
          }
          get definitionErrors() {
            return this.wrapper.definitionErrors
          }
        }),
        (ME = class {
          static {
            o(this, 'AbstractParserErrorMessageProvider')
          }
          buildMismatchTokenMessage(e) {
            return qu.buildMismatchTokenMessage(e)
          }
          buildNotAllInputParsedMessage(e) {
            return qu.buildNotAllInputParsedMessage(e)
          }
          buildNoViableAltMessage(e) {
            return qu.buildNoViableAltMessage(e)
          }
          buildEarlyExitMessage(e) {
            return qu.buildEarlyExitMessage(e)
          }
        }),
        (m1 = class extends ME {
          static {
            o(this, 'LangiumParserErrorMessageProvider')
          }
          buildMismatchTokenMessage({ expected: e, actual: r }) {
            return `Expecting ${e.LABEL ? '`' + e.LABEL + '`' : e.name.endsWith(':KW') ? `keyword '${e.name.substring(0, e.name.length - 3)}'` : `token of type '${e.name}'`} but found \`${r.image}\`.`
          }
          buildNotAllInputParsedMessage({ firstRedundant: e }) {
            return `Expecting end of file but found \`${e.image}\`.`
          }
        }),
        ($x = class extends Bx {
          static {
            o(this, 'LangiumCompletionParser')
          }
          constructor() {
            super(...arguments), (this.tokens = []), (this.elementStack = []), (this.lastElementStack = []), (this.nextTokenIndex = 0), (this.stackSize = 0)
          }
          action() {}
          construct() {}
          parse(e) {
            this.resetState()
            let r = this.lexer.tokenize(e, { mode: 'partial' })
            return (
              (this.tokens = r.tokens),
              (this.wrapper.input = [...this.tokens]),
              this.mainRule.call(this.wrapper, {}),
              this.unorderedGroups.clear(),
              { tokens: this.tokens, elementStack: [...this.lastElementStack], tokenIndex: this.nextTokenIndex }
            )
          }
          rule(e, r) {
            let n = this.wrapper.DEFINE_RULE(Hce(e.name), this.startImplementation(r).bind(this))
            return this.allRules.set(e.name, n), e.entry && (this.mainRule = n), n
          }
          resetState() {
            ;(this.elementStack = []), (this.lastElementStack = []), (this.nextTokenIndex = 0), (this.stackSize = 0)
          }
          startImplementation(e) {
            return r => {
              let n = this.keepStackSize()
              try {
                e(r)
              } finally {
                this.resetStackSize(n)
              }
            }
          }
          removeUnexpectedElements() {
            this.elementStack.splice(this.stackSize)
          }
          keepStackSize() {
            let e = this.elementStack.length
            return (this.stackSize = e), e
          }
          resetStackSize(e) {
            this.removeUnexpectedElements(), (this.stackSize = e)
          }
          consume(e, r, n) {
            this.wrapper.wrapConsume(e, r), this.isRecording() || ((this.lastElementStack = [...this.elementStack, n]), (this.nextTokenIndex = this.currIdx + 1))
          }
          subrule(e, r, n, i, a) {
            this.before(i), this.wrapper.wrapSubrule(e, r, a), this.after(i)
          }
          before(e) {
            this.isRecording() || this.elementStack.push(e)
          }
          after(e) {
            if (!this.isRecording()) {
              let r = this.elementStack.lastIndexOf(e)
              r >= 0 && this.elementStack.splice(r)
            }
          }
          get currIdx() {
            return this.wrapper.currIdx
          }
        }),
        (C$e = { recoveryEnabled: !0, nodeLocationTracking: 'full', skipValidations: !0, errorMessageProvider: new m1() }),
        (tI = class extends Dx {
          static {
            o(this, 'ChevrotainWrapper')
          }
          constructor(e, r) {
            let n = r && 'maxLookahead' in r
            super(
              e,
              Object.assign(
                Object.assign(Object.assign({}, C$e), {
                  lookaheadStrategy: n ? new Yu({ maxLookahead: r.maxLookahead }) : new Mx({ logging: r.skipValidations ? () => {} : void 0 })
                }),
                r
              )
            )
          }
          get IS_RECORDING() {
            return this.RECORDING_PHASE
          }
          DEFINE_RULE(e, r) {
            return this.RULE(e, r)
          }
          wrapSelfAnalysis() {
            this.performSelfAnalysis()
          }
          wrapConsume(e, r) {
            return this.consume(e, r)
          }
          wrapSubrule(e, r, n) {
            return this.subrule(e, r, { ARGS: [n] })
          }
          wrapOr(e, r) {
            this.or(e, r)
          }
          wrapOption(e, r) {
            this.option(e, r)
          }
          wrapMany(e, r) {
            this.many(e, r)
          }
          wrapAtLeastOne(e, r) {
            this.atLeastOne(e, r)
          }
        })
    })
  function Gx(t, e, r) {
    return A$e({ parser: e, tokens: r, ruleNames: new Map() }, t), e
  }
  function A$e(t, e) {
    let r = sx(e, !1),
      n = en(e.rules)
        .filter(Fa)
        .filter(i => r.has(i))
    for (let i of n) {
      let a = Object.assign(Object.assign({}, t), { consume: 1, optional: 1, subrule: 1, many: 1, or: 1 })
      t.parser.rule(i, Cp(a, i.definition))
    }
  }
  function Cp(t, e, r = !1) {
    let n
    if (Xo(e)) n = I$e(t, e)
    else if ($u(e)) n = _$e(t, e)
    else if (Pl(e)) n = Cp(t, e.terminal)
    else if (up(e)) n = Wce(t, e)
    else if (Bl(e)) n = D$e(t, e)
    else if (Lk(e)) n = R$e(t, e)
    else if (Nk(e)) n = N$e(t, e)
    else if (ff(e)) n = M$e(t, e)
    else if (wN(e)) {
      let i = t.consume++
      n = o(() => t.parser.consume(i, fo, e), 'method')
    } else throw new lp(e.$cstNode, `Unexpected element type: ${e.$type}`)
    return qce(t, r ? void 0 : IE(e), n, e.cardinality)
  }
  function _$e(t, e) {
    let r = cx(e)
    return () => t.parser.action(r, e)
  }
  function D$e(t, e) {
    let r = e.rule.ref
    if (Fa(r)) {
      let n = t.subrule++,
        i = r.fragment,
        a = e.arguments.length > 0 ? L$e(r, e.arguments) : () => ({})
      return s => t.parser.subrule(n, Yce(t, r), i, e, a(s))
    } else if (uo(r)) {
      let n = t.consume++,
        i = rI(t, r.name)
      return () => t.parser.consume(n, i, e)
    } else if (r) Oc(r)
    else throw new lp(e.$cstNode, `Undefined rule: ${e.rule.$refText}`)
  }
  function L$e(t, e) {
    let r = e.map(n => Xu(n.value))
    return n => {
      let i = {}
      for (let a = 0; a < r.length; a++) {
        let s = t.parameters[a],
          l = r[a]
        i[s.name] = l(n)
      }
      return i
    }
  }
  function Xu(t) {
    if (mN(t)) {
      let e = Xu(t.left),
        r = Xu(t.right)
      return n => e(n) || r(n)
    } else if (pN(t)) {
      let e = Xu(t.left),
        r = Xu(t.right)
      return n => e(n) && r(n)
    } else if (gN(t)) {
      let e = Xu(t.value)
      return r => !e(r)
    } else if (yN(t)) {
      let e = t.parameter.ref.name
      return r => r !== void 0 && r[e] === !0
    } else if (dN(t)) {
      let e = !!t.true
      return () => e
    }
    Oc(t)
  }
  function R$e(t, e) {
    if (e.elements.length === 1) return Cp(t, e.elements[0])
    {
      let r = []
      for (let i of e.elements) {
        let a = { ALT: Cp(t, i, !0) },
          s = IE(i)
        s && (a.GATE = Xu(s)), r.push(a)
      }
      let n = t.or++
      return i =>
        t.parser.alternatives(
          n,
          r.map(a => {
            let s = { ALT: o(() => a.ALT(i), 'ALT') },
              l = a.GATE
            return l && (s.GATE = () => l(i)), s
          })
        )
    }
  }
  function N$e(t, e) {
    if (e.elements.length === 1) return Cp(t, e.elements[0])
    let r = []
    for (let l of e.elements) {
      let u = { ALT: Cp(t, l, !0) },
        h = IE(l)
      h && (u.GATE = Xu(h)), r.push(u)
    }
    let n = t.or++,
      i = o((l, u) => {
        let h = u.getRuleStack().join('-')
        return `uGroup_${l}_${h}`
      }, 'idFunc'),
      a = o(
        l =>
          t.parser.alternatives(
            n,
            r.map((u, h) => {
              let f = { ALT: o(() => !0, 'ALT') },
                d = t.parser
              f.ALT = () => {
                if ((u.ALT(l), !d.isRecording())) {
                  let m = i(n, d)
                  d.unorderedGroups.get(m) || d.unorderedGroups.set(m, [])
                  let g = d.unorderedGroups.get(m)
                  typeof g?.[h] > 'u' && (g[h] = !0)
                }
              }
              let p = u.GATE
              return (
                p
                  ? (f.GATE = () => p(l))
                  : (f.GATE = () => {
                      let m = d.unorderedGroups.get(i(n, d))
                      return !m?.[h]
                    }),
                f
              )
            })
          ),
        'alternatives'
      ),
      s = qce(t, IE(e), a, '*')
    return l => {
      s(l), t.parser.isRecording() || t.parser.unorderedGroups.delete(i(n, t.parser))
    }
  }
  function M$e(t, e) {
    let r = e.elements.map(n => Cp(t, n))
    return n => r.forEach(i => i(n))
  }
  function IE(t) {
    if (ff(t)) return t.guardCondition
  }
  function Wce(t, e, r = e.terminal) {
    if (r)
      if (Bl(r) && Fa(r.rule.ref)) {
        let n = r.rule.ref,
          i = t.subrule++
        return a => t.parser.subrule(i, Yce(t, n), !1, e, a)
      } else if (Bl(r) && uo(r.rule.ref)) {
        let n = t.consume++,
          i = rI(t, r.rule.ref.name)
        return () => t.parser.consume(n, i, e)
      } else if (Xo(r)) {
        let n = t.consume++,
          i = rI(t, r.value)
        return () => t.parser.consume(n, i, e)
      } else throw new Error('Could not build cross reference parser')
    else {
      if (!e.type.ref) throw new Error('Could not resolve reference to type: ' + e.type.$refText)
      let n = Fk(e.type.ref),
        i = n?.terminal
      if (!i) throw new Error('Could not find name assignment for type: ' + cx(e.type.ref))
      return Wce(t, e, i)
    }
  }
  function I$e(t, e) {
    let r = t.consume++,
      n = t.tokens[e.value]
    if (!n) throw new Error('Could not find token for keyword: ' + e.value)
    return () => t.parser.consume(r, n, e)
  }
  function qce(t, e, r, n) {
    let i = e && Xu(e)
    if (!n)
      if (i) {
        let a = t.or++
        return s =>
          t.parser.alternatives(a, [
            { ALT: o(() => r(s), 'ALT'), GATE: o(() => i(s), 'GATE') },
            { ALT: kE(), GATE: o(() => !i(s), 'GATE') }
          ])
      } else return r
    if (n === '*') {
      let a = t.many++
      return s => t.parser.many(a, { DEF: o(() => r(s), 'DEF'), GATE: i ? () => i(s) : void 0 })
    } else if (n === '+') {
      let a = t.many++
      if (i) {
        let s = t.or++
        return l =>
          t.parser.alternatives(s, [
            { ALT: o(() => t.parser.atLeastOne(a, { DEF: o(() => r(l), 'DEF') }), 'ALT'), GATE: o(() => i(l), 'GATE') },
            { ALT: kE(), GATE: o(() => !i(l), 'GATE') }
          ])
      } else return s => t.parser.atLeastOne(a, { DEF: o(() => r(s), 'DEF') })
    } else if (n === '?') {
      let a = t.optional++
      return s => t.parser.optional(a, { DEF: o(() => r(s), 'DEF'), GATE: i ? () => i(s) : void 0 })
    } else Oc(n)
  }
  function Yce(t, e) {
    let r = O$e(t, e),
      n = t.parser.getRule(r)
    if (!n) throw new Error(`Rule "${r}" not found."`)
    return n
  }
  function O$e(t, e) {
    if (Fa(e)) return e.name
    if (t.ruleNames.has(e)) return t.ruleNames.get(e)
    {
      let r = e,
        n = r.$container,
        i = e.$type
      for (; !Fa(n); ) (ff(n) || Lk(n) || Nk(n)) && (i = n.elements.indexOf(r).toString() + ':' + i), (r = n), (n = n.$container)
      return (i = n.name + ':' + i), t.ruleNames.set(e, i), i
    }
  }
  function rI(t, e) {
    let r = t.tokens[e]
    if (!r) throw new Error(`Token "${e}" not found."`)
    return r
  }
  var OE = N(() => {
    'use strict'
    mf()
    Pc()
    Sk()
    Gs()
    Fl()
    o(Gx, 'createParser')
    o(A$e, 'buildRules')
    o(Cp, 'buildElement')
    o(_$e, 'buildAction')
    o(D$e, 'buildRuleCall')
    o(L$e, 'buildRuleCallPredicate')
    o(Xu, 'buildPredicate')
    o(R$e, 'buildAlternatives')
    o(N$e, 'buildUnorderedGroup')
    o(M$e, 'buildGroup')
    o(IE, 'getGuardCondition')
    o(Wce, 'buildCrossReference')
    o(I$e, 'buildKeyword')
    o(qce, 'wrap')
    o(Yce, 'getRule')
    o(O$e, 'getRuleName')
    o(rI, 'getToken')
  })
  function nI(t) {
    let e = t.Grammar,
      r = t.parser.Lexer,
      n = new $x(t)
    return Gx(e, n, r.definition), n.finalize(), n
  }
  var iI = N(() => {
    'use strict'
    zx()
    OE()
    o(nI, 'createCompletionParser')
  })
  function aI(t) {
    let e = Xce(t)
    return e.finalize(), e
  }
  function Xce(t) {
    let e = t.Grammar,
      r = t.parser.Lexer,
      n = new Fx(t)
    return Gx(e, n, r.definition)
  }
  var sI = N(() => {
    'use strict'
    zx()
    OE()
    o(aI, 'createLangiumParser')
    o(Xce, 'prepareLangiumParser')
  })
  var ju,
    PE = N(() => {
      'use strict'
      mf()
      Pc()
      cs()
      Fl()
      $g()
      Gs()
      ju = class {
        static {
          o(this, 'DefaultTokenBuilder')
        }
        constructor() {
          this.diagnostics = []
        }
        buildTokens(e, r) {
          let n = en(sx(e, !1)),
            i = this.buildTerminalTokens(n),
            a = this.buildKeywordTokens(n, i, r)
          return (
            i.forEach(s => {
              let l = s.PATTERN
              typeof l == 'object' && l && 'test' in l && Fg(l) ? a.unshift(s) : a.push(s)
            }),
            a
          )
        }
        flushLexingReport(e) {
          return { diagnostics: this.popDiagnostics() }
        }
        popDiagnostics() {
          let e = [...this.diagnostics]
          return (this.diagnostics = []), e
        }
        buildTerminalTokens(e) {
          return e
            .filter(uo)
            .filter(r => !r.fragment)
            .map(r => this.buildTerminalToken(r))
            .toArray()
        }
        buildTerminalToken(e) {
          let r = Gg(e),
            n = this.requiresCustomPattern(r) ? this.regexPatternFunction(r) : r,
            i = { name: e.name, PATTERN: n }
          return typeof n == 'function' && (i.LINE_BREAKS = !0), e.hidden && (i.GROUP = Fg(r) ? Kn.SKIPPED : 'hidden'), i
        }
        requiresCustomPattern(e) {
          return e.flags.includes('u') || e.flags.includes('s') ? !0 : !!(e.source.includes('?<=') || e.source.includes('?<!'))
        }
        regexPatternFunction(e) {
          let r = new RegExp(e, e.flags + 'y')
          return (n, i) => ((r.lastIndex = i), r.exec(n))
        }
        buildKeywordTokens(e, r, n) {
          return e
            .filter(Fa)
            .flatMap(i => Bc(i).filter(Xo))
            .distinct(i => i.value)
            .toArray()
            .sort((i, a) => a.value.length - i.value.length)
            .map(i => this.buildKeywordToken(i, r, !!n?.caseInsensitive))
        }
        buildKeywordToken(e, r, n) {
          let i = this.buildKeywordPattern(e, n),
            a = { name: e.value, PATTERN: i, LONGER_ALT: this.findLongerAlt(e, r) }
          return typeof i == 'function' && (a.LINE_BREAKS = !0), a
        }
        buildKeywordPattern(e, r) {
          return r ? new RegExp(FN(e.value)) : e.value
        }
        findLongerAlt(e, r) {
          return r.reduce((n, i) => {
            let a = i?.PATTERN
            return a?.source && $N('^' + a.source + '$', e.value) && n.push(i), n
          }, [])
        }
      }
    })
  var Ap,
    zc,
    oI = N(() => {
      'use strict'
      Pc()
      Fl()
      Ap = class {
        static {
          o(this, 'DefaultValueConverter')
        }
        convert(e, r) {
          let n = r.grammarSource
          if ((up(n) && (n = VN(n)), Bl(n))) {
            let i = n.rule.ref
            if (!i) throw new Error('This cst node was not parsed by a rule.')
            return this.runConverter(i, e, r)
          }
          return e
        }
        runConverter(e, r, n) {
          var i
          switch (e.name.toUpperCase()) {
            case 'INT':
              return zc.convertInt(r)
            case 'STRING':
              return zc.convertString(r)
            case 'ID':
              return zc.convertID(r)
          }
          switch ((i = jN(e)) === null || i === void 0 ? void 0 : i.toLowerCase()) {
            case 'number':
              return zc.convertNumber(r)
            case 'boolean':
              return zc.convertBoolean(r)
            case 'bigint':
              return zc.convertBigint(r)
            case 'date':
              return zc.convertDate(r)
            default:
              return r
          }
        }
      }
      ;(function (t) {
        function e(h) {
          let f = ''
          for (let d = 1; d < h.length - 1; d++) {
            let p = h.charAt(d)
            if (p === '\\') {
              let m = h.charAt(++d)
              f += r(m)
            } else f += p
          }
          return f
        }
        o(e, 'convertString'), (t.convertString = e)
        function r(h) {
          switch (h) {
            case 'b':
              return '\b'
            case 'f':
              return '\f'
            case 'n':
              return `
`
            case 'r':
              return '\r'
            case 't':
              return '	'
            case 'v':
              return '\v'
            case '0':
              return '\0'
            default:
              return h
          }
        }
        o(r, 'convertEscapeCharacter')
        function n(h) {
          return h.charAt(0) === '^' ? h.substring(1) : h
        }
        o(n, 'convertID'), (t.convertID = n)
        function i(h) {
          return parseInt(h)
        }
        o(i, 'convertInt'), (t.convertInt = i)
        function a(h) {
          return BigInt(h)
        }
        o(a, 'convertBigint'), (t.convertBigint = a)
        function s(h) {
          return new Date(h)
        }
        o(s, 'convertDate'), (t.convertDate = s)
        function l(h) {
          return Number(h)
        }
        o(l, 'convertNumber'), (t.convertNumber = l)
        function u(h) {
          return h.toLowerCase() === 'true'
        }
        o(u, 'convertBoolean'), (t.convertBoolean = u)
      })(zc || (zc = {}))
    })
  var hI = Pi(uI => {
    'use strict'
    Object.defineProperty(uI, '__esModule', { value: !0 })
    var lI
    function cI() {
      if (lI === void 0) throw new Error('No runtime abstraction layer installed')
      return lI
    }
    o(cI, 'RAL')
    ;(function (t) {
      function e(r) {
        if (r === void 0) throw new Error('No runtime abstraction layer provided')
        lI = r
      }
      o(e, 'install'), (t.install = e)
    })(cI || (cI = {}))
    uI.default = cI
  })
  var Qce = Pi(za => {
    'use strict'
    Object.defineProperty(za, '__esModule', { value: !0 })
    za.stringArray = za.array = za.func = za.error = za.number = za.string = za.boolean = void 0
    function P$e(t) {
      return t === !0 || t === !1
    }
    o(P$e, 'boolean')
    za.boolean = P$e
    function jce(t) {
      return typeof t == 'string' || t instanceof String
    }
    o(jce, 'string')
    za.string = jce
    function B$e(t) {
      return typeof t == 'number' || t instanceof Number
    }
    o(B$e, 'number')
    za.number = B$e
    function F$e(t) {
      return t instanceof Error
    }
    o(F$e, 'error')
    za.error = F$e
    function $$e(t) {
      return typeof t == 'function'
    }
    o($$e, 'func')
    za.func = $$e
    function Kce(t) {
      return Array.isArray(t)
    }
    o(Kce, 'array')
    za.array = Kce
    function z$e(t) {
      return Kce(t) && t.every(e => jce(e))
    }
    o(z$e, 'stringArray')
    za.stringArray = z$e
  })
  var dI = Pi(g1 => {
    'use strict'
    Object.defineProperty(g1, '__esModule', { value: !0 })
    g1.Emitter = g1.Event = void 0
    var G$e = hI(),
      Zce
    ;(function (t) {
      let e = { dispose() {} }
      t.None = function () {
        return e
      }
    })(Zce || (g1.Event = Zce = {}))
    var fI = class {
        static {
          o(this, 'CallbackList')
        }
        add(e, r = null, n) {
          this._callbacks || ((this._callbacks = []), (this._contexts = [])),
            this._callbacks.push(e),
            this._contexts.push(r),
            Array.isArray(n) && n.push({ dispose: o(() => this.remove(e, r), 'dispose') })
        }
        remove(e, r = null) {
          if (!this._callbacks) return
          let n = !1
          for (let i = 0, a = this._callbacks.length; i < a; i++)
            if (this._callbacks[i] === e)
              if (this._contexts[i] === r) {
                this._callbacks.splice(i, 1), this._contexts.splice(i, 1)
                return
              } else n = !0
          if (n) throw new Error('When adding a listener with a context, you should remove it with the same context')
        }
        invoke(...e) {
          if (!this._callbacks) return []
          let r = [],
            n = this._callbacks.slice(0),
            i = this._contexts.slice(0)
          for (let a = 0, s = n.length; a < s; a++)
            try {
              r.push(n[a].apply(i[a], e))
            } catch (l) {
              ;(0, G$e.default)().console.error(l)
            }
          return r
        }
        isEmpty() {
          return !this._callbacks || this._callbacks.length === 0
        }
        dispose() {
          ;(this._callbacks = void 0), (this._contexts = void 0)
        }
      },
      BE = class t {
        static {
          o(this, 'Emitter')
        }
        constructor(e) {
          this._options = e
        }
        get event() {
          return (
            this._event ||
              (this._event = (e, r, n) => {
                this._callbacks || (this._callbacks = new fI()),
                  this._options && this._options.onFirstListenerAdd && this._callbacks.isEmpty() && this._options.onFirstListenerAdd(this),
                  this._callbacks.add(e, r)
                let i = {
                  dispose: o(() => {
                    this._callbacks &&
                      (this._callbacks.remove(e, r),
                      (i.dispose = t._noop),
                      this._options && this._options.onLastListenerRemove && this._callbacks.isEmpty() && this._options.onLastListenerRemove(this))
                  }, 'dispose')
                }
                return Array.isArray(n) && n.push(i), i
              }),
            this._event
          )
        }
        fire(e) {
          this._callbacks && this._callbacks.invoke.call(this._callbacks, e)
        }
        dispose() {
          this._callbacks && (this._callbacks.dispose(), (this._callbacks = void 0))
        }
      }
    g1.Emitter = BE
    BE._noop = function () {}
  })
  var Jce = Pi(y1 => {
    'use strict'
    Object.defineProperty(y1, '__esModule', { value: !0 })
    y1.CancellationTokenSource = y1.CancellationToken = void 0
    var V$e = hI(),
      U$e = Qce(),
      pI = dI(),
      FE
    ;(function (t) {
      ;(t.None = Object.freeze({ isCancellationRequested: !1, onCancellationRequested: pI.Event.None })),
        (t.Cancelled = Object.freeze({ isCancellationRequested: !0, onCancellationRequested: pI.Event.None }))
      function e(r) {
        let n = r
        return n && (n === t.None || n === t.Cancelled || (U$e.boolean(n.isCancellationRequested) && !!n.onCancellationRequested))
      }
      o(e, 'is'), (t.is = e)
    })(FE || (y1.CancellationToken = FE = {}))
    var H$e = Object.freeze(function (t, e) {
        let r = (0, V$e.default)().timer.setTimeout(t.bind(e), 0)
        return {
          dispose() {
            r.dispose()
          }
        }
      }),
      $E = class {
        static {
          o(this, 'MutableToken')
        }
        constructor() {
          this._isCancelled = !1
        }
        cancel() {
          this._isCancelled || ((this._isCancelled = !0), this._emitter && (this._emitter.fire(void 0), this.dispose()))
        }
        get isCancellationRequested() {
          return this._isCancelled
        }
        get onCancellationRequested() {
          return this._isCancelled ? H$e : (this._emitter || (this._emitter = new pI.Emitter()), this._emitter.event)
        }
        dispose() {
          this._emitter && (this._emitter.dispose(), (this._emitter = void 0))
        }
      },
      mI = class {
        static {
          o(this, 'CancellationTokenSource')
        }
        get token() {
          return this._token || (this._token = new $E()), this._token
        }
        cancel() {
          this._token ? this._token.cancel() : (this._token = FE.Cancelled)
        }
        dispose() {
          this._token ? this._token instanceof $E && this._token.dispose() : (this._token = FE.None)
        }
      }
    y1.CancellationTokenSource = mI
  })
  var yr = {}
  var Ko = N(() => {
    'use strict'
    Cr(yr, Aa(Jce(), 1))
  })
  function gI() {
    return new Promise(t => {
      typeof setImmediate > 'u' ? setTimeout(t, 0) : setImmediate(t)
    })
  }
  function GE() {
    return (zE = performance.now()), new yr.CancellationTokenSource()
  }
  function tue(t) {
    eue = t
  }
  function Vc(t) {
    return t === Gc
  }
  async function wi(t) {
    if (t === yr.CancellationToken.None) return
    let e = performance.now()
    if ((e - zE >= eue && ((zE = e), await gI(), (zE = performance.now())), t.isCancellationRequested)) throw Gc
  }
  var zE,
    eue,
    Gc,
    ps,
    Qo = N(() => {
      'use strict'
      Ko()
      o(gI, 'delayNextTick')
      ;(zE = 0), (eue = 10)
      o(GE, 'startCancelableOperation')
      o(tue, 'setInterruptionPeriod')
      Gc = Symbol('OperationCancelled')
      o(Vc, 'isOperationCancelled')
      o(wi, 'interruptAndCheck')
      ps = class {
        static {
          o(this, 'Deferred')
        }
        constructor() {
          this.promise = new Promise((e, r) => {
            ;(this.resolve = n => (e(n), this)), (this.reject = n => (r(n), this))
          })
        }
      }
    })
  function yI(t, e) {
    if (t.length <= 1) return t
    let r = (t.length / 2) | 0,
      n = t.slice(0, r),
      i = t.slice(r)
    yI(n, e), yI(i, e)
    let a = 0,
      s = 0,
      l = 0
    for (; a < n.length && s < i.length; ) e(n[a], i[s]) <= 0 ? (t[l++] = n[a++]) : (t[l++] = i[s++])
    for (; a < n.length; ) t[l++] = n[a++]
    for (; s < i.length; ) t[l++] = i[s++]
    return t
  }
  function rue(t, e, r = 0) {
    let n = e ? [r] : []
    for (let i = 0; i < t.length; i++) {
      let a = t.charCodeAt(i)
      nue(a) && (a === 13 && i + 1 < t.length && t.charCodeAt(i + 1) === 10 && i++, n.push(r + i + 1))
    }
    return n
  }
  function nue(t) {
    return t === 13 || t === 10
  }
  function iue(t) {
    let e = t.start,
      r = t.end
    return e.line > r.line || (e.line === r.line && e.character > r.character) ? { start: r, end: e } : t
  }
  function W$e(t) {
    let e = iue(t.range)
    return e !== t.range ? { newText: t.newText, range: e } : t
  }
  var VE,
    v1,
    aue = N(() => {
      'use strict'
      VE = class t {
        static {
          o(this, 'FullTextDocument')
        }
        constructor(e, r, n, i) {
          ;(this._uri = e), (this._languageId = r), (this._version = n), (this._content = i), (this._lineOffsets = void 0)
        }
        get uri() {
          return this._uri
        }
        get languageId() {
          return this._languageId
        }
        get version() {
          return this._version
        }
        getText(e) {
          if (e) {
            let r = this.offsetAt(e.start),
              n = this.offsetAt(e.end)
            return this._content.substring(r, n)
          }
          return this._content
        }
        update(e, r) {
          for (let n of e)
            if (t.isIncremental(n)) {
              let i = iue(n.range),
                a = this.offsetAt(i.start),
                s = this.offsetAt(i.end)
              this._content = this._content.substring(0, a) + n.text + this._content.substring(s, this._content.length)
              let l = Math.max(i.start.line, 0),
                u = Math.max(i.end.line, 0),
                h = this._lineOffsets,
                f = rue(n.text, !1, a)
              if (u - l === f.length) for (let p = 0, m = f.length; p < m; p++) h[p + l + 1] = f[p]
              else f.length < 1e4 ? h.splice(l + 1, u - l, ...f) : (this._lineOffsets = h = h.slice(0, l + 1).concat(f, h.slice(u + 1)))
              let d = n.text.length - (s - a)
              if (d !== 0) for (let p = l + 1 + f.length, m = h.length; p < m; p++) h[p] = h[p] + d
            } else if (t.isFull(n)) (this._content = n.text), (this._lineOffsets = void 0)
            else throw new Error('Unknown change event received')
          this._version = r
        }
        getLineOffsets() {
          return this._lineOffsets === void 0 && (this._lineOffsets = rue(this._content, !0)), this._lineOffsets
        }
        positionAt(e) {
          e = Math.max(Math.min(e, this._content.length), 0)
          let r = this.getLineOffsets(),
            n = 0,
            i = r.length
          if (i === 0) return { line: 0, character: e }
          for (; n < i; ) {
            let s = Math.floor((n + i) / 2)
            r[s] > e ? (i = s) : (n = s + 1)
          }
          let a = n - 1
          return (e = this.ensureBeforeEOL(e, r[a])), { line: a, character: e - r[a] }
        }
        offsetAt(e) {
          let r = this.getLineOffsets()
          if (e.line >= r.length) return this._content.length
          if (e.line < 0) return 0
          let n = r[e.line]
          if (e.character <= 0) return n
          let i = e.line + 1 < r.length ? r[e.line + 1] : this._content.length,
            a = Math.min(n + e.character, i)
          return this.ensureBeforeEOL(a, n)
        }
        ensureBeforeEOL(e, r) {
          for (; e > r && nue(this._content.charCodeAt(e - 1)); ) e--
          return e
        }
        get lineCount() {
          return this.getLineOffsets().length
        }
        static isIncremental(e) {
          let r = e
          return r != null && typeof r.text == 'string' && r.range !== void 0 && (r.rangeLength === void 0 || typeof r.rangeLength == 'number')
        }
        static isFull(e) {
          let r = e
          return r != null && typeof r.text == 'string' && r.range === void 0 && r.rangeLength === void 0
        }
      }
      ;(function (t) {
        function e(i, a, s, l) {
          return new VE(i, a, s, l)
        }
        o(e, 'create'), (t.create = e)
        function r(i, a, s) {
          if (i instanceof VE) return i.update(a, s), i
          throw new Error('TextDocument.update: document must be created by TextDocument.create')
        }
        o(r, 'update'), (t.update = r)
        function n(i, a) {
          let s = i.getText(),
            l = yI(a.map(W$e), (f, d) => {
              let p = f.range.start.line - d.range.start.line
              return p === 0 ? f.range.start.character - d.range.start.character : p
            }),
            u = 0,
            h = []
          for (let f of l) {
            let d = i.offsetAt(f.range.start)
            if (d < u) throw new Error('Overlapping edit')
            d > u && h.push(s.substring(u, d)), f.newText.length && h.push(f.newText), (u = i.offsetAt(f.range.end))
          }
          return h.push(s.substr(u)), h.join('')
        }
        o(n, 'applyEdits'), (t.applyEdits = n)
      })(v1 || (v1 = {}))
      o(yI, 'mergeSort')
      o(rue, 'computeLineOffsets')
      o(nue, 'isEOL')
      o(iue, 'getWellformedRange')
      o(W$e, 'getWellformedEdit')
    })
  var sue,
    ms,
    x1,
    vI = N(() => {
      'use strict'
      ;(() => {
        'use strict'
        var t = {
            470: i => {
              function a(u) {
                if (typeof u != 'string') throw new TypeError('Path must be a string. Received ' + JSON.stringify(u))
              }
              o(a, 'e')
              function s(u, h) {
                for (var f, d = '', p = 0, m = -1, g = 0, y = 0; y <= u.length; ++y) {
                  if (y < u.length) f = u.charCodeAt(y)
                  else {
                    if (f === 47) break
                    f = 47
                  }
                  if (f === 47) {
                    if (!(m === y - 1 || g === 1))
                      if (m !== y - 1 && g === 2) {
                        if (d.length < 2 || p !== 2 || d.charCodeAt(d.length - 1) !== 46 || d.charCodeAt(d.length - 2) !== 46) {
                          if (d.length > 2) {
                            var v = d.lastIndexOf('/')
                            if (v !== d.length - 1) {
                              v === -1 ? ((d = ''), (p = 0)) : (p = (d = d.slice(0, v)).length - 1 - d.lastIndexOf('/')), (m = y), (g = 0)
                              continue
                            }
                          } else if (d.length === 2 || d.length === 1) {
                            ;(d = ''), (p = 0), (m = y), (g = 0)
                            continue
                          }
                        }
                        h && (d.length > 0 ? (d += '/..') : (d = '..'), (p = 2))
                      } else d.length > 0 ? (d += '/' + u.slice(m + 1, y)) : (d = u.slice(m + 1, y)), (p = y - m - 1)
                    ;(m = y), (g = 0)
                  } else f === 46 && g !== -1 ? ++g : (g = -1)
                }
                return d
              }
              o(s, 'r')
              var l = {
                resolve: o(function () {
                  for (var u, h = '', f = !1, d = arguments.length - 1; d >= -1 && !f; d--) {
                    var p
                    d >= 0 ? (p = arguments[d]) : (u === void 0 && (u = process.cwd()), (p = u)), a(p), p.length !== 0 && ((h = p + '/' + h), (f = p.charCodeAt(0) === 47))
                  }
                  return (h = s(h, !f)), f ? (h.length > 0 ? '/' + h : '/') : h.length > 0 ? h : '.'
                }, 'resolve'),
                normalize: o(function (u) {
                  if ((a(u), u.length === 0)) return '.'
                  var h = u.charCodeAt(0) === 47,
                    f = u.charCodeAt(u.length - 1) === 47
                  return (u = s(u, !h)).length !== 0 || h || (u = '.'), u.length > 0 && f && (u += '/'), h ? '/' + u : u
                }, 'normalize'),
                isAbsolute: o(function (u) {
                  return a(u), u.length > 0 && u.charCodeAt(0) === 47
                }, 'isAbsolute'),
                join: o(function () {
                  if (arguments.length === 0) return '.'
                  for (var u, h = 0; h < arguments.length; ++h) {
                    var f = arguments[h]
                    a(f), f.length > 0 && (u === void 0 ? (u = f) : (u += '/' + f))
                  }
                  return u === void 0 ? '.' : l.normalize(u)
                }, 'join'),
                relative: o(function (u, h) {
                  if ((a(u), a(h), u === h || (u = l.resolve(u)) === (h = l.resolve(h)))) return ''
                  for (var f = 1; f < u.length && u.charCodeAt(f) === 47; ++f);
                  for (var d = u.length, p = d - f, m = 1; m < h.length && h.charCodeAt(m) === 47; ++m);
                  for (var g = h.length - m, y = p < g ? p : g, v = -1, x = 0; x <= y; ++x) {
                    if (x === y) {
                      if (g > y) {
                        if (h.charCodeAt(m + x) === 47) return h.slice(m + x + 1)
                        if (x === 0) return h.slice(m + x)
                      } else p > y && (u.charCodeAt(f + x) === 47 ? (v = x) : x === 0 && (v = 0))
                      break
                    }
                    var b = u.charCodeAt(f + x)
                    if (b !== h.charCodeAt(m + x)) break
                    b === 47 && (v = x)
                  }
                  var T = ''
                  for (x = f + v + 1; x <= d; ++x) (x !== d && u.charCodeAt(x) !== 47) || (T.length === 0 ? (T += '..') : (T += '/..'))
                  return T.length > 0 ? T + h.slice(m + v) : ((m += v), h.charCodeAt(m) === 47 && ++m, h.slice(m))
                }, 'relative'),
                _makeLong: o(function (u) {
                  return u
                }, '_makeLong'),
                dirname: o(function (u) {
                  if ((a(u), u.length === 0)) return '.'
                  for (var h = u.charCodeAt(0), f = h === 47, d = -1, p = !0, m = u.length - 1; m >= 1; --m)
                    if ((h = u.charCodeAt(m)) === 47) {
                      if (!p) {
                        d = m
                        break
                      }
                    } else p = !1
                  return d === -1 ? (f ? '/' : '.') : f && d === 1 ? '//' : u.slice(0, d)
                }, 'dirname'),
                basename: o(function (u, h) {
                  if (h !== void 0 && typeof h != 'string') throw new TypeError('"ext" argument must be a string')
                  a(u)
                  var f,
                    d = 0,
                    p = -1,
                    m = !0
                  if (h !== void 0 && h.length > 0 && h.length <= u.length) {
                    if (h.length === u.length && h === u) return ''
                    var g = h.length - 1,
                      y = -1
                    for (f = u.length - 1; f >= 0; --f) {
                      var v = u.charCodeAt(f)
                      if (v === 47) {
                        if (!m) {
                          d = f + 1
                          break
                        }
                      } else y === -1 && ((m = !1), (y = f + 1)), g >= 0 && (v === h.charCodeAt(g) ? --g == -1 && (p = f) : ((g = -1), (p = y)))
                    }
                    return d === p ? (p = y) : p === -1 && (p = u.length), u.slice(d, p)
                  }
                  for (f = u.length - 1; f >= 0; --f)
                    if (u.charCodeAt(f) === 47) {
                      if (!m) {
                        d = f + 1
                        break
                      }
                    } else p === -1 && ((m = !1), (p = f + 1))
                  return p === -1 ? '' : u.slice(d, p)
                }, 'basename'),
                extname: o(function (u) {
                  a(u)
                  for (var h = -1, f = 0, d = -1, p = !0, m = 0, g = u.length - 1; g >= 0; --g) {
                    var y = u.charCodeAt(g)
                    if (y !== 47) d === -1 && ((p = !1), (d = g + 1)), y === 46 ? (h === -1 ? (h = g) : m !== 1 && (m = 1)) : h !== -1 && (m = -1)
                    else if (!p) {
                      f = g + 1
                      break
                    }
                  }
                  return h === -1 || d === -1 || m === 0 || (m === 1 && h === d - 1 && h === f + 1) ? '' : u.slice(h, d)
                }, 'extname'),
                format: o(function (u) {
                  if (u === null || typeof u != 'object') throw new TypeError('The "pathObject" argument must be of type Object. Received type ' + typeof u)
                  return (function (h, f) {
                    var d = f.dir || f.root,
                      p = f.base || (f.name || '') + (f.ext || '')
                    return d ? (d === f.root ? d + p : d + '/' + p) : p
                  })(0, u)
                }, 'format'),
                parse: o(function (u) {
                  a(u)
                  var h = { root: '', dir: '', base: '', ext: '', name: '' }
                  if (u.length === 0) return h
                  var f,
                    d = u.charCodeAt(0),
                    p = d === 47
                  p ? ((h.root = '/'), (f = 1)) : (f = 0)
                  for (var m = -1, g = 0, y = -1, v = !0, x = u.length - 1, b = 0; x >= f; --x)
                    if ((d = u.charCodeAt(x)) !== 47) y === -1 && ((v = !1), (y = x + 1)), d === 46 ? (m === -1 ? (m = x) : b !== 1 && (b = 1)) : m !== -1 && (b = -1)
                    else if (!v) {
                      g = x + 1
                      break
                    }
                  return (
                    m === -1 || y === -1 || b === 0 || (b === 1 && m === y - 1 && m === g + 1)
                      ? y !== -1 && (h.base = h.name = g === 0 && p ? u.slice(1, y) : u.slice(g, y))
                      : (g === 0 && p ? ((h.name = u.slice(1, m)), (h.base = u.slice(1, y))) : ((h.name = u.slice(g, m)), (h.base = u.slice(g, y))), (h.ext = u.slice(m, y))),
                    g > 0 ? (h.dir = u.slice(0, g - 1)) : p && (h.dir = '/'),
                    h
                  )
                }, 'parse'),
                sep: '/',
                delimiter: ':',
                win32: null,
                posix: null
              }
              ;(l.posix = l), (i.exports = l)
            }
          },
          e = {}
        function r(i) {
          var a = e[i]
          if (a !== void 0) return a.exports
          var s = (e[i] = { exports: {} })
          return t[i](s, s.exports, r), s.exports
        }
        o(r, 'r'),
          (r.d = (i, a) => {
            for (var s in a) r.o(a, s) && !r.o(i, s) && Object.defineProperty(i, s, { enumerable: !0, get: a[s] })
          }),
          (r.o = (i, a) => Object.prototype.hasOwnProperty.call(i, a)),
          (r.r = i => {
            typeof Symbol < 'u' && Symbol.toStringTag && Object.defineProperty(i, Symbol.toStringTag, { value: 'Module' }), Object.defineProperty(i, '__esModule', { value: !0 })
          })
        var n = {}
        ;(() => {
          let i
          r.r(n),
            r.d(n, { URI: o(() => p, 'URI'), Utils: o(() => O, 'Utils') }),
            typeof process == 'object' ? (i = process.platform === 'win32') : typeof navigator == 'object' && (i = navigator.userAgent.indexOf('Windows') >= 0)
          let a = /^\w[\w\d+.-]*$/,
            s = /^\//,
            l = /^\/\//
          function u(R, k) {
            if (!R.scheme && k)
              throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${R.authority}", path: "${R.path}", query: "${R.query}", fragment: "${R.fragment}"}`)
            if (R.scheme && !a.test(R.scheme)) throw new Error('[UriError]: Scheme contains illegal characters.')
            if (R.path) {
              if (R.authority) {
                if (!s.test(R.path))
                  throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')
              } else if (l.test(R.path))
                throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')
            }
          }
          o(u, 's')
          let h = '',
            f = '/',
            d = /^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/
          class p {
            static {
              o(this, 'f')
            }
            static isUri(k) {
              return (
                k instanceof p ||
                (!!k &&
                  typeof k.authority == 'string' &&
                  typeof k.fragment == 'string' &&
                  typeof k.path == 'string' &&
                  typeof k.query == 'string' &&
                  typeof k.scheme == 'string' &&
                  typeof k.fsPath == 'string' &&
                  typeof k.with == 'function' &&
                  typeof k.toString == 'function')
              )
            }
            scheme
            authority
            path
            query
            fragment
            constructor(k, L, A, I, M, P = !1) {
              typeof k == 'object'
                ? ((this.scheme = k.scheme || h), (this.authority = k.authority || h), (this.path = k.path || h), (this.query = k.query || h), (this.fragment = k.fragment || h))
                : ((this.scheme = (function (B, F) {
                    return B || F ? B : 'file'
                  })(k, P)),
                  (this.authority = L || h),
                  (this.path = (function (B, F) {
                    switch (B) {
                      case 'https':
                      case 'http':
                      case 'file':
                        F ? F[0] !== f && (F = f + F) : (F = f)
                    }
                    return F
                  })(this.scheme, A || h)),
                  (this.query = I || h),
                  (this.fragment = M || h),
                  u(this, P))
            }
            get fsPath() {
              return b(this, !1)
            }
            with(k) {
              if (!k) return this
              let { scheme: L, authority: A, path: I, query: M, fragment: P } = k
              return (
                L === void 0 ? (L = this.scheme) : L === null && (L = h),
                A === void 0 ? (A = this.authority) : A === null && (A = h),
                I === void 0 ? (I = this.path) : I === null && (I = h),
                M === void 0 ? (M = this.query) : M === null && (M = h),
                P === void 0 ? (P = this.fragment) : P === null && (P = h),
                L === this.scheme && A === this.authority && I === this.path && M === this.query && P === this.fragment ? this : new g(L, A, I, M, P)
              )
            }
            static parse(k, L = !1) {
              let A = d.exec(k)
              return A ? new g(A[2] || h, E(A[4] || h), E(A[5] || h), E(A[7] || h), E(A[9] || h), L) : new g(h, h, h, h, h)
            }
            static file(k) {
              let L = h
              if ((i && (k = k.replace(/\\/g, f)), k[0] === f && k[1] === f)) {
                let A = k.indexOf(f, 2)
                A === -1 ? ((L = k.substring(2)), (k = f)) : ((L = k.substring(2, A)), (k = k.substring(A) || f))
              }
              return new g('file', L, k, h, h)
            }
            static from(k) {
              let L = new g(k.scheme, k.authority, k.path, k.query, k.fragment)
              return u(L, !0), L
            }
            toString(k = !1) {
              return T(this, k)
            }
            toJSON() {
              return this
            }
            static revive(k) {
              if (k) {
                if (k instanceof p) return k
                {
                  let L = new g(k)
                  return (L._formatted = k.external), (L._fsPath = k._sep === m ? k.fsPath : null), L
                }
              }
              return k
            }
          }
          let m = i ? 1 : void 0
          class g extends p {
            static {
              o(this, 'l')
            }
            _formatted = null
            _fsPath = null
            get fsPath() {
              return this._fsPath || (this._fsPath = b(this, !1)), this._fsPath
            }
            toString(k = !1) {
              return k ? T(this, !0) : (this._formatted || (this._formatted = T(this, !1)), this._formatted)
            }
            toJSON() {
              let k = { $mid: 1 }
              return (
                this._fsPath && ((k.fsPath = this._fsPath), (k._sep = m)),
                this._formatted && (k.external = this._formatted),
                this.path && (k.path = this.path),
                this.scheme && (k.scheme = this.scheme),
                this.authority && (k.authority = this.authority),
                this.query && (k.query = this.query),
                this.fragment && (k.fragment = this.fragment),
                k
              )
            }
          }
          let y = {
            58: '%3A',
            47: '%2F',
            63: '%3F',
            35: '%23',
            91: '%5B',
            93: '%5D',
            64: '%40',
            33: '%21',
            36: '%24',
            38: '%26',
            39: '%27',
            40: '%28',
            41: '%29',
            42: '%2A',
            43: '%2B',
            44: '%2C',
            59: '%3B',
            61: '%3D',
            32: '%20'
          }
          function v(R, k, L) {
            let A,
              I = -1
            for (let M = 0; M < R.length; M++) {
              let P = R.charCodeAt(M)
              if (
                (P >= 97 && P <= 122) ||
                (P >= 65 && P <= 90) ||
                (P >= 48 && P <= 57) ||
                P === 45 ||
                P === 46 ||
                P === 95 ||
                P === 126 ||
                (k && P === 47) ||
                (L && P === 91) ||
                (L && P === 93) ||
                (L && P === 58)
              )
                I !== -1 && ((A += encodeURIComponent(R.substring(I, M))), (I = -1)), A !== void 0 && (A += R.charAt(M))
              else {
                A === void 0 && (A = R.substr(0, M))
                let B = y[P]
                B !== void 0 ? (I !== -1 && ((A += encodeURIComponent(R.substring(I, M))), (I = -1)), (A += B)) : I === -1 && (I = M)
              }
            }
            return I !== -1 && (A += encodeURIComponent(R.substring(I))), A !== void 0 ? A : R
          }
          o(v, 'd')
          function x(R) {
            let k
            for (let L = 0; L < R.length; L++) {
              let A = R.charCodeAt(L)
              A === 35 || A === 63 ? (k === void 0 && (k = R.substr(0, L)), (k += y[A])) : k !== void 0 && (k += R[L])
            }
            return k !== void 0 ? k : R
          }
          o(x, 'p')
          function b(R, k) {
            let L
            return (
              (L =
                R.authority && R.path.length > 1 && R.scheme === 'file'
                  ? `//${R.authority}${R.path}`
                  : R.path.charCodeAt(0) === 47 &&
                      ((R.path.charCodeAt(1) >= 65 && R.path.charCodeAt(1) <= 90) || (R.path.charCodeAt(1) >= 97 && R.path.charCodeAt(1) <= 122)) &&
                      R.path.charCodeAt(2) === 58
                    ? k
                      ? R.path.substr(1)
                      : R.path[1].toLowerCase() + R.path.substr(2)
                    : R.path),
              i && (L = L.replace(/\//g, '\\')),
              L
            )
          }
          o(b, 'm')
          function T(R, k) {
            let L = k ? x : v,
              A = '',
              { scheme: I, authority: M, path: P, query: B, fragment: F } = R
            if ((I && ((A += I), (A += ':')), (M || I === 'file') && ((A += f), (A += f)), M)) {
              let z = M.indexOf('@')
              if (z !== -1) {
                let $ = M.substr(0, z)
                ;(M = M.substr(z + 1)),
                  (z = $.lastIndexOf(':')),
                  z === -1 ? (A += L($, !1, !1)) : ((A += L($.substr(0, z), !1, !1)), (A += ':'), (A += L($.substr(z + 1), !1, !0))),
                  (A += '@')
              }
              ;(M = M.toLowerCase()), (z = M.lastIndexOf(':')), z === -1 ? (A += L(M, !1, !0)) : ((A += L(M.substr(0, z), !1, !0)), (A += M.substr(z)))
            }
            if (P) {
              if (P.length >= 3 && P.charCodeAt(0) === 47 && P.charCodeAt(2) === 58) {
                let z = P.charCodeAt(1)
                z >= 65 && z <= 90 && (P = `/${String.fromCharCode(z + 32)}:${P.substr(3)}`)
              } else if (P.length >= 2 && P.charCodeAt(1) === 58) {
                let z = P.charCodeAt(0)
                z >= 65 && z <= 90 && (P = `${String.fromCharCode(z + 32)}:${P.substr(2)}`)
              }
              A += L(P, !0, !1)
            }
            return B && ((A += '?'), (A += L(B, !1, !1))), F && ((A += '#'), (A += k ? F : v(F, !1, !1))), A
          }
          o(T, 'y')
          function S(R) {
            try {
              return decodeURIComponent(R)
            } catch {
              return R.length > 3 ? R.substr(0, 3) + S(R.substr(3)) : R
            }
          }
          o(S, 'v')
          let w = /(%[0-9A-Za-z][0-9A-Za-z])+/g
          function E(R) {
            return R.match(w) ? R.replace(w, k => S(k)) : R
          }
          o(E, 'C')
          var _ = r(470)
          let C = _.posix || _,
            D = '/'
          var O
          ;(function (R) {
            ;(R.joinPath = function (k, ...L) {
              return k.with({ path: C.join(k.path, ...L) })
            }),
              (R.resolvePath = function (k, ...L) {
                let A = k.path,
                  I = !1
                A[0] !== D && ((A = D + A), (I = !0))
                let M = C.resolve(A, ...L)
                return I && M[0] === D && !k.authority && (M = M.substring(1)), k.with({ path: M })
              }),
              (R.dirname = function (k) {
                if (k.path.length === 0 || k.path === D) return k
                let L = C.dirname(k.path)
                return L.length === 1 && L.charCodeAt(0) === 46 && (L = ''), k.with({ path: L })
              }),
              (R.basename = function (k) {
                return C.basename(k.path)
              }),
              (R.extname = function (k) {
                return C.extname(k.path)
              })
          })(O || (O = {}))
        })(),
          (sue = n)
      })()
      ;({ URI: ms, Utils: x1 } = sue)
    })
  var gs,
    Uc = N(() => {
      'use strict'
      vI()
      ;(function (t) {
        ;(t.basename = x1.basename), (t.dirname = x1.dirname), (t.extname = x1.extname), (t.joinPath = x1.joinPath), (t.resolvePath = x1.resolvePath)
        function e(i, a) {
          return i?.toString() === a?.toString()
        }
        o(e, 'equals'), (t.equals = e)
        function r(i, a) {
          let s = typeof i == 'string' ? i : i.path,
            l = typeof a == 'string' ? a : a.path,
            u = s.split('/').filter(m => m.length > 0),
            h = l.split('/').filter(m => m.length > 0),
            f = 0
          for (; f < u.length && u[f] === h[f]; f++);
          let d = '../'.repeat(u.length - f),
            p = h.slice(f).join('/')
          return d + p
        }
        o(r, 'relative'), (t.relative = r)
        function n(i) {
          return ms.parse(i.toString()).toString()
        }
        o(n, 'normalize'), (t.normalize = n)
      })(gs || (gs = {}))
    })
  var kn,
    Vx,
    Ux,
    b1 = N(() => {
      'use strict'
      aue()
      b1()
      Ko()
      Gs()
      Uc()
      ;(function (t) {
        ;(t[(t.Changed = 0)] = 'Changed'),
          (t[(t.Parsed = 1)] = 'Parsed'),
          (t[(t.IndexedContent = 2)] = 'IndexedContent'),
          (t[(t.ComputedScopes = 3)] = 'ComputedScopes'),
          (t[(t.Linked = 4)] = 'Linked'),
          (t[(t.IndexedReferences = 5)] = 'IndexedReferences'),
          (t[(t.Validated = 6)] = 'Validated')
      })(kn || (kn = {}))
      ;(Vx = class {
        static {
          o(this, 'DefaultLangiumDocumentFactory')
        }
        constructor(e) {
          ;(this.serviceRegistry = e.ServiceRegistry), (this.textDocuments = e.workspace.TextDocuments), (this.fileSystemProvider = e.workspace.FileSystemProvider)
        }
        async fromUri(e, r = yr.CancellationToken.None) {
          let n = await this.fileSystemProvider.readFile(e)
          return this.createAsync(e, n, r)
        }
        fromTextDocument(e, r, n) {
          return (r = r ?? ms.parse(e.uri)), yr.CancellationToken.is(n) ? this.createAsync(r, e, n) : this.create(r, e, n)
        }
        fromString(e, r, n) {
          return yr.CancellationToken.is(n) ? this.createAsync(r, e, n) : this.create(r, e, n)
        }
        fromModel(e, r) {
          return this.create(r, { $model: e })
        }
        create(e, r, n) {
          if (typeof r == 'string') {
            let i = this.parse(e, r, n)
            return this.createLangiumDocument(i, e, void 0, r)
          } else if ('$model' in r) {
            let i = { value: r.$model, parserErrors: [], lexerErrors: [] }
            return this.createLangiumDocument(i, e)
          } else {
            let i = this.parse(e, r.getText(), n)
            return this.createLangiumDocument(i, e, r)
          }
        }
        async createAsync(e, r, n) {
          if (typeof r == 'string') {
            let i = await this.parseAsync(e, r, n)
            return this.createLangiumDocument(i, e, void 0, r)
          } else {
            let i = await this.parseAsync(e, r.getText(), n)
            return this.createLangiumDocument(i, e, r)
          }
        }
        createLangiumDocument(e, r, n, i) {
          let a
          if (n) a = { parseResult: e, uri: r, state: kn.Parsed, references: [], textDocument: n }
          else {
            let s = this.createTextDocumentGetter(r, i)
            a = {
              parseResult: e,
              uri: r,
              state: kn.Parsed,
              references: [],
              get textDocument() {
                return s()
              }
            }
          }
          return (e.value.$document = a), a
        }
        async update(e, r) {
          var n, i
          let a = (n = e.parseResult.value.$cstNode) === null || n === void 0 ? void 0 : n.root.fullText,
            s = (i = this.textDocuments) === null || i === void 0 ? void 0 : i.get(e.uri.toString()),
            l = s ? s.getText() : await this.fileSystemProvider.readFile(e.uri)
          if (s) Object.defineProperty(e, 'textDocument', { value: s })
          else {
            let u = this.createTextDocumentGetter(e.uri, l)
            Object.defineProperty(e, 'textDocument', { get: u })
          }
          return a !== l && ((e.parseResult = await this.parseAsync(e.uri, l, r)), (e.parseResult.value.$document = e)), (e.state = kn.Parsed), e
        }
        parse(e, r, n) {
          return this.serviceRegistry.getServices(e).parser.LangiumParser.parse(r, n)
        }
        parseAsync(e, r, n) {
          return this.serviceRegistry.getServices(e).parser.AsyncParser.parse(r, n)
        }
        createTextDocumentGetter(e, r) {
          let n = this.serviceRegistry,
            i
          return () => i ?? (i = v1.create(e.toString(), n.getServices(e).LanguageMetaData.languageId, 0, r ?? ''))
        }
      }),
        (Ux = class {
          static {
            o(this, 'DefaultLangiumDocuments')
          }
          constructor(e) {
            ;(this.documentMap = new Map()), (this.langiumDocumentFactory = e.workspace.LangiumDocumentFactory), (this.serviceRegistry = e.ServiceRegistry)
          }
          get all() {
            return en(this.documentMap.values())
          }
          addDocument(e) {
            let r = e.uri.toString()
            if (this.documentMap.has(r)) throw new Error(`A document with the URI '${r}' is already present.`)
            this.documentMap.set(r, e)
          }
          getDocument(e) {
            let r = e.toString()
            return this.documentMap.get(r)
          }
          async getOrCreateDocument(e, r) {
            let n = this.getDocument(e)
            return n || ((n = await this.langiumDocumentFactory.fromUri(e, r)), this.addDocument(n), n)
          }
          createDocument(e, r, n) {
            if (n) return this.langiumDocumentFactory.fromString(r, e, n).then(i => (this.addDocument(i), i))
            {
              let i = this.langiumDocumentFactory.fromString(r, e)
              return this.addDocument(i), i
            }
          }
          hasDocument(e) {
            return this.documentMap.has(e.toString())
          }
          invalidateDocument(e) {
            let r = e.toString(),
              n = this.documentMap.get(r)
            return n && (this.serviceRegistry.getServices(e).references.Linker.unlink(n), (n.state = kn.Changed), (n.precomputedScopes = void 0), (n.diagnostics = void 0)), n
          }
          deleteDocument(e) {
            let r = e.toString(),
              n = this.documentMap.get(r)
            return n && ((n.state = kn.Changed), this.documentMap.delete(r)), n
          }
        })
    })
  var xI,
    Hx,
    bI = N(() => {
      'use strict'
      Ko()
      Il()
      cs()
      Qo()
      b1()
      ;(xI = Symbol('ref_resolving')),
        (Hx = class {
          static {
            o(this, 'DefaultLinker')
          }
          constructor(e) {
            ;(this.reflection = e.shared.AstReflection),
              (this.langiumDocuments = () => e.shared.workspace.LangiumDocuments),
              (this.scopeProvider = e.references.ScopeProvider),
              (this.astNodeLocator = e.workspace.AstNodeLocator)
          }
          async link(e, r = yr.CancellationToken.None) {
            for (let n of jo(e.parseResult.value)) await wi(r), Pg(n).forEach(i => this.doLink(i, e))
          }
          doLink(e, r) {
            var n
            let i = e.reference
            if (i._ref === void 0) {
              i._ref = xI
              try {
                let a = this.getCandidate(e)
                if (ap(a)) i._ref = a
                else if (((i._nodeDescription = a), this.langiumDocuments().hasDocument(a.documentUri))) {
                  let s = this.loadAstNode(a)
                  i._ref = s ?? this.createLinkingError(e, a)
                } else i._ref = void 0
              } catch (a) {
                console.error(`An error occurred while resolving reference to '${i.$refText}':`, a)
                let s = (n = a.message) !== null && n !== void 0 ? n : String(a)
                i._ref = Object.assign(Object.assign({}, e), { message: `An error occurred while resolving reference to '${i.$refText}': ${s}` })
              }
              r.references.push(i)
            }
          }
          unlink(e) {
            for (let r of e.references) delete r._ref, delete r._nodeDescription
            e.references = []
          }
          getCandidate(e) {
            let n = this.scopeProvider.getScope(e).getElement(e.reference.$refText)
            return n ?? this.createLinkingError(e)
          }
          buildReference(e, r, n, i) {
            let a = this,
              s = {
                $refNode: n,
                $refText: i,
                get ref() {
                  var l
                  if (si(this._ref)) return this._ref
                  if (sN(this._nodeDescription)) {
                    let u = a.loadAstNode(this._nodeDescription)
                    this._ref = u ?? a.createLinkingError({ reference: s, container: e, property: r }, this._nodeDescription)
                  } else if (this._ref === void 0) {
                    this._ref = xI
                    let u = ex(e).$document,
                      h = a.getLinkedNode({ reference: s, container: e, property: r })
                    if (h.error && u && u.state < kn.ComputedScopes) return (this._ref = void 0)
                    ;(this._ref = (l = h.node) !== null && l !== void 0 ? l : h.error), (this._nodeDescription = h.descr), u?.references.push(this)
                  } else if (this._ref === xI) throw new Error(`Cyclic reference resolution detected: ${a.astNodeLocator.getAstNodePath(e)}/${r} (symbol '${i}')`)
                  return si(this._ref) ? this._ref : void 0
                },
                get $nodeDescription() {
                  return this._nodeDescription
                },
                get error() {
                  return ap(this._ref) ? this._ref : void 0
                }
              }
            return s
          }
          getLinkedNode(e) {
            var r
            try {
              let n = this.getCandidate(e)
              if (ap(n)) return { error: n }
              let i = this.loadAstNode(n)
              return i ? { node: i, descr: n } : { descr: n, error: this.createLinkingError(e, n) }
            } catch (n) {
              console.error(`An error occurred while resolving reference to '${e.reference.$refText}':`, n)
              let i = (r = n.message) !== null && r !== void 0 ? r : String(n)
              return { error: Object.assign(Object.assign({}, e), { message: `An error occurred while resolving reference to '${e.reference.$refText}': ${i}` }) }
            }
          }
          loadAstNode(e) {
            if (e.node) return e.node
            let r = this.langiumDocuments().getDocument(e.documentUri)
            if (r) return this.astNodeLocator.getAstNode(r.parseResult.value, e.path)
          }
          createLinkingError(e, r) {
            let n = ex(e.container).$document
            n && n.state < kn.ComputedScopes && console.warn(`Attempted reference resolution before document reached ComputedScopes state (${n.uri}).`)
            let i = this.reflection.getReferenceType(e)
            return Object.assign(Object.assign({}, e), { message: `Could not resolve reference to ${i} named '${e.reference.$refText}'.`, targetDescription: r })
          }
        })
    })
  function oue(t) {
    return typeof t.name == 'string'
  }
  var Wx,
    TI = N(() => {
      'use strict'
      Fl()
      o(oue, 'isNamed')
      Wx = class {
        static {
          o(this, 'DefaultNameProvider')
        }
        getName(e) {
          if (oue(e)) return e.name
        }
        getNameNode(e) {
          return ox(e.$cstNode, 'name')
        }
      }
    })
  var qx,
    wI = N(() => {
      'use strict'
      Fl()
      Il()
      cs()
      Ol()
      Gs()
      Uc()
      qx = class {
        static {
          o(this, 'DefaultReferences')
        }
        constructor(e) {
          ;(this.nameProvider = e.references.NameProvider), (this.index = e.shared.workspace.IndexManager), (this.nodeLocator = e.workspace.AstNodeLocator)
        }
        findDeclaration(e) {
          if (e) {
            let r = XN(e),
              n = e.astNode
            if (r && n) {
              let i = n[r.feature]
              if (ya(i)) return i.ref
              if (Array.isArray(i)) {
                for (let a of i) if (ya(a) && a.$refNode && a.$refNode.offset <= e.offset && a.$refNode.end >= e.end) return a.ref
              }
            }
            if (n) {
              let i = this.nameProvider.getNameNode(n)
              if (i && (i === e || lN(e, i))) return n
            }
          }
        }
        findDeclarationNode(e) {
          let r = this.findDeclaration(e)
          if (r?.$cstNode) {
            let n = this.nameProvider.getNameNode(r)
            return n ?? r.$cstNode
          }
        }
        findReferences(e, r) {
          let n = []
          if (r.includeDeclaration) {
            let a = this.getReferenceToSelf(e)
            a && n.push(a)
          }
          let i = this.index.findAllReferences(e, this.nodeLocator.getAstNodePath(e))
          return r.documentUri && (i = i.filter(a => gs.equals(a.sourceUri, r.documentUri))), n.push(...i), en(n)
        }
        getReferenceToSelf(e) {
          let r = this.nameProvider.getNameNode(e)
          if (r) {
            let n = $a(e),
              i = this.nodeLocator.getAstNodePath(e)
            return { sourceUri: n.uri, sourcePath: i, targetUri: n.uri, targetPath: i, segment: op(r), local: !0 }
          }
        }
      }
    })
  var zl,
    _p,
    T1 = N(() => {
      'use strict'
      Gs()
      ;(zl = class {
        static {
          o(this, 'MultiMap')
        }
        constructor(e) {
          if (((this.map = new Map()), e)) for (let [r, n] of e) this.add(r, n)
        }
        get size() {
          return jm.sum(en(this.map.values()).map(e => e.length))
        }
        clear() {
          this.map.clear()
        }
        delete(e, r) {
          if (r === void 0) return this.map.delete(e)
          {
            let n = this.map.get(e)
            if (n) {
              let i = n.indexOf(r)
              if (i >= 0) return n.length === 1 ? this.map.delete(e) : n.splice(i, 1), !0
            }
            return !1
          }
        }
        get(e) {
          var r
          return (r = this.map.get(e)) !== null && r !== void 0 ? r : []
        }
        has(e, r) {
          if (r === void 0) return this.map.has(e)
          {
            let n = this.map.get(e)
            return n ? n.indexOf(r) >= 0 : !1
          }
        }
        add(e, r) {
          return this.map.has(e) ? this.map.get(e).push(r) : this.map.set(e, [r]), this
        }
        addAll(e, r) {
          return this.map.has(e) ? this.map.get(e).push(...r) : this.map.set(e, Array.from(r)), this
        }
        forEach(e) {
          this.map.forEach((r, n) => r.forEach(i => e(i, n, this)))
        }
        [Symbol.iterator]() {
          return this.entries().iterator()
        }
        entries() {
          return en(this.map.entries()).flatMap(([e, r]) => r.map(n => [e, n]))
        }
        keys() {
          return en(this.map.keys())
        }
        values() {
          return en(this.map.values()).flat()
        }
        entriesGroupedByKey() {
          return en(this.map.entries())
        }
      }),
        (_p = class {
          static {
            o(this, 'BiMap')
          }
          get size() {
            return this.map.size
          }
          constructor(e) {
            if (((this.map = new Map()), (this.inverse = new Map()), e)) for (let [r, n] of e) this.set(r, n)
          }
          clear() {
            this.map.clear(), this.inverse.clear()
          }
          set(e, r) {
            return this.map.set(e, r), this.inverse.set(r, e), this
          }
          get(e) {
            return this.map.get(e)
          }
          getKey(e) {
            return this.inverse.get(e)
          }
          delete(e) {
            let r = this.map.get(e)
            return r !== void 0 ? (this.map.delete(e), this.inverse.delete(r), !0) : !1
          }
        })
    })
  var Yx,
    kI = N(() => {
      'use strict'
      Ko()
      cs()
      T1()
      Qo()
      Yx = class {
        static {
          o(this, 'DefaultScopeComputation')
        }
        constructor(e) {
          ;(this.nameProvider = e.references.NameProvider), (this.descriptions = e.workspace.AstNodeDescriptionProvider)
        }
        async computeExports(e, r = yr.CancellationToken.None) {
          return this.computeExportsForNode(e.parseResult.value, e, void 0, r)
        }
        async computeExportsForNode(e, r, n = tx, i = yr.CancellationToken.None) {
          let a = []
          this.exportNode(e, a, r)
          for (let s of n(e)) await wi(i), this.exportNode(s, a, r)
          return a
        }
        exportNode(e, r, n) {
          let i = this.nameProvider.getName(e)
          i && r.push(this.descriptions.createDescription(e, i, n))
        }
        async computeLocalScopes(e, r = yr.CancellationToken.None) {
          let n = e.parseResult.value,
            i = new zl()
          for (let a of Bc(n)) await wi(r), this.processNode(a, e, i)
          return i
        }
        processNode(e, r, n) {
          let i = e.$container
          if (i) {
            let a = this.nameProvider.getName(e)
            a && n.add(i, this.descriptions.createDescription(e, a, r))
          }
        }
      }
    })
  var w1,
    Xx,
    q$e,
    EI = N(() => {
      'use strict'
      Gs()
      ;(w1 = class {
        static {
          o(this, 'StreamScope')
        }
        constructor(e, r, n) {
          var i
          ;(this.elements = e), (this.outerScope = r), (this.caseInsensitive = (i = n?.caseInsensitive) !== null && i !== void 0 ? i : !1)
        }
        getAllElements() {
          return this.outerScope ? this.elements.concat(this.outerScope.getAllElements()) : this.elements
        }
        getElement(e) {
          let r = this.caseInsensitive ? this.elements.find(n => n.name.toLowerCase() === e.toLowerCase()) : this.elements.find(n => n.name === e)
          if (r) return r
          if (this.outerScope) return this.outerScope.getElement(e)
        }
      }),
        (Xx = class {
          static {
            o(this, 'MapScope')
          }
          constructor(e, r, n) {
            var i
            ;(this.elements = new Map()), (this.caseInsensitive = (i = n?.caseInsensitive) !== null && i !== void 0 ? i : !1)
            for (let a of e) {
              let s = this.caseInsensitive ? a.name.toLowerCase() : a.name
              this.elements.set(s, a)
            }
            this.outerScope = r
          }
          getElement(e) {
            let r = this.caseInsensitive ? e.toLowerCase() : e,
              n = this.elements.get(r)
            if (n) return n
            if (this.outerScope) return this.outerScope.getElement(e)
          }
          getAllElements() {
            let e = en(this.elements.values())
            return this.outerScope && (e = e.concat(this.outerScope.getAllElements())), e
          }
        }),
        (q$e = {
          getElement() {},
          getAllElements() {
            return H2
          }
        })
    })
  var k1,
    jx,
    Dp,
    UE,
    E1,
    HE = N(() => {
      'use strict'
      ;(k1 = class {
        static {
          o(this, 'DisposableCache')
        }
        constructor() {
          ;(this.toDispose = []), (this.isDisposed = !1)
        }
        onDispose(e) {
          this.toDispose.push(e)
        }
        dispose() {
          this.throwIfDisposed(), this.clear(), (this.isDisposed = !0), this.toDispose.forEach(e => e.dispose())
        }
        throwIfDisposed() {
          if (this.isDisposed) throw new Error('This cache has already been disposed')
        }
      }),
        (jx = class extends k1 {
          static {
            o(this, 'SimpleCache')
          }
          constructor() {
            super(...arguments), (this.cache = new Map())
          }
          has(e) {
            return this.throwIfDisposed(), this.cache.has(e)
          }
          set(e, r) {
            this.throwIfDisposed(), this.cache.set(e, r)
          }
          get(e, r) {
            if ((this.throwIfDisposed(), this.cache.has(e))) return this.cache.get(e)
            if (r) {
              let n = r()
              return this.cache.set(e, n), n
            } else return
          }
          delete(e) {
            return this.throwIfDisposed(), this.cache.delete(e)
          }
          clear() {
            this.throwIfDisposed(), this.cache.clear()
          }
        }),
        (Dp = class extends k1 {
          static {
            o(this, 'ContextCache')
          }
          constructor(e) {
            super(), (this.cache = new Map()), (this.converter = e ?? (r => r))
          }
          has(e, r) {
            return this.throwIfDisposed(), this.cacheForContext(e).has(r)
          }
          set(e, r, n) {
            this.throwIfDisposed(), this.cacheForContext(e).set(r, n)
          }
          get(e, r, n) {
            this.throwIfDisposed()
            let i = this.cacheForContext(e)
            if (i.has(r)) return i.get(r)
            if (n) {
              let a = n()
              return i.set(r, a), a
            } else return
          }
          delete(e, r) {
            return this.throwIfDisposed(), this.cacheForContext(e).delete(r)
          }
          clear(e) {
            if ((this.throwIfDisposed(), e)) {
              let r = this.converter(e)
              this.cache.delete(r)
            } else this.cache.clear()
          }
          cacheForContext(e) {
            let r = this.converter(e),
              n = this.cache.get(r)
            return n || ((n = new Map()), this.cache.set(r, n)), n
          }
        }),
        (UE = class extends Dp {
          static {
            o(this, 'DocumentCache')
          }
          constructor(e, r) {
            super(n => n.toString()),
              r
                ? (this.toDispose.push(
                    e.workspace.DocumentBuilder.onDocumentPhase(r, n => {
                      this.clear(n.uri.toString())
                    })
                  ),
                  this.toDispose.push(
                    e.workspace.DocumentBuilder.onUpdate((n, i) => {
                      for (let a of i) this.clear(a)
                    })
                  ))
                : this.toDispose.push(
                    e.workspace.DocumentBuilder.onUpdate((n, i) => {
                      let a = n.concat(i)
                      for (let s of a) this.clear(s)
                    })
                  )
          }
        }),
        (E1 = class extends jx {
          static {
            o(this, 'WorkspaceCache')
          }
          constructor(e, r) {
            super(),
              r
                ? (this.toDispose.push(
                    e.workspace.DocumentBuilder.onBuildPhase(r, () => {
                      this.clear()
                    })
                  ),
                  this.toDispose.push(
                    e.workspace.DocumentBuilder.onUpdate((n, i) => {
                      i.length > 0 && this.clear()
                    })
                  ))
                : this.toDispose.push(
                    e.workspace.DocumentBuilder.onUpdate(() => {
                      this.clear()
                    })
                  )
          }
        })
    })
  var Kx,
    SI = N(() => {
      'use strict'
      EI()
      cs()
      Gs()
      HE()
      Kx = class {
        static {
          o(this, 'DefaultScopeProvider')
        }
        constructor(e) {
          ;(this.reflection = e.shared.AstReflection),
            (this.nameProvider = e.references.NameProvider),
            (this.descriptions = e.workspace.AstNodeDescriptionProvider),
            (this.indexManager = e.shared.workspace.IndexManager),
            (this.globalScopeCache = new E1(e.shared))
        }
        getScope(e) {
          let r = [],
            n = this.reflection.getReferenceType(e),
            i = $a(e.container).precomputedScopes
          if (i) {
            let s = e.container
            do {
              let l = i.get(s)
              l.length > 0 && r.push(en(l).filter(u => this.reflection.isSubtype(u.type, n))), (s = s.$container)
            } while (s)
          }
          let a = this.getGlobalScope(n, e)
          for (let s = r.length - 1; s >= 0; s--) a = this.createScope(r[s], a)
          return a
        }
        createScope(e, r, n) {
          return new w1(en(e), r, n)
        }
        createScopeForNodes(e, r, n) {
          let i = en(e)
            .map(a => {
              let s = this.nameProvider.getName(a)
              if (s) return this.descriptions.createDescription(a, s)
            })
            .nonNullable()
          return new w1(i, r, n)
        }
        getGlobalScope(e, r) {
          return this.globalScopeCache.get(e, () => new Xx(this.indexManager.allElements(e)))
        }
      }
    })
  function CI(t) {
    return typeof t.$comment == 'string'
  }
  function lue(t) {
    return typeof t == 'object' && !!t && ('$ref' in t || '$error' in t)
  }
  var Qx,
    WE = N(() => {
      'use strict'
      vI()
      Il()
      cs()
      Fl()
      o(CI, 'isAstNodeWithComment')
      o(lue, 'isIntermediateReference')
      Qx = class {
        static {
          o(this, 'DefaultJsonSerializer')
        }
        constructor(e) {
          ;(this.ignoreProperties = new Set(['$container', '$containerProperty', '$containerIndex', '$document', '$cstNode'])),
            (this.langiumDocuments = e.shared.workspace.LangiumDocuments),
            (this.astNodeLocator = e.workspace.AstNodeLocator),
            (this.nameProvider = e.references.NameProvider),
            (this.commentProvider = e.documentation.CommentProvider)
        }
        serialize(e, r) {
          let n = r ?? {},
            i = r?.replacer,
            a = o((l, u) => this.replacer(l, u, n), 'defaultReplacer'),
            s = i ? (l, u) => i(l, u, a) : a
          try {
            return (this.currentDocument = $a(e)), JSON.stringify(e, s, r?.space)
          } finally {
            this.currentDocument = void 0
          }
        }
        deserialize(e, r) {
          let n = r ?? {},
            i = JSON.parse(e)
          return this.linkNode(i, i, n), i
        }
        replacer(e, r, { refText: n, sourceText: i, textRegions: a, comments: s, uriConverter: l }) {
          var u, h, f, d
          if (!this.ignoreProperties.has(e))
            if (ya(r)) {
              let p = r.ref,
                m = n ? r.$refText : void 0
              if (p) {
                let g = $a(p),
                  y = ''
                this.currentDocument && this.currentDocument !== g && (l ? (y = l(g.uri, r)) : (y = g.uri.toString()))
                let v = this.astNodeLocator.getAstNodePath(p)
                return { $ref: `${y}#${v}`, $refText: m }
              } else return { $error: (h = (u = r.error) === null || u === void 0 ? void 0 : u.message) !== null && h !== void 0 ? h : 'Could not resolve reference', $refText: m }
            } else if (si(r)) {
              let p
              if (
                (a &&
                  ((p = this.addAstNodeRegionWithAssignmentsTo(Object.assign({}, r))),
                  (!e || r.$document) && p?.$textRegion && (p.$textRegion.documentURI = (f = this.currentDocument) === null || f === void 0 ? void 0 : f.uri.toString())),
                i && !e && (p ?? (p = Object.assign({}, r)), (p.$sourceText = (d = r.$cstNode) === null || d === void 0 ? void 0 : d.text)),
                s)
              ) {
                p ?? (p = Object.assign({}, r))
                let m = this.commentProvider.getComment(r)
                m && (p.$comment = m.replace(/\r/g, ''))
              }
              return p ?? r
            } else return r
        }
        addAstNodeRegionWithAssignmentsTo(e) {
          let r = o(n => ({ offset: n.offset, end: n.end, length: n.length, range: n.range }), 'createDocumentSegment')
          if (e.$cstNode) {
            let n = (e.$textRegion = r(e.$cstNode)),
              i = (n.assignments = {})
            return (
              Object.keys(e)
                .filter(a => !a.startsWith('$'))
                .forEach(a => {
                  let s = HN(e.$cstNode, a).map(r)
                  s.length !== 0 && (i[a] = s)
                }),
              e
            )
          }
        }
        linkNode(e, r, n, i, a, s) {
          for (let [u, h] of Object.entries(e))
            if (Array.isArray(h))
              for (let f = 0; f < h.length; f++) {
                let d = h[f]
                lue(d) ? (h[f] = this.reviveReference(e, u, r, d, n)) : si(d) && this.linkNode(d, r, n, e, u, f)
              }
            else lue(h) ? (e[u] = this.reviveReference(e, u, r, h, n)) : si(h) && this.linkNode(h, r, n, e, u)
          let l = e
          ;(l.$container = i), (l.$containerProperty = a), (l.$containerIndex = s)
        }
        reviveReference(e, r, n, i, a) {
          let s = i.$refText,
            l = i.$error
          if (i.$ref) {
            let u = this.getRefNode(n, i.$ref, a.uriConverter)
            if (si(u)) return s || (s = this.nameProvider.getName(u)), { $refText: s ?? '', ref: u }
            l = u
          }
          if (l) {
            let u = { $refText: s ?? '' }
            return (u.error = { container: e, property: r, message: l, reference: u }), u
          } else return
        }
        getRefNode(e, r, n) {
          try {
            let i = r.indexOf('#')
            if (i === 0) {
              let u = this.astNodeLocator.getAstNode(e, r.substring(1))
              return u || 'Could not resolve path: ' + r
            }
            if (i < 0) {
              let u = n ? n(r) : ms.parse(r),
                h = this.langiumDocuments.getDocument(u)
              return h ? h.parseResult.value : 'Could not find document for URI: ' + r
            }
            let a = n ? n(r.substring(0, i)) : ms.parse(r.substring(0, i)),
              s = this.langiumDocuments.getDocument(a)
            if (!s) return 'Could not find document for URI: ' + r
            if (i === r.length - 1) return s.parseResult.value
            let l = this.astNodeLocator.getAstNode(s.parseResult.value, r.substring(i + 1))
            return l || 'Could not resolve URI: ' + r
          } catch (i) {
            return String(i)
          }
        }
      }
    })
  var Zx,
    AI = N(() => {
      'use strict'
      Uc()
      Zx = class {
        static {
          o(this, 'DefaultServiceRegistry')
        }
        get map() {
          return this.fileExtensionMap
        }
        constructor(e) {
          ;(this.languageIdMap = new Map()), (this.fileExtensionMap = new Map()), (this.textDocuments = e?.workspace.TextDocuments)
        }
        register(e) {
          let r = e.LanguageMetaData
          for (let n of r.fileExtensions)
            this.fileExtensionMap.has(n) && console.warn(`The file extension ${n} is used by multiple languages. It is now assigned to '${r.languageId}'.`),
              this.fileExtensionMap.set(n, e)
          this.languageIdMap.set(r.languageId, e), this.languageIdMap.size === 1 ? (this.singleton = e) : (this.singleton = void 0)
        }
        getServices(e) {
          var r, n
          if (this.singleton !== void 0) return this.singleton
          if (this.languageIdMap.size === 0) throw new Error('The service registry is empty. Use `register` to register the services of a language.')
          let i = (n = (r = this.textDocuments) === null || r === void 0 ? void 0 : r.get(e)) === null || n === void 0 ? void 0 : n.languageId
          if (i !== void 0) {
            let l = this.languageIdMap.get(i)
            if (l) return l
          }
          let a = gs.extname(e),
            s = this.fileExtensionMap.get(a)
          if (!s)
            throw i
              ? new Error(`The service registry contains no services for the extension '${a}' for language '${i}'.`)
              : new Error(`The service registry contains no services for the extension '${a}'.`)
          return s
        }
        hasServices(e) {
          try {
            return this.getServices(e), !0
          } catch {
            return !1
          }
        }
        get all() {
          return Array.from(this.languageIdMap.values())
        }
      }
    })
  function Lp(t) {
    return { code: t }
  }
  var S1,
    Jx,
    eb = N(() => {
      'use strict'
      po()
      T1()
      Qo()
      Gs()
      o(Lp, 'diagnosticData')
      ;(function (t) {
        t.all = ['fast', 'slow', 'built-in']
      })(S1 || (S1 = {}))
      Jx = class {
        static {
          o(this, 'ValidationRegistry')
        }
        constructor(e) {
          ;(this.entries = new zl()), (this.entriesBefore = []), (this.entriesAfter = []), (this.reflection = e.shared.AstReflection)
        }
        register(e, r = this, n = 'fast') {
          if (n === 'built-in') throw new Error("The 'built-in' category is reserved for lexer, parser, and linker errors.")
          for (let [i, a] of Object.entries(e)) {
            let s = a
            if (Array.isArray(s))
              for (let l of s) {
                let u = { check: this.wrapValidationException(l, r), category: n }
                this.addEntry(i, u)
              }
            else if (typeof s == 'function') {
              let l = { check: this.wrapValidationException(s, r), category: n }
              this.addEntry(i, l)
            } else Oc(s)
          }
        }
        wrapValidationException(e, r) {
          return async (n, i, a) => {
            await this.handleException(() => e.call(r, n, i, a), 'An error occurred during validation', i, n)
          }
        }
        async handleException(e, r, n, i) {
          try {
            await e()
          } catch (a) {
            if (Vc(a)) throw a
            console.error(`${r}:`, a), a instanceof Error && a.stack && console.error(a.stack)
            let s = a instanceof Error ? a.message : String(a)
            n('error', `${r}: ${s}`, { node: i })
          }
        }
        addEntry(e, r) {
          if (e === 'AstNode') {
            this.entries.add('AstNode', r)
            return
          }
          for (let n of this.reflection.getAllSubTypes(e)) this.entries.add(n, r)
        }
        getChecks(e, r) {
          let n = en(this.entries.get(e)).concat(this.entries.get('AstNode'))
          return r && (n = n.filter(i => r.includes(i.category))), n.map(i => i.check)
        }
        registerBeforeDocument(e, r = this) {
          this.entriesBefore.push(this.wrapPreparationException(e, 'An error occurred during set-up of the validation', r))
        }
        registerAfterDocument(e, r = this) {
          this.entriesAfter.push(this.wrapPreparationException(e, 'An error occurred during tear-down of the validation', r))
        }
        wrapPreparationException(e, r, n) {
          return async (i, a, s, l) => {
            await this.handleException(() => e.call(n, i, a, s, l), r, a, i)
          }
        }
        get checksBefore() {
          return this.entriesBefore
        }
        get checksAfter() {
          return this.entriesAfter
        }
      }
    })
  function cue(t) {
    if (t.range) return t.range
    let e
    return (
      typeof t.property == 'string' ? (e = ox(t.node.$cstNode, t.property, t.index)) : typeof t.keyword == 'string' && (e = qN(t.node.$cstNode, t.keyword, t.index)),
      e ?? (e = t.node.$cstNode),
      e ? e.range : { start: { line: 0, character: 0 }, end: { line: 0, character: 0 } }
    )
  }
  function qE(t) {
    switch (t) {
      case 'error':
        return 1
      case 'warning':
        return 2
      case 'info':
        return 3
      case 'hint':
        return 4
      default:
        throw new Error('Invalid diagnostic severity: ' + t)
    }
  }
  function uue(t) {
    switch (t) {
      case 'error':
        return Lp(Zo.LexingError)
      case 'warning':
        return Lp(Zo.LexingWarning)
      case 'info':
        return Lp(Zo.LexingInfo)
      case 'hint':
        return Lp(Zo.LexingHint)
      default:
        throw new Error('Invalid diagnostic severity: ' + t)
    }
  }
  var tb,
    Zo,
    _I = N(() => {
      'use strict'
      Ko()
      Fl()
      cs()
      Ol()
      Qo()
      eb()
      tb = class {
        static {
          o(this, 'DefaultDocumentValidator')
        }
        constructor(e) {
          ;(this.validationRegistry = e.validation.ValidationRegistry), (this.metadata = e.LanguageMetaData)
        }
        async validateDocument(e, r = {}, n = yr.CancellationToken.None) {
          let i = e.parseResult,
            a = []
          if (
            (await wi(n),
            (!r.categories || r.categories.includes('built-in')) &&
              (this.processLexingErrors(i, a, r),
              (r.stopAfterLexingErrors &&
                a.some(s => {
                  var l
                  return ((l = s.data) === null || l === void 0 ? void 0 : l.code) === Zo.LexingError
                })) ||
                (this.processParsingErrors(i, a, r),
                r.stopAfterParsingErrors &&
                  a.some(s => {
                    var l
                    return ((l = s.data) === null || l === void 0 ? void 0 : l.code) === Zo.ParsingError
                  })) ||
                (this.processLinkingErrors(e, a, r),
                r.stopAfterLinkingErrors &&
                  a.some(s => {
                    var l
                    return ((l = s.data) === null || l === void 0 ? void 0 : l.code) === Zo.LinkingError
                  }))))
          )
            return a
          try {
            a.push(...(await this.validateAst(i.value, r, n)))
          } catch (s) {
            if (Vc(s)) throw s
            console.error('An error occurred during validation:', s)
          }
          return await wi(n), a
        }
        processLexingErrors(e, r, n) {
          var i, a, s
          let l = [...e.lexerErrors, ...((a = (i = e.lexerReport) === null || i === void 0 ? void 0 : i.diagnostics) !== null && a !== void 0 ? a : [])]
          for (let u of l) {
            let h = (s = u.severity) !== null && s !== void 0 ? s : 'error',
              f = {
                severity: qE(h),
                range: { start: { line: u.line - 1, character: u.column - 1 }, end: { line: u.line - 1, character: u.column + u.length - 1 } },
                message: u.message,
                data: uue(h),
                source: this.getSource()
              }
            r.push(f)
          }
        }
        processParsingErrors(e, r, n) {
          for (let i of e.parserErrors) {
            let a
            if (isNaN(i.token.startOffset)) {
              if ('previousToken' in i) {
                let s = i.previousToken
                if (isNaN(s.startOffset)) {
                  let l = { line: 0, character: 0 }
                  a = { start: l, end: l }
                } else {
                  let l = { line: s.endLine - 1, character: s.endColumn }
                  a = { start: l, end: l }
                }
              }
            } else a = Km(i.token)
            if (a) {
              let s = { severity: qE('error'), range: a, message: i.message, data: Lp(Zo.ParsingError), source: this.getSource() }
              r.push(s)
            }
          }
        }
        processLinkingErrors(e, r, n) {
          for (let i of e.references) {
            let a = i.error
            if (a) {
              let s = {
                node: a.container,
                property: a.property,
                index: a.index,
                data: { code: Zo.LinkingError, containerType: a.container.$type, property: a.property, refText: a.reference.$refText }
              }
              r.push(this.toDiagnostic('error', a.message, s))
            }
          }
        }
        async validateAst(e, r, n = yr.CancellationToken.None) {
          let i = [],
            a = o((s, l, u) => {
              i.push(this.toDiagnostic(s, l, u))
            }, 'acceptor')
          return await this.validateAstBefore(e, r, a, n), await this.validateAstNodes(e, r, a, n), await this.validateAstAfter(e, r, a, n), i
        }
        async validateAstBefore(e, r, n, i = yr.CancellationToken.None) {
          var a
          let s = this.validationRegistry.checksBefore
          for (let l of s) await wi(i), await l(e, n, (a = r.categories) !== null && a !== void 0 ? a : [], i)
        }
        async validateAstNodes(e, r, n, i = yr.CancellationToken.None) {
          await Promise.all(
            jo(e).map(async a => {
              await wi(i)
              let s = this.validationRegistry.getChecks(a.$type, r.categories)
              for (let l of s) await l(a, n, i)
            })
          )
        }
        async validateAstAfter(e, r, n, i = yr.CancellationToken.None) {
          var a
          let s = this.validationRegistry.checksAfter
          for (let l of s) await wi(i), await l(e, n, (a = r.categories) !== null && a !== void 0 ? a : [], i)
        }
        toDiagnostic(e, r, n) {
          return {
            message: r,
            range: cue(n),
            severity: qE(e),
            code: n.code,
            codeDescription: n.codeDescription,
            tags: n.tags,
            relatedInformation: n.relatedInformation,
            data: n.data,
            source: this.getSource()
          }
        }
        getSource() {
          return this.metadata.languageId
        }
      }
      o(cue, 'getDiagnosticRange')
      o(qE, 'toDiagnosticSeverity')
      o(uue, 'toDiagnosticData')
      ;(function (t) {
        ;(t.LexingError = 'lexing-error'),
          (t.LexingWarning = 'lexing-warning'),
          (t.LexingInfo = 'lexing-info'),
          (t.LexingHint = 'lexing-hint'),
          (t.ParsingError = 'parsing-error'),
          (t.LinkingError = 'linking-error')
      })(Zo || (Zo = {}))
    })
  var rb,
    nb,
    DI = N(() => {
      'use strict'
      Ko()
      Il()
      cs()
      Ol()
      Qo()
      Uc()
      ;(rb = class {
        static {
          o(this, 'DefaultAstNodeDescriptionProvider')
        }
        constructor(e) {
          ;(this.astNodeLocator = e.workspace.AstNodeLocator), (this.nameProvider = e.references.NameProvider)
        }
        createDescription(e, r, n) {
          let i = n ?? $a(e)
          r ?? (r = this.nameProvider.getName(e))
          let a = this.astNodeLocator.getAstNodePath(e)
          if (!r) throw new Error(`Node at path ${a} has no name.`)
          let s,
            l = o(() => {
              var u
              return s ?? (s = op((u = this.nameProvider.getNameNode(e)) !== null && u !== void 0 ? u : e.$cstNode))
            }, 'nameSegmentGetter')
          return {
            node: e,
            name: r,
            get nameSegment() {
              return l()
            },
            selectionSegment: op(e.$cstNode),
            type: e.$type,
            documentUri: i.uri,
            path: a
          }
        }
      }),
        (nb = class {
          static {
            o(this, 'DefaultReferenceDescriptionProvider')
          }
          constructor(e) {
            this.nodeLocator = e.workspace.AstNodeLocator
          }
          async createDescriptions(e, r = yr.CancellationToken.None) {
            let n = [],
              i = e.parseResult.value
            for (let a of jo(i))
              await wi(r),
                Pg(a)
                  .filter(s => !ap(s))
                  .forEach(s => {
                    let l = this.createDescription(s)
                    l && n.push(l)
                  })
            return n
          }
          createDescription(e) {
            let r = e.reference.$nodeDescription,
              n = e.reference.$refNode
            if (!r || !n) return
            let i = $a(e.container).uri
            return {
              sourceUri: i,
              sourcePath: this.nodeLocator.getAstNodePath(e.container),
              targetUri: r.documentUri,
              targetPath: r.path,
              segment: op(n),
              local: gs.equals(r.documentUri, i)
            }
          }
        })
    })
  var ib,
    LI = N(() => {
      'use strict'
      ib = class {
        static {
          o(this, 'DefaultAstNodeLocator')
        }
        constructor() {
          ;(this.segmentSeparator = '/'), (this.indexSeparator = '@')
        }
        getAstNodePath(e) {
          if (e.$container) {
            let r = this.getAstNodePath(e.$container),
              n = this.getPathSegment(e)
            return r + this.segmentSeparator + n
          }
          return ''
        }
        getPathSegment({ $containerProperty: e, $containerIndex: r }) {
          if (!e) throw new Error("Missing '$containerProperty' in AST node.")
          return r !== void 0 ? e + this.indexSeparator + r : e
        }
        getAstNode(e, r) {
          return r.split(this.segmentSeparator).reduce((i, a) => {
            if (!i || a.length === 0) return i
            let s = a.indexOf(this.indexSeparator)
            if (s > 0) {
              let l = a.substring(0, s),
                u = parseInt(a.substring(s + 1)),
                h = i[l]
              return h?.[u]
            }
            return i[a]
          }, e)
        }
      }
    })
  var Zn = {}
  var YE = N(() => {
    'use strict'
    Cr(Zn, Aa(dI(), 1))
  })
  var ab,
    RI = N(() => {
      'use strict'
      YE()
      Qo()
      ab = class {
        static {
          o(this, 'DefaultConfigurationProvider')
        }
        constructor(e) {
          ;(this._ready = new ps()),
            (this.settings = {}),
            (this.workspaceConfig = !1),
            (this.onConfigurationSectionUpdateEmitter = new Zn.Emitter()),
            (this.serviceRegistry = e.ServiceRegistry)
        }
        get ready() {
          return this._ready.promise
        }
        initialize(e) {
          var r, n
          this.workspaceConfig = (n = (r = e.capabilities.workspace) === null || r === void 0 ? void 0 : r.configuration) !== null && n !== void 0 ? n : !1
        }
        async initialized(e) {
          if (this.workspaceConfig) {
            if (e.register) {
              let r = this.serviceRegistry.all
              e.register({ section: r.map(n => this.toSectionName(n.LanguageMetaData.languageId)) })
            }
            if (e.fetchConfiguration) {
              let r = this.serviceRegistry.all.map(i => ({ section: this.toSectionName(i.LanguageMetaData.languageId) })),
                n = await e.fetchConfiguration(r)
              r.forEach((i, a) => {
                this.updateSectionConfiguration(i.section, n[a])
              })
            }
          }
          this._ready.resolve()
        }
        updateConfiguration(e) {
          e.settings &&
            Object.keys(e.settings).forEach(r => {
              let n = e.settings[r]
              this.updateSectionConfiguration(r, n), this.onConfigurationSectionUpdateEmitter.fire({ section: r, configuration: n })
            })
        }
        updateSectionConfiguration(e, r) {
          this.settings[e] = r
        }
        async getConfiguration(e, r) {
          await this.ready
          let n = this.toSectionName(e)
          if (this.settings[n]) return this.settings[n][r]
        }
        toSectionName(e) {
          return `${e}`
        }
        get onConfigurationSectionUpdate() {
          return this.onConfigurationSectionUpdateEmitter.event
        }
      }
    })
  var vf,
    NI = N(() => {
      'use strict'
      ;(function (t) {
        function e(r) {
          return { dispose: o(async () => await r(), 'dispose') }
        }
        o(e, 'create'), (t.create = e)
      })(vf || (vf = {}))
    })
  var sb,
    MI = N(() => {
      'use strict'
      Ko()
      NI()
      T1()
      Qo()
      Gs()
      eb()
      b1()
      sb = class {
        static {
          o(this, 'DefaultDocumentBuilder')
        }
        constructor(e) {
          ;(this.updateBuildOptions = { validation: { categories: ['built-in', 'fast'] } }),
            (this.updateListeners = []),
            (this.buildPhaseListeners = new zl()),
            (this.documentPhaseListeners = new zl()),
            (this.buildState = new Map()),
            (this.documentBuildWaiters = new Map()),
            (this.currentState = kn.Changed),
            (this.langiumDocuments = e.workspace.LangiumDocuments),
            (this.langiumDocumentFactory = e.workspace.LangiumDocumentFactory),
            (this.textDocuments = e.workspace.TextDocuments),
            (this.indexManager = e.workspace.IndexManager),
            (this.serviceRegistry = e.ServiceRegistry)
        }
        async build(e, r = {}, n = yr.CancellationToken.None) {
          var i, a
          for (let s of e) {
            let l = s.uri.toString()
            if (s.state === kn.Validated) {
              if (typeof r.validation == 'boolean' && r.validation) (s.state = kn.IndexedReferences), (s.diagnostics = void 0), this.buildState.delete(l)
              else if (typeof r.validation == 'object') {
                let u = this.buildState.get(l),
                  h = (i = u?.result) === null || i === void 0 ? void 0 : i.validationChecks
                if (h) {
                  let d = ((a = r.validation.categories) !== null && a !== void 0 ? a : S1.all).filter(p => !h.includes(p))
                  d.length > 0 &&
                    (this.buildState.set(l, { completed: !1, options: { validation: Object.assign(Object.assign({}, r.validation), { categories: d }) }, result: u.result }),
                    (s.state = kn.IndexedReferences))
                }
              }
            } else this.buildState.delete(l)
          }
          ;(this.currentState = kn.Changed),
            await this.emitUpdate(
              e.map(s => s.uri),
              []
            ),
            await this.buildDocuments(e, r, n)
        }
        async update(e, r, n = yr.CancellationToken.None) {
          this.currentState = kn.Changed
          for (let s of r) this.langiumDocuments.deleteDocument(s), this.buildState.delete(s.toString()), this.indexManager.remove(s)
          for (let s of e) {
            if (!this.langiumDocuments.invalidateDocument(s)) {
              let u = this.langiumDocumentFactory.fromModel({ $type: 'INVALID' }, s)
              ;(u.state = kn.Changed), this.langiumDocuments.addDocument(u)
            }
            this.buildState.delete(s.toString())
          }
          let i = en(e)
            .concat(r)
            .map(s => s.toString())
            .toSet()
          this.langiumDocuments.all
            .filter(s => !i.has(s.uri.toString()) && this.shouldRelink(s, i))
            .forEach(s => {
              this.serviceRegistry.getServices(s.uri).references.Linker.unlink(s), (s.state = Math.min(s.state, kn.ComputedScopes)), (s.diagnostics = void 0)
            }),
            await this.emitUpdate(e, r),
            await wi(n)
          let a = this.sortDocuments(
            this.langiumDocuments.all
              .filter(s => {
                var l
                return s.state < kn.Linked || !(!((l = this.buildState.get(s.uri.toString())) === null || l === void 0) && l.completed)
              })
              .toArray()
          )
          await this.buildDocuments(a, this.updateBuildOptions, n)
        }
        async emitUpdate(e, r) {
          await Promise.all(this.updateListeners.map(n => n(e, r)))
        }
        sortDocuments(e) {
          let r = 0,
            n = e.length - 1
          for (; r < n; ) {
            for (; r < e.length && this.hasTextDocument(e[r]); ) r++
            for (; n >= 0 && !this.hasTextDocument(e[n]); ) n--
            r < n && ([e[r], e[n]] = [e[n], e[r]])
          }
          return e
        }
        hasTextDocument(e) {
          var r
          return !!(!((r = this.textDocuments) === null || r === void 0) && r.get(e.uri))
        }
        shouldRelink(e, r) {
          return e.references.some(n => n.error !== void 0) ? !0 : this.indexManager.isAffected(e, r)
        }
        onUpdate(e) {
          return (
            this.updateListeners.push(e),
            vf.create(() => {
              let r = this.updateListeners.indexOf(e)
              r >= 0 && this.updateListeners.splice(r, 1)
            })
          )
        }
        async buildDocuments(e, r, n) {
          this.prepareBuild(e, r),
            await this.runCancelable(e, kn.Parsed, n, a => this.langiumDocumentFactory.update(a, n)),
            await this.runCancelable(e, kn.IndexedContent, n, a => this.indexManager.updateContent(a, n)),
            await this.runCancelable(e, kn.ComputedScopes, n, async a => {
              let s = this.serviceRegistry.getServices(a.uri).references.ScopeComputation
              a.precomputedScopes = await s.computeLocalScopes(a, n)
            }),
            await this.runCancelable(e, kn.Linked, n, a => this.serviceRegistry.getServices(a.uri).references.Linker.link(a, n)),
            await this.runCancelable(e, kn.IndexedReferences, n, a => this.indexManager.updateReferences(a, n))
          let i = e.filter(a => this.shouldValidate(a))
          await this.runCancelable(i, kn.Validated, n, a => this.validate(a, n))
          for (let a of e) {
            let s = this.buildState.get(a.uri.toString())
            s && (s.completed = !0)
          }
        }
        prepareBuild(e, r) {
          for (let n of e) {
            let i = n.uri.toString(),
              a = this.buildState.get(i)
            ;(!a || a.completed) && this.buildState.set(i, { completed: !1, options: r, result: a?.result })
          }
        }
        async runCancelable(e, r, n, i) {
          let a = e.filter(l => l.state < r)
          for (let l of a) await wi(n), await i(l), (l.state = r), await this.notifyDocumentPhase(l, r, n)
          let s = e.filter(l => l.state === r)
          await this.notifyBuildPhase(s, r, n), (this.currentState = r)
        }
        onBuildPhase(e, r) {
          return (
            this.buildPhaseListeners.add(e, r),
            vf.create(() => {
              this.buildPhaseListeners.delete(e, r)
            })
          )
        }
        onDocumentPhase(e, r) {
          return (
            this.documentPhaseListeners.add(e, r),
            vf.create(() => {
              this.documentPhaseListeners.delete(e, r)
            })
          )
        }
        waitUntil(e, r, n) {
          let i
          if ((r && 'path' in r ? (i = r) : (n = r), n ?? (n = yr.CancellationToken.None), i)) {
            let a = this.langiumDocuments.getDocument(i)
            if (a && a.state > e) return Promise.resolve(i)
          }
          return this.currentState >= e
            ? Promise.resolve(void 0)
            : n.isCancellationRequested
              ? Promise.reject(Gc)
              : new Promise((a, s) => {
                  let l = this.onBuildPhase(e, () => {
                      if ((l.dispose(), u.dispose(), i)) {
                        let h = this.langiumDocuments.getDocument(i)
                        a(h?.uri)
                      } else a(void 0)
                    }),
                    u = n.onCancellationRequested(() => {
                      l.dispose(), u.dispose(), s(Gc)
                    })
                })
        }
        async notifyDocumentPhase(e, r, n) {
          let a = this.documentPhaseListeners.get(r).slice()
          for (let s of a)
            try {
              await s(e, n)
            } catch (l) {
              if (!Vc(l)) throw l
            }
        }
        async notifyBuildPhase(e, r, n) {
          if (e.length === 0) return
          let a = this.buildPhaseListeners.get(r).slice()
          for (let s of a) await wi(n), await s(e, n)
        }
        shouldValidate(e) {
          return !!this.getBuildOptions(e).validation
        }
        async validate(e, r) {
          var n, i
          let a = this.serviceRegistry.getServices(e.uri).validation.DocumentValidator,
            s = this.getBuildOptions(e).validation,
            l = typeof s == 'object' ? s : void 0,
            u = await a.validateDocument(e, l, r)
          e.diagnostics ? e.diagnostics.push(...u) : (e.diagnostics = u)
          let h = this.buildState.get(e.uri.toString())
          if (h) {
            ;((n = h.result) !== null && n !== void 0) || (h.result = {})
            let f = (i = l?.categories) !== null && i !== void 0 ? i : S1.all
            h.result.validationChecks ? h.result.validationChecks.push(...f) : (h.result.validationChecks = [...f])
          }
        }
        getBuildOptions(e) {
          var r, n
          return (n = (r = this.buildState.get(e.uri.toString())) === null || r === void 0 ? void 0 : r.options) !== null && n !== void 0 ? n : {}
        }
      }
    })
  var ob,
    II = N(() => {
      'use strict'
      cs()
      HE()
      Ko()
      Gs()
      Uc()
      ob = class {
        static {
          o(this, 'DefaultIndexManager')
        }
        constructor(e) {
          ;(this.symbolIndex = new Map()),
            (this.symbolByTypeIndex = new Dp()),
            (this.referenceIndex = new Map()),
            (this.documents = e.workspace.LangiumDocuments),
            (this.serviceRegistry = e.ServiceRegistry),
            (this.astReflection = e.AstReflection)
        }
        findAllReferences(e, r) {
          let n = $a(e).uri,
            i = []
          return (
            this.referenceIndex.forEach(a => {
              a.forEach(s => {
                gs.equals(s.targetUri, n) && s.targetPath === r && i.push(s)
              })
            }),
            en(i)
          )
        }
        allElements(e, r) {
          let n = en(this.symbolIndex.keys())
          return r && (n = n.filter(i => !r || r.has(i))), n.map(i => this.getFileDescriptions(i, e)).flat()
        }
        getFileDescriptions(e, r) {
          var n
          return r
            ? this.symbolByTypeIndex.get(e, r, () => {
                var a
                return ((a = this.symbolIndex.get(e)) !== null && a !== void 0 ? a : []).filter(l => this.astReflection.isSubtype(l.type, r))
              })
            : (n = this.symbolIndex.get(e)) !== null && n !== void 0
              ? n
              : []
        }
        remove(e) {
          let r = e.toString()
          this.symbolIndex.delete(r), this.symbolByTypeIndex.clear(r), this.referenceIndex.delete(r)
        }
        async updateContent(e, r = yr.CancellationToken.None) {
          let i = await this.serviceRegistry.getServices(e.uri).references.ScopeComputation.computeExports(e, r),
            a = e.uri.toString()
          this.symbolIndex.set(a, i), this.symbolByTypeIndex.clear(a)
        }
        async updateReferences(e, r = yr.CancellationToken.None) {
          let i = await this.serviceRegistry.getServices(e.uri).workspace.ReferenceDescriptionProvider.createDescriptions(e, r)
          this.referenceIndex.set(e.uri.toString(), i)
        }
        isAffected(e, r) {
          let n = this.referenceIndex.get(e.uri.toString())
          return n ? n.some(i => !i.local && r.has(i.targetUri.toString())) : !1
        }
      }
    })
  var lb,
    OI = N(() => {
      'use strict'
      Ko()
      Qo()
      Uc()
      lb = class {
        static {
          o(this, 'DefaultWorkspaceManager')
        }
        constructor(e) {
          ;(this.initialBuildOptions = {}),
            (this._ready = new ps()),
            (this.serviceRegistry = e.ServiceRegistry),
            (this.langiumDocuments = e.workspace.LangiumDocuments),
            (this.documentBuilder = e.workspace.DocumentBuilder),
            (this.fileSystemProvider = e.workspace.FileSystemProvider),
            (this.mutex = e.workspace.WorkspaceLock)
        }
        get ready() {
          return this._ready.promise
        }
        get workspaceFolders() {
          return this.folders
        }
        initialize(e) {
          var r
          this.folders = (r = e.workspaceFolders) !== null && r !== void 0 ? r : void 0
        }
        initialized(e) {
          return this.mutex.write(r => {
            var n
            return this.initializeWorkspace((n = this.folders) !== null && n !== void 0 ? n : [], r)
          })
        }
        async initializeWorkspace(e, r = yr.CancellationToken.None) {
          let n = await this.performStartup(e)
          await wi(r), await this.documentBuilder.build(n, this.initialBuildOptions, r)
        }
        async performStartup(e) {
          let r = this.serviceRegistry.all.flatMap(a => a.LanguageMetaData.fileExtensions),
            n = [],
            i = o(a => {
              n.push(a), this.langiumDocuments.hasDocument(a.uri) || this.langiumDocuments.addDocument(a)
            }, 'collector')
          return (
            await this.loadAdditionalDocuments(e, i),
            await Promise.all(e.map(a => [a, this.getRootFolder(a)]).map(async a => this.traverseFolder(...a, r, i))),
            this._ready.resolve(),
            n
          )
        }
        loadAdditionalDocuments(e, r) {
          return Promise.resolve()
        }
        getRootFolder(e) {
          return ms.parse(e.uri)
        }
        async traverseFolder(e, r, n, i) {
          let a = await this.fileSystemProvider.readDirectory(r)
          await Promise.all(
            a.map(async s => {
              if (this.includeEntry(e, s, n)) {
                if (s.isDirectory) await this.traverseFolder(e, s.uri, n, i)
                else if (s.isFile) {
                  let l = await this.langiumDocuments.getOrCreateDocument(s.uri)
                  i(l)
                }
              }
            })
          )
        }
        includeEntry(e, r, n) {
          let i = gs.basename(r.uri)
          if (i.startsWith('.')) return !1
          if (r.isDirectory) return i !== 'node_modules' && i !== 'out'
          if (r.isFile) {
            let a = gs.extname(r.uri)
            return n.includes(a)
          }
          return !1
        }
      }
    })
  function jE(t) {
    return Array.isArray(t) && (t.length === 0 || 'name' in t[0])
  }
  function BI(t) {
    return t && 'modes' in t && 'defaultMode' in t
  }
  function PI(t) {
    return !jE(t) && !BI(t)
  }
  var cb,
    XE,
    Rp,
    KE = N(() => {
      'use strict'
      mf()
      ;(cb = class {
        static {
          o(this, 'DefaultLexerErrorMessageProvider')
        }
        buildUnexpectedCharactersMessage(e, r, n, i, a) {
          return Kg.buildUnexpectedCharactersMessage(e, r, n, i, a)
        }
        buildUnableToPopLexerModeMessage(e) {
          return Kg.buildUnableToPopLexerModeMessage(e)
        }
      }),
        (XE = { mode: 'full' }),
        (Rp = class {
          static {
            o(this, 'DefaultLexer')
          }
          constructor(e) {
            ;(this.errorMessageProvider = e.parser.LexerErrorMessageProvider), (this.tokenBuilder = e.parser.TokenBuilder)
            let r = this.tokenBuilder.buildTokens(e.Grammar, { caseInsensitive: e.LanguageMetaData.caseInsensitive })
            this.tokenTypes = this.toTokenTypeDictionary(r)
            let n = PI(r) ? Object.values(r) : r,
              i = e.LanguageMetaData.mode === 'production'
            this.chevrotainLexer = new Kn(n, { positionTracking: 'full', skipValidations: i, errorMessageProvider: this.errorMessageProvider })
          }
          get definition() {
            return this.tokenTypes
          }
          tokenize(e, r = XE) {
            var n, i, a
            let s = this.chevrotainLexer.tokenize(e)
            return {
              tokens: s.tokens,
              errors: s.errors,
              hidden: (n = s.groups.hidden) !== null && n !== void 0 ? n : [],
              report: (a = (i = this.tokenBuilder).flushLexingReport) === null || a === void 0 ? void 0 : a.call(i, e)
            }
          }
          toTokenTypeDictionary(e) {
            if (PI(e)) return e
            let r = BI(e) ? Object.values(e.modes).flat() : e,
              n = {}
            return r.forEach(i => (n[i.name] = i)), n
          }
        })
      o(jE, 'isTokenTypeArray')
      o(BI, 'isIMultiModeLexerDefinition')
      o(PI, 'isTokenTypeDictionary')
    })
  function zI(t, e, r) {
    let n, i
    typeof t == 'string' ? ((i = e), (n = r)) : ((i = t.range.start), (n = e)), i || (i = jr.create(0, 0))
    let a = due(t),
      s = VI(n),
      l = X$e({ lines: a, position: i, options: s })
    return J$e({ index: 0, tokens: l, position: i })
  }
  function GI(t, e) {
    let r = VI(e),
      n = due(t)
    if (n.length === 0) return !1
    let i = n[0],
      a = n[n.length - 1],
      s = r.start,
      l = r.end
    return !!s?.exec(i) && !!l?.exec(a)
  }
  function due(t) {
    let e = ''
    return typeof t == 'string' ? (e = t) : (e = t.text), e.split(PN)
  }
  function X$e(t) {
    var e, r, n
    let i = [],
      a = t.position.line,
      s = t.position.character
    for (let l = 0; l < t.lines.length; l++) {
      let u = l === 0,
        h = l === t.lines.length - 1,
        f = t.lines[l],
        d = 0
      if (u && t.options.start) {
        let m = (e = t.options.start) === null || e === void 0 ? void 0 : e.exec(f)
        m && (d = m.index + m[0].length)
      } else {
        let m = (r = t.options.line) === null || r === void 0 ? void 0 : r.exec(f)
        m && (d = m.index + m[0].length)
      }
      if (h) {
        let m = (n = t.options.end) === null || n === void 0 ? void 0 : n.exec(f)
        m && (f = f.substring(0, m.index))
      }
      if (((f = f.substring(0, Z$e(f))), $I(f, d) >= f.length)) {
        if (i.length > 0) {
          let m = jr.create(a, s)
          i.push({ type: 'break', content: '', range: Br.create(m, m) })
        }
      } else {
        hue.lastIndex = d
        let m = hue.exec(f)
        if (m) {
          let g = m[0],
            y = m[1],
            v = jr.create(a, s + d),
            x = jr.create(a, s + d + g.length)
          i.push({ type: 'tag', content: y, range: Br.create(v, x) }), (d += g.length), (d = $I(f, d))
        }
        if (d < f.length) {
          let g = f.substring(d),
            y = Array.from(g.matchAll(Y$e))
          i.push(...j$e(y, g, a, s + d))
        }
      }
      a++, (s = 0)
    }
    return i.length > 0 && i[i.length - 1].type === 'break' ? i.slice(0, -1) : i
  }
  function j$e(t, e, r, n) {
    let i = []
    if (t.length === 0) {
      let a = jr.create(r, n),
        s = jr.create(r, n + e.length)
      i.push({ type: 'text', content: e, range: Br.create(a, s) })
    } else {
      let a = 0
      for (let l of t) {
        let u = l.index,
          h = e.substring(a, u)
        h.length > 0 && i.push({ type: 'text', content: e.substring(a, u), range: Br.create(jr.create(r, a + n), jr.create(r, u + n)) })
        let f = h.length + 1,
          d = l[1]
        if ((i.push({ type: 'inline-tag', content: d, range: Br.create(jr.create(r, a + f + n), jr.create(r, a + f + d.length + n)) }), (f += d.length), l.length === 4)) {
          f += l[2].length
          let p = l[3]
          i.push({ type: 'text', content: p, range: Br.create(jr.create(r, a + f + n), jr.create(r, a + f + p.length + n)) })
        } else i.push({ type: 'text', content: '', range: Br.create(jr.create(r, a + f + n), jr.create(r, a + f + n)) })
        a = u + l[0].length
      }
      let s = e.substring(a)
      s.length > 0 && i.push({ type: 'text', content: s, range: Br.create(jr.create(r, a + n), jr.create(r, a + n + s.length)) })
    }
    return i
  }
  function $I(t, e) {
    let r = t.substring(e).match(K$e)
    return r ? e + r.index : t.length
  }
  function Z$e(t) {
    let e = t.match(Q$e)
    if (e && typeof e.index == 'number') return e.index
  }
  function J$e(t) {
    var e, r, n, i
    let a = jr.create(t.position.line, t.position.character)
    if (t.tokens.length === 0) return new QE([], Br.create(a, a))
    let s = []
    for (; t.index < t.tokens.length; ) {
      let h = eze(t, s[s.length - 1])
      h && s.push(h)
    }
    let l = (r = (e = s[0]) === null || e === void 0 ? void 0 : e.range.start) !== null && r !== void 0 ? r : a,
      u = (i = (n = s[s.length - 1]) === null || n === void 0 ? void 0 : n.range.end) !== null && i !== void 0 ? i : a
    return new QE(s, Br.create(l, u))
  }
  function eze(t, e) {
    let r = t.tokens[t.index]
    if (r.type === 'tag') return mue(t, !1)
    if (r.type === 'text' || r.type === 'inline-tag') return pue(t)
    tze(r, e), t.index++
  }
  function tze(t, e) {
    if (e) {
      let r = new ZE('', t.range)
      'inlines' in e ? e.inlines.push(r) : e.content.inlines.push(r)
    }
  }
  function pue(t) {
    let e = t.tokens[t.index],
      r = e,
      n = e,
      i = []
    for (; e && e.type !== 'break' && e.type !== 'tag'; ) i.push(rze(t)), (n = e), (e = t.tokens[t.index])
    return new hb(i, Br.create(r.range.start, n.range.end))
  }
  function rze(t) {
    return t.tokens[t.index].type === 'inline-tag' ? mue(t, !0) : gue(t)
  }
  function mue(t, e) {
    let r = t.tokens[t.index++],
      n = r.content.substring(1),
      i = t.tokens[t.index]
    if (i?.type === 'text')
      if (e) {
        let a = gue(t)
        return new ub(n, new hb([a], a.range), e, Br.create(r.range.start, a.range.end))
      } else {
        let a = pue(t)
        return new ub(n, a, e, Br.create(r.range.start, a.range.end))
      }
    else {
      let a = r.range
      return new ub(n, new hb([], a), e, a)
    }
  }
  function gue(t) {
    let e = t.tokens[t.index++]
    return new ZE(e.content, e.range)
  }
  function VI(t) {
    if (!t) return VI({ start: '/**', end: '*/', line: '*' })
    let { start: e, end: r, line: n } = t
    return { start: FI(e, !0), end: FI(r, !1), line: FI(n, !0) }
  }
  function FI(t, e) {
    if (typeof t == 'string' || typeof t == 'object') {
      let r = typeof t == 'string' ? mp(t) : t.source
      return e ? new RegExp(`^\\s*${r}`) : new RegExp(`\\s*${r}\\s*$`)
    } else return t
  }
  function nze(t, e, r) {
    var n, i
    if (t === 'linkplain' || t === 'linkcode' || t === 'link') {
      let a = e.indexOf(' '),
        s = e
      if (a > 0) {
        let u = $I(e, a)
        ;(s = e.substring(u)), (e = e.substring(0, a))
      }
      return (
        (t === 'linkcode' || (t === 'link' && r.link === 'code')) && (s = `\`${s}\``),
        (i = (n = r.renderLink) === null || n === void 0 ? void 0 : n.call(r, e, s)) !== null && i !== void 0 ? i : ize(e, s)
      )
    }
  }
  function ize(t, e) {
    try {
      return ms.parse(t, !0), `[${e}](${t})`
    } catch {
      return t
    }
  }
  function fue(t) {
    return t.endsWith(`
`)
      ? `
`
      : `

`
  }
  var hue,
    Y$e,
    K$e,
    Q$e,
    QE,
    ub,
    hb,
    ZE,
    UI = N(() => {
      'use strict'
      ZM()
      $g()
      Uc()
      o(zI, 'parseJSDoc')
      o(GI, 'isJSDoc')
      o(due, 'getLines')
      ;(hue = /\s*(@([\p{L}][\p{L}\p{N}]*)?)/uy), (Y$e = /\{(@[\p{L}][\p{L}\p{N}]*)(\s*)([^\r\n}]+)?\}/gu)
      o(X$e, 'tokenize')
      o(j$e, 'buildInlineTokens')
      ;(K$e = /\S/), (Q$e = /\s*$/)
      o($I, 'skipWhitespace')
      o(Z$e, 'lastCharacter')
      o(J$e, 'parseJSDocComment')
      o(eze, 'parseJSDocElement')
      o(tze, 'appendEmptyLine')
      o(pue, 'parseJSDocText')
      o(rze, 'parseJSDocInline')
      o(mue, 'parseJSDocTag')
      o(gue, 'parseJSDocLine')
      o(VI, 'normalizeOptions')
      o(FI, 'normalizeOption')
      ;(QE = class {
        static {
          o(this, 'JSDocCommentImpl')
        }
        constructor(e, r) {
          ;(this.elements = e), (this.range = r)
        }
        getTag(e) {
          return this.getAllTags().find(r => r.name === e)
        }
        getTags(e) {
          return this.getAllTags().filter(r => r.name === e)
        }
        getAllTags() {
          return this.elements.filter(e => 'name' in e)
        }
        toString() {
          let e = ''
          for (let r of this.elements)
            if (e.length === 0) e = r.toString()
            else {
              let n = r.toString()
              e += fue(e) + n
            }
          return e.trim()
        }
        toMarkdown(e) {
          let r = ''
          for (let n of this.elements)
            if (r.length === 0) r = n.toMarkdown(e)
            else {
              let i = n.toMarkdown(e)
              r += fue(r) + i
            }
          return r.trim()
        }
      }),
        (ub = class {
          static {
            o(this, 'JSDocTagImpl')
          }
          constructor(e, r, n, i) {
            ;(this.name = e), (this.content = r), (this.inline = n), (this.range = i)
          }
          toString() {
            let e = `@${this.name}`,
              r = this.content.toString()
            return (
              this.content.inlines.length === 1
                ? (e = `${e} ${r}`)
                : this.content.inlines.length > 1 &&
                  (e = `${e}
${r}`),
              this.inline ? `{${e}}` : e
            )
          }
          toMarkdown(e) {
            var r, n
            return (n = (r = e?.renderTag) === null || r === void 0 ? void 0 : r.call(e, this)) !== null && n !== void 0 ? n : this.toMarkdownDefault(e)
          }
          toMarkdownDefault(e) {
            let r = this.content.toMarkdown(e)
            if (this.inline) {
              let a = nze(this.name, r, e ?? {})
              if (typeof a == 'string') return a
            }
            let n = ''
            e?.tag === 'italic' || e?.tag === void 0 ? (n = '*') : e?.tag === 'bold' ? (n = '**') : e?.tag === 'bold-italic' && (n = '***')
            let i = `${n}@${this.name}${n}`
            return (
              this.content.inlines.length === 1
                ? (i = `${i} \u2014 ${r}`)
                : this.content.inlines.length > 1 &&
                  (i = `${i}
${r}`),
              this.inline ? `{${i}}` : i
            )
          }
        })
      o(nze, 'renderInlineTag')
      o(ize, 'renderLinkDefault')
      ;(hb = class {
        static {
          o(this, 'JSDocTextImpl')
        }
        constructor(e, r) {
          ;(this.inlines = e), (this.range = r)
        }
        toString() {
          let e = ''
          for (let r = 0; r < this.inlines.length; r++) {
            let n = this.inlines[r],
              i = this.inlines[r + 1]
            ;(e += n.toString()),
              i &&
                i.range.start.line > n.range.start.line &&
                (e += `
`)
          }
          return e
        }
        toMarkdown(e) {
          let r = ''
          for (let n = 0; n < this.inlines.length; n++) {
            let i = this.inlines[n],
              a = this.inlines[n + 1]
            ;(r += i.toMarkdown(e)),
              a &&
                a.range.start.line > i.range.start.line &&
                (r += `
`)
          }
          return r
        }
      }),
        (ZE = class {
          static {
            o(this, 'JSDocLineImpl')
          }
          constructor(e, r) {
            ;(this.text = e), (this.range = r)
          }
          toString() {
            return this.text
          }
          toMarkdown() {
            return this.text
          }
        })
      o(fue, 'fillNewlines')
    })
  var fb,
    HI = N(() => {
      'use strict'
      cs()
      UI()
      fb = class {
        static {
          o(this, 'JSDocDocumentationProvider')
        }
        constructor(e) {
          ;(this.indexManager = e.shared.workspace.IndexManager), (this.commentProvider = e.documentation.CommentProvider)
        }
        getDocumentation(e) {
          let r = this.commentProvider.getComment(e)
          if (r && GI(r))
            return zI(r).toMarkdown({
              renderLink: o((i, a) => this.documentationLinkRenderer(e, i, a), 'renderLink'),
              renderTag: o(i => this.documentationTagRenderer(e, i), 'renderTag')
            })
        }
        documentationLinkRenderer(e, r, n) {
          var i
          let a = (i = this.findNameInPrecomputedScopes(e, r)) !== null && i !== void 0 ? i : this.findNameInGlobalScope(e, r)
          if (a && a.nameSegment) {
            let s = a.nameSegment.range.start.line + 1,
              l = a.nameSegment.range.start.character + 1,
              u = a.documentUri.with({ fragment: `L${s},${l}` })
            return `[${n}](${u.toString()})`
          } else return
        }
        documentationTagRenderer(e, r) {}
        findNameInPrecomputedScopes(e, r) {
          let i = $a(e).precomputedScopes
          if (!i) return
          let a = e
          do {
            let l = i.get(a).find(u => u.name === r)
            if (l) return l
            a = a.$container
          } while (a)
        }
        findNameInGlobalScope(e, r) {
          return this.indexManager.allElements().find(i => i.name === r)
        }
      }
    })
  var db,
    WI = N(() => {
      'use strict'
      WE()
      Ol()
      db = class {
        static {
          o(this, 'DefaultCommentProvider')
        }
        constructor(e) {
          this.grammarConfig = () => e.parser.GrammarConfig
        }
        getComment(e) {
          var r
          return CI(e) ? e.$comment : (r = uN(e.$cstNode, this.grammarConfig().multilineCommentRules)) === null || r === void 0 ? void 0 : r.text
        }
      }
    })
  var pb,
    qI,
    YI,
    XI = N(() => {
      'use strict'
      Qo()
      YE()
      ;(pb = class {
        static {
          o(this, 'DefaultAsyncParser')
        }
        constructor(e) {
          this.syncParser = e.parser.LangiumParser
        }
        parse(e, r) {
          return Promise.resolve(this.syncParser.parse(e))
        }
      }),
        (qI = class {
          static {
            o(this, 'AbstractThreadedAsyncParser')
          }
          constructor(e) {
            ;(this.threadCount = 8), (this.terminationDelay = 200), (this.workerPool = []), (this.queue = []), (this.hydrator = e.serializer.Hydrator)
          }
          initializeWorkers() {
            for (; this.workerPool.length < this.threadCount; ) {
              let e = this.createWorker()
              e.onReady(() => {
                if (this.queue.length > 0) {
                  let r = this.queue.shift()
                  r && (e.lock(), r.resolve(e))
                }
              }),
                this.workerPool.push(e)
            }
          }
          async parse(e, r) {
            let n = await this.acquireParserWorker(r),
              i = new ps(),
              a,
              s = r.onCancellationRequested(() => {
                a = setTimeout(() => {
                  this.terminateWorker(n)
                }, this.terminationDelay)
              })
            return (
              n
                .parse(e)
                .then(l => {
                  let u = this.hydrator.hydrate(l)
                  i.resolve(u)
                })
                .catch(l => {
                  i.reject(l)
                })
                .finally(() => {
                  s.dispose(), clearTimeout(a)
                }),
              i.promise
            )
          }
          terminateWorker(e) {
            e.terminate()
            let r = this.workerPool.indexOf(e)
            r >= 0 && this.workerPool.splice(r, 1)
          }
          async acquireParserWorker(e) {
            this.initializeWorkers()
            for (let n of this.workerPool) if (n.ready) return n.lock(), n
            let r = new ps()
            return (
              e.onCancellationRequested(() => {
                let n = this.queue.indexOf(r)
                n >= 0 && this.queue.splice(n, 1), r.reject(Gc)
              }),
              this.queue.push(r),
              r.promise
            )
          }
        }),
        (YI = class {
          static {
            o(this, 'ParserWorker')
          }
          get ready() {
            return this._ready
          }
          get onReady() {
            return this.onReadyEmitter.event
          }
          constructor(e, r, n, i) {
            ;(this.onReadyEmitter = new Zn.Emitter()),
              (this.deferred = new ps()),
              (this._ready = !0),
              (this._parsing = !1),
              (this.sendMessage = e),
              (this._terminate = i),
              r(a => {
                let s = a
                this.deferred.resolve(s), this.unlock()
              }),
              n(a => {
                this.deferred.reject(a), this.unlock()
              })
          }
          terminate() {
            this.deferred.reject(Gc), this._terminate()
          }
          lock() {
            this._ready = !1
          }
          unlock() {
            ;(this._parsing = !1), (this._ready = !0), this.onReadyEmitter.fire()
          }
          parse(e) {
            if (this._parsing) throw new Error('Parser worker is busy')
            return (this._parsing = !0), (this.deferred = new ps()), this.sendMessage(e), this.deferred.promise
          }
        })
    })
  var mb,
    jI = N(() => {
      'use strict'
      Ko()
      Qo()
      mb = class {
        static {
          o(this, 'DefaultWorkspaceLock')
        }
        constructor() {
          ;(this.previousTokenSource = new yr.CancellationTokenSource()), (this.writeQueue = []), (this.readQueue = []), (this.done = !0)
        }
        write(e) {
          this.cancelWrite()
          let r = GE()
          return (this.previousTokenSource = r), this.enqueue(this.writeQueue, e, r.token)
        }
        read(e) {
          return this.enqueue(this.readQueue, e)
        }
        enqueue(e, r, n = yr.CancellationToken.None) {
          let i = new ps(),
            a = { action: r, deferred: i, cancellationToken: n }
          return e.push(a), this.performNextOperation(), i.promise
        }
        async performNextOperation() {
          if (!this.done) return
          let e = []
          if (this.writeQueue.length > 0) e.push(this.writeQueue.shift())
          else if (this.readQueue.length > 0) e.push(...this.readQueue.splice(0, this.readQueue.length))
          else return
          ;(this.done = !1),
            await Promise.all(
              e.map(async ({ action: r, deferred: n, cancellationToken: i }) => {
                try {
                  let a = await Promise.resolve().then(() => r(i))
                  n.resolve(a)
                } catch (a) {
                  Vc(a) ? n.resolve(void 0) : n.reject(a)
                }
              })
            ),
            (this.done = !0),
            this.performNextOperation()
        }
        cancelWrite() {
          this.previousTokenSource.cancel()
        }
      }
    })
  var gb,
    KI = N(() => {
      'use strict'
      RE()
      Pc()
      Il()
      cs()
      T1()
      Ol()
      gb = class {
        static {
          o(this, 'DefaultHydrator')
        }
        constructor(e) {
          ;(this.grammarElementIdMap = new _p()), (this.tokenTypeIdMap = new _p()), (this.grammar = e.Grammar), (this.lexer = e.parser.Lexer), (this.linker = e.references.Linker)
        }
        dehydrate(e) {
          return {
            lexerErrors: e.lexerErrors,
            lexerReport: e.lexerReport ? this.dehydrateLexerReport(e.lexerReport) : void 0,
            parserErrors: e.parserErrors.map(r => Object.assign(Object.assign({}, r), { message: r.message })),
            value: this.dehydrateAstNode(e.value, this.createDehyrationContext(e.value))
          }
        }
        dehydrateLexerReport(e) {
          return e
        }
        createDehyrationContext(e) {
          let r = new Map(),
            n = new Map()
          for (let i of jo(e)) r.set(i, {})
          if (e.$cstNode) for (let i of sp(e.$cstNode)) n.set(i, {})
          return { astNodes: r, cstNodes: n }
        }
        dehydrateAstNode(e, r) {
          let n = r.astNodes.get(e)
          ;(n.$type = e.$type),
            (n.$containerIndex = e.$containerIndex),
            (n.$containerProperty = e.$containerProperty),
            e.$cstNode !== void 0 && (n.$cstNode = this.dehydrateCstNode(e.$cstNode, r))
          for (let [i, a] of Object.entries(e))
            if (!i.startsWith('$'))
              if (Array.isArray(a)) {
                let s = []
                n[i] = s
                for (let l of a) si(l) ? s.push(this.dehydrateAstNode(l, r)) : ya(l) ? s.push(this.dehydrateReference(l, r)) : s.push(l)
              } else si(a) ? (n[i] = this.dehydrateAstNode(a, r)) : ya(a) ? (n[i] = this.dehydrateReference(a, r)) : a !== void 0 && (n[i] = a)
          return n
        }
        dehydrateReference(e, r) {
          let n = {}
          return (n.$refText = e.$refText), e.$refNode && (n.$refNode = r.cstNodes.get(e.$refNode)), n
        }
        dehydrateCstNode(e, r) {
          let n = r.cstNodes.get(e)
          return (
            U2(e) ? (n.fullText = e.fullText) : (n.grammarSource = this.getGrammarElementId(e.grammarSource)),
            (n.hidden = e.hidden),
            (n.astNode = r.astNodes.get(e.astNode)),
            Ml(e)
              ? (n.content = e.content.map(i => this.dehydrateCstNode(i, r)))
              : hf(e) &&
                ((n.tokenType = e.tokenType.name),
                (n.offset = e.offset),
                (n.length = e.length),
                (n.startLine = e.range.start.line),
                (n.startColumn = e.range.start.character),
                (n.endLine = e.range.end.line),
                (n.endColumn = e.range.end.character)),
            n
          )
        }
        hydrate(e) {
          let r = e.value,
            n = this.createHydrationContext(r)
          return (
            '$cstNode' in r && this.hydrateCstNode(r.$cstNode, n),
            { lexerErrors: e.lexerErrors, lexerReport: e.lexerReport, parserErrors: e.parserErrors, value: this.hydrateAstNode(r, n) }
          )
        }
        createHydrationContext(e) {
          let r = new Map(),
            n = new Map()
          for (let a of jo(e)) r.set(a, {})
          let i
          if (e.$cstNode)
            for (let a of sp(e.$cstNode)) {
              let s
              'fullText' in a ? ((s = new p1(a.fullText)), (i = s)) : 'content' in a ? (s = new Sp()) : 'tokenType' in a && (s = this.hydrateCstLeafNode(a)),
                s && (n.set(a, s), (s.root = i))
            }
          return { astNodes: r, cstNodes: n }
        }
        hydrateAstNode(e, r) {
          let n = r.astNodes.get(e)
          ;(n.$type = e.$type), (n.$containerIndex = e.$containerIndex), (n.$containerProperty = e.$containerProperty), e.$cstNode && (n.$cstNode = r.cstNodes.get(e.$cstNode))
          for (let [i, a] of Object.entries(e))
            if (!i.startsWith('$'))
              if (Array.isArray(a)) {
                let s = []
                n[i] = s
                for (let l of a) si(l) ? s.push(this.setParent(this.hydrateAstNode(l, r), n)) : ya(l) ? s.push(this.hydrateReference(l, n, i, r)) : s.push(l)
              } else si(a) ? (n[i] = this.setParent(this.hydrateAstNode(a, r), n)) : ya(a) ? (n[i] = this.hydrateReference(a, n, i, r)) : a !== void 0 && (n[i] = a)
          return n
        }
        setParent(e, r) {
          return (e.$container = r), e
        }
        hydrateReference(e, r, n, i) {
          return this.linker.buildReference(r, n, i.cstNodes.get(e.$refNode), e.$refText)
        }
        hydrateCstNode(e, r, n = 0) {
          let i = r.cstNodes.get(e)
          if ((typeof e.grammarSource == 'number' && (i.grammarSource = this.getGrammarElement(e.grammarSource)), (i.astNode = r.astNodes.get(e.astNode)), Ml(i)))
            for (let a of e.content) {
              let s = this.hydrateCstNode(a, r, n++)
              i.content.push(s)
            }
          return i
        }
        hydrateCstLeafNode(e) {
          let r = this.getTokenType(e.tokenType),
            n = e.offset,
            i = e.length,
            a = e.startLine,
            s = e.startColumn,
            l = e.endLine,
            u = e.endColumn,
            h = e.hidden
          return new Ep(n, i, { start: { line: a, character: s }, end: { line: l, character: u } }, r, h)
        }
        getTokenType(e) {
          return this.lexer.definition[e]
        }
        getGrammarElementId(e) {
          if (e) return this.grammarElementIdMap.size === 0 && this.createGrammarElementIdMap(), this.grammarElementIdMap.get(e)
        }
        getGrammarElement(e) {
          return this.grammarElementIdMap.size === 0 && this.createGrammarElementIdMap(), this.grammarElementIdMap.getKey(e)
        }
        createGrammarElementIdMap() {
          let e = 0
          for (let r of jo(this.grammar)) Q2(r) && this.grammarElementIdMap.set(r, e++)
        }
      }
    })
  function va(t) {
    return {
      documentation: { CommentProvider: o(e => new db(e), 'CommentProvider'), DocumentationProvider: o(e => new fb(e), 'DocumentationProvider') },
      parser: {
        AsyncParser: o(e => new pb(e), 'AsyncParser'),
        GrammarConfig: o(e => QN(e), 'GrammarConfig'),
        LangiumParser: o(e => aI(e), 'LangiumParser'),
        CompletionParser: o(e => nI(e), 'CompletionParser'),
        ValueConverter: o(() => new Ap(), 'ValueConverter'),
        TokenBuilder: o(() => new ju(), 'TokenBuilder'),
        Lexer: o(e => new Rp(e), 'Lexer'),
        ParserErrorMessageProvider: o(() => new m1(), 'ParserErrorMessageProvider'),
        LexerErrorMessageProvider: o(() => new cb(), 'LexerErrorMessageProvider')
      },
      workspace: {
        AstNodeLocator: o(() => new ib(), 'AstNodeLocator'),
        AstNodeDescriptionProvider: o(e => new rb(e), 'AstNodeDescriptionProvider'),
        ReferenceDescriptionProvider: o(e => new nb(e), 'ReferenceDescriptionProvider')
      },
      references: {
        Linker: o(e => new Hx(e), 'Linker'),
        NameProvider: o(() => new Wx(), 'NameProvider'),
        ScopeProvider: o(e => new Kx(e), 'ScopeProvider'),
        ScopeComputation: o(e => new Yx(e), 'ScopeComputation'),
        References: o(e => new qx(e), 'References')
      },
      serializer: { Hydrator: o(e => new gb(e), 'Hydrator'), JsonSerializer: o(e => new Qx(e), 'JsonSerializer') },
      validation: { DocumentValidator: o(e => new tb(e), 'DocumentValidator'), ValidationRegistry: o(e => new Jx(e), 'ValidationRegistry') },
      shared: o(() => t.shared, 'shared')
    }
  }
  function xa(t) {
    return {
      ServiceRegistry: o(e => new Zx(e), 'ServiceRegistry'),
      workspace: {
        LangiumDocuments: o(e => new Ux(e), 'LangiumDocuments'),
        LangiumDocumentFactory: o(e => new Vx(e), 'LangiumDocumentFactory'),
        DocumentBuilder: o(e => new sb(e), 'DocumentBuilder'),
        IndexManager: o(e => new ob(e), 'IndexManager'),
        WorkspaceManager: o(e => new lb(e), 'WorkspaceManager'),
        FileSystemProvider: o(e => t.fileSystemProvider(e), 'FileSystemProvider'),
        WorkspaceLock: o(() => new mb(), 'WorkspaceLock'),
        ConfigurationProvider: o(e => new ab(e), 'ConfigurationProvider')
      }
    }
  }
  var QI = N(() => {
    'use strict'
    ZN()
    iI()
    sI()
    PE()
    oI()
    bI()
    TI()
    wI()
    kI()
    SI()
    WE()
    AI()
    _I()
    eb()
    DI()
    LI()
    RI()
    MI()
    b1()
    II()
    OI()
    KE()
    HI()
    WI()
    zx()
    XI()
    jI()
    KI()
    o(va, 'createDefaultCoreModule')
    o(xa, 'createDefaultSharedCoreModule')
  })
  function Gn(t, e, r, n, i, a, s, l, u) {
    let h = [t, e, r, n, i, a, s, l, u].reduce(JE, {})
    return Tue(h)
  }
  function bue(t) {
    if (t && t[xue]) for (let e of Object.values(t)) bue(e)
    return t
  }
  function Tue(t, e) {
    let r = new Proxy(
      {},
      {
        deleteProperty: o(() => !1, 'deleteProperty'),
        set: o(() => {
          throw new Error('Cannot set property on injected service container')
        }, 'set'),
        get: o((n, i) => (i === xue ? !0 : vue(n, i, t, e || r)), 'get'),
        getOwnPropertyDescriptor: o((n, i) => (vue(n, i, t, e || r), Object.getOwnPropertyDescriptor(n, i)), 'getOwnPropertyDescriptor'),
        has: o((n, i) => i in t, 'has'),
        ownKeys: o(() => [...Object.getOwnPropertyNames(t)], 'ownKeys')
      }
    )
    return r
  }
  function vue(t, e, r, n) {
    if (e in t) {
      if (t[e] instanceof Error) throw new Error('Construction failure. Please make sure that your dependencies are constructable.', { cause: t[e] })
      if (t[e] === yue)
        throw new Error('Cycle detected. Please make "' + String(e) + '" lazy. Visit https://langium.org/docs/reference/configuration-services/#resolving-cyclic-dependencies')
      return t[e]
    } else if (e in r) {
      let i = r[e]
      t[e] = yue
      try {
        t[e] = typeof i == 'function' ? i(n) : Tue(i, n)
      } catch (a) {
        throw ((t[e] = a instanceof Error ? a : void 0), a)
      }
      return t[e]
    } else return
  }
  function JE(t, e) {
    if (e) {
      for (let [r, n] of Object.entries(e))
        if (n !== void 0) {
          let i = t[r]
          i !== null && n !== null && typeof i == 'object' && typeof n == 'object' ? (t[r] = JE(i, n)) : (t[r] = n)
        }
    }
    return t
  }
  var ZI,
    xue,
    yue,
    JI = N(() => {
      'use strict'
      ;(function (t) {
        t.merge = (e, r) => JE(JE({}, e), r)
      })(ZI || (ZI = {}))
      o(Gn, 'inject')
      xue = Symbol('isProxy')
      o(bue, 'eagerLoad')
      o(Tue, '_inject')
      yue = Symbol()
      o(vue, '_resolve')
      o(JE, '_merge')
    })
  var wue = N(() => {
    'use strict'
  })
  var kue = N(() => {
    'use strict'
    WI()
    HI()
    UI()
  })
  var Eue = N(() => {
    'use strict'
  })
  var Sue = N(() => {
    'use strict'
    ZN()
    Eue()
  })
  var eO,
    Np,
    eS,
    tO,
    Cue = N(() => {
      'use strict'
      mf()
      PE()
      KE()
      eO = { indentTokenName: 'INDENT', dedentTokenName: 'DEDENT', whitespaceTokenName: 'WS', ignoreIndentationDelimiters: [] }
      ;(function (t) {
        ;(t.REGULAR = 'indentation-sensitive'), (t.IGNORE_INDENTATION = 'ignore-indentation')
      })(Np || (Np = {}))
      ;(eS = class extends ju {
        static {
          o(this, 'IndentationAwareTokenBuilder')
        }
        constructor(e = eO) {
          super(),
            (this.indentationStack = [0]),
            (this.whitespaceRegExp = /[ \t]+/y),
            (this.options = Object.assign(Object.assign({}, eO), e)),
            (this.indentTokenType = df({ name: this.options.indentTokenName, pattern: this.indentMatcher.bind(this), line_breaks: !1 })),
            (this.dedentTokenType = df({ name: this.options.dedentTokenName, pattern: this.dedentMatcher.bind(this), line_breaks: !1 }))
        }
        buildTokens(e, r) {
          let n = super.buildTokens(e, r)
          if (!jE(n)) throw new Error('Invalid tokens built by default builder')
          let { indentTokenName: i, dedentTokenName: a, whitespaceTokenName: s, ignoreIndentationDelimiters: l } = this.options,
            u,
            h,
            f,
            d = []
          for (let p of n) {
            for (let [m, g] of l) p.name === m ? (p.PUSH_MODE = Np.IGNORE_INDENTATION) : p.name === g && (p.POP_MODE = !0)
            p.name === a ? (u = p) : p.name === i ? (h = p) : p.name === s ? (f = p) : d.push(p)
          }
          if (!u || !h || !f) throw new Error('Some indentation/whitespace tokens not found!')
          return l.length > 0 ? { modes: { [Np.REGULAR]: [u, h, ...d, f], [Np.IGNORE_INDENTATION]: [...d, f] }, defaultMode: Np.REGULAR } : [u, h, f, ...d]
        }
        flushLexingReport(e) {
          let r = super.flushLexingReport(e)
          return Object.assign(Object.assign({}, r), { remainingDedents: this.flushRemainingDedents(e) })
        }
        isStartOfLine(e, r) {
          return (
            r === 0 ||
            `\r
`.includes(e[r - 1])
          )
        }
        matchWhitespace(e, r, n, i) {
          var a
          this.whitespaceRegExp.lastIndex = r
          let s = this.whitespaceRegExp.exec(e)
          return { currIndentLevel: (a = s?.[0].length) !== null && a !== void 0 ? a : 0, prevIndentLevel: this.indentationStack.at(-1), match: s }
        }
        createIndentationTokenInstance(e, r, n, i) {
          let a = this.getLineNumber(r, i)
          return Wu(e, n, i, i + n.length, a, a, 1, n.length)
        }
        getLineNumber(e, r) {
          return e.substring(0, r).split(/\r\n|\r|\n/).length
        }
        indentMatcher(e, r, n, i) {
          if (!this.isStartOfLine(e, r)) return null
          let { currIndentLevel: a, prevIndentLevel: s, match: l } = this.matchWhitespace(e, r, n, i)
          return a <= s ? null : (this.indentationStack.push(a), l)
        }
        dedentMatcher(e, r, n, i) {
          var a, s, l, u
          if (!this.isStartOfLine(e, r)) return null
          let { currIndentLevel: h, prevIndentLevel: f, match: d } = this.matchWhitespace(e, r, n, i)
          if (h >= f) return null
          let p = this.indentationStack.lastIndexOf(h)
          if (p === -1)
            return (
              this.diagnostics.push({
                severity: 'error',
                message: `Invalid dedent level ${h} at offset: ${r}. Current indentation stack: ${this.indentationStack}`,
                offset: r,
                length: (s = (a = d?.[0]) === null || a === void 0 ? void 0 : a.length) !== null && s !== void 0 ? s : 0,
                line: this.getLineNumber(e, r),
                column: 1
              }),
              null
            )
          let m = this.indentationStack.length - p - 1,
            g = (u = (l = e.substring(0, r).match(/[\r\n]+$/)) === null || l === void 0 ? void 0 : l[0].length) !== null && u !== void 0 ? u : 1
          for (let y = 0; y < m; y++) {
            let v = this.createIndentationTokenInstance(this.dedentTokenType, e, '', r - (g - 1))
            n.push(v), this.indentationStack.pop()
          }
          return null
        }
        buildTerminalToken(e) {
          let r = super.buildTerminalToken(e),
            { indentTokenName: n, dedentTokenName: i, whitespaceTokenName: a } = this.options
          return r.name === n ? this.indentTokenType : r.name === i ? this.dedentTokenType : r.name === a ? df({ name: a, pattern: this.whitespaceRegExp, group: Kn.SKIPPED }) : r
        }
        flushRemainingDedents(e) {
          let r = []
          for (; this.indentationStack.length > 1; ) r.push(this.createIndentationTokenInstance(this.dedentTokenType, e, '', e.length)), this.indentationStack.pop()
          return (this.indentationStack = [0]), r
        }
      }),
        (tO = class extends Rp {
          static {
            o(this, 'IndentationAwareLexer')
          }
          constructor(e) {
            if ((super(e), e.parser.TokenBuilder instanceof eS)) this.indentationTokenBuilder = e.parser.TokenBuilder
            else throw new Error('IndentationAwareLexer requires an accompanying IndentationAwareTokenBuilder')
          }
          tokenize(e, r = XE) {
            let n = super.tokenize(e),
              i = n.report
            r?.mode === 'full' && n.tokens.push(...i.remainingDedents), (i.remainingDedents = [])
            let { indentTokenType: a, dedentTokenType: s } = this.indentationTokenBuilder,
              l = a.tokenTypeIdx,
              u = s.tokenTypeIdx,
              h = [],
              f = n.tokens.length - 1
            for (let d = 0; d < f; d++) {
              let p = n.tokens[d],
                m = n.tokens[d + 1]
              if (p.tokenTypeIdx === l && m.tokenTypeIdx === u) {
                d++
                continue
              }
              h.push(p)
            }
            return f >= 0 && h.push(n.tokens[f]), (n.tokens = h), n
          }
        })
    })
  var Aue = N(() => {
    'use strict'
  })
  var _ue = N(() => {
    'use strict'
    XI()
    iI()
    RE()
    Cue()
    sI()
    zx()
    KE()
    OE()
    Aue()
    PE()
    oI()
  })
  var Due = N(() => {
    'use strict'
    bI()
    TI()
    wI()
    EI()
    kI()
    SI()
  })
  var Lue = N(() => {
    'use strict'
    KI()
    WE()
  })
  var tS,
    ba,
    rO = N(() => {
      'use strict'
      ;(tS = class {
        static {
          o(this, 'EmptyFileSystemProvider')
        }
        readFile() {
          throw new Error('No file system is available.')
        }
        async readDirectory() {
          return []
        }
      }),
        (ba = { fileSystemProvider: o(() => new tS(), 'fileSystemProvider') })
    })
  function oze() {
    let t = Gn(xa(ba), sze),
      e = Gn(va({ shared: t }), aze)
    return t.ServiceRegistry.register(e), e
  }
  function Hc(t) {
    var e
    let r = oze(),
      n = r.serializer.JsonSerializer.deserialize(t)
    return r.shared.workspace.LangiumDocumentFactory.fromModel(n, ms.parse(`memory://${(e = n.name) !== null && e !== void 0 ? e : 'grammar'}.langium`)), n
  }
  var aze,
    sze,
    Rue = N(() => {
      'use strict'
      QI()
      JI()
      Pc()
      rO()
      Uc()
      ;(aze = { Grammar: o(() => {}, 'Grammar'), LanguageMetaData: o(() => ({ caseInsensitive: !1, fileExtensions: ['.langium'], languageId: 'langium' }), 'LanguageMetaData') }),
        (sze = { AstReflection: o(() => new Og(), 'AstReflection') })
      o(oze, 'createMinimalGrammarServices')
      o(Hc, 'loadGrammarFromJson')
    })
  var Gr = {}
  ur(Gr, {
    AstUtils: () => Ik,
    BiMap: () => _p,
    Cancellation: () => yr,
    ContextCache: () => Dp,
    CstUtils: () => Ek,
    DONE_RESULT: () => Ba,
    Deferred: () => ps,
    Disposable: () => vf,
    DisposableCache: () => k1,
    DocumentCache: () => UE,
    EMPTY_STREAM: () => H2,
    ErrorWithLocation: () => lp,
    GrammarUtils: () => $k,
    MultiMap: () => zl,
    OperationCancelled: () => Gc,
    Reduction: () => jm,
    RegExpUtils: () => Bk,
    SimpleCache: () => jx,
    StreamImpl: () => co,
    TreeStreamImpl: () => Mc,
    URI: () => ms,
    UriUtils: () => gs,
    WorkspaceCache: () => E1,
    assertUnreachable: () => Oc,
    delayNextTick: () => gI,
    interruptAndCheck: () => wi,
    isOperationCancelled: () => Vc,
    loadGrammarFromJson: () => Hc,
    setInterruptionPeriod: () => tue,
    startCancelableOperation: () => GE,
    stream: () => en
  })
  var Nue = N(() => {
    'use strict'
    HE()
    YE()
    Cr(Gr, Zn)
    T1()
    NI()
    Sk()
    Rue()
    Qo()
    Gs()
    Uc()
    cs()
    Ko()
    Ol()
    Fl()
    $g()
  })
  var Mue = N(() => {
    'use strict'
    _I()
    eb()
  })
  var Iue = N(() => {
    'use strict'
    DI()
    LI()
    RI()
    MI()
    b1()
    rO()
    II()
    jI()
    OI()
  })
  var Ta = {}
  ur(Ta, {
    AbstractAstReflection: () => ip,
    AbstractCstNode: () => Px,
    AbstractLangiumParser: () => Bx,
    AbstractParserErrorMessageProvider: () => ME,
    AbstractThreadedAsyncParser: () => qI,
    AstUtils: () => Ik,
    BiMap: () => _p,
    Cancellation: () => yr,
    CompositeCstNodeImpl: () => Sp,
    ContextCache: () => Dp,
    CstNodeBuilder: () => Ox,
    CstUtils: () => Ek,
    DEFAULT_TOKENIZE_OPTIONS: () => XE,
    DONE_RESULT: () => Ba,
    DatatypeSymbol: () => NE,
    DefaultAstNodeDescriptionProvider: () => rb,
    DefaultAstNodeLocator: () => ib,
    DefaultAsyncParser: () => pb,
    DefaultCommentProvider: () => db,
    DefaultConfigurationProvider: () => ab,
    DefaultDocumentBuilder: () => sb,
    DefaultDocumentValidator: () => tb,
    DefaultHydrator: () => gb,
    DefaultIndexManager: () => ob,
    DefaultJsonSerializer: () => Qx,
    DefaultLangiumDocumentFactory: () => Vx,
    DefaultLangiumDocuments: () => Ux,
    DefaultLexer: () => Rp,
    DefaultLexerErrorMessageProvider: () => cb,
    DefaultLinker: () => Hx,
    DefaultNameProvider: () => Wx,
    DefaultReferenceDescriptionProvider: () => nb,
    DefaultReferences: () => qx,
    DefaultScopeComputation: () => Yx,
    DefaultScopeProvider: () => Kx,
    DefaultServiceRegistry: () => Zx,
    DefaultTokenBuilder: () => ju,
    DefaultValueConverter: () => Ap,
    DefaultWorkspaceLock: () => mb,
    DefaultWorkspaceManager: () => lb,
    Deferred: () => ps,
    Disposable: () => vf,
    DisposableCache: () => k1,
    DocumentCache: () => UE,
    DocumentState: () => kn,
    DocumentValidator: () => Zo,
    EMPTY_SCOPE: () => q$e,
    EMPTY_STREAM: () => H2,
    EmptyFileSystem: () => ba,
    EmptyFileSystemProvider: () => tS,
    ErrorWithLocation: () => lp,
    GrammarAST: () => J2,
    GrammarUtils: () => $k,
    IndentationAwareLexer: () => tO,
    IndentationAwareTokenBuilder: () => eS,
    JSDocDocumentationProvider: () => fb,
    LangiumCompletionParser: () => $x,
    LangiumParser: () => Fx,
    LangiumParserErrorMessageProvider: () => m1,
    LeafCstNodeImpl: () => Ep,
    LexingMode: () => Np,
    MapScope: () => Xx,
    Module: () => ZI,
    MultiMap: () => zl,
    OperationCancelled: () => Gc,
    ParserWorker: () => YI,
    Reduction: () => jm,
    RegExpUtils: () => Bk,
    RootCstNodeImpl: () => p1,
    SimpleCache: () => jx,
    StreamImpl: () => co,
    StreamScope: () => w1,
    TextDocument: () => v1,
    TreeStreamImpl: () => Mc,
    URI: () => ms,
    UriUtils: () => gs,
    ValidationCategory: () => S1,
    ValidationRegistry: () => Jx,
    ValueConverter: () => zc,
    WorkspaceCache: () => E1,
    assertUnreachable: () => Oc,
    createCompletionParser: () => nI,
    createDefaultCoreModule: () => va,
    createDefaultSharedCoreModule: () => xa,
    createGrammarConfig: () => QN,
    createLangiumParser: () => aI,
    createParser: () => Gx,
    delayNextTick: () => gI,
    diagnosticData: () => Lp,
    eagerLoad: () => bue,
    getDiagnosticRange: () => cue,
    indentationBuilderDefaultOptions: () => eO,
    inject: () => Gn,
    interruptAndCheck: () => wi,
    isAstNode: () => si,
    isAstNodeDescription: () => sN,
    isAstNodeWithComment: () => CI,
    isCompositeCstNode: () => Ml,
    isIMultiModeLexerDefinition: () => BI,
    isJSDoc: () => GI,
    isLeafCstNode: () => hf,
    isLinkingError: () => ap,
    isNamed: () => oue,
    isOperationCancelled: () => Vc,
    isReference: () => ya,
    isRootCstNode: () => U2,
    isTokenTypeArray: () => jE,
    isTokenTypeDictionary: () => PI,
    loadGrammarFromJson: () => Hc,
    parseJSDoc: () => zI,
    prepareLangiumParser: () => Xce,
    setInterruptionPeriod: () => tue,
    startCancelableOperation: () => GE,
    stream: () => en,
    toDiagnosticData: () => uue,
    toDiagnosticSeverity: () => qE
  })
  var po = N(() => {
    'use strict'
    QI()
    JI()
    AI()
    wue()
    Il()
    kue()
    Sue()
    _ue()
    Due()
    Lue()
    Nue()
    Cr(Ta, Gr)
    Mue()
    Iue()
    Pc()
  })
  function Vue(t) {
    return Gl.isInstance(t, yb)
  }
  function Uue(t) {
    return Gl.isInstance(t, C1)
  }
  function Hue(t) {
    return Gl.isInstance(t, A1)
  }
  function Wue(t) {
    return Gl.isInstance(t, _1)
  }
  function que(t) {
    return Gl.isInstance(t, vb)
  }
  function Yue(t) {
    return Gl.isInstance(t, D1)
  }
  function Xue(t) {
    return Gl.isInstance(t, xb)
  }
  function jue(t) {
    return Gl.isInstance(t, bb)
  }
  function Kue(t) {
    return Gl.isInstance(t, Tb)
  }
  function Que(t) {
    return Gl.isInstance(t, wb)
  }
  function Zue(t) {
    return Gl.isInstance(t, kb)
  }
  var lze,
    xt,
    fO,
    yb,
    rS,
    C1,
    nS,
    iS,
    nO,
    A1,
    iO,
    aO,
    sO,
    _1,
    oO,
    vb,
    aS,
    lO,
    D1,
    cO,
    xb,
    bb,
    Tb,
    wb,
    cS,
    uO,
    kb,
    hO,
    sS,
    oS,
    lS,
    Jue,
    Gl,
    Oue,
    cze,
    Pue,
    uze,
    Bue,
    hze,
    Fue,
    fze,
    $ue,
    dze,
    zue,
    pze,
    Gue,
    mze,
    gze,
    yze,
    vze,
    xze,
    bze,
    Tze,
    wze,
    ys,
    dO,
    pO,
    mO,
    gO,
    yO,
    vO,
    xO,
    kze,
    Eze,
    Sze,
    Cze,
    xf,
    Ku,
    Ga,
    Aze,
    Va = N(() => {
      'use strict'
      po()
      po()
      po()
      po()
      ;(lze = Object.defineProperty), (xt = o((t, e) => lze(t, 'name', { value: e, configurable: !0 }), '__name')), (fO = 'Statement'), (yb = 'Architecture')
      o(Vue, 'isArchitecture')
      xt(Vue, 'isArchitecture')
      ;(rS = 'Axis'), (C1 = 'Branch')
      o(Uue, 'isBranch')
      xt(Uue, 'isBranch')
      ;(nS = 'Checkout'), (iS = 'CherryPicking'), (nO = 'ClassDefStatement'), (A1 = 'Commit')
      o(Hue, 'isCommit')
      xt(Hue, 'isCommit')
      ;(iO = 'Curve'), (aO = 'Edge'), (sO = 'Entry'), (_1 = 'GitGraph')
      o(Wue, 'isGitGraph')
      xt(Wue, 'isGitGraph')
      ;(oO = 'Group'), (vb = 'Info')
      o(que, 'isInfo')
      xt(que, 'isInfo')
      ;(aS = 'Item'), (lO = 'Junction'), (D1 = 'Merge')
      o(Yue, 'isMerge')
      xt(Yue, 'isMerge')
      ;(cO = 'Option'), (xb = 'Packet')
      o(Xue, 'isPacket')
      xt(Xue, 'isPacket')
      bb = 'PacketBlock'
      o(jue, 'isPacketBlock')
      xt(jue, 'isPacketBlock')
      Tb = 'Pie'
      o(Kue, 'isPie')
      xt(Kue, 'isPie')
      wb = 'PieSection'
      o(Que, 'isPieSection')
      xt(Que, 'isPieSection')
      ;(cS = 'Radar'), (uO = 'Service'), (kb = 'Treemap')
      o(Zue, 'isTreemap')
      xt(Zue, 'isTreemap')
      ;(hO = 'TreemapRow'),
        (sS = 'Direction'),
        (oS = 'Leaf'),
        (lS = 'Section'),
        (Jue = class extends ip {
          static {
            o(this, 'MermaidAstReflection')
          }
          static {
            xt(this, 'MermaidAstReflection')
          }
          getAllTypes() {
            return [yb, rS, C1, nS, iS, nO, A1, iO, sS, aO, sO, _1, oO, vb, aS, lO, oS, D1, cO, xb, bb, Tb, wb, cS, lS, uO, fO, kb, hO]
          }
          computeIsSubtype(t, e) {
            switch (t) {
              case C1:
              case nS:
              case iS:
              case A1:
              case D1:
                return this.isSubtype(fO, e)
              case sS:
                return this.isSubtype(_1, e)
              case oS:
              case lS:
                return this.isSubtype(aS, e)
              default:
                return !1
            }
          }
          getReferenceType(t) {
            let e = `${t.container.$type}:${t.property}`
            switch (e) {
              case 'Entry:axis':
                return rS
              default:
                throw new Error(`${e} is not a valid reference id.`)
            }
          }
          getTypeMetaData(t) {
            switch (t) {
              case yb:
                return {
                  name: yb,
                  properties: [
                    { name: 'accDescr' },
                    { name: 'accTitle' },
                    { name: 'edges', defaultValue: [] },
                    { name: 'groups', defaultValue: [] },
                    { name: 'junctions', defaultValue: [] },
                    { name: 'services', defaultValue: [] },
                    { name: 'title' }
                  ]
                }
              case rS:
                return { name: rS, properties: [{ name: 'label' }, { name: 'name' }] }
              case C1:
                return { name: C1, properties: [{ name: 'name' }, { name: 'order' }] }
              case nS:
                return { name: nS, properties: [{ name: 'branch' }] }
              case iS:
                return { name: iS, properties: [{ name: 'id' }, { name: 'parent' }, { name: 'tags', defaultValue: [] }] }
              case nO:
                return { name: nO, properties: [{ name: 'className' }, { name: 'styleText' }] }
              case A1:
                return { name: A1, properties: [{ name: 'id' }, { name: 'message' }, { name: 'tags', defaultValue: [] }, { name: 'type' }] }
              case iO:
                return { name: iO, properties: [{ name: 'entries', defaultValue: [] }, { name: 'label' }, { name: 'name' }] }
              case aO:
                return {
                  name: aO,
                  properties: [
                    { name: 'lhsDir' },
                    { name: 'lhsGroup', defaultValue: !1 },
                    { name: 'lhsId' },
                    { name: 'lhsInto', defaultValue: !1 },
                    { name: 'rhsDir' },
                    { name: 'rhsGroup', defaultValue: !1 },
                    { name: 'rhsId' },
                    { name: 'rhsInto', defaultValue: !1 },
                    { name: 'title' }
                  ]
                }
              case sO:
                return { name: sO, properties: [{ name: 'axis' }, { name: 'value' }] }
              case _1:
                return { name: _1, properties: [{ name: 'accDescr' }, { name: 'accTitle' }, { name: 'statements', defaultValue: [] }, { name: 'title' }] }
              case oO:
                return { name: oO, properties: [{ name: 'icon' }, { name: 'id' }, { name: 'in' }, { name: 'title' }] }
              case vb:
                return { name: vb, properties: [{ name: 'accDescr' }, { name: 'accTitle' }, { name: 'title' }] }
              case aS:
                return { name: aS, properties: [{ name: 'classSelector' }, { name: 'name' }] }
              case lO:
                return { name: lO, properties: [{ name: 'id' }, { name: 'in' }] }
              case D1:
                return { name: D1, properties: [{ name: 'branch' }, { name: 'id' }, { name: 'tags', defaultValue: [] }, { name: 'type' }] }
              case cO:
                return { name: cO, properties: [{ name: 'name' }, { name: 'value', defaultValue: !1 }] }
              case xb:
                return { name: xb, properties: [{ name: 'accDescr' }, { name: 'accTitle' }, { name: 'blocks', defaultValue: [] }, { name: 'title' }] }
              case bb:
                return { name: bb, properties: [{ name: 'bits' }, { name: 'end' }, { name: 'label' }, { name: 'start' }] }
              case Tb:
                return {
                  name: Tb,
                  properties: [{ name: 'accDescr' }, { name: 'accTitle' }, { name: 'sections', defaultValue: [] }, { name: 'showData', defaultValue: !1 }, { name: 'title' }]
                }
              case wb:
                return { name: wb, properties: [{ name: 'label' }, { name: 'value' }] }
              case cS:
                return {
                  name: cS,
                  properties: [
                    { name: 'accDescr' },
                    { name: 'accTitle' },
                    { name: 'axes', defaultValue: [] },
                    { name: 'curves', defaultValue: [] },
                    { name: 'options', defaultValue: [] },
                    { name: 'title' }
                  ]
                }
              case uO:
                return { name: uO, properties: [{ name: 'icon' }, { name: 'iconText' }, { name: 'id' }, { name: 'in' }, { name: 'title' }] }
              case kb:
                return { name: kb, properties: [{ name: 'accDescr' }, { name: 'accTitle' }, { name: 'title' }, { name: 'TreemapRows', defaultValue: [] }] }
              case hO:
                return { name: hO, properties: [{ name: 'indent' }, { name: 'item' }] }
              case sS:
                return { name: sS, properties: [{ name: 'accDescr' }, { name: 'accTitle' }, { name: 'dir' }, { name: 'statements', defaultValue: [] }, { name: 'title' }] }
              case oS:
                return { name: oS, properties: [{ name: 'classSelector' }, { name: 'name' }, { name: 'value' }] }
              case lS:
                return { name: lS, properties: [{ name: 'classSelector' }, { name: 'name' }] }
              default:
                return { name: t, properties: [] }
            }
          }
        }),
        (Gl = new Jue()),
        (cze = xt(
          () =>
            Oue ??
            (Oue = Hc(
              `{"$type":"Grammar","isDeclared":true,"name":"Info","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Info","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"info"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Keyword","value":"showInfo"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"?"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@7"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}`
            )),
          'InfoGrammar'
        )),
        (uze = xt(
          () =>
            Pue ??
            (Pue = Hc(
              `{"$type":"Grammar","isDeclared":true,"name":"Packet","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Packet","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"packet"},{"$type":"Keyword","value":"packet-beta"}]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"Assignment","feature":"blocks","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"PacketBlock","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"start","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"end","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}],"cardinality":"?"}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"+"},{"$type":"Assignment","feature":"bits","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]}]},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@9"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}`
            )),
          'PacketGrammar'
        )),
        (hze = xt(
          () =>
            Bue ??
            (Bue = Hc(
              `{"$type":"Grammar","isDeclared":true,"name":"Pie","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Pie","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"pie"},{"$type":"Assignment","feature":"showData","operator":"?=","terminal":{"$type":"Keyword","value":"showData"},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"Assignment","feature":"sections","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"PieSection","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@9"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}`
            )),
          'PieGrammar'
        )),
        (fze = xt(
          () =>
            Fue ??
            (Fue = Hc(
              `{"$type":"Grammar","isDeclared":true,"name":"Architecture","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Architecture","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"architecture-beta"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"groups","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"services","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"junctions","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Assignment","feature":"edges","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"LeftPort","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"lhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"RightPort","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"rhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Keyword","value":":"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Arrow","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Assignment","feature":"lhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"--"},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]}},{"$type":"Keyword","value":"-"}]}]},{"$type":"Assignment","feature":"rhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Group","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"group"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Service","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"service"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"iconText","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]}}],"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Junction","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"junction"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Edge","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"lhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"lhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Assignment","feature":"rhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"rhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"ARROW_DIRECTION","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"L"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"R"}}]},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"T"}}]},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"B"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_GROUP","definition":{"$type":"RegexToken","regex":"/\\\\{group\\\\}/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_INTO","definition":{"$type":"RegexToken","regex":"/<|>/"},"fragment":false,"hidden":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@18"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@19"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false},{"$type":"TerminalRule","name":"ARCH_ICON","definition":{"$type":"RegexToken","regex":"/\\\\([\\\\w-:]+\\\\)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_TITLE","definition":{"$type":"RegexToken","regex":"/\\\\[[\\\\w ]+\\\\]/"},"fragment":false,"hidden":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}`
            )),
          'ArchitectureGrammar'
        )),
        (dze = xt(
          () =>
            $ue ??
            ($ue = Hc(
              `{"$type":"Grammar","isDeclared":true,"name":"GitGraph","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"GitGraph","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Keyword","value":":"}]},{"$type":"Keyword","value":"gitGraph:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Keyword","value":":"}]}]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},{"$type":"Assignment","feature":"statements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Direction","definition":{"$type":"Assignment","feature":"dir","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"LR"},{"$type":"Keyword","value":"TB"},{"$type":"Keyword","value":"BT"}]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Commit","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"commit"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"msg:","cardinality":"?"},{"$type":"Assignment","feature":"message","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Branch","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"branch"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"order:"},{"$type":"Assignment","feature":"order","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Merge","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"merge"},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Checkout","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"checkout"},{"$type":"Keyword","value":"switch"}]},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CherryPicking","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"cherry-pick"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"parent:"},{"$type":"Assignment","feature":"parent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@14"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@15"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false},{"$type":"TerminalRule","name":"REFERENCE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\\\w([-\\\\./\\\\w]*[-\\\\w])?/"},"fragment":false,"hidden":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}`
            )),
          'GitGraphGrammar'
        )),
        (pze = xt(
          () =>
            zue ??
            (zue = Hc(
              `{"$type":"Grammar","isDeclared":true,"name":"Radar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Radar","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":"radar-beta:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":":"}]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Keyword","value":"axis"},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"curve"},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Label","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}},{"$type":"Keyword","value":"]"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Axis","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Curve","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"},{"$type":"Keyword","value":"{"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Entries","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"}]}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DetailedEntry","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"axis","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@2"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"NumberEntry","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Option","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"showLegend"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"ticks"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"max"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"min"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"graticule"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"GRATICULE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"circle"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"polygon"}}]},"fragment":false,"hidden":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@15"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@16"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"interfaces":[{"$type":"Interface","name":"Entry","attributes":[{"$type":"TypeAttribute","name":"axis","isOptional":true,"type":{"$type":"ReferenceType","referenceType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@2"}}}},{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"number"},"isOptional":false}],"superTypes":[]}],"definesHiddenTokens":false,"hiddenTokens":[],"types":[],"usedGrammars":[]}`
            )),
          'RadarGrammar'
        )),
        (mze = xt(
          () =>
            Gue ??
            (Gue = Hc(
              `{"$type":"Grammar","isDeclared":true,"name":"Treemap","rules":[{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"ParserRule","entry":true,"name":"Treemap","returnType":{"$ref":"#/interfaces@4"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]},{"$type":"Assignment","feature":"TreemapRows","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"TREEMAP_KEYWORD","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"treemap-beta"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"treemap"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"CLASS_DEF","definition":{"$type":"RegexToken","regex":"/classDef\\\\s+([a-zA-Z_][a-zA-Z0-9_]+)(?:\\\\s+([^;\\\\r\\\\n]*))?(?:;)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STYLE_SEPARATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":":::"}},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"SEPARATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":":"}},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"COMMA","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":","}},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WS","definition":{"$type":"RegexToken","regex":"/[ \\\\t]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"ML_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\%\\\\%[^\\\\n]*/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"NL","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false},{"$type":"ParserRule","name":"TreemapRow","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"indent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"item","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ClassDef","dataType":"string","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Item","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Section","returnType":{"$ref":"#/interfaces@1"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},{"$type":"Assignment","feature":"classSelector","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Leaf","returnType":{"$ref":"#/interfaces@2"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},{"$type":"Assignment","feature":"classSelector","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"INDENTATION","definition":{"$type":"RegexToken","regex":"/[ \\\\t]{1,}/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID2","definition":{"$type":"RegexToken","regex":"/[a-zA-Z_][a-zA-Z0-9_]*/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER2","definition":{"$type":"RegexToken","regex":"/[0-9_\\\\.\\\\,]+/"},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"MyNumber","dataType":"number","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"STRING2","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|'[^']*'/"},"fragment":false,"hidden":false}],"interfaces":[{"$type":"Interface","name":"Item","attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"classSelector","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]},{"$type":"Interface","name":"Section","superTypes":[{"$ref":"#/interfaces@0"}],"attributes":[]},{"$type":"Interface","name":"Leaf","superTypes":[{"$ref":"#/interfaces@0"}],"attributes":[{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"number"},"isOptional":false}]},{"$type":"Interface","name":"ClassDefStatement","attributes":[{"$type":"TypeAttribute","name":"className","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"styleText","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"Treemap","attributes":[{"$type":"TypeAttribute","name":"TreemapRows","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@14"}}},"isOptional":false},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"definesHiddenTokens":false,"hiddenTokens":[],"imports":[],"types":[],"usedGrammars":[],"$comment":"/**\\n * Treemap grammar for Langium\\n * Converted from mindmap grammar\\n *\\n * The ML_COMMENT and NL hidden terminals handle whitespace, comments, and newlines\\n * before the treemap keyword, allowing for empty lines and comments before the\\n * treemap declaration.\\n */"}`
            )),
          'TreemapGrammar'
        )),
        (gze = { languageId: 'info', fileExtensions: ['.mmd', '.mermaid'], caseInsensitive: !1, mode: 'production' }),
        (yze = { languageId: 'packet', fileExtensions: ['.mmd', '.mermaid'], caseInsensitive: !1, mode: 'production' }),
        (vze = { languageId: 'pie', fileExtensions: ['.mmd', '.mermaid'], caseInsensitive: !1, mode: 'production' }),
        (xze = { languageId: 'architecture', fileExtensions: ['.mmd', '.mermaid'], caseInsensitive: !1, mode: 'production' }),
        (bze = { languageId: 'gitGraph', fileExtensions: ['.mmd', '.mermaid'], caseInsensitive: !1, mode: 'production' }),
        (Tze = { languageId: 'radar', fileExtensions: ['.mmd', '.mermaid'], caseInsensitive: !1, mode: 'production' }),
        (wze = { languageId: 'treemap', fileExtensions: ['.mmd', '.mermaid'], caseInsensitive: !1, mode: 'production' }),
        (ys = { AstReflection: xt(() => new Jue(), 'AstReflection') }),
        (dO = { Grammar: xt(() => cze(), 'Grammar'), LanguageMetaData: xt(() => gze, 'LanguageMetaData'), parser: {} }),
        (pO = { Grammar: xt(() => uze(), 'Grammar'), LanguageMetaData: xt(() => yze, 'LanguageMetaData'), parser: {} }),
        (mO = { Grammar: xt(() => hze(), 'Grammar'), LanguageMetaData: xt(() => vze, 'LanguageMetaData'), parser: {} }),
        (gO = { Grammar: xt(() => fze(), 'Grammar'), LanguageMetaData: xt(() => xze, 'LanguageMetaData'), parser: {} }),
        (yO = { Grammar: xt(() => dze(), 'Grammar'), LanguageMetaData: xt(() => bze, 'LanguageMetaData'), parser: {} }),
        (vO = { Grammar: xt(() => pze(), 'Grammar'), LanguageMetaData: xt(() => Tze, 'LanguageMetaData'), parser: {} }),
        (xO = { Grammar: xt(() => mze(), 'Grammar'), LanguageMetaData: xt(() => wze, 'LanguageMetaData'), parser: {} }),
        (kze = /accDescr(?:[\t ]*:([^\n\r]*)|\s*{([^}]*)})/),
        (Eze = /accTitle[\t ]*:([^\n\r]*)/),
        (Sze = /title([\t ][^\n\r]*|)/),
        (Cze = { ACC_DESCR: kze, ACC_TITLE: Eze, TITLE: Sze }),
        (xf = class extends Ap {
          static {
            o(this, 'AbstractMermaidValueConverter')
          }
          static {
            xt(this, 'AbstractMermaidValueConverter')
          }
          runConverter(t, e, r) {
            let n = this.runCommonConverter(t, e, r)
            return n === void 0 && (n = this.runCustomConverter(t, e, r)), n === void 0 ? super.runConverter(t, e, r) : n
          }
          runCommonConverter(t, e, r) {
            let n = Cze[t.name]
            if (n === void 0) return
            let i = n.exec(e)
            if (i !== null) {
              if (i[1] !== void 0) return i[1].trim().replace(/[\t ]{2,}/gm, ' ')
              if (i[2] !== void 0)
                return i[2]
                  .replace(/^\s*/gm, '')
                  .replace(/\s+$/gm, '')
                  .replace(/[\t ]{2,}/gm, ' ')
                  .replace(
                    /[\n\r]{2,}/gm,
                    `
`
                  )
            }
          }
        }),
        (Ku = class extends xf {
          static {
            o(this, 'CommonValueConverter')
          }
          static {
            xt(this, 'CommonValueConverter')
          }
          runCustomConverter(t, e, r) {}
        }),
        (Ga = class extends ju {
          static {
            o(this, 'AbstractMermaidTokenBuilder')
          }
          static {
            xt(this, 'AbstractMermaidTokenBuilder')
          }
          constructor(t) {
            super(), (this.keywords = new Set(t))
          }
          buildKeywordTokens(t, e, r) {
            let n = super.buildKeywordTokens(t, e, r)
            return (
              n.forEach(i => {
                this.keywords.has(i.name) && i.PATTERN !== void 0 && (i.PATTERN = new RegExp(i.PATTERN.toString() + '(?:(?=%%)|(?!\\S))'))
              }),
              n
            )
          }
        }),
        (Aze = class extends Ga {
          static {
            o(this, 'CommonTokenBuilder')
          }
          static {
            xt(this, 'CommonTokenBuilder')
          }
        })
    })
  function hS(t = ba) {
    let e = Gn(xa(t), ys),
      r = Gn(va({ shared: e }), yO, uS)
    return e.ServiceRegistry.register(r), { shared: e, GitGraph: r }
  }
  var _ze,
    uS,
    bO = N(() => {
      'use strict'
      Va()
      po()
      ;(_ze = class extends Ga {
        static {
          o(this, 'GitGraphTokenBuilder')
        }
        static {
          xt(this, 'GitGraphTokenBuilder')
        }
        constructor() {
          super(['gitGraph'])
        }
      }),
        (uS = { parser: { TokenBuilder: xt(() => new _ze(), 'TokenBuilder'), ValueConverter: xt(() => new Ku(), 'ValueConverter') } })
      o(hS, 'createGitGraphServices')
      xt(hS, 'createGitGraphServices')
    })
  function dS(t = ba) {
    let e = Gn(xa(t), ys),
      r = Gn(va({ shared: e }), dO, fS)
    return e.ServiceRegistry.register(r), { shared: e, Info: r }
  }
  var Dze,
    fS,
    TO = N(() => {
      'use strict'
      Va()
      po()
      ;(Dze = class extends Ga {
        static {
          o(this, 'InfoTokenBuilder')
        }
        static {
          xt(this, 'InfoTokenBuilder')
        }
        constructor() {
          super(['info', 'showInfo'])
        }
      }),
        (fS = { parser: { TokenBuilder: xt(() => new Dze(), 'TokenBuilder'), ValueConverter: xt(() => new Ku(), 'ValueConverter') } })
      o(dS, 'createInfoServices')
      xt(dS, 'createInfoServices')
    })
  function mS(t = ba) {
    let e = Gn(xa(t), ys),
      r = Gn(va({ shared: e }), pO, pS)
    return e.ServiceRegistry.register(r), { shared: e, Packet: r }
  }
  var Lze,
    pS,
    wO = N(() => {
      'use strict'
      Va()
      po()
      ;(Lze = class extends Ga {
        static {
          o(this, 'PacketTokenBuilder')
        }
        static {
          xt(this, 'PacketTokenBuilder')
        }
        constructor() {
          super(['packet'])
        }
      }),
        (pS = { parser: { TokenBuilder: xt(() => new Lze(), 'TokenBuilder'), ValueConverter: xt(() => new Ku(), 'ValueConverter') } })
      o(mS, 'createPacketServices')
      xt(mS, 'createPacketServices')
    })
  function yS(t = ba) {
    let e = Gn(xa(t), ys),
      r = Gn(va({ shared: e }), mO, gS)
    return e.ServiceRegistry.register(r), { shared: e, Pie: r }
  }
  var Rze,
    Nze,
    gS,
    kO = N(() => {
      'use strict'
      Va()
      po()
      ;(Rze = class extends Ga {
        static {
          o(this, 'PieTokenBuilder')
        }
        static {
          xt(this, 'PieTokenBuilder')
        }
        constructor() {
          super(['pie', 'showData'])
        }
      }),
        (Nze = class extends xf {
          static {
            o(this, 'PieValueConverter')
          }
          static {
            xt(this, 'PieValueConverter')
          }
          runCustomConverter(t, e, r) {
            if (t.name === 'PIE_SECTION_LABEL') return e.replace(/"/g, '').trim()
          }
        }),
        (gS = { parser: { TokenBuilder: xt(() => new Rze(), 'TokenBuilder'), ValueConverter: xt(() => new Nze(), 'ValueConverter') } })
      o(yS, 'createPieServices')
      xt(yS, 'createPieServices')
    })
  function xS(t = ba) {
    let e = Gn(xa(t), ys),
      r = Gn(va({ shared: e }), gO, vS)
    return e.ServiceRegistry.register(r), { shared: e, Architecture: r }
  }
  var Mze,
    Ize,
    vS,
    EO = N(() => {
      'use strict'
      Va()
      po()
      ;(Mze = class extends Ga {
        static {
          o(this, 'ArchitectureTokenBuilder')
        }
        static {
          xt(this, 'ArchitectureTokenBuilder')
        }
        constructor() {
          super(['architecture'])
        }
      }),
        (Ize = class extends xf {
          static {
            o(this, 'ArchitectureValueConverter')
          }
          static {
            xt(this, 'ArchitectureValueConverter')
          }
          runCustomConverter(t, e, r) {
            if (t.name === 'ARCH_ICON') return e.replace(/[()]/g, '').trim()
            if (t.name === 'ARCH_TEXT_ICON') return e.replace(/["()]/g, '')
            if (t.name === 'ARCH_TITLE') return e.replace(/[[\]]/g, '').trim()
          }
        }),
        (vS = { parser: { TokenBuilder: xt(() => new Mze(), 'TokenBuilder'), ValueConverter: xt(() => new Ize(), 'ValueConverter') } })
      o(xS, 'createArchitectureServices')
      xt(xS, 'createArchitectureServices')
    })
  function TS(t = ba) {
    let e = Gn(xa(t), ys),
      r = Gn(va({ shared: e }), vO, bS)
    return e.ServiceRegistry.register(r), { shared: e, Radar: r }
  }
  var Oze,
    bS,
    SO = N(() => {
      'use strict'
      Va()
      po()
      ;(Oze = class extends Ga {
        static {
          o(this, 'RadarTokenBuilder')
        }
        static {
          xt(this, 'RadarTokenBuilder')
        }
        constructor() {
          super(['radar-beta'])
        }
      }),
        (bS = { parser: { TokenBuilder: xt(() => new Oze(), 'TokenBuilder'), ValueConverter: xt(() => new Ku(), 'ValueConverter') } })
      o(TS, 'createRadarServices')
      xt(TS, 'createRadarServices')
    })
  function ehe(t) {
    let e = t.validation.TreemapValidator,
      r = t.validation.ValidationRegistry
    if (r) {
      let n = { Treemap: e.checkSingleRoot.bind(e) }
      r.register(n, e)
    }
  }
  function kS(t = ba) {
    let e = Gn(xa(t), ys),
      r = Gn(va({ shared: e }), xO, wS)
    return e.ServiceRegistry.register(r), ehe(r), { shared: e, Treemap: r }
  }
  var Pze,
    Bze,
    Fze,
    $ze,
    wS,
    CO = N(() => {
      'use strict'
      Va()
      po()
      ;(Pze = class extends Ga {
        static {
          o(this, 'TreemapTokenBuilder')
        }
        static {
          xt(this, 'TreemapTokenBuilder')
        }
        constructor() {
          super(['treemap'])
        }
      }),
        (Bze = /classDef\s+([A-Z_a-z]\w+)(?:\s+([^\n\r;]*))?;?/),
        (Fze = class extends xf {
          static {
            o(this, 'TreemapValueConverter')
          }
          static {
            xt(this, 'TreemapValueConverter')
          }
          runCustomConverter(t, e, r) {
            if (t.name === 'NUMBER2') return parseFloat(e.replace(/,/g, ''))
            if (t.name === 'SEPARATOR') return e.substring(1, e.length - 1)
            if (t.name === 'STRING2') return e.substring(1, e.length - 1)
            if (t.name === 'INDENTATION') return e.length
            if (t.name === 'ClassDef') {
              if (typeof e != 'string') return e
              let n = Bze.exec(e)
              if (n) return { $type: 'ClassDefStatement', className: n[1], styleText: n[2] || void 0 }
            }
          }
        })
      o(ehe, 'registerValidationChecks')
      xt(ehe, 'registerValidationChecks')
      ;($ze = class {
        static {
          o(this, 'TreemapValidator')
        }
        static {
          xt(this, 'TreemapValidator')
        }
        checkSingleRoot(t, e) {
          let r
          for (let n of t.TreemapRows)
            n.item &&
              (r === void 0 && n.indent === void 0
                ? (r = 0)
                : n.indent === void 0
                  ? e('error', 'Multiple root nodes are not allowed in a treemap.', { node: n, property: 'item' })
                  : r !== void 0 && r >= parseInt(n.indent, 10) && e('error', 'Multiple root nodes are not allowed in a treemap.', { node: n, property: 'item' }))
        }
      }),
        (wS = {
          parser: { TokenBuilder: xt(() => new Pze(), 'TokenBuilder'), ValueConverter: xt(() => new Fze(), 'ValueConverter') },
          validation: { TreemapValidator: xt(() => new $ze(), 'TreemapValidator') }
        })
      o(kS, 'createTreemapServices')
      xt(kS, 'createTreemapServices')
    })
  var the = {}
  ur(the, { InfoModule: () => fS, createInfoServices: () => dS })
  var rhe = N(() => {
    'use strict'
    TO()
    Va()
  })
  var nhe = {}
  ur(nhe, { PacketModule: () => pS, createPacketServices: () => mS })
  var ihe = N(() => {
    'use strict'
    wO()
    Va()
  })
  var ahe = {}
  ur(ahe, { PieModule: () => gS, createPieServices: () => yS })
  var she = N(() => {
    'use strict'
    kO()
    Va()
  })
  var ohe = {}
  ur(ohe, { ArchitectureModule: () => vS, createArchitectureServices: () => xS })
  var lhe = N(() => {
    'use strict'
    EO()
    Va()
  })
  var che = {}
  ur(che, { GitGraphModule: () => uS, createGitGraphServices: () => hS })
  var uhe = N(() => {
    'use strict'
    bO()
    Va()
  })
  var hhe = {}
  ur(hhe, { RadarModule: () => bS, createRadarServices: () => TS })
  var fhe = N(() => {
    'use strict'
    SO()
    Va()
  })
  var dhe = {}
  ur(dhe, { TreemapModule: () => wS, createTreemapServices: () => kS })
  var phe = N(() => {
    'use strict'
    CO()
    Va()
  })
  async function vs(t, e) {
    let r = zze[t]
    if (!r) throw new Error(`Unknown diagram type: ${t}`)
    Qu[t] || (await r())
    let i = Qu[t].parse(e)
    if (i.lexerErrors.length > 0 || i.parserErrors.length > 0) throw new Gze(i)
    return i.value
  }
  var Qu,
    zze,
    Gze,
    bf = N(() => {
      'use strict'
      bO()
      TO()
      wO()
      kO()
      EO()
      SO()
      CO()
      Va()
      ;(Qu = {}),
        (zze = {
          info: xt(async () => {
            let { createInfoServices: t } = await Promise.resolve().then(() => (rhe(), the)),
              e = t().Info.parser.LangiumParser
            Qu.info = e
          }, 'info'),
          packet: xt(async () => {
            let { createPacketServices: t } = await Promise.resolve().then(() => (ihe(), nhe)),
              e = t().Packet.parser.LangiumParser
            Qu.packet = e
          }, 'packet'),
          pie: xt(async () => {
            let { createPieServices: t } = await Promise.resolve().then(() => (she(), ahe)),
              e = t().Pie.parser.LangiumParser
            Qu.pie = e
          }, 'pie'),
          architecture: xt(async () => {
            let { createArchitectureServices: t } = await Promise.resolve().then(() => (lhe(), ohe)),
              e = t().Architecture.parser.LangiumParser
            Qu.architecture = e
          }, 'architecture'),
          gitGraph: xt(async () => {
            let { createGitGraphServices: t } = await Promise.resolve().then(() => (uhe(), che)),
              e = t().GitGraph.parser.LangiumParser
            Qu.gitGraph = e
          }, 'gitGraph'),
          radar: xt(async () => {
            let { createRadarServices: t } = await Promise.resolve().then(() => (fhe(), hhe)),
              e = t().Radar.parser.LangiumParser
            Qu.radar = e
          }, 'radar'),
          treemap: xt(async () => {
            let { createTreemapServices: t } = await Promise.resolve().then(() => (phe(), dhe)),
              e = t().Treemap.parser.LangiumParser
            Qu.treemap = e
          }, 'treemap')
        })
      o(vs, 'parse')
      xt(vs, 'parse')
      Gze = class extends Error {
        static {
          o(this, 'MermaidParseError')
        }
        constructor(t) {
          let e = t.lexerErrors.map(n => n.message).join(`
`),
            r = t.parserErrors.map(n => n.message).join(`
`)
          super(`Parsing failed: ${e} ${r}`), (this.result = t)
        }
        static {
          xt(this, 'MermaidParseError')
        }
      }
    })
  function Jo(t, e) {
    t.accDescr && e.setAccDescription?.(t.accDescr), t.accTitle && e.setAccTitle?.(t.accTitle), t.title && e.setDiagramTitle?.(t.title)
  }
  var Mp = N(() => {
    'use strict'
    o(Jo, 'populateCommonDb')
  })
  var Kr,
    ES = N(() => {
      'use strict'
      Kr = { NORMAL: 0, REVERSE: 1, HIGHLIGHT: 2, MERGE: 3, CHERRY_PICK: 4 }
    })
  var Tf,
    SS = N(() => {
      'use strict'
      Tf = class {
        constructor(e) {
          this.init = e
          this.records = this.init()
        }
        static {
          o(this, 'ImperativeState')
        }
        reset() {
          this.records = this.init()
        }
      }
    })
  function AO() {
    return R9({ length: 7 })
  }
  function Uze(t, e) {
    let r = Object.create(null)
    return t.reduce((n, i) => {
      let a = e(i)
      return r[a] || ((r[a] = !0), n.push(i)), n
    }, [])
  }
  function mhe(t, e, r) {
    let n = t.indexOf(e)
    n === -1 ? t.push(r) : t.splice(n, 1, r)
  }
  function yhe(t) {
    let e = t.reduce((i, a) => (i.seq > a.seq ? i : a), t[0]),
      r = ''
    t.forEach(function (i) {
      i === e ? (r += '	*') : (r += '	|')
    })
    let n = [r, e.id, e.seq]
    for (let i in At.records.branches) At.records.branches.get(i) === e.id && n.push(i)
    if ((X.debug(n.join(' ')), e.parents && e.parents.length == 2 && e.parents[0] && e.parents[1])) {
      let i = At.records.commits.get(e.parents[0])
      mhe(t, e, i), e.parents[1] && t.push(At.records.commits.get(e.parents[1]))
    } else {
      if (e.parents.length == 0) return
      if (e.parents[0]) {
        let i = At.records.commits.get(e.parents[0])
        mhe(t, e, i)
      }
    }
    ;(t = Uze(t, i => i.id)), yhe(t)
  }
  var Vze,
    Ip,
    At,
    Hze,
    Wze,
    qze,
    Yze,
    Xze,
    jze,
    Kze,
    ghe,
    Qze,
    Zze,
    Jze,
    eGe,
    tGe,
    vhe,
    rGe,
    nGe,
    iGe,
    CS,
    _O = N(() => {
      'use strict'
      yt()
      er()
      mi()
      pr()
      ci()
      ES()
      SS()
      _a()
      ;(Vze = or.gitGraph),
        (Ip = o(() => $n({ ...Vze, ...tr().gitGraph }), 'getConfig')),
        (At = new Tf(() => {
          let t = Ip(),
            e = t.mainBranchName,
            r = t.mainBranchOrder
          return {
            mainBranchName: e,
            commits: new Map(),
            head: null,
            branchConfig: new Map([[e, { name: e, order: r }]]),
            branches: new Map([[e, null]]),
            currBranch: e,
            direction: 'LR',
            seq: 0,
            options: {}
          }
        }))
      o(AO, 'getID')
      o(Uze, 'uniqBy')
      ;(Hze = o(function (t) {
        At.records.direction = t
      }, 'setDirection')),
        (Wze = o(function (t) {
          X.debug('options str', t), (t = t?.trim()), (t = t || '{}')
          try {
            At.records.options = JSON.parse(t)
          } catch (e) {
            X.error('error while parsing gitGraph options', e.message)
          }
        }, 'setOptions')),
        (qze = o(function () {
          return At.records.options
        }, 'getOptions')),
        (Yze = o(function (t) {
          let e = t.msg,
            r = t.id,
            n = t.type,
            i = t.tags
          X.info('commit', e, r, n, i), X.debug('Entering commit:', e, r, n, i)
          let a = Ip()
          ;(r = Ze.sanitizeText(r, a)), (e = Ze.sanitizeText(e, a)), (i = i?.map(l => Ze.sanitizeText(l, a)))
          let s = {
            id: r || At.records.seq + '-' + AO(),
            message: e,
            seq: At.records.seq++,
            type: n ?? Kr.NORMAL,
            tags: i ?? [],
            parents: At.records.head == null ? [] : [At.records.head.id],
            branch: At.records.currBranch
          }
          ;(At.records.head = s),
            X.info('main branch', a.mainBranchName),
            At.records.commits.has(s.id) && X.warn(`Commit ID ${s.id} already exists`),
            At.records.commits.set(s.id, s),
            At.records.branches.set(At.records.currBranch, s.id),
            X.debug('in pushCommit ' + s.id)
        }, 'commit')),
        (Xze = o(function (t) {
          let e = t.name,
            r = t.order
          if (((e = Ze.sanitizeText(e, Ip())), At.records.branches.has(e)))
            throw new Error(`Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout ${e}")`)
          At.records.branches.set(e, At.records.head != null ? At.records.head.id : null), At.records.branchConfig.set(e, { name: e, order: r }), ghe(e), X.debug('in createBranch')
        }, 'branch')),
        (jze = o(t => {
          let e = t.branch,
            r = t.id,
            n = t.type,
            i = t.tags,
            a = Ip()
          ;(e = Ze.sanitizeText(e, a)), r && (r = Ze.sanitizeText(r, a))
          let s = At.records.branches.get(At.records.currBranch),
            l = At.records.branches.get(e),
            u = s ? At.records.commits.get(s) : void 0,
            h = l ? At.records.commits.get(l) : void 0
          if (u && h && u.branch === e) throw new Error(`Cannot merge branch '${e}' into itself.`)
          if (At.records.currBranch === e) {
            let p = new Error('Incorrect usage of "merge". Cannot merge a branch to itself')
            throw ((p.hash = { text: `merge ${e}`, token: `merge ${e}`, expected: ['branch abc'] }), p)
          }
          if (u === void 0 || !u) {
            let p = new Error(`Incorrect usage of "merge". Current branch (${At.records.currBranch})has no commits`)
            throw ((p.hash = { text: `merge ${e}`, token: `merge ${e}`, expected: ['commit'] }), p)
          }
          if (!At.records.branches.has(e)) {
            let p = new Error('Incorrect usage of "merge". Branch to be merged (' + e + ') does not exist')
            throw ((p.hash = { text: `merge ${e}`, token: `merge ${e}`, expected: [`branch ${e}`] }), p)
          }
          if (h === void 0 || !h) {
            let p = new Error('Incorrect usage of "merge". Branch to be merged (' + e + ') has no commits')
            throw ((p.hash = { text: `merge ${e}`, token: `merge ${e}`, expected: ['"commit"'] }), p)
          }
          if (u === h) {
            let p = new Error('Incorrect usage of "merge". Both branches have same head')
            throw ((p.hash = { text: `merge ${e}`, token: `merge ${e}`, expected: ['branch abc'] }), p)
          }
          if (r && At.records.commits.has(r)) {
            let p = new Error('Incorrect usage of "merge". Commit with id:' + r + ' already exists, use different custom id')
            throw (
              ((p.hash = {
                text: `merge ${e} ${r} ${n} ${i?.join(' ')}`,
                token: `merge ${e} ${r} ${n} ${i?.join(' ')}`,
                expected: [`merge ${e} ${r}_UNIQUE ${n} ${i?.join(' ')}`]
              }),
              p)
            )
          }
          let f = l || '',
            d = {
              id: r || `${At.records.seq}-${AO()}`,
              message: `merged branch ${e} into ${At.records.currBranch}`,
              seq: At.records.seq++,
              parents: At.records.head == null ? [] : [At.records.head.id, f],
              branch: At.records.currBranch,
              type: Kr.MERGE,
              customType: n,
              customId: !!r,
              tags: i ?? []
            }
          ;(At.records.head = d), At.records.commits.set(d.id, d), At.records.branches.set(At.records.currBranch, d.id), X.debug(At.records.branches), X.debug('in mergeBranch')
        }, 'merge')),
        (Kze = o(function (t) {
          let e = t.id,
            r = t.targetId,
            n = t.tags,
            i = t.parent
          X.debug('Entering cherryPick:', e, r, n)
          let a = Ip()
          if (((e = Ze.sanitizeText(e, a)), (r = Ze.sanitizeText(r, a)), (n = n?.map(u => Ze.sanitizeText(u, a))), (i = Ze.sanitizeText(i, a)), !e || !At.records.commits.has(e))) {
            let u = new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided')
            throw ((u.hash = { text: `cherryPick ${e} ${r}`, token: `cherryPick ${e} ${r}`, expected: ['cherry-pick abc'] }), u)
          }
          let s = At.records.commits.get(e)
          if (s === void 0 || !s) throw new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided')
          if (i && !(Array.isArray(s.parents) && s.parents.includes(i)))
            throw new Error('Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.')
          let l = s.branch
          if (s.type === Kr.MERGE && !i) throw new Error('Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified.')
          if (!r || !At.records.commits.has(r)) {
            if (l === At.records.currBranch) {
              let d = new Error('Incorrect usage of "cherryPick". Source commit is already on current branch')
              throw ((d.hash = { text: `cherryPick ${e} ${r}`, token: `cherryPick ${e} ${r}`, expected: ['cherry-pick abc'] }), d)
            }
            let u = At.records.branches.get(At.records.currBranch)
            if (u === void 0 || !u) {
              let d = new Error(`Incorrect usage of "cherry-pick". Current branch (${At.records.currBranch})has no commits`)
              throw ((d.hash = { text: `cherryPick ${e} ${r}`, token: `cherryPick ${e} ${r}`, expected: ['cherry-pick abc'] }), d)
            }
            let h = At.records.commits.get(u)
            if (h === void 0 || !h) {
              let d = new Error(`Incorrect usage of "cherry-pick". Current branch (${At.records.currBranch})has no commits`)
              throw ((d.hash = { text: `cherryPick ${e} ${r}`, token: `cherryPick ${e} ${r}`, expected: ['cherry-pick abc'] }), d)
            }
            let f = {
              id: At.records.seq + '-' + AO(),
              message: `cherry-picked ${s?.message} into ${At.records.currBranch}`,
              seq: At.records.seq++,
              parents: At.records.head == null ? [] : [At.records.head.id, s.id],
              branch: At.records.currBranch,
              type: Kr.CHERRY_PICK,
              tags: n ? n.filter(Boolean) : [`cherry-pick:${s.id}${s.type === Kr.MERGE ? `|parent:${i}` : ''}`]
            }
            ;(At.records.head = f), At.records.commits.set(f.id, f), At.records.branches.set(At.records.currBranch, f.id), X.debug(At.records.branches), X.debug('in cherryPick')
          }
        }, 'cherryPick')),
        (ghe = o(function (t) {
          if (((t = Ze.sanitizeText(t, Ip())), At.records.branches.has(t))) {
            At.records.currBranch = t
            let e = At.records.branches.get(At.records.currBranch)
            e === void 0 || !e ? (At.records.head = null) : (At.records.head = At.records.commits.get(e) ?? null)
          } else {
            let e = new Error(`Trying to checkout branch which is not yet created. (Help try using "branch ${t}")`)
            throw ((e.hash = { text: `checkout ${t}`, token: `checkout ${t}`, expected: [`branch ${t}`] }), e)
          }
        }, 'checkout'))
      o(mhe, 'upsert')
      o(yhe, 'prettyPrintCommitHistory')
      ;(Qze = o(function () {
        X.debug(At.records.commits)
        let t = vhe()[0]
        yhe([t])
      }, 'prettyPrint')),
        (Zze = o(function () {
          At.reset(), kr()
        }, 'clear')),
        (Jze = o(function () {
          return [...At.records.branchConfig.values()]
            .map((e, r) => (e.order !== null && e.order !== void 0 ? e : { ...e, order: parseFloat(`0.${r}`) }))
            .sort((e, r) => (e.order ?? 0) - (r.order ?? 0))
            .map(({ name: e }) => ({ name: e }))
        }, 'getBranchesAsObjArray')),
        (eGe = o(function () {
          return At.records.branches
        }, 'getBranches')),
        (tGe = o(function () {
          return At.records.commits
        }, 'getCommits')),
        (vhe = o(function () {
          let t = [...At.records.commits.values()]
          return (
            t.forEach(function (e) {
              X.debug(e.id)
            }),
            t.sort((e, r) => e.seq - r.seq),
            t
          )
        }, 'getCommitsArray')),
        (rGe = o(function () {
          return At.records.currBranch
        }, 'getCurrentBranch')),
        (nGe = o(function () {
          return At.records.direction
        }, 'getDirection')),
        (iGe = o(function () {
          return At.records.head
        }, 'getHead')),
        (CS = {
          commitType: Kr,
          getConfig: Ip,
          setDirection: Hze,
          setOptions: Wze,
          getOptions: qze,
          commit: Yze,
          branch: Xze,
          merge: jze,
          cherryPick: Kze,
          checkout: ghe,
          prettyPrint: Qze,
          clear: Zze,
          getBranchesAsObjArray: Jze,
          getBranches: eGe,
          getCommits: tGe,
          getCommitsArray: vhe,
          getCurrentBranch: rGe,
          getDirection: nGe,
          getHead: iGe,
          setAccTitle: Ar,
          getAccTitle: Dr,
          getAccDescription: Rr,
          setAccDescription: Lr,
          setDiagramTitle: Or,
          getDiagramTitle: Nr
        })
    })
  var aGe,
    sGe,
    oGe,
    lGe,
    cGe,
    uGe,
    hGe,
    xhe,
    bhe = N(() => {
      'use strict'
      bf()
      yt()
      Mp()
      _O()
      ES()
      ;(aGe = o((t, e) => {
        Jo(t, e), t.dir && e.setDirection(t.dir)
        for (let r of t.statements) sGe(r, e)
      }, 'populate')),
        (sGe = o((t, e) => {
          let n = {
            Commit: o(i => e.commit(oGe(i)), 'Commit'),
            Branch: o(i => e.branch(lGe(i)), 'Branch'),
            Merge: o(i => e.merge(cGe(i)), 'Merge'),
            Checkout: o(i => e.checkout(uGe(i)), 'Checkout'),
            CherryPicking: o(i => e.cherryPick(hGe(i)), 'CherryPicking')
          }[t.$type]
          n ? n(t) : X.error(`Unknown statement type: ${t.$type}`)
        }, 'parseStatement')),
        (oGe = o(t => ({ id: t.id, msg: t.message ?? '', type: t.type !== void 0 ? Kr[t.type] : Kr.NORMAL, tags: t.tags ?? void 0 }), 'parseCommit')),
        (lGe = o(t => ({ name: t.name, order: t.order ?? 0 }), 'parseBranch')),
        (cGe = o(t => ({ branch: t.branch, id: t.id ?? '', type: t.type !== void 0 ? Kr[t.type] : void 0, tags: t.tags ?? void 0 }), 'parseMerge')),
        (uGe = o(t => t.branch, 'parseCheckout')),
        (hGe = o(t => ({ id: t.id, targetId: '', tags: t.tags?.length === 0 ? void 0 : t.tags, parent: t.parent }), 'parseCherryPicking')),
        (xhe = {
          parse: o(async t => {
            let e = await vs('gitGraph', t)
            X.debug(e), aGe(e, CS)
          }, 'parse')
        })
    })
  var fGe,
    el,
    kf,
    Ef,
    Wc,
    Zu,
    Op,
    Hs,
    Ws,
    AS,
    Eb,
    _S,
    wf,
    Fr,
    dGe,
    whe,
    khe,
    pGe,
    mGe,
    gGe,
    yGe,
    vGe,
    xGe,
    bGe,
    TGe,
    wGe,
    kGe,
    EGe,
    SGe,
    The,
    CGe,
    Sb,
    AGe,
    _Ge,
    DGe,
    LGe,
    RGe,
    Ehe,
    She = N(() => {
      'use strict'
      fr()
      Gt()
      yt()
      er()
      ES()
      ;(fGe = me()),
        (el = fGe?.gitGraph),
        (kf = 10),
        (Ef = 40),
        (Wc = 4),
        (Zu = 2),
        (Op = 8),
        (Hs = new Map()),
        (Ws = new Map()),
        (AS = 30),
        (Eb = new Map()),
        (_S = []),
        (wf = 0),
        (Fr = 'LR'),
        (dGe = o(() => {
          Hs.clear(), Ws.clear(), Eb.clear(), (wf = 0), (_S = []), (Fr = 'LR')
        }, 'clear')),
        (whe = o(t => {
          let e = document.createElementNS('http://www.w3.org/2000/svg', 'text')
          return (
            (typeof t == 'string' ? t.split(/\\n|\n|<br\s*\/?>/gi) : t).forEach(n => {
              let i = document.createElementNS('http://www.w3.org/2000/svg', 'tspan')
              i.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve'),
                i.setAttribute('dy', '1em'),
                i.setAttribute('x', '0'),
                i.setAttribute('class', 'row'),
                (i.textContent = n.trim()),
                e.appendChild(i)
            }),
            e
          )
        }, 'drawText')),
        (khe = o(t => {
          let e, r, n
          return (
            Fr === 'BT' ? ((r = o((i, a) => i <= a, 'comparisonFunc')), (n = 1 / 0)) : ((r = o((i, a) => i >= a, 'comparisonFunc')), (n = 0)),
            t.forEach(i => {
              let a = Fr === 'TB' || Fr == 'BT' ? Ws.get(i)?.y : Ws.get(i)?.x
              a !== void 0 && r(a, n) && ((e = i), (n = a))
            }),
            e
          )
        }, 'findClosestParent')),
        (pGe = o(t => {
          let e = '',
            r = 1 / 0
          return (
            t.forEach(n => {
              let i = Ws.get(n).y
              i <= r && ((e = n), (r = i))
            }),
            e || void 0
          )
        }, 'findClosestParentBT')),
        (mGe = o((t, e, r) => {
          let n = r,
            i = r,
            a = []
          t.forEach(s => {
            let l = e.get(s)
            if (!l) throw new Error(`Commit not found for key ${s}`)
            l.parents.length ? ((n = yGe(l)), (i = Math.max(n, i))) : a.push(l), vGe(l, n)
          }),
            (n = i),
            a.forEach(s => {
              xGe(s, n, r)
            }),
            t.forEach(s => {
              let l = e.get(s)
              if (l?.parents.length) {
                let u = pGe(l.parents)
                ;(n = Ws.get(u).y - Ef), n <= i && (i = n)
                let h = Hs.get(l.branch).pos,
                  f = n - kf
                Ws.set(l.id, { x: h, y: f })
              }
            })
        }, 'setParallelBTPos')),
        (gGe = o(t => {
          let e = khe(t.parents.filter(n => n !== null))
          if (!e) throw new Error(`Closest parent not found for commit ${t.id}`)
          let r = Ws.get(e)?.y
          if (r === void 0) throw new Error(`Closest parent position not found for commit ${t.id}`)
          return r
        }, 'findClosestParentPos')),
        (yGe = o(t => gGe(t) + Ef, 'calculateCommitPosition')),
        (vGe = o((t, e) => {
          let r = Hs.get(t.branch)
          if (!r) throw new Error(`Branch not found for commit ${t.id}`)
          let n = r.pos,
            i = e + kf
          return Ws.set(t.id, { x: n, y: i }), { x: n, y: i }
        }, 'setCommitPosition')),
        (xGe = o((t, e, r) => {
          let n = Hs.get(t.branch)
          if (!n) throw new Error(`Branch not found for commit ${t.id}`)
          let i = e + r,
            a = n.pos
          Ws.set(t.id, { x: a, y: i })
        }, 'setRootPosition')),
        (bGe = o((t, e, r, n, i, a) => {
          if (a === Kr.HIGHLIGHT)
            t
              .append('rect')
              .attr('x', r.x - 10)
              .attr('y', r.y - 10)
              .attr('width', 20)
              .attr('height', 20)
              .attr('class', `commit ${e.id} commit-highlight${i % Op} ${n}-outer`),
              t
                .append('rect')
                .attr('x', r.x - 6)
                .attr('y', r.y - 6)
                .attr('width', 12)
                .attr('height', 12)
                .attr('class', `commit ${e.id} commit${i % Op} ${n}-inner`)
          else if (a === Kr.CHERRY_PICK)
            t.append('circle').attr('cx', r.x).attr('cy', r.y).attr('r', 10).attr('class', `commit ${e.id} ${n}`),
              t
                .append('circle')
                .attr('cx', r.x - 3)
                .attr('cy', r.y + 2)
                .attr('r', 2.75)
                .attr('fill', '#fff')
                .attr('class', `commit ${e.id} ${n}`),
              t
                .append('circle')
                .attr('cx', r.x + 3)
                .attr('cy', r.y + 2)
                .attr('r', 2.75)
                .attr('fill', '#fff')
                .attr('class', `commit ${e.id} ${n}`),
              t
                .append('line')
                .attr('x1', r.x + 3)
                .attr('y1', r.y + 1)
                .attr('x2', r.x)
                .attr('y2', r.y - 5)
                .attr('stroke', '#fff')
                .attr('class', `commit ${e.id} ${n}`),
              t
                .append('line')
                .attr('x1', r.x - 3)
                .attr('y1', r.y + 1)
                .attr('x2', r.x)
                .attr('y2', r.y - 5)
                .attr('stroke', '#fff')
                .attr('class', `commit ${e.id} ${n}`)
          else {
            let s = t.append('circle')
            if ((s.attr('cx', r.x), s.attr('cy', r.y), s.attr('r', e.type === Kr.MERGE ? 9 : 10), s.attr('class', `commit ${e.id} commit${i % Op}`), a === Kr.MERGE)) {
              let l = t.append('circle')
              l.attr('cx', r.x), l.attr('cy', r.y), l.attr('r', 6), l.attr('class', `commit ${n} ${e.id} commit${i % Op}`)
            }
            a === Kr.REVERSE &&
              t
                .append('path')
                .attr('d', `M ${r.x - 5},${r.y - 5}L${r.x + 5},${r.y + 5}M${r.x - 5},${r.y + 5}L${r.x + 5},${r.y - 5}`)
                .attr('class', `commit ${n} ${e.id} commit${i % Op}`)
          }
        }, 'drawCommitBullet')),
        (TGe = o((t, e, r, n) => {
          if (e.type !== Kr.CHERRY_PICK && ((e.customId && e.type === Kr.MERGE) || e.type !== Kr.MERGE) && el?.showCommitLabel) {
            let i = t.append('g'),
              a = i.insert('rect').attr('class', 'commit-label-bkg'),
              s = i
                .append('text')
                .attr('x', n)
                .attr('y', r.y + 25)
                .attr('class', 'commit-label')
                .text(e.id),
              l = s.node()?.getBBox()
            if (
              l &&
              (a
                .attr('x', r.posWithOffset - l.width / 2 - Zu)
                .attr('y', r.y + 13.5)
                .attr('width', l.width + 2 * Zu)
                .attr('height', l.height + 2 * Zu),
              Fr === 'TB' || Fr === 'BT'
                ? (a.attr('x', r.x - (l.width + 4 * Wc + 5)).attr('y', r.y - 12), s.attr('x', r.x - (l.width + 4 * Wc)).attr('y', r.y + l.height - 12))
                : s.attr('x', r.posWithOffset - l.width / 2),
              el.rotateCommitLabel)
            )
              if (Fr === 'TB' || Fr === 'BT') s.attr('transform', 'rotate(-45, ' + r.x + ', ' + r.y + ')'), a.attr('transform', 'rotate(-45, ' + r.x + ', ' + r.y + ')')
              else {
                let u = -7.5 - ((l.width + 10) / 25) * 9.5,
                  h = 10 + (l.width / 25) * 8.5
                i.attr('transform', 'translate(' + u + ', ' + h + ') rotate(-45, ' + n + ', ' + r.y + ')')
              }
          }
        }, 'drawCommitLabel')),
        (wGe = o((t, e, r, n) => {
          if (e.tags.length > 0) {
            let i = 0,
              a = 0,
              s = 0,
              l = []
            for (let u of e.tags.reverse()) {
              let h = t.insert('polygon'),
                f = t.append('circle'),
                d = t
                  .append('text')
                  .attr('y', r.y - 16 - i)
                  .attr('class', 'tag-label')
                  .text(u),
                p = d.node()?.getBBox()
              if (!p) throw new Error('Tag bbox not found')
              ;(a = Math.max(a, p.width)), (s = Math.max(s, p.height)), d.attr('x', r.posWithOffset - p.width / 2), l.push({ tag: d, hole: f, rect: h, yOffset: i }), (i += 20)
            }
            for (let { tag: u, hole: h, rect: f, yOffset: d } of l) {
              let p = s / 2,
                m = r.y - 19.2 - d
              if (
                (f.attr('class', 'tag-label-bkg').attr(
                  'points',
                  `
      ${n - a / 2 - Wc / 2},${m + Zu}  
      ${n - a / 2 - Wc / 2},${m - Zu}
      ${r.posWithOffset - a / 2 - Wc},${m - p - Zu}
      ${r.posWithOffset + a / 2 + Wc},${m - p - Zu}
      ${r.posWithOffset + a / 2 + Wc},${m + p + Zu}
      ${r.posWithOffset - a / 2 - Wc},${m + p + Zu}`
                ),
                h
                  .attr('cy', m)
                  .attr('cx', n - a / 2 + Wc / 2)
                  .attr('r', 1.5)
                  .attr('class', 'tag-hole'),
                Fr === 'TB' || Fr === 'BT')
              ) {
                let g = n + d
                f
                  .attr('class', 'tag-label-bkg')
                  .attr(
                    'points',
                    `
        ${r.x},${g + 2}
        ${r.x},${g - 2}
        ${r.x + kf},${g - p - 2}
        ${r.x + kf + a + 4},${g - p - 2}
        ${r.x + kf + a + 4},${g + p + 2}
        ${r.x + kf},${g + p + 2}`
                  )
                  .attr('transform', 'translate(12,12) rotate(45, ' + r.x + ',' + n + ')'),
                  h
                    .attr('cx', r.x + Wc / 2)
                    .attr('cy', g)
                    .attr('transform', 'translate(12,12) rotate(45, ' + r.x + ',' + n + ')'),
                  u
                    .attr('x', r.x + 5)
                    .attr('y', g + 3)
                    .attr('transform', 'translate(14,14) rotate(45, ' + r.x + ',' + n + ')')
              }
            }
          }
        }, 'drawCommitTags')),
        (kGe = o(t => {
          switch (t.customType ?? t.type) {
            case Kr.NORMAL:
              return 'commit-normal'
            case Kr.REVERSE:
              return 'commit-reverse'
            case Kr.HIGHLIGHT:
              return 'commit-highlight'
            case Kr.MERGE:
              return 'commit-merge'
            case Kr.CHERRY_PICK:
              return 'commit-cherry-pick'
            default:
              return 'commit-normal'
          }
        }, 'getCommitClassType')),
        (EGe = o((t, e, r, n) => {
          let i = { x: 0, y: 0 }
          if (t.parents.length > 0) {
            let a = khe(t.parents)
            if (a) {
              let s = n.get(a) ?? i
              return e === 'TB' ? s.y + Ef : e === 'BT' ? (n.get(t.id) ?? i).y - Ef : s.x + Ef
            }
          } else return e === 'TB' ? AS : e === 'BT' ? (n.get(t.id) ?? i).y - Ef : 0
          return 0
        }, 'calculatePosition')),
        (SGe = o((t, e, r) => {
          let n = Fr === 'BT' && r ? e : e + kf,
            i = Fr === 'TB' || Fr === 'BT' ? n : Hs.get(t.branch)?.pos,
            a = Fr === 'TB' || Fr === 'BT' ? Hs.get(t.branch)?.pos : n
          if (a === void 0 || i === void 0) throw new Error(`Position were undefined for commit ${t.id}`)
          return { x: a, y: i, posWithOffset: n }
        }, 'getCommitPosition')),
        (The = o((t, e, r) => {
          if (!el) throw new Error('GitGraph config not found')
          let n = t.append('g').attr('class', 'commit-bullets'),
            i = t.append('g').attr('class', 'commit-labels'),
            a = Fr === 'TB' || Fr === 'BT' ? AS : 0,
            s = [...e.keys()],
            l = el?.parallelCommits ?? !1,
            u = o((f, d) => {
              let p = e.get(f)?.seq,
                m = e.get(d)?.seq
              return p !== void 0 && m !== void 0 ? p - m : 0
            }, 'sortKeys'),
            h = s.sort(u)
          Fr === 'BT' && (l && mGe(h, e, a), (h = h.reverse())),
            h.forEach(f => {
              let d = e.get(f)
              if (!d) throw new Error(`Commit not found for key ${f}`)
              l && (a = EGe(d, Fr, a, Ws))
              let p = SGe(d, a, l)
              if (r) {
                let m = kGe(d),
                  g = d.customType ?? d.type,
                  y = Hs.get(d.branch)?.index ?? 0
                bGe(n, d, p, m, y, g), TGe(i, d, p, a), wGe(i, d, p, a)
              }
              Fr === 'TB' || Fr === 'BT' ? Ws.set(d.id, { x: p.x, y: p.posWithOffset }) : Ws.set(d.id, { x: p.posWithOffset, y: p.y }),
                (a = Fr === 'BT' && l ? a + Ef : a + Ef + kf),
                a > wf && (wf = a)
            })
        }, 'drawCommits')),
        (CGe = o((t, e, r, n, i) => {
          let s = (Fr === 'TB' || Fr === 'BT' ? r.x < n.x : r.y < n.y) ? e.branch : t.branch,
            l = o(h => h.branch === s, 'isOnBranchToGetCurve'),
            u = o(h => h.seq > t.seq && h.seq < e.seq, 'isBetweenCommits')
          return [...i.values()].some(h => u(h) && l(h))
        }, 'shouldRerouteArrow')),
        (Sb = o((t, e, r = 0) => {
          let n = t + Math.abs(t - e) / 2
          if (r > 5) return n
          if (_S.every(s => Math.abs(s - n) >= 10)) return _S.push(n), n
          let a = Math.abs(t - e)
          return Sb(t, e - a / 5, r + 1)
        }, 'findLane')),
        (AGe = o((t, e, r, n) => {
          let i = Ws.get(e.id),
            a = Ws.get(r.id)
          if (i === void 0 || a === void 0) throw new Error(`Commit positions not found for commits ${e.id} and ${r.id}`)
          let s = CGe(e, r, i, a, n),
            l = '',
            u = '',
            h = 0,
            f = 0,
            d = Hs.get(r.branch)?.index
          r.type === Kr.MERGE && e.id !== r.parents[0] && (d = Hs.get(e.branch)?.index)
          let p
          if (s) {
            ;(l = 'A 10 10, 0, 0, 0,'), (u = 'A 10 10, 0, 0, 1,'), (h = 10), (f = 10)
            let m = i.y < a.y ? Sb(i.y, a.y) : Sb(a.y, i.y),
              g = i.x < a.x ? Sb(i.x, a.x) : Sb(a.x, i.x)
            Fr === 'TB'
              ? i.x < a.x
                ? (p = `M ${i.x} ${i.y} L ${g - h} ${i.y} ${u} ${g} ${i.y + f} L ${g} ${a.y - h} ${l} ${g + f} ${a.y} L ${a.x} ${a.y}`)
                : ((d = Hs.get(e.branch)?.index), (p = `M ${i.x} ${i.y} L ${g + h} ${i.y} ${l} ${g} ${i.y + f} L ${g} ${a.y - h} ${u} ${g - f} ${a.y} L ${a.x} ${a.y}`))
              : Fr === 'BT'
                ? i.x < a.x
                  ? (p = `M ${i.x} ${i.y} L ${g - h} ${i.y} ${l} ${g} ${i.y - f} L ${g} ${a.y + h} ${u} ${g + f} ${a.y} L ${a.x} ${a.y}`)
                  : ((d = Hs.get(e.branch)?.index), (p = `M ${i.x} ${i.y} L ${g + h} ${i.y} ${u} ${g} ${i.y - f} L ${g} ${a.y + h} ${l} ${g - f} ${a.y} L ${a.x} ${a.y}`))
                : i.y < a.y
                  ? (p = `M ${i.x} ${i.y} L ${i.x} ${m - h} ${l} ${i.x + f} ${m} L ${a.x - h} ${m} ${u} ${a.x} ${m + f} L ${a.x} ${a.y}`)
                  : ((d = Hs.get(e.branch)?.index), (p = `M ${i.x} ${i.y} L ${i.x} ${m + h} ${u} ${i.x + f} ${m} L ${a.x - h} ${m} ${l} ${a.x} ${m - f} L ${a.x} ${a.y}`))
          } else
            (l = 'A 20 20, 0, 0, 0,'),
              (u = 'A 20 20, 0, 0, 1,'),
              (h = 20),
              (f = 20),
              Fr === 'TB'
                ? (i.x < a.x &&
                    (r.type === Kr.MERGE && e.id !== r.parents[0]
                      ? (p = `M ${i.x} ${i.y} L ${i.x} ${a.y - h} ${l} ${i.x + f} ${a.y} L ${a.x} ${a.y}`)
                      : (p = `M ${i.x} ${i.y} L ${a.x - h} ${i.y} ${u} ${a.x} ${i.y + f} L ${a.x} ${a.y}`)),
                  i.x > a.x &&
                    ((l = 'A 20 20, 0, 0, 0,'),
                    (u = 'A 20 20, 0, 0, 1,'),
                    (h = 20),
                    (f = 20),
                    r.type === Kr.MERGE && e.id !== r.parents[0]
                      ? (p = `M ${i.x} ${i.y} L ${i.x} ${a.y - h} ${u} ${i.x - f} ${a.y} L ${a.x} ${a.y}`)
                      : (p = `M ${i.x} ${i.y} L ${a.x + h} ${i.y} ${l} ${a.x} ${i.y + f} L ${a.x} ${a.y}`)),
                  i.x === a.x && (p = `M ${i.x} ${i.y} L ${a.x} ${a.y}`))
                : Fr === 'BT'
                  ? (i.x < a.x &&
                      (r.type === Kr.MERGE && e.id !== r.parents[0]
                        ? (p = `M ${i.x} ${i.y} L ${i.x} ${a.y + h} ${u} ${i.x + f} ${a.y} L ${a.x} ${a.y}`)
                        : (p = `M ${i.x} ${i.y} L ${a.x - h} ${i.y} ${l} ${a.x} ${i.y - f} L ${a.x} ${a.y}`)),
                    i.x > a.x &&
                      ((l = 'A 20 20, 0, 0, 0,'),
                      (u = 'A 20 20, 0, 0, 1,'),
                      (h = 20),
                      (f = 20),
                      r.type === Kr.MERGE && e.id !== r.parents[0]
                        ? (p = `M ${i.x} ${i.y} L ${i.x} ${a.y + h} ${l} ${i.x - f} ${a.y} L ${a.x} ${a.y}`)
                        : (p = `M ${i.x} ${i.y} L ${a.x - h} ${i.y} ${l} ${a.x} ${i.y - f} L ${a.x} ${a.y}`)),
                    i.x === a.x && (p = `M ${i.x} ${i.y} L ${a.x} ${a.y}`))
                  : (i.y < a.y &&
                      (r.type === Kr.MERGE && e.id !== r.parents[0]
                        ? (p = `M ${i.x} ${i.y} L ${a.x - h} ${i.y} ${u} ${a.x} ${i.y + f} L ${a.x} ${a.y}`)
                        : (p = `M ${i.x} ${i.y} L ${i.x} ${a.y - h} ${l} ${i.x + f} ${a.y} L ${a.x} ${a.y}`)),
                    i.y > a.y &&
                      (r.type === Kr.MERGE && e.id !== r.parents[0]
                        ? (p = `M ${i.x} ${i.y} L ${a.x - h} ${i.y} ${l} ${a.x} ${i.y - f} L ${a.x} ${a.y}`)
                        : (p = `M ${i.x} ${i.y} L ${i.x} ${a.y + h} ${u} ${i.x + f} ${a.y} L ${a.x} ${a.y}`)),
                    i.y === a.y && (p = `M ${i.x} ${i.y} L ${a.x} ${a.y}`))
          if (p === void 0) throw new Error('Line definition not found')
          t.append('path')
            .attr('d', p)
            .attr('class', 'arrow arrow' + (d % Op))
        }, 'drawArrow')),
        (_Ge = o((t, e) => {
          let r = t.append('g').attr('class', 'commit-arrows')
          ;[...e.keys()].forEach(n => {
            let i = e.get(n)
            i.parents &&
              i.parents.length > 0 &&
              i.parents.forEach(a => {
                AGe(r, e.get(a), i, e)
              })
          })
        }, 'drawArrows')),
        (DGe = o((t, e) => {
          let r = t.append('g')
          e.forEach((n, i) => {
            let a = i % Op,
              s = Hs.get(n.name)?.pos
            if (s === void 0) throw new Error(`Position not found for branch ${n.name}`)
            let l = r.append('line')
            l.attr('x1', 0),
              l.attr('y1', s),
              l.attr('x2', wf),
              l.attr('y2', s),
              l.attr('class', 'branch branch' + a),
              Fr === 'TB'
                ? (l.attr('y1', AS), l.attr('x1', s), l.attr('y2', wf), l.attr('x2', s))
                : Fr === 'BT' && (l.attr('y1', wf), l.attr('x1', s), l.attr('y2', AS), l.attr('x2', s)),
              _S.push(s)
            let u = n.name,
              h = whe(u),
              f = r.insert('rect'),
              p = r
                .insert('g')
                .attr('class', 'branchLabel')
                .insert('g')
                .attr('class', 'label branch-label' + a)
            p.node().appendChild(h)
            let m = h.getBBox()
            f
              .attr('class', 'branchLabelBkg label' + a)
              .attr('rx', 4)
              .attr('ry', 4)
              .attr('x', -m.width - 4 - (el?.rotateCommitLabel === !0 ? 30 : 0))
              .attr('y', -m.height / 2 + 8)
              .attr('width', m.width + 18)
              .attr('height', m.height + 4),
              p.attr('transform', 'translate(' + (-m.width - 14 - (el?.rotateCommitLabel === !0 ? 30 : 0)) + ', ' + (s - m.height / 2 - 1) + ')'),
              Fr === 'TB'
                ? (f.attr('x', s - m.width / 2 - 10).attr('y', 0), p.attr('transform', 'translate(' + (s - m.width / 2 - 5) + ', 0)'))
                : Fr === 'BT'
                  ? (f.attr('x', s - m.width / 2 - 10).attr('y', wf), p.attr('transform', 'translate(' + (s - m.width / 2 - 5) + ', ' + wf + ')'))
                  : f.attr('transform', 'translate(-19, ' + (s - m.height / 2) + ')')
          })
        }, 'drawBranches')),
        (LGe = o(function (t, e, r, n, i) {
          return Hs.set(t, { pos: e, index: r }), (e += 50 + (i ? 40 : 0) + (Fr === 'TB' || Fr === 'BT' ? n.width / 2 : 0)), e
        }, 'setBranchPosition')),
        (RGe = o(function (t, e, r, n) {
          if (
            (dGe(),
            X.debug(
              'in gitgraph renderer',
              t +
                `
`,
              'id:',
              e,
              r
            ),
            !el)
          )
            throw new Error('GitGraph config not found')
          let i = el.rotateCommitLabel ?? !1,
            a = n.db
          Eb = a.getCommits()
          let s = a.getBranchesAsObjArray()
          Fr = a.getDirection()
          let l = Ge(`[id="${e}"]`),
            u = 0
          s.forEach((h, f) => {
            let d = whe(h.name),
              p = l.append('g'),
              m = p.insert('g').attr('class', 'branchLabel'),
              g = m.insert('g').attr('class', 'label branch-label')
            g.node()?.appendChild(d)
            let y = d.getBBox()
            ;(u = LGe(h.name, u, f, y, i)), g.remove(), m.remove(), p.remove()
          }),
            The(l, Eb, !1),
            el.showBranches && DGe(l, s),
            _Ge(l, Eb),
            The(l, Eb, !0),
            Vt.insertTitle(l, 'gitTitleText', el.titleTopMargin ?? 0, a.getDiagramTitle()),
            AA(void 0, l, el.diagramPadding, el.useMaxWidth)
        }, 'draw')),
        (Ehe = { draw: RGe })
    })
  var NGe,
    Che,
    Ahe = N(() => {
      'use strict'
      ;(NGe = o(
        t => `
  .commit-id,
  .commit-msg,
  .branch-label {
    fill: lightgrey;
    color: lightgrey;
    font-family: 'trebuchet ms', verdana, arial, sans-serif;
    font-family: var(--mermaid-font-family);
  }
  ${[0, 1, 2, 3, 4, 5, 6, 7].map(
    e => `
        .branch-label${e} { fill: ${t['gitBranchLabel' + e]}; }
        .commit${e} { stroke: ${t['git' + e]}; fill: ${t['git' + e]}; }
        .commit-highlight${e} { stroke: ${t['gitInv' + e]}; fill: ${t['gitInv' + e]}; }
        .label${e}  { fill: ${t['git' + e]}; }
        .arrow${e} { stroke: ${t['git' + e]}; }
        `
  ).join(`
`)}

  .branch {
    stroke-width: 1;
    stroke: ${t.lineColor};
    stroke-dasharray: 2;
  }
  .commit-label { font-size: ${t.commitLabelFontSize}; fill: ${t.commitLabelColor};}
  .commit-label-bkg { font-size: ${t.commitLabelFontSize}; fill: ${t.commitLabelBackground}; opacity: 0.5; }
  .tag-label { font-size: ${t.tagLabelFontSize}; fill: ${t.tagLabelColor};}
  .tag-label-bkg { fill: ${t.tagLabelBackground}; stroke: ${t.tagLabelBorder}; }
  .tag-hole { fill: ${t.textColor}; }

  .commit-merge {
    stroke: ${t.primaryColor};
    fill: ${t.primaryColor};
  }
  .commit-reverse {
    stroke: ${t.primaryColor};
    fill: ${t.primaryColor};
    stroke-width: 3;
  }
  .commit-highlight-outer {
  }
  .commit-highlight-inner {
    stroke: ${t.primaryColor};
    fill: ${t.primaryColor};
  }

  .arrow { stroke-width: 8; stroke-linecap: round; fill: none}
  .gitTitleText {
    text-anchor: middle;
    font-size: 18px;
    fill: ${t.textColor};
  }
`,
        'getStyles'
      )),
        (Che = NGe)
    })
  var _he = {}
  ur(_he, { diagram: () => MGe })
  var MGe,
    Dhe = N(() => {
      'use strict'
      bhe()
      _O()
      She()
      Ahe()
      MGe = { parser: xhe, db: CS, renderer: Ehe, styles: Che }
    })
  var DO,
    Nhe,
    Mhe = N(() => {
      'use strict'
      DO = (function () {
        var t = o(function (L, A, I, M) {
            for (I = I || {}, M = L.length; M--; I[L[M]] = A);
            return I
          }, 'o'),
          e = [6, 8, 10, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 35, 36, 38, 40],
          r = [1, 26],
          n = [1, 27],
          i = [1, 28],
          a = [1, 29],
          s = [1, 30],
          l = [1, 31],
          u = [1, 32],
          h = [1, 33],
          f = [1, 34],
          d = [1, 9],
          p = [1, 10],
          m = [1, 11],
          g = [1, 12],
          y = [1, 13],
          v = [1, 14],
          x = [1, 15],
          b = [1, 16],
          T = [1, 19],
          S = [1, 20],
          w = [1, 21],
          E = [1, 22],
          _ = [1, 23],
          C = [1, 25],
          D = [1, 35],
          O = {
            trace: o(function () {}, 'trace'),
            yy: {},
            symbols_: {
              error: 2,
              start: 3,
              gantt: 4,
              document: 5,
              EOF: 6,
              line: 7,
              SPACE: 8,
              statement: 9,
              NL: 10,
              weekday: 11,
              weekday_monday: 12,
              weekday_tuesday: 13,
              weekday_wednesday: 14,
              weekday_thursday: 15,
              weekday_friday: 16,
              weekday_saturday: 17,
              weekday_sunday: 18,
              weekend: 19,
              weekend_friday: 20,
              weekend_saturday: 21,
              dateFormat: 22,
              inclusiveEndDates: 23,
              topAxis: 24,
              axisFormat: 25,
              tickInterval: 26,
              excludes: 27,
              includes: 28,
              todayMarker: 29,
              title: 30,
              acc_title: 31,
              acc_title_value: 32,
              acc_descr: 33,
              acc_descr_value: 34,
              acc_descr_multiline_value: 35,
              section: 36,
              clickStatement: 37,
              taskTxt: 38,
              taskData: 39,
              click: 40,
              callbackname: 41,
              callbackargs: 42,
              href: 43,
              clickStatementDebug: 44,
              $accept: 0,
              $end: 1
            },
            terminals_: {
              2: 'error',
              4: 'gantt',
              6: 'EOF',
              8: 'SPACE',
              10: 'NL',
              12: 'weekday_monday',
              13: 'weekday_tuesday',
              14: 'weekday_wednesday',
              15: 'weekday_thursday',
              16: 'weekday_friday',
              17: 'weekday_saturday',
              18: 'weekday_sunday',
              20: 'weekend_friday',
              21: 'weekend_saturday',
              22: 'dateFormat',
              23: 'inclusiveEndDates',
              24: 'topAxis',
              25: 'axisFormat',
              26: 'tickInterval',
              27: 'excludes',
              28: 'includes',
              29: 'todayMarker',
              30: 'title',
              31: 'acc_title',
              32: 'acc_title_value',
              33: 'acc_descr',
              34: 'acc_descr_value',
              35: 'acc_descr_multiline_value',
              36: 'section',
              38: 'taskTxt',
              39: 'taskData',
              40: 'click',
              41: 'callbackname',
              42: 'callbackargs',
              43: 'href'
            },
            productions_: [
              0,
              [3, 3],
              [5, 0],
              [5, 2],
              [7, 2],
              [7, 1],
              [7, 1],
              [7, 1],
              [11, 1],
              [11, 1],
              [11, 1],
              [11, 1],
              [11, 1],
              [11, 1],
              [11, 1],
              [19, 1],
              [19, 1],
              [9, 1],
              [9, 1],
              [9, 1],
              [9, 1],
              [9, 1],
              [9, 1],
              [9, 1],
              [9, 1],
              [9, 1],
              [9, 1],
              [9, 1],
              [9, 2],
              [9, 2],
              [9, 1],
              [9, 1],
              [9, 1],
              [9, 2],
              [37, 2],
              [37, 3],
              [37, 3],
              [37, 4],
              [37, 3],
              [37, 4],
              [37, 2],
              [44, 2],
              [44, 3],
              [44, 3],
              [44, 4],
              [44, 3],
              [44, 4],
              [44, 2]
            ],
            performAction: o(function (A, I, M, P, B, F, z) {
              var $ = F.length - 1
              switch (B) {
                case 1:
                  return F[$ - 1]
                case 2:
                  this.$ = []
                  break
                case 3:
                  F[$ - 1].push(F[$]), (this.$ = F[$ - 1])
                  break
                case 4:
                case 5:
                  this.$ = F[$]
                  break
                case 6:
                case 7:
                  this.$ = []
                  break
                case 8:
                  P.setWeekday('monday')
                  break
                case 9:
                  P.setWeekday('tuesday')
                  break
                case 10:
                  P.setWeekday('wednesday')
                  break
                case 11:
                  P.setWeekday('thursday')
                  break
                case 12:
                  P.setWeekday('friday')
                  break
                case 13:
                  P.setWeekday('saturday')
                  break
                case 14:
                  P.setWeekday('sunday')
                  break
                case 15:
                  P.setWeekend('friday')
                  break
                case 16:
                  P.setWeekend('saturday')
                  break
                case 17:
                  P.setDateFormat(F[$].substr(11)), (this.$ = F[$].substr(11))
                  break
                case 18:
                  P.enableInclusiveEndDates(), (this.$ = F[$].substr(18))
                  break
                case 19:
                  P.TopAxis(), (this.$ = F[$].substr(8))
                  break
                case 20:
                  P.setAxisFormat(F[$].substr(11)), (this.$ = F[$].substr(11))
                  break
                case 21:
                  P.setTickInterval(F[$].substr(13)), (this.$ = F[$].substr(13))
                  break
                case 22:
                  P.setExcludes(F[$].substr(9)), (this.$ = F[$].substr(9))
                  break
                case 23:
                  P.setIncludes(F[$].substr(9)), (this.$ = F[$].substr(9))
                  break
                case 24:
                  P.setTodayMarker(F[$].substr(12)), (this.$ = F[$].substr(12))
                  break
                case 27:
                  P.setDiagramTitle(F[$].substr(6)), (this.$ = F[$].substr(6))
                  break
                case 28:
                  ;(this.$ = F[$].trim()), P.setAccTitle(this.$)
                  break
                case 29:
                case 30:
                  ;(this.$ = F[$].trim()), P.setAccDescription(this.$)
                  break
                case 31:
                  P.addSection(F[$].substr(8)), (this.$ = F[$].substr(8))
                  break
                case 33:
                  P.addTask(F[$ - 1], F[$]), (this.$ = 'task')
                  break
                case 34:
                  ;(this.$ = F[$ - 1]), P.setClickEvent(F[$ - 1], F[$], null)
                  break
                case 35:
                  ;(this.$ = F[$ - 2]), P.setClickEvent(F[$ - 2], F[$ - 1], F[$])
                  break
                case 36:
                  ;(this.$ = F[$ - 2]), P.setClickEvent(F[$ - 2], F[$ - 1], null), P.setLink(F[$ - 2], F[$])
                  break
                case 37:
                  ;(this.$ = F[$ - 3]), P.setClickEvent(F[$ - 3], F[$ - 2], F[$ - 1]), P.setLink(F[$ - 3], F[$])
                  break
                case 38:
                  ;(this.$ = F[$ - 2]), P.setClickEvent(F[$ - 2], F[$], null), P.setLink(F[$ - 2], F[$ - 1])
                  break
                case 39:
                  ;(this.$ = F[$ - 3]), P.setClickEvent(F[$ - 3], F[$ - 1], F[$]), P.setLink(F[$ - 3], F[$ - 2])
                  break
                case 40:
                  ;(this.$ = F[$ - 1]), P.setLink(F[$ - 1], F[$])
                  break
                case 41:
                case 47:
                  this.$ = F[$ - 1] + ' ' + F[$]
                  break
                case 42:
                case 43:
                case 45:
                  this.$ = F[$ - 2] + ' ' + F[$ - 1] + ' ' + F[$]
                  break
                case 44:
                case 46:
                  this.$ = F[$ - 3] + ' ' + F[$ - 2] + ' ' + F[$ - 1] + ' ' + F[$]
                  break
              }
            }, 'anonymous'),
            table: [
              { 3: 1, 4: [1, 2] },
              { 1: [3] },
              t(e, [2, 2], { 5: 3 }),
              {
                6: [1, 4],
                7: 5,
                8: [1, 6],
                9: 7,
                10: [1, 8],
                11: 17,
                12: r,
                13: n,
                14: i,
                15: a,
                16: s,
                17: l,
                18: u,
                19: 18,
                20: h,
                21: f,
                22: d,
                23: p,
                24: m,
                25: g,
                26: y,
                27: v,
                28: x,
                29: b,
                30: T,
                31: S,
                33: w,
                35: E,
                36: _,
                37: 24,
                38: C,
                40: D
              },
              t(e, [2, 7], { 1: [2, 1] }),
              t(e, [2, 3]),
              {
                9: 36,
                11: 17,
                12: r,
                13: n,
                14: i,
                15: a,
                16: s,
                17: l,
                18: u,
                19: 18,
                20: h,
                21: f,
                22: d,
                23: p,
                24: m,
                25: g,
                26: y,
                27: v,
                28: x,
                29: b,
                30: T,
                31: S,
                33: w,
                35: E,
                36: _,
                37: 24,
                38: C,
                40: D
              },
              t(e, [2, 5]),
              t(e, [2, 6]),
              t(e, [2, 17]),
              t(e, [2, 18]),
              t(e, [2, 19]),
              t(e, [2, 20]),
              t(e, [2, 21]),
              t(e, [2, 22]),
              t(e, [2, 23]),
              t(e, [2, 24]),
              t(e, [2, 25]),
              t(e, [2, 26]),
              t(e, [2, 27]),
              { 32: [1, 37] },
              { 34: [1, 38] },
              t(e, [2, 30]),
              t(e, [2, 31]),
              t(e, [2, 32]),
              { 39: [1, 39] },
              t(e, [2, 8]),
              t(e, [2, 9]),
              t(e, [2, 10]),
              t(e, [2, 11]),
              t(e, [2, 12]),
              t(e, [2, 13]),
              t(e, [2, 14]),
              t(e, [2, 15]),
              t(e, [2, 16]),
              { 41: [1, 40], 43: [1, 41] },
              t(e, [2, 4]),
              t(e, [2, 28]),
              t(e, [2, 29]),
              t(e, [2, 33]),
              t(e, [2, 34], { 42: [1, 42], 43: [1, 43] }),
              t(e, [2, 40], { 41: [1, 44] }),
              t(e, [2, 35], { 43: [1, 45] }),
              t(e, [2, 36]),
              t(e, [2, 38], { 42: [1, 46] }),
              t(e, [2, 37]),
              t(e, [2, 39])
            ],
            defaultActions: {},
            parseError: o(function (A, I) {
              if (I.recoverable) this.trace(A)
              else {
                var M = new Error(A)
                throw ((M.hash = I), M)
              }
            }, 'parseError'),
            parse: o(function (A) {
              var I = this,
                M = [0],
                P = [],
                B = [null],
                F = [],
                z = this.table,
                $ = '',
                U = 0,
                K = 0,
                ee = 0,
                Y = 2,
                ce = 1,
                Z = F.slice.call(arguments, 1),
                ue = Object.create(this.lexer),
                Q = { yy: {} }
              for (var j in this.yy) Object.prototype.hasOwnProperty.call(this.yy, j) && (Q.yy[j] = this.yy[j])
              ue.setInput(A, Q.yy), (Q.yy.lexer = ue), (Q.yy.parser = this), typeof ue.yylloc > 'u' && (ue.yylloc = {})
              var ne = ue.yylloc
              F.push(ne)
              var te = ue.options && ue.options.ranges
              typeof Q.yy.parseError == 'function' ? (this.parseError = Q.yy.parseError) : (this.parseError = Object.getPrototypeOf(this).parseError)
              function he(q) {
                ;(M.length = M.length - 2 * q), (B.length = B.length - q), (F.length = F.length - q)
              }
              o(he, 'popStack')
              function le() {
                var q
                return (q = P.pop() || ue.lex() || ce), typeof q != 'number' && (q instanceof Array && ((P = q), (q = P.pop())), (q = I.symbols_[q] || q)), q
              }
              o(le, 'lex')
              for (var J, Se, se, ae, Oe, ye, Be = {}, He, ze, Le, Ie; ; ) {
                if (
                  ((se = M[M.length - 1]),
                  this.defaultActions[se] ? (ae = this.defaultActions[se]) : ((J === null || typeof J > 'u') && (J = le()), (ae = z[se] && z[se][J])),
                  typeof ae > 'u' || !ae.length || !ae[0])
                ) {
                  var xe = ''
                  Ie = []
                  for (He in z[se]) this.terminals_[He] && He > Y && Ie.push("'" + this.terminals_[He] + "'")
                  ue.showPosition
                    ? (xe =
                        'Parse error on line ' +
                        (U + 1) +
                        `:
` +
                        ue.showPosition() +
                        `
Expecting ` +
                        Ie.join(', ') +
                        ", got '" +
                        (this.terminals_[J] || J) +
                        "'")
                    : (xe = 'Parse error on line ' + (U + 1) + ': Unexpected ' + (J == ce ? 'end of input' : "'" + (this.terminals_[J] || J) + "'")),
                    this.parseError(xe, { text: ue.match, token: this.terminals_[J] || J, line: ue.yylineno, loc: ne, expected: Ie })
                }
                if (ae[0] instanceof Array && ae.length > 1) throw new Error('Parse Error: multiple actions possible at state: ' + se + ', token: ' + J)
                switch (ae[0]) {
                  case 1:
                    M.push(J),
                      B.push(ue.yytext),
                      F.push(ue.yylloc),
                      M.push(ae[1]),
                      (J = null),
                      Se ? ((J = Se), (Se = null)) : ((K = ue.yyleng), ($ = ue.yytext), (U = ue.yylineno), (ne = ue.yylloc), ee > 0 && ee--)
                    break
                  case 2:
                    if (
                      ((ze = this.productions_[ae[1]][1]),
                      (Be.$ = B[B.length - ze]),
                      (Be._$ = {
                        first_line: F[F.length - (ze || 1)].first_line,
                        last_line: F[F.length - 1].last_line,
                        first_column: F[F.length - (ze || 1)].first_column,
                        last_column: F[F.length - 1].last_column
                      }),
                      te && (Be._$.range = [F[F.length - (ze || 1)].range[0], F[F.length - 1].range[1]]),
                      (ye = this.performAction.apply(Be, [$, K, U, Q.yy, ae[1], B, F].concat(Z))),
                      typeof ye < 'u')
                    )
                      return ye
                    ze && ((M = M.slice(0, -1 * ze * 2)), (B = B.slice(0, -1 * ze)), (F = F.slice(0, -1 * ze))),
                      M.push(this.productions_[ae[1]][0]),
                      B.push(Be.$),
                      F.push(Be._$),
                      (Le = z[M[M.length - 2]][M[M.length - 1]]),
                      M.push(Le)
                    break
                  case 3:
                    return !0
                }
              }
              return !0
            }, 'parse')
          },
          R = (function () {
            var L = {
              EOF: 1,
              parseError: o(function (I, M) {
                if (this.yy.parser) this.yy.parser.parseError(I, M)
                else throw new Error(I)
              }, 'parseError'),
              setInput: o(function (A, I) {
                return (
                  (this.yy = I || this.yy || {}),
                  (this._input = A),
                  (this._more = this._backtrack = this.done = !1),
                  (this.yylineno = this.yyleng = 0),
                  (this.yytext = this.matched = this.match = ''),
                  (this.conditionStack = ['INITIAL']),
                  (this.yylloc = { first_line: 1, first_column: 0, last_line: 1, last_column: 0 }),
                  this.options.ranges && (this.yylloc.range = [0, 0]),
                  (this.offset = 0),
                  this
                )
              }, 'setInput'),
              input: o(function () {
                var A = this._input[0]
                ;(this.yytext += A), this.yyleng++, this.offset++, (this.match += A), (this.matched += A)
                var I = A.match(/(?:\r\n?|\n).*/g)
                return (
                  I ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++, this.options.ranges && this.yylloc.range[1]++, (this._input = this._input.slice(1)), A
                )
              }, 'input'),
              unput: o(function (A) {
                var I = A.length,
                  M = A.split(/(?:\r\n?|\n)/g)
                ;(this._input = A + this._input), (this.yytext = this.yytext.substr(0, this.yytext.length - I)), (this.offset -= I)
                var P = this.match.split(/(?:\r\n?|\n)/g)
                ;(this.match = this.match.substr(0, this.match.length - 1)),
                  (this.matched = this.matched.substr(0, this.matched.length - 1)),
                  M.length - 1 && (this.yylineno -= M.length - 1)
                var B = this.yylloc.range
                return (
                  (this.yylloc = {
                    first_line: this.yylloc.first_line,
                    last_line: this.yylineno + 1,
                    first_column: this.yylloc.first_column,
                    last_column: M ? (M.length === P.length ? this.yylloc.first_column : 0) + P[P.length - M.length].length - M[0].length : this.yylloc.first_column - I
                  }),
                  this.options.ranges && (this.yylloc.range = [B[0], B[0] + this.yyleng - I]),
                  (this.yyleng = this.yytext.length),
                  this
                )
              }, 'unput'),
              more: o(function () {
                return (this._more = !0), this
              }, 'more'),
              reject: o(function () {
                if (this.options.backtrack_lexer) this._backtrack = !0
                else
                  return this.parseError(
                    'Lexical error on line ' +
                      (this.yylineno + 1) +
                      `. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
` +
                      this.showPosition(),
                    { text: '', token: null, line: this.yylineno }
                  )
                return this
              }, 'reject'),
              less: o(function (A) {
                this.unput(this.match.slice(A))
              }, 'less'),
              pastInput: o(function () {
                var A = this.matched.substr(0, this.matched.length - this.match.length)
                return (A.length > 20 ? '...' : '') + A.substr(-20).replace(/\n/g, '')
              }, 'pastInput'),
              upcomingInput: o(function () {
                var A = this.match
                return A.length < 20 && (A += this._input.substr(0, 20 - A.length)), (A.substr(0, 20) + (A.length > 20 ? '...' : '')).replace(/\n/g, '')
              }, 'upcomingInput'),
              showPosition: o(function () {
                var A = this.pastInput(),
                  I = new Array(A.length + 1).join('-')
                return (
                  A +
                  this.upcomingInput() +
                  `
` +
                  I +
                  '^'
                )
              }, 'showPosition'),
              test_match: o(function (A, I) {
                var M, P, B
                if (
                  (this.options.backtrack_lexer &&
                    ((B = {
                      yylineno: this.yylineno,
                      yylloc: { first_line: this.yylloc.first_line, last_line: this.last_line, first_column: this.yylloc.first_column, last_column: this.yylloc.last_column },
                      yytext: this.yytext,
                      match: this.match,
                      matches: this.matches,
                      matched: this.matched,
                      yyleng: this.yyleng,
                      offset: this.offset,
                      _more: this._more,
                      _input: this._input,
                      yy: this.yy,
                      conditionStack: this.conditionStack.slice(0),
                      done: this.done
                    }),
                    this.options.ranges && (B.yylloc.range = this.yylloc.range.slice(0))),
                  (P = A[0].match(/(?:\r\n?|\n).*/g)),
                  P && (this.yylineno += P.length),
                  (this.yylloc = {
                    first_line: this.yylloc.last_line,
                    last_line: this.yylineno + 1,
                    first_column: this.yylloc.last_column,
                    last_column: P ? P[P.length - 1].length - P[P.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + A[0].length
                  }),
                  (this.yytext += A[0]),
                  (this.match += A[0]),
                  (this.matches = A),
                  (this.yyleng = this.yytext.length),
                  this.options.ranges && (this.yylloc.range = [this.offset, (this.offset += this.yyleng)]),
                  (this._more = !1),
                  (this._backtrack = !1),
                  (this._input = this._input.slice(A[0].length)),
                  (this.matched += A[0]),
                  (M = this.performAction.call(this, this.yy, this, I, this.conditionStack[this.conditionStack.length - 1])),
                  this.done && this._input && (this.done = !1),
                  M)
                )
                  return M
                if (this._backtrack) {
                  for (var F in B) this[F] = B[F]
                  return !1
                }
                return !1
              }, 'test_match'),
              next: o(function () {
                if (this.done) return this.EOF
                this._input || (this.done = !0)
                var A, I, M, P
                this._more || ((this.yytext = ''), (this.match = ''))
                for (var B = this._currentRules(), F = 0; F < B.length; F++)
                  if (((M = this._input.match(this.rules[B[F]])), M && (!I || M[0].length > I[0].length))) {
                    if (((I = M), (P = F), this.options.backtrack_lexer)) {
                      if (((A = this.test_match(M, B[F])), A !== !1)) return A
                      if (this._backtrack) {
                        I = !1
                        continue
                      } else return !1
                    } else if (!this.options.flex) break
                  }
                return I
                  ? ((A = this.test_match(I, B[P])), A !== !1 ? A : !1)
                  : this._input === ''
                    ? this.EOF
                    : this.parseError(
                        'Lexical error on line ' +
                          (this.yylineno + 1) +
                          `. Unrecognized text.
` +
                          this.showPosition(),
                        { text: '', token: null, line: this.yylineno }
                      )
              }, 'next'),
              lex: o(function () {
                var I = this.next()
                return I || this.lex()
              }, 'lex'),
              begin: o(function (I) {
                this.conditionStack.push(I)
              }, 'begin'),
              popState: o(function () {
                var I = this.conditionStack.length - 1
                return I > 0 ? this.conditionStack.pop() : this.conditionStack[0]
              }, 'popState'),
              _currentRules: o(function () {
                return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]
                  ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
                  : this.conditions.INITIAL.rules
              }, '_currentRules'),
              topState: o(function (I) {
                return (I = this.conditionStack.length - 1 - Math.abs(I || 0)), I >= 0 ? this.conditionStack[I] : 'INITIAL'
              }, 'topState'),
              pushState: o(function (I) {
                this.begin(I)
              }, 'pushState'),
              stateStackSize: o(function () {
                return this.conditionStack.length
              }, 'stateStackSize'),
              options: { 'case-insensitive': !0 },
              performAction: o(function (I, M, P, B) {
                var F = B
                switch (P) {
                  case 0:
                    return this.begin('open_directive'), 'open_directive'
                    break
                  case 1:
                    return this.begin('acc_title'), 31
                    break
                  case 2:
                    return this.popState(), 'acc_title_value'
                    break
                  case 3:
                    return this.begin('acc_descr'), 33
                    break
                  case 4:
                    return this.popState(), 'acc_descr_value'
                    break
                  case 5:
                    this.begin('acc_descr_multiline')
                    break
                  case 6:
                    this.popState()
                    break
                  case 7:
                    return 'acc_descr_multiline_value'
                  case 8:
                    break
                  case 9:
                    break
                  case 10:
                    break
                  case 11:
                    return 10
                  case 12:
                    break
                  case 13:
                    break
                  case 14:
                    this.begin('href')
                    break
                  case 15:
                    this.popState()
                    break
                  case 16:
                    return 43
                  case 17:
                    this.begin('callbackname')
                    break
                  case 18:
                    this.popState()
                    break
                  case 19:
                    this.popState(), this.begin('callbackargs')
                    break
                  case 20:
                    return 41
                  case 21:
                    this.popState()
                    break
                  case 22:
                    return 42
                  case 23:
                    this.begin('click')
                    break
                  case 24:
                    this.popState()
                    break
                  case 25:
                    return 40
                  case 26:
                    return 4
                  case 27:
                    return 22
                  case 28:
                    return 23
                  case 29:
                    return 24
                  case 30:
                    return 25
                  case 31:
                    return 26
                  case 32:
                    return 28
                  case 33:
                    return 27
                  case 34:
                    return 29
                  case 35:
                    return 12
                  case 36:
                    return 13
                  case 37:
                    return 14
                  case 38:
                    return 15
                  case 39:
                    return 16
                  case 40:
                    return 17
                  case 41:
                    return 18
                  case 42:
                    return 20
                  case 43:
                    return 21
                  case 44:
                    return 'date'
                  case 45:
                    return 30
                  case 46:
                    return 'accDescription'
                  case 47:
                    return 36
                  case 48:
                    return 38
                  case 49:
                    return 39
                  case 50:
                    return ':'
                  case 51:
                    return 6
                  case 52:
                    return 'INVALID'
                }
              }, 'anonymous'),
              rules: [
                /^(?:%%\{)/i,
                /^(?:accTitle\s*:\s*)/i,
                /^(?:(?!\n||)*[^\n]*)/i,
                /^(?:accDescr\s*:\s*)/i,
                /^(?:(?!\n||)*[^\n]*)/i,
                /^(?:accDescr\s*\{\s*)/i,
                /^(?:[\}])/i,
                /^(?:[^\}]*)/i,
                /^(?:%%(?!\{)*[^\n]*)/i,
                /^(?:[^\}]%%*[^\n]*)/i,
                /^(?:%%*[^\n]*[\n]*)/i,
                /^(?:[\n]+)/i,
                /^(?:\s+)/i,
                /^(?:%[^\n]*)/i,
                /^(?:href[\s]+["])/i,
                /^(?:["])/i,
                /^(?:[^"]*)/i,
                /^(?:call[\s]+)/i,
                /^(?:\([\s]*\))/i,
                /^(?:\()/i,
                /^(?:[^(]*)/i,
                /^(?:\))/i,
                /^(?:[^)]*)/i,
                /^(?:click[\s]+)/i,
                /^(?:[\s\n])/i,
                /^(?:[^\s\n]*)/i,
                /^(?:gantt\b)/i,
                /^(?:dateFormat\s[^#\n;]+)/i,
                /^(?:inclusiveEndDates\b)/i,
                /^(?:topAxis\b)/i,
                /^(?:axisFormat\s[^#\n;]+)/i,
                /^(?:tickInterval\s[^#\n;]+)/i,
                /^(?:includes\s[^#\n;]+)/i,
                /^(?:excludes\s[^#\n;]+)/i,
                /^(?:todayMarker\s[^\n;]+)/i,
                /^(?:weekday\s+monday\b)/i,
                /^(?:weekday\s+tuesday\b)/i,
                /^(?:weekday\s+wednesday\b)/i,
                /^(?:weekday\s+thursday\b)/i,
                /^(?:weekday\s+friday\b)/i,
                /^(?:weekday\s+saturday\b)/i,
                /^(?:weekday\s+sunday\b)/i,
                /^(?:weekend\s+friday\b)/i,
                /^(?:weekend\s+saturday\b)/i,
                /^(?:\d\d\d\d-\d\d-\d\d\b)/i,
                /^(?:title\s[^\n]+)/i,
                /^(?:accDescription\s[^#\n;]+)/i,
                /^(?:section\s[^\n]+)/i,
                /^(?:[^:\n]+)/i,
                /^(?::[^#\n;]+)/i,
                /^(?::)/i,
                /^(?:$)/i,
                /^(?:.)/i
              ],
              conditions: {
                acc_descr_multiline: { rules: [6, 7], inclusive: !1 },
                acc_descr: { rules: [4], inclusive: !1 },
                acc_title: { rules: [2], inclusive: !1 },
                callbackargs: { rules: [21, 22], inclusive: !1 },
                callbackname: { rules: [18, 19, 20], inclusive: !1 },
                href: { rules: [15, 16], inclusive: !1 },
                click: { rules: [24, 25], inclusive: !1 },
                INITIAL: {
                  rules: [0, 1, 3, 5, 8, 9, 10, 11, 12, 13, 14, 17, 23, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52],
                  inclusive: !0
                }
              }
            }
            return L
          })()
        O.lexer = R
        function k() {
          this.yy = {}
        }
        return o(k, 'Parser'), (k.prototype = O), (O.Parser = k), new k()
      })()
      DO.parser = DO
      Nhe = DO
    })
  var Ihe = Pi((LO, RO) => {
    'use strict'
    ;(function (t, e) {
      typeof LO == 'object' && typeof RO < 'u'
        ? (RO.exports = e())
        : typeof define == 'function' && define.amd
          ? define(e)
          : ((t = typeof globalThis < 'u' ? globalThis : t || self).dayjs_plugin_isoWeek = e())
    })(LO, function () {
      'use strict'
      var t = 'day'
      return function (e, r, n) {
        var i = o(function (l) {
            return l.add(4 - l.isoWeekday(), t)
          }, 'a'),
          a = r.prototype
        ;(a.isoWeekYear = function () {
          return i(this).year()
        }),
          (a.isoWeek = function (l) {
            if (!this.$utils().u(l)) return this.add(7 * (l - this.isoWeek()), t)
            var u,
              h,
              f,
              d,
              p = i(this),
              m = ((u = this.isoWeekYear()), (h = this.$u), (f = (h ? n.utc : n)().year(u).startOf('year')), (d = 4 - f.isoWeekday()), f.isoWeekday() > 4 && (d += 7), f.add(d, t))
            return p.diff(m, 'week') + 1
          }),
          (a.isoWeekday = function (l) {
            return this.$utils().u(l) ? this.day() || 7 : this.day(this.day() % 7 ? l : l - 7)
          })
        var s = a.startOf
        a.startOf = function (l, u) {
          var h = this.$utils(),
            f = !!h.u(u) || u
          return h.p(l) === 'isoweek'
            ? f
              ? this.date(this.date() - (this.isoWeekday() - 1)).startOf('day')
              : this.date(this.date() - 1 - (this.isoWeekday() - 1) + 7).endOf('day')
            : s.bind(this)(l, u)
        }
      }
    })
  })
  var Ohe = Pi((NO, MO) => {
    'use strict'
    ;(function (t, e) {
      typeof NO == 'object' && typeof MO < 'u'
        ? (MO.exports = e())
        : typeof define == 'function' && define.amd
          ? define(e)
          : ((t = typeof globalThis < 'u' ? globalThis : t || self).dayjs_plugin_customParseFormat = e())
    })(NO, function () {
      'use strict'
      var t = { LTS: 'h:mm:ss A', LT: 'h:mm A', L: 'MM/DD/YYYY', LL: 'MMMM D, YYYY', LLL: 'MMMM D, YYYY h:mm A', LLLL: 'dddd, MMMM D, YYYY h:mm A' },
        e = /(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,
        r = /\d/,
        n = /\d\d/,
        i = /\d\d?/,
        a = /\d*[^-_:/,()\s\d]+/,
        s = {},
        l = o(function (g) {
          return (g = +g) + (g > 68 ? 1900 : 2e3)
        }, 'a'),
        u = o(function (g) {
          return function (y) {
            this[g] = +y
          }
        }, 'f'),
        h = [
          /[+-]\d\d:?(\d\d)?|Z/,
          function (g) {
            ;(this.zone || (this.zone = {})).offset = (function (y) {
              if (!y || y === 'Z') return 0
              var v = y.match(/([+-]|\d\d)/g),
                x = 60 * v[1] + (+v[2] || 0)
              return x === 0 ? 0 : v[0] === '+' ? -x : x
            })(g)
          }
        ],
        f = o(function (g) {
          var y = s[g]
          return y && (y.indexOf ? y : y.s.concat(y.f))
        }, 'u'),
        d = o(function (g, y) {
          var v,
            x = s.meridiem
          if (x) {
            for (var b = 1; b <= 24; b += 1)
              if (g.indexOf(x(b, 0, y)) > -1) {
                v = b > 12
                break
              }
          } else v = g === (y ? 'pm' : 'PM')
          return v
        }, 'd'),
        p = {
          A: [
            a,
            function (g) {
              this.afternoon = d(g, !1)
            }
          ],
          a: [
            a,
            function (g) {
              this.afternoon = d(g, !0)
            }
          ],
          Q: [
            r,
            function (g) {
              this.month = 3 * (g - 1) + 1
            }
          ],
          S: [
            r,
            function (g) {
              this.milliseconds = 100 * +g
            }
          ],
          SS: [
            n,
            function (g) {
              this.milliseconds = 10 * +g
            }
          ],
          SSS: [
            /\d{3}/,
            function (g) {
              this.milliseconds = +g
            }
          ],
          s: [i, u('seconds')],
          ss: [i, u('seconds')],
          m: [i, u('minutes')],
          mm: [i, u('minutes')],
          H: [i, u('hours')],
          h: [i, u('hours')],
          HH: [i, u('hours')],
          hh: [i, u('hours')],
          D: [i, u('day')],
          DD: [n, u('day')],
          Do: [
            a,
            function (g) {
              var y = s.ordinal,
                v = g.match(/\d+/)
              if (((this.day = v[0]), y)) for (var x = 1; x <= 31; x += 1) y(x).replace(/\[|\]/g, '') === g && (this.day = x)
            }
          ],
          w: [i, u('week')],
          ww: [n, u('week')],
          M: [i, u('month')],
          MM: [n, u('month')],
          MMM: [
            a,
            function (g) {
              var y = f('months'),
                v =
                  (
                    f('monthsShort') ||
                    y.map(function (x) {
                      return x.slice(0, 3)
                    })
                  ).indexOf(g) + 1
              if (v < 1) throw new Error()
              this.month = v % 12 || v
            }
          ],
          MMMM: [
            a,
            function (g) {
              var y = f('months').indexOf(g) + 1
              if (y < 1) throw new Error()
              this.month = y % 12 || y
            }
          ],
          Y: [/[+-]?\d+/, u('year')],
          YY: [
            n,
            function (g) {
              this.year = l(g)
            }
          ],
          YYYY: [/\d{4}/, u('year')],
          Z: h,
          ZZ: h
        }
      function m(g) {
        var y, v
        ;(y = g), (v = s && s.formats)
        for (
          var x = (g = y.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g, function (C, D, O) {
              var R = O && O.toUpperCase()
              return (
                D ||
                v[O] ||
                t[O] ||
                v[R].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g, function (k, L, A) {
                  return L || A.slice(1)
                })
              )
            })).match(e),
            b = x.length,
            T = 0;
          T < b;
          T += 1
        ) {
          var S = x[T],
            w = p[S],
            E = w && w[0],
            _ = w && w[1]
          x[T] = _ ? { regex: E, parser: _ } : S.replace(/^\[|\]$/g, '')
        }
        return function (C) {
          for (var D = {}, O = 0, R = 0; O < b; O += 1) {
            var k = x[O]
            if (typeof k == 'string') R += k.length
            else {
              var L = k.regex,
                A = k.parser,
                I = C.slice(R),
                M = L.exec(I)[0]
              A.call(D, M), (C = C.replace(M, ''))
            }
          }
          return (
            (function (P) {
              var B = P.afternoon
              if (B !== void 0) {
                var F = P.hours
                B ? F < 12 && (P.hours += 12) : F === 12 && (P.hours = 0), delete P.afternoon
              }
            })(D),
            D
          )
        }
      }
      return (
        o(m, 'l'),
        function (g, y, v) {
          ;(v.p.customParseFormat = !0), g && g.parseTwoDigitYear && (l = g.parseTwoDigitYear)
          var x = y.prototype,
            b = x.parse
          x.parse = function (T) {
            var S = T.date,
              w = T.utc,
              E = T.args
            this.$u = w
            var _ = E[1]
            if (typeof _ == 'string') {
              var C = E[2] === !0,
                D = E[3] === !0,
                O = C || D,
                R = E[2]
              D && (R = E[2]),
                (s = this.$locale()),
                !C && R && (s = v.Ls[R]),
                (this.$d = (function (I, M, P, B) {
                  try {
                    if (['x', 'X'].indexOf(M) > -1) return new Date((M === 'X' ? 1e3 : 1) * I)
                    var F = m(M)(I),
                      z = F.year,
                      $ = F.month,
                      U = F.day,
                      K = F.hours,
                      ee = F.minutes,
                      Y = F.seconds,
                      ce = F.milliseconds,
                      Z = F.zone,
                      ue = F.week,
                      Q = new Date(),
                      j = U || (z || $ ? 1 : Q.getDate()),
                      ne = z || Q.getFullYear(),
                      te = 0
                    ;(z && !$) || (te = $ > 0 ? $ - 1 : Q.getMonth())
                    var he,
                      le = K || 0,
                      J = ee || 0,
                      Se = Y || 0,
                      se = ce || 0
                    return Z
                      ? new Date(Date.UTC(ne, te, j, le, J, Se, se + 60 * Z.offset * 1e3))
                      : P
                        ? new Date(Date.UTC(ne, te, j, le, J, Se, se))
                        : ((he = new Date(ne, te, j, le, J, Se, se)), ue && (he = B(he).week(ue).toDate()), he)
                  } catch {
                    return new Date('')
                  }
                })(S, _, w, v)),
                this.init(),
                R && R !== !0 && (this.$L = this.locale(R).$L),
                O && S != this.format(_) && (this.$d = new Date('')),
                (s = {})
            } else if (_ instanceof Array)
              for (var k = _.length, L = 1; L <= k; L += 1) {
                E[1] = _[L - 1]
                var A = v.apply(this, E)
                if (A.isValid()) {
                  ;(this.$d = A.$d), (this.$L = A.$L), this.init()
                  break
                }
                L === k && (this.$d = new Date(''))
              }
            else b.call(this, T)
          }
        }
      )
    })
  })
  var Phe = Pi((IO, OO) => {
    'use strict'
    ;(function (t, e) {
      typeof IO == 'object' && typeof OO < 'u'
        ? (OO.exports = e())
        : typeof define == 'function' && define.amd
          ? define(e)
          : ((t = typeof globalThis < 'u' ? globalThis : t || self).dayjs_plugin_advancedFormat = e())
    })(IO, function () {
      'use strict'
      return function (t, e) {
        var r = e.prototype,
          n = r.format
        r.format = function (i) {
          var a = this,
            s = this.$locale()
          if (!this.isValid()) return n.bind(this)(i)
          var l = this.$utils(),
            u = (i || 'YYYY-MM-DDTHH:mm:ssZ').replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g, function (h) {
              switch (h) {
                case 'Q':
                  return Math.ceil((a.$M + 1) / 3)
                case 'Do':
                  return s.ordinal(a.$D)
                case 'gggg':
                  return a.weekYear()
                case 'GGGG':
                  return a.isoWeekYear()
                case 'wo':
                  return s.ordinal(a.week(), 'W')
                case 'w':
                case 'ww':
                  return l.s(a.week(), h === 'w' ? 1 : 2, '0')
                case 'W':
                case 'WW':
                  return l.s(a.isoWeek(), h === 'W' ? 1 : 2, '0')
                case 'k':
                case 'kk':
                  return l.s(String(a.$H === 0 ? 24 : a.$H), h === 'k' ? 1 : 2, '0')
                case 'X':
                  return Math.floor(a.$d.getTime() / 1e3)
                case 'x':
                  return a.$d.getTime()
                case 'z':
                  return '[' + a.offsetName() + ']'
                case 'zzz':
                  return '[' + a.offsetName('long') + ']'
                default:
                  return h
              }
            })
          return n.bind(this)(u)
        }
      }
    })
  })
  function Zhe(t, e, r) {
    let n = !0
    for (; n; )
      (n = !1),
        r.forEach(function (i) {
          let a = '^\\s*' + i + '\\s*$',
            s = new RegExp(a)
          t[0].match(s) && ((e[i] = !0), t.shift(1), (n = !0))
        })
  }
  var $he,
    mo,
    zhe,
    Ghe,
    Vhe,
    Bhe,
    qc,
    $O,
    zO,
    GO,
    Cb,
    Ab,
    VO,
    UO,
    RS,
    R1,
    HO,
    Uhe,
    WO,
    _b,
    qO,
    YO,
    NS,
    PO,
    BGe,
    FGe,
    $Ge,
    zGe,
    GGe,
    VGe,
    UGe,
    HGe,
    WGe,
    qGe,
    YGe,
    XGe,
    jGe,
    KGe,
    QGe,
    ZGe,
    JGe,
    eVe,
    tVe,
    rVe,
    nVe,
    iVe,
    aVe,
    Hhe,
    sVe,
    oVe,
    lVe,
    Whe,
    cVe,
    BO,
    qhe,
    Yhe,
    DS,
    L1,
    uVe,
    hVe,
    FO,
    LS,
    Ui,
    Xhe,
    fVe,
    Pp,
    dVe,
    Fhe,
    pVe,
    jhe,
    mVe,
    Khe,
    gVe,
    yVe,
    Qhe,
    Jhe = N(() => {
      'use strict'
      ;($he = Aa(Z0(), 1)), (mo = Aa(U4(), 1)), (zhe = Aa(Ihe(), 1)), (Ghe = Aa(Ohe(), 1)), (Vhe = Aa(Phe(), 1))
      yt()
      Gt()
      er()
      ci()
      mo.default.extend(zhe.default)
      mo.default.extend(Ghe.default)
      mo.default.extend(Vhe.default)
      ;(Bhe = { friday: 5, saturday: 6 }),
        (qc = ''),
        ($O = ''),
        (GO = ''),
        (Cb = []),
        (Ab = []),
        (VO = new Map()),
        (UO = []),
        (RS = []),
        (R1 = ''),
        (HO = ''),
        (Uhe = ['active', 'done', 'crit', 'milestone', 'vert']),
        (WO = []),
        (_b = !1),
        (qO = !1),
        (YO = 'sunday'),
        (NS = 'saturday'),
        (PO = 0),
        (BGe = o(function () {
          ;(UO = []),
            (RS = []),
            (R1 = ''),
            (WO = []),
            (DS = 0),
            (FO = void 0),
            (LS = void 0),
            (Ui = []),
            (qc = ''),
            ($O = ''),
            (HO = ''),
            (zO = void 0),
            (GO = ''),
            (Cb = []),
            (Ab = []),
            (_b = !1),
            (qO = !1),
            (PO = 0),
            (VO = new Map()),
            kr(),
            (YO = 'sunday'),
            (NS = 'saturday')
        }, 'clear')),
        (FGe = o(function (t) {
          $O = t
        }, 'setAxisFormat')),
        ($Ge = o(function () {
          return $O
        }, 'getAxisFormat')),
        (zGe = o(function (t) {
          zO = t
        }, 'setTickInterval')),
        (GGe = o(function () {
          return zO
        }, 'getTickInterval')),
        (VGe = o(function (t) {
          GO = t
        }, 'setTodayMarker')),
        (UGe = o(function () {
          return GO
        }, 'getTodayMarker')),
        (HGe = o(function (t) {
          qc = t
        }, 'setDateFormat')),
        (WGe = o(function () {
          _b = !0
        }, 'enableInclusiveEndDates')),
        (qGe = o(function () {
          return _b
        }, 'endDatesAreInclusive')),
        (YGe = o(function () {
          qO = !0
        }, 'enableTopAxis')),
        (XGe = o(function () {
          return qO
        }, 'topAxisEnabled')),
        (jGe = o(function (t) {
          HO = t
        }, 'setDisplayMode')),
        (KGe = o(function () {
          return HO
        }, 'getDisplayMode')),
        (QGe = o(function () {
          return qc
        }, 'getDateFormat')),
        (ZGe = o(function (t) {
          Cb = t.toLowerCase().split(/[\s,]+/)
        }, 'setIncludes')),
        (JGe = o(function () {
          return Cb
        }, 'getIncludes')),
        (eVe = o(function (t) {
          Ab = t.toLowerCase().split(/[\s,]+/)
        }, 'setExcludes')),
        (tVe = o(function () {
          return Ab
        }, 'getExcludes')),
        (rVe = o(function () {
          return VO
        }, 'getLinks')),
        (nVe = o(function (t) {
          ;(R1 = t), UO.push(t)
        }, 'addSection')),
        (iVe = o(function () {
          return UO
        }, 'getSections')),
        (aVe = o(function () {
          let t = Fhe(),
            e = 10,
            r = 0
          for (; !t && r < e; ) (t = Fhe()), r++
          return (RS = Ui), RS
        }, 'getTasks')),
        (Hhe = o(function (t, e, r, n) {
          return n.includes(t.format(e.trim()))
            ? !1
            : (r.includes('weekends') && (t.isoWeekday() === Bhe[NS] || t.isoWeekday() === Bhe[NS] + 1)) || r.includes(t.format('dddd').toLowerCase())
              ? !0
              : r.includes(t.format(e.trim()))
        }, 'isInvalidDate')),
        (sVe = o(function (t) {
          YO = t
        }, 'setWeekday')),
        (oVe = o(function () {
          return YO
        }, 'getWeekday')),
        (lVe = o(function (t) {
          NS = t
        }, 'setWeekend')),
        (Whe = o(function (t, e, r, n) {
          if (!r.length || t.manualEndTime) return
          let i
          t.startTime instanceof Date ? (i = (0, mo.default)(t.startTime)) : (i = (0, mo.default)(t.startTime, e, !0)), (i = i.add(1, 'd'))
          let a
          t.endTime instanceof Date ? (a = (0, mo.default)(t.endTime)) : (a = (0, mo.default)(t.endTime, e, !0))
          let [s, l] = cVe(i, a, e, r, n)
          ;(t.endTime = s.toDate()), (t.renderEndTime = l)
        }, 'checkTaskDates')),
        (cVe = o(function (t, e, r, n, i) {
          let a = !1,
            s = null
          for (; t <= e; ) a || (s = e.toDate()), (a = Hhe(t, r, n, i)), a && (e = e.add(1, 'd')), (t = t.add(1, 'd'))
          return [e, s]
        }, 'fixTaskDates')),
        (BO = o(function (t, e, r) {
          r = r.trim()
          let i = /^after\s+(?<ids>[\d\w- ]+)/.exec(r)
          if (i !== null) {
            let s = null
            for (let u of i.groups.ids.split(' ')) {
              let h = Pp(u)
              h !== void 0 && (!s || h.endTime > s.endTime) && (s = h)
            }
            if (s) return s.endTime
            let l = new Date()
            return l.setHours(0, 0, 0, 0), l
          }
          let a = (0, mo.default)(r, e.trim(), !0)
          if (a.isValid()) return a.toDate()
          {
            X.debug('Invalid date:' + r), X.debug('With date format:' + e.trim())
            let s = new Date(r)
            if (s === void 0 || isNaN(s.getTime()) || s.getFullYear() < -1e4 || s.getFullYear() > 1e4) throw new Error('Invalid date:' + r)
            return s
          }
        }, 'getStartDate')),
        (qhe = o(function (t) {
          let e = /^(\d+(?:\.\d+)?)([Mdhmswy]|ms)$/.exec(t.trim())
          return e !== null ? [Number.parseFloat(e[1]), e[2]] : [NaN, 'ms']
        }, 'parseDuration')),
        (Yhe = o(function (t, e, r, n = !1) {
          r = r.trim()
          let a = /^until\s+(?<ids>[\d\w- ]+)/.exec(r)
          if (a !== null) {
            let f = null
            for (let p of a.groups.ids.split(' ')) {
              let m = Pp(p)
              m !== void 0 && (!f || m.startTime < f.startTime) && (f = m)
            }
            if (f) return f.startTime
            let d = new Date()
            return d.setHours(0, 0, 0, 0), d
          }
          let s = (0, mo.default)(r, e.trim(), !0)
          if (s.isValid()) return n && (s = s.add(1, 'd')), s.toDate()
          let l = (0, mo.default)(t),
            [u, h] = qhe(r)
          if (!Number.isNaN(u)) {
            let f = l.add(u, h)
            f.isValid() && (l = f)
          }
          return l.toDate()
        }, 'getEndDate')),
        (DS = 0),
        (L1 = o(function (t) {
          return t === void 0 ? ((DS = DS + 1), 'task' + DS) : t
        }, 'parseId')),
        (uVe = o(function (t, e) {
          let r
          e.substr(0, 1) === ':' ? (r = e.substr(1, e.length)) : (r = e)
          let n = r.split(','),
            i = {}
          Zhe(n, i, Uhe)
          for (let s = 0; s < n.length; s++) n[s] = n[s].trim()
          let a = ''
          switch (n.length) {
            case 1:
              ;(i.id = L1()), (i.startTime = t.endTime), (a = n[0])
              break
            case 2:
              ;(i.id = L1()), (i.startTime = BO(void 0, qc, n[0])), (a = n[1])
              break
            case 3:
              ;(i.id = L1(n[0])), (i.startTime = BO(void 0, qc, n[1])), (a = n[2])
              break
            default:
          }
          return a && ((i.endTime = Yhe(i.startTime, qc, a, _b)), (i.manualEndTime = (0, mo.default)(a, 'YYYY-MM-DD', !0).isValid()), Whe(i, qc, Ab, Cb)), i
        }, 'compileData')),
        (hVe = o(function (t, e) {
          let r
          e.substr(0, 1) === ':' ? (r = e.substr(1, e.length)) : (r = e)
          let n = r.split(','),
            i = {}
          Zhe(n, i, Uhe)
          for (let a = 0; a < n.length; a++) n[a] = n[a].trim()
          switch (n.length) {
            case 1:
              ;(i.id = L1()), (i.startTime = { type: 'prevTaskEnd', id: t }), (i.endTime = { data: n[0] })
              break
            case 2:
              ;(i.id = L1()), (i.startTime = { type: 'getStartDate', startData: n[0] }), (i.endTime = { data: n[1] })
              break
            case 3:
              ;(i.id = L1(n[0])), (i.startTime = { type: 'getStartDate', startData: n[1] }), (i.endTime = { data: n[2] })
              break
            default:
          }
          return i
        }, 'parseData')),
        (Ui = []),
        (Xhe = {}),
        (fVe = o(function (t, e) {
          let r = { section: R1, type: R1, processed: !1, manualEndTime: !1, renderEndTime: null, raw: { data: e }, task: t, classes: [] },
            n = hVe(LS, e)
          ;(r.raw.startTime = n.startTime),
            (r.raw.endTime = n.endTime),
            (r.id = n.id),
            (r.prevTaskId = LS),
            (r.active = n.active),
            (r.done = n.done),
            (r.crit = n.crit),
            (r.milestone = n.milestone),
            (r.vert = n.vert),
            (r.order = PO),
            PO++
          let i = Ui.push(r)
          ;(LS = r.id), (Xhe[r.id] = i - 1)
        }, 'addTask')),
        (Pp = o(function (t) {
          let e = Xhe[t]
          return Ui[e]
        }, 'findTaskById')),
        (dVe = o(function (t, e) {
          let r = { section: R1, type: R1, description: t, task: t, classes: [] },
            n = uVe(FO, e)
          ;(r.startTime = n.startTime),
            (r.endTime = n.endTime),
            (r.id = n.id),
            (r.active = n.active),
            (r.done = n.done),
            (r.crit = n.crit),
            (r.milestone = n.milestone),
            (r.vert = n.vert),
            (FO = r),
            RS.push(r)
        }, 'addTaskOrg')),
        (Fhe = o(function () {
          let t = o(function (r) {
              let n = Ui[r],
                i = ''
              switch (Ui[r].raw.startTime.type) {
                case 'prevTaskEnd': {
                  let a = Pp(n.prevTaskId)
                  n.startTime = a.endTime
                  break
                }
                case 'getStartDate':
                  ;(i = BO(void 0, qc, Ui[r].raw.startTime.startData)), i && (Ui[r].startTime = i)
                  break
              }
              return (
                Ui[r].startTime &&
                  ((Ui[r].endTime = Yhe(Ui[r].startTime, qc, Ui[r].raw.endTime.data, _b)),
                  Ui[r].endTime && ((Ui[r].processed = !0), (Ui[r].manualEndTime = (0, mo.default)(Ui[r].raw.endTime.data, 'YYYY-MM-DD', !0).isValid()), Whe(Ui[r], qc, Ab, Cb))),
                Ui[r].processed
              )
            }, 'compileTask'),
            e = !0
          for (let [r, n] of Ui.entries()) t(r), (e = e && n.processed)
          return e
        }, 'compileTasks')),
        (pVe = o(function (t, e) {
          let r = e
          me().securityLevel !== 'loose' && (r = (0, $he.sanitizeUrl)(e)),
            t.split(',').forEach(function (n) {
              Pp(n) !== void 0 &&
                (Khe(n, () => {
                  window.open(r, '_self')
                }),
                VO.set(n, r))
            }),
            jhe(t, 'clickable')
        }, 'setLink')),
        (jhe = o(function (t, e) {
          t.split(',').forEach(function (r) {
            let n = Pp(r)
            n !== void 0 && n.classes.push(e)
          })
        }, 'setClass')),
        (mVe = o(function (t, e, r) {
          if (me().securityLevel !== 'loose' || e === void 0) return
          let n = []
          if (typeof r == 'string') {
            n = r.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/)
            for (let a = 0; a < n.length; a++) {
              let s = n[a].trim()
              s.startsWith('"') && s.endsWith('"') && (s = s.substr(1, s.length - 2)), (n[a] = s)
            }
          }
          n.length === 0 && n.push(t),
            Pp(t) !== void 0 &&
              Khe(t, () => {
                Vt.runFunc(e, ...n)
              })
        }, 'setClickFun')),
        (Khe = o(function (t, e) {
          WO.push(
            function () {
              let r = document.querySelector(`[id="${t}"]`)
              r !== null &&
                r.addEventListener('click', function () {
                  e()
                })
            },
            function () {
              let r = document.querySelector(`[id="${t}-text"]`)
              r !== null &&
                r.addEventListener('click', function () {
                  e()
                })
            }
          )
        }, 'pushFun')),
        (gVe = o(function (t, e, r) {
          t.split(',').forEach(function (n) {
            mVe(n, e, r)
          }),
            jhe(t, 'clickable')
        }, 'setClickEvent')),
        (yVe = o(function (t) {
          WO.forEach(function (e) {
            e(t)
          })
        }, 'bindFunctions')),
        (Qhe = {
          getConfig: o(() => me().gantt, 'getConfig'),
          clear: BGe,
          setDateFormat: HGe,
          getDateFormat: QGe,
          enableInclusiveEndDates: WGe,
          endDatesAreInclusive: qGe,
          enableTopAxis: YGe,
          topAxisEnabled: XGe,
          setAxisFormat: FGe,
          getAxisFormat: $Ge,
          setTickInterval: zGe,
          getTickInterval: GGe,
          setTodayMarker: VGe,
          getTodayMarker: UGe,
          setAccTitle: Ar,
          getAccTitle: Dr,
          setDiagramTitle: Or,
          getDiagramTitle: Nr,
          setDisplayMode: jGe,
          getDisplayMode: KGe,
          setAccDescription: Lr,
          getAccDescription: Rr,
          addSection: nVe,
          getSections: iVe,
          getTasks: aVe,
          addTask: fVe,
          findTaskById: Pp,
          addTaskOrg: dVe,
          setIncludes: ZGe,
          getIncludes: JGe,
          setExcludes: eVe,
          getExcludes: tVe,
          setClickEvent: gVe,
          setLink: pVe,
          getLinks: rVe,
          bindFunctions: yVe,
          parseDuration: qhe,
          isInvalidDate: Hhe,
          setWeekday: sVe,
          getWeekday: oVe,
          setWeekend: lVe
        })
      o(Zhe, 'getTaskTags')
    })
  var MS,
    vVe,
    efe,
    xVe,
    Ju,
    bVe,
    tfe,
    rfe = N(() => {
      'use strict'
      MS = Aa(U4(), 1)
      yt()
      fr()
      pr()
      Gt()
      xi()
      ;(vVe = o(function () {
        X.debug('Something is calling, setConf, remove the call')
      }, 'setConf')),
        (efe = { monday: Nh, tuesday: I5, wednesday: O5, thursday: fc, friday: P5, saturday: B5, sunday: wl }),
        (xVe = o((t, e) => {
          let r = [...t].map(() => -1 / 0),
            n = [...t].sort((a, s) => a.startTime - s.startTime || a.order - s.order),
            i = 0
          for (let a of n)
            for (let s = 0; s < r.length; s++)
              if (a.startTime >= r[s]) {
                ;(r[s] = a.endTime), (a.order = s + e), s > i && (i = s)
                break
              }
          return i
        }, 'getMaxIntersections')),
        (bVe = o(function (t, e, r, n) {
          let i = me().gantt,
            a = me().securityLevel,
            s
          a === 'sandbox' && (s = Ge('#i' + e))
          let l = a === 'sandbox' ? Ge(s.nodes()[0].contentDocument.body) : Ge('body'),
            u = a === 'sandbox' ? s.nodes()[0].contentDocument : document,
            h = u.getElementById(e)
          ;(Ju = h.parentElement.offsetWidth), Ju === void 0 && (Ju = 1200), i.useWidth !== void 0 && (Ju = i.useWidth)
          let f = n.db.getTasks(),
            d = []
          for (let C of f) d.push(C.type)
          d = _(d)
          let p = {},
            m = 2 * i.topPadding
          if (n.db.getDisplayMode() === 'compact' || i.displayMode === 'compact') {
            let C = {}
            for (let O of f) C[O.section] === void 0 ? (C[O.section] = [O]) : C[O.section].push(O)
            let D = 0
            for (let O of Object.keys(C)) {
              let R = xVe(C[O], D) + 1
              ;(D += R), (m += R * (i.barHeight + i.barGap)), (p[O] = R)
            }
          } else {
            m += f.length * (i.barHeight + i.barGap)
            for (let C of d) p[C] = f.filter(D => D.type === C).length
          }
          h.setAttribute('viewBox', '0 0 ' + Ju + ' ' + m)
          let g = l.select(`[id="${e}"]`),
            y = z5()
              .domain([
                W3(f, function (C) {
                  return C.startTime
                }),
                H3(f, function (C) {
                  return C.endTime
                })
              ])
              .rangeRound([0, Ju - i.leftPadding - i.rightPadding])
          function v(C, D) {
            let O = C.startTime,
              R = D.startTime,
              k = 0
            return O > R ? (k = 1) : O < R && (k = -1), k
          }
          o(v, 'taskCompare'),
            f.sort(v),
            x(f, Ju, m),
            fn(g, m, Ju, i.useMaxWidth),
            g
              .append('text')
              .text(n.db.getDiagramTitle())
              .attr('x', Ju / 2)
              .attr('y', i.titleTopMargin)
              .attr('class', 'titleText')
          function x(C, D, O) {
            let R = i.barHeight,
              k = R + i.barGap,
              L = i.topPadding,
              A = i.leftPadding,
              I = Tl().domain([0, d.length]).range(['#00B9FA', '#F95002']).interpolate(a_)
            T(k, L, A, D, O, C, n.db.getExcludes(), n.db.getIncludes()), S(A, L, D, O), b(C, k, L, A, R, I, D, O), w(k, L, A, R, I), E(A, L, D, O)
          }
          o(x, 'makeGantt')
          function b(C, D, O, R, k, L, A) {
            C.sort((z, $) => (z.vert === $.vert ? 0 : z.vert ? 1 : -1))
            let M = [...new Set(C.map(z => z.order))].map(z => C.find($ => $.order === z))
            g.append('g')
              .selectAll('rect')
              .data(M)
              .enter()
              .append('rect')
              .attr('x', 0)
              .attr('y', function (z, $) {
                return ($ = z.order), $ * D + O - 2
              })
              .attr('width', function () {
                return A - i.rightPadding / 2
              })
              .attr('height', D)
              .attr('class', function (z) {
                for (let [$, U] of d.entries()) if (z.type === U) return 'section section' + ($ % i.numberSectionStyles)
                return 'section section0'
              })
              .enter()
            let P = g.append('g').selectAll('rect').data(C).enter(),
              B = n.db.getLinks()
            if (
              (P.append('rect')
                .attr('id', function (z) {
                  return z.id
                })
                .attr('rx', 3)
                .attr('ry', 3)
                .attr('x', function (z) {
                  return z.milestone ? y(z.startTime) + R + 0.5 * (y(z.endTime) - y(z.startTime)) - 0.5 * k : y(z.startTime) + R
                })
                .attr('y', function (z, $) {
                  return ($ = z.order), z.vert ? i.gridLineStartPadding : $ * D + O
                })
                .attr('width', function (z) {
                  return z.milestone ? k : z.vert ? 0.08 * k : y(z.renderEndTime || z.endTime) - y(z.startTime)
                })
                .attr('height', function (z) {
                  return z.vert ? f.length * (i.barHeight + i.barGap) + i.barHeight * 2 : k
                })
                .attr('transform-origin', function (z, $) {
                  return ($ = z.order), (y(z.startTime) + R + 0.5 * (y(z.endTime) - y(z.startTime))).toString() + 'px ' + ($ * D + O + 0.5 * k).toString() + 'px'
                })
                .attr('class', function (z) {
                  let $ = 'task',
                    U = ''
                  z.classes.length > 0 && (U = z.classes.join(' '))
                  let K = 0
                  for (let [Y, ce] of d.entries()) z.type === ce && (K = Y % i.numberSectionStyles)
                  let ee = ''
                  return (
                    z.active ? (z.crit ? (ee += ' activeCrit') : (ee = ' active')) : z.done ? (z.crit ? (ee = ' doneCrit') : (ee = ' done')) : z.crit && (ee += ' crit'),
                    ee.length === 0 && (ee = ' task'),
                    z.milestone && (ee = ' milestone ' + ee),
                    z.vert && (ee = ' vert ' + ee),
                    (ee += K),
                    (ee += ' ' + U),
                    $ + ee
                  )
                }),
              P.append('text')
                .attr('id', function (z) {
                  return z.id + '-text'
                })
                .text(function (z) {
                  return z.task
                })
                .attr('font-size', i.fontSize)
                .attr('x', function (z) {
                  let $ = y(z.startTime),
                    U = y(z.renderEndTime || z.endTime)
                  if ((z.milestone && (($ += 0.5 * (y(z.endTime) - y(z.startTime)) - 0.5 * k), (U = $ + k)), z.vert)) return y(z.startTime) + R
                  let K = this.getBBox().width
                  return K > U - $ ? (U + K + 1.5 * i.leftPadding > A ? $ + R - 5 : U + R + 5) : (U - $) / 2 + $ + R
                })
                .attr('y', function (z, $) {
                  return z.vert ? i.gridLineStartPadding + f.length * (i.barHeight + i.barGap) + 60 : (($ = z.order), $ * D + i.barHeight / 2 + (i.fontSize / 2 - 2) + O)
                })
                .attr('text-height', k)
                .attr('class', function (z) {
                  let $ = y(z.startTime),
                    U = y(z.endTime)
                  z.milestone && (U = $ + k)
                  let K = this.getBBox().width,
                    ee = ''
                  z.classes.length > 0 && (ee = z.classes.join(' '))
                  let Y = 0
                  for (let [Z, ue] of d.entries()) z.type === ue && (Y = Z % i.numberSectionStyles)
                  let ce = ''
                  return (
                    z.active && (z.crit ? (ce = 'activeCritText' + Y) : (ce = 'activeText' + Y)),
                    z.done ? (z.crit ? (ce = ce + ' doneCritText' + Y) : (ce = ce + ' doneText' + Y)) : z.crit && (ce = ce + ' critText' + Y),
                    z.milestone && (ce += ' milestoneText'),
                    z.vert && (ce += ' vertText'),
                    K > U - $
                      ? U + K + 1.5 * i.leftPadding > A
                        ? ee + ' taskTextOutsideLeft taskTextOutside' + Y + ' ' + ce
                        : ee + ' taskTextOutsideRight taskTextOutside' + Y + ' ' + ce + ' width-' + K
                      : ee + ' taskText taskText' + Y + ' ' + ce + ' width-' + K
                  )
                }),
              me().securityLevel === 'sandbox')
            ) {
              let z
              z = Ge('#i' + e)
              let $ = z.nodes()[0].contentDocument
              P.filter(function (U) {
                return B.has(U.id)
              }).each(function (U) {
                var K = $.querySelector('#' + U.id),
                  ee = $.querySelector('#' + U.id + '-text')
                let Y = K.parentNode
                var ce = $.createElement('a')
                ce.setAttribute('xlink:href', B.get(U.id)), ce.setAttribute('target', '_top'), Y.appendChild(ce), ce.appendChild(K), ce.appendChild(ee)
              })
            }
          }
          o(b, 'drawRects')
          function T(C, D, O, R, k, L, A, I) {
            if (A.length === 0 && I.length === 0) return
            let M, P
            for (let { startTime: K, endTime: ee } of L) (M === void 0 || K < M) && (M = K), (P === void 0 || ee > P) && (P = ee)
            if (!M || !P) return
            if ((0, MS.default)(P).diff((0, MS.default)(M), 'year') > 5) {
              X.warn('The difference between the min and max time is more than 5 years. This will cause performance issues. Skipping drawing exclude days.')
              return
            }
            let B = n.db.getDateFormat(),
              F = [],
              z = null,
              $ = (0, MS.default)(M)
            for (; $.valueOf() <= P; ) n.db.isInvalidDate($, B, A, I) ? (z ? (z.end = $) : (z = { start: $, end: $ })) : z && (F.push(z), (z = null)), ($ = $.add(1, 'd'))
            g.append('g')
              .selectAll('rect')
              .data(F)
              .enter()
              .append('rect')
              .attr('id', function (K) {
                return 'exclude-' + K.start.format('YYYY-MM-DD')
              })
              .attr('x', function (K) {
                return y(K.start) + O
              })
              .attr('y', i.gridLineStartPadding)
              .attr('width', function (K) {
                let ee = K.end.add(1, 'day')
                return y(ee) - y(K.start)
              })
              .attr('height', k - D - i.gridLineStartPadding)
              .attr('transform-origin', function (K, ee) {
                return (y(K.start) + O + 0.5 * (y(K.end) - y(K.start))).toString() + 'px ' + (ee * C + 0.5 * k).toString() + 'px'
              })
              .attr('class', 'exclude-range')
          }
          o(T, 'drawExcludeDays')
          function S(C, D, O, R) {
            let k = zA(y)
                .tickSize(-R + D + i.gridLineStartPadding)
                .tickFormat(Ld(n.db.getAxisFormat() || i.axisFormat || '%Y-%m-%d')),
              A = /^([1-9]\d*)(millisecond|second|minute|hour|day|week|month)$/.exec(n.db.getTickInterval() || i.tickInterval)
            if (A !== null) {
              let I = A[1],
                M = A[2],
                P = n.db.getWeekday() || i.weekday
              switch (M) {
                case 'millisecond':
                  k.ticks(uc.every(I))
                  break
                case 'second':
                  k.ticks(eo.every(I))
                  break
                case 'minute':
                  k.ticks(wu.every(I))
                  break
                case 'hour':
                  k.ticks(ku.every(I))
                  break
                case 'day':
                  k.ticks(Ro.every(I))
                  break
                case 'week':
                  k.ticks(efe[P].every(I))
                  break
                case 'month':
                  k.ticks(Eu.every(I))
                  break
              }
            }
            if (
              (g
                .append('g')
                .attr('class', 'grid')
                .attr('transform', 'translate(' + C + ', ' + (R - 50) + ')')
                .call(k)
                .selectAll('text')
                .style('text-anchor', 'middle')
                .attr('fill', '#000')
                .attr('stroke', 'none')
                .attr('font-size', 10)
                .attr('dy', '1em'),
              n.db.topAxisEnabled() || i.topAxis)
            ) {
              let I = $A(y)
                .tickSize(-R + D + i.gridLineStartPadding)
                .tickFormat(Ld(n.db.getAxisFormat() || i.axisFormat || '%Y-%m-%d'))
              if (A !== null) {
                let M = A[1],
                  P = A[2],
                  B = n.db.getWeekday() || i.weekday
                switch (P) {
                  case 'millisecond':
                    I.ticks(uc.every(M))
                    break
                  case 'second':
                    I.ticks(eo.every(M))
                    break
                  case 'minute':
                    I.ticks(wu.every(M))
                    break
                  case 'hour':
                    I.ticks(ku.every(M))
                    break
                  case 'day':
                    I.ticks(Ro.every(M))
                    break
                  case 'week':
                    I.ticks(efe[B].every(M))
                    break
                  case 'month':
                    I.ticks(Eu.every(M))
                    break
                }
              }
              g.append('g')
                .attr('class', 'grid')
                .attr('transform', 'translate(' + C + ', ' + D + ')')
                .call(I)
                .selectAll('text')
                .style('text-anchor', 'middle')
                .attr('fill', '#000')
                .attr('stroke', 'none')
                .attr('font-size', 10)
            }
          }
          o(S, 'makeGrid')
          function w(C, D) {
            let O = 0,
              R = Object.keys(p).map(k => [k, p[k]])
            g.append('g')
              .selectAll('text')
              .data(R)
              .enter()
              .append(function (k) {
                let L = k[0].split(Ze.lineBreakRegex),
                  A = -(L.length - 1) / 2,
                  I = u.createElementNS('http://www.w3.org/2000/svg', 'text')
                I.setAttribute('dy', A + 'em')
                for (let [M, P] of L.entries()) {
                  let B = u.createElementNS('http://www.w3.org/2000/svg', 'tspan')
                  B.setAttribute('alignment-baseline', 'central'), B.setAttribute('x', '10'), M > 0 && B.setAttribute('dy', '1em'), (B.textContent = P), I.appendChild(B)
                }
                return I
              })
              .attr('x', 10)
              .attr('y', function (k, L) {
                if (L > 0) for (let A = 0; A < L; A++) return (O += R[L - 1][1]), (k[1] * C) / 2 + O * C + D
                else return (k[1] * C) / 2 + D
              })
              .attr('font-size', i.sectionFontSize)
              .attr('class', function (k) {
                for (let [L, A] of d.entries()) if (k[0] === A) return 'sectionTitle sectionTitle' + (L % i.numberSectionStyles)
                return 'sectionTitle'
              })
          }
          o(w, 'vertLabels')
          function E(C, D, O, R) {
            let k = n.db.getTodayMarker()
            if (k === 'off') return
            let L = g.append('g').attr('class', 'today'),
              A = new Date(),
              I = L.append('line')
            I.attr('x1', y(A) + C)
              .attr('x2', y(A) + C)
              .attr('y1', i.titleTopMargin)
              .attr('y2', R - i.titleTopMargin)
              .attr('class', 'today'),
              k !== '' && I.attr('style', k.replace(/,/g, ';'))
          }
          o(E, 'drawToday')
          function _(C) {
            let D = {},
              O = []
            for (let R = 0, k = C.length; R < k; ++R) Object.prototype.hasOwnProperty.call(D, C[R]) || ((D[C[R]] = !0), O.push(C[R]))
            return O
          }
          o(_, 'checkUnique')
        }, 'draw')),
        (tfe = { setConf: vVe, draw: bVe })
    })
  var TVe,
    nfe,
    ife = N(() => {
      'use strict'
      ;(TVe = o(
        t => `
  .mermaid-main-font {
        font-family: ${t.fontFamily};
  }

  .exclude-range {
    fill: ${t.excludeBkgColor};
  }

  .section {
    stroke: none;
    opacity: 0.2;
  }

  .section0 {
    fill: ${t.sectionBkgColor};
  }

  .section2 {
    fill: ${t.sectionBkgColor2};
  }

  .section1,
  .section3 {
    fill: ${t.altSectionBkgColor};
    opacity: 0.2;
  }

  .sectionTitle0 {
    fill: ${t.titleColor};
  }

  .sectionTitle1 {
    fill: ${t.titleColor};
  }

  .sectionTitle2 {
    fill: ${t.titleColor};
  }

  .sectionTitle3 {
    fill: ${t.titleColor};
  }

  .sectionTitle {
    text-anchor: start;
    font-family: ${t.fontFamily};
  }


  /* Grid and axis */

  .grid .tick {
    stroke: ${t.gridColor};
    opacity: 0.8;
    shape-rendering: crispEdges;
  }

  .grid .tick text {
    font-family: ${t.fontFamily};
    fill: ${t.textColor};
  }

  .grid path {
    stroke-width: 0;
  }


  /* Today line */

  .today {
    fill: none;
    stroke: ${t.todayLineColor};
    stroke-width: 2px;
  }


  /* Task styling */

  /* Default task */

  .task {
    stroke-width: 2;
  }

  .taskText {
    text-anchor: middle;
    font-family: ${t.fontFamily};
  }

  .taskTextOutsideRight {
    fill: ${t.taskTextDarkColor};
    text-anchor: start;
    font-family: ${t.fontFamily};
  }

  .taskTextOutsideLeft {
    fill: ${t.taskTextDarkColor};
    text-anchor: end;
  }


  /* Special case clickable */

  .task.clickable {
    cursor: pointer;
  }

  .taskText.clickable {
    cursor: pointer;
    fill: ${t.taskTextClickableColor} !important;
    font-weight: bold;
  }

  .taskTextOutsideLeft.clickable {
    cursor: pointer;
    fill: ${t.taskTextClickableColor} !important;
    font-weight: bold;
  }

  .taskTextOutsideRight.clickable {
    cursor: pointer;
    fill: ${t.taskTextClickableColor} !important;
    font-weight: bold;
  }


  /* Specific task settings for the sections*/

  .taskText0,
  .taskText1,
  .taskText2,
  .taskText3 {
    fill: ${t.taskTextColor};
  }

  .task0,
  .task1,
  .task2,
  .task3 {
    fill: ${t.taskBkgColor};
    stroke: ${t.taskBorderColor};
  }

  .taskTextOutside0,
  .taskTextOutside2
  {
    fill: ${t.taskTextOutsideColor};
  }

  .taskTextOutside1,
  .taskTextOutside3 {
    fill: ${t.taskTextOutsideColor};
  }


  /* Active task */

  .active0,
  .active1,
  .active2,
  .active3 {
    fill: ${t.activeTaskBkgColor};
    stroke: ${t.activeTaskBorderColor};
  }

  .activeText0,
  .activeText1,
  .activeText2,
  .activeText3 {
    fill: ${t.taskTextDarkColor} !important;
  }


  /* Completed task */

  .done0,
  .done1,
  .done2,
  .done3 {
    stroke: ${t.doneTaskBorderColor};
    fill: ${t.doneTaskBkgColor};
    stroke-width: 2;
  }

  .doneText0,
  .doneText1,
  .doneText2,
  .doneText3 {
    fill: ${t.taskTextDarkColor} !important;
  }


  /* Tasks on the critical line */

  .crit0,
  .crit1,
  .crit2,
  .crit3 {
    stroke: ${t.critBorderColor};
    fill: ${t.critBkgColor};
    stroke-width: 2;
  }

  .activeCrit0,
  .activeCrit1,
  .activeCrit2,
  .activeCrit3 {
    stroke: ${t.critBorderColor};
    fill: ${t.activeTaskBkgColor};
    stroke-width: 2;
  }

  .doneCrit0,
  .doneCrit1,
  .doneCrit2,
  .doneCrit3 {
    stroke: ${t.critBorderColor};
    fill: ${t.doneTaskBkgColor};
    stroke-width: 2;
    cursor: pointer;
    shape-rendering: crispEdges;
  }

  .milestone {
    transform: rotate(45deg) scale(0.8,0.8);
  }

  .milestoneText {
    font-style: italic;
  }
  .doneCritText0,
  .doneCritText1,
  .doneCritText2,
  .doneCritText3 {
    fill: ${t.taskTextDarkColor} !important;
  }

  .vert {
    stroke: ${t.vertLineColor};
  }

  .vertText {
    font-size: 15px;
    text-anchor: middle;
    fill: ${t.vertLineColor} !important;
  }

  .activeCritText0,
  .activeCritText1,
  .activeCritText2,
  .activeCritText3 {
    fill: ${t.taskTextDarkColor} !important;
  }

  .titleText {
    text-anchor: middle;
    font-size: 18px;
    fill: ${t.titleColor || t.textColor};
    font-family: ${t.fontFamily};
  }
`,
        'getStyles'
      )),
        (nfe = TVe)
    })
  var afe = {}
  ur(afe, { diagram: () => wVe })
  var wVe,
    sfe = N(() => {
      'use strict'
      Mhe()
      Jhe()
      rfe()
      ife()
      wVe = { parser: Nhe, db: Qhe, renderer: tfe, styles: nfe }
    })
  var cfe,
    ufe = N(() => {
      'use strict'
      bf()
      yt()
      cfe = {
        parse: o(async t => {
          let e = await vs('info', t)
          X.debug(e)
        }, 'parse')
      }
    })
  var Db,
    XO = N(() => {
      Db = {
        name: 'mermaid',
        version: '11.9.0',
        description: 'Markdown-ish syntax for generating flowcharts, mindmaps, sequence diagrams, class diagrams, gantt charts, git graphs and more.',
        type: 'module',
        module: './dist/mermaid.core.mjs',
        types: './dist/mermaid.d.ts',
        exports: { '.': { types: './dist/mermaid.d.ts', import: './dist/mermaid.core.mjs', default: './dist/mermaid.core.mjs' }, './*': './*' },
        keywords: [
          'diagram',
          'markdown',
          'flowchart',
          'sequence diagram',
          'gantt',
          'class diagram',
          'git graph',
          'mindmap',
          'packet diagram',
          'c4 diagram',
          'er diagram',
          'pie chart',
          'pie diagram',
          'quadrant chart',
          'requirement diagram',
          'graph'
        ],
        scripts: {
          clean: 'rimraf dist',
          dev: 'pnpm -w dev',
          'docs:code': 'typedoc src/defaultConfig.ts src/config.ts src/mermaid.ts && prettier --write ./src/docs/config/setup',
          'docs:build': 'rimraf ../../docs && pnpm docs:code && pnpm docs:spellcheck && tsx scripts/docs.cli.mts',
          'docs:verify': 'pnpm docs:code && pnpm docs:spellcheck && tsx scripts/docs.cli.mts --verify',
          'docs:pre:vitepress':
            'pnpm --filter ./src/docs prefetch && rimraf src/vitepress && pnpm docs:code && tsx scripts/docs.cli.mts --vitepress && pnpm --filter ./src/vitepress install --no-frozen-lockfile --ignore-scripts',
          'docs:build:vitepress': 'pnpm docs:pre:vitepress && (cd src/vitepress && pnpm run build) && cpy --flat src/docs/landing/ ./src/vitepress/.vitepress/dist/landing',
          'docs:dev': 'pnpm docs:pre:vitepress && concurrently "pnpm --filter ./src/vitepress dev" "tsx scripts/docs.cli.mts --watch --vitepress"',
          'docs:dev:docker': 'pnpm docs:pre:vitepress && concurrently "pnpm --filter ./src/vitepress dev:docker" "tsx scripts/docs.cli.mts --watch --vitepress"',
          'docs:serve': 'pnpm docs:build:vitepress && vitepress serve src/vitepress',
          'docs:spellcheck': 'cspell "src/docs/**/*.md"',
          'docs:release-version': 'tsx scripts/update-release-version.mts',
          'docs:verify-version': 'tsx scripts/update-release-version.mts --verify',
          'types:build-config': 'tsx scripts/create-types-from-json-schema.mts',
          'types:verify-config': 'tsx scripts/create-types-from-json-schema.mts --verify',
          checkCircle: 'npx madge --circular ./src',
          prepublishOnly: 'pnpm docs:verify-version'
        },
        repository: { type: 'git', url: 'https://github.com/mermaid-js/mermaid' },
        author: 'Knut Sveidqvist',
        license: 'MIT',
        standard: { ignore: ['**/parser/*.js', 'dist/**/*.js', 'cypress/**/*.js'], globals: ['page'] },
        dependencies: {
          '@braintree/sanitize-url': '^7.0.4',
          '@iconify/utils': '^2.1.33',
          '@mermaid-js/parser': 'workspace:^',
          '@types/d3': '^7.4.3',
          cytoscape: '^3.29.3',
          'cytoscape-cose-bilkent': '^4.1.0',
          'cytoscape-fcose': '^2.2.0',
          d3: '^7.9.0',
          'd3-sankey': '^0.12.3',
          'dagre-d3-es': '7.0.11',
          dayjs: '^1.11.13',
          dompurify: '^3.2.5',
          katex: '^0.16.22',
          khroma: '^2.1.0',
          'lodash-es': '^4.17.21',
          marked: '^16.0.0',
          roughjs: '^4.6.6',
          stylis: '^4.3.6',
          'ts-dedent': '^2.2.0',
          uuid: '^11.1.0'
        },
        devDependencies: {
          '@adobe/jsonschema2md': '^8.0.2',
          '@iconify/types': '^2.0.0',
          '@types/cytoscape': '^3.21.9',
          '@types/cytoscape-fcose': '^2.2.4',
          '@types/d3-sankey': '^0.12.4',
          '@types/d3-scale': '^4.0.9',
          '@types/d3-scale-chromatic': '^3.1.0',
          '@types/d3-selection': '^3.0.11',
          '@types/d3-shape': '^3.1.7',
          '@types/jsdom': '^21.1.7',
          '@types/katex': '^0.16.7',
          '@types/lodash-es': '^4.17.12',
          '@types/micromatch': '^4.0.9',
          '@types/stylis': '^4.2.7',
          '@types/uuid': '^10.0.0',
          ajv: '^8.17.1',
          canvas: '^3.1.0',
          chokidar: '3.6.0',
          concurrently: '^9.1.2',
          'csstree-validator': '^4.0.1',
          globby: '^14.0.2',
          jison: '^0.4.18',
          'js-base64': '^3.7.7',
          jsdom: '^26.1.0',
          'json-schema-to-typescript': '^15.0.4',
          micromatch: '^4.0.8',
          'path-browserify': '^1.0.1',
          prettier: '^3.5.2',
          remark: '^15.0.1',
          'remark-frontmatter': '^5.0.0',
          'remark-gfm': '^4.0.1',
          rimraf: '^6.0.1',
          'start-server-and-test': '^2.0.10',
          'type-fest': '^4.35.0',
          typedoc: '^0.27.8',
          'typedoc-plugin-markdown': '^4.4.2',
          typescript: '~5.7.3',
          'unist-util-flatmap': '^1.0.0',
          'unist-util-visit': '^5.0.0',
          vitepress: '^1.0.2',
          'vitepress-plugin-search': '1.0.4-alpha.22'
        },
        files: ['dist/', 'README.md'],
        publishConfig: { access: 'public' }
      }
    })
  var AVe,
    _Ve,
    hfe,
    ffe = N(() => {
      'use strict'
      XO()
      ;(AVe = { version: Db.version + '' }), (_Ve = o(() => AVe.version, 'getVersion')), (hfe = { getVersion: _Ve })
    })
  var Li,
    Vl = N(() => {
      'use strict'
      fr()
      Gt()
      Li = o(t => {
        let { securityLevel: e } = me(),
          r = Ge('body')
        if (e === 'sandbox') {
          let a = Ge(`#i${t}`).node()?.contentDocument ?? document
          r = Ge(a.body)
        }
        return r.select(`#${t}`)
      }, 'selectSvgElement')
    })
  var DVe,
    dfe,
    pfe = N(() => {
      'use strict'
      yt()
      Vl()
      xi()
      ;(DVe = o((t, e, r) => {
        X.debug(
          `rendering info diagram
` + t
        )
        let n = Li(e)
        fn(n, 100, 400, !0), n.append('g').append('text').attr('x', 100).attr('y', 40).attr('class', 'version').attr('font-size', 32).style('text-anchor', 'middle').text(`v${r}`)
      }, 'draw')),
        (dfe = { draw: DVe })
    })
  var mfe = {}
  ur(mfe, { diagram: () => LVe })
  var LVe,
    gfe = N(() => {
      'use strict'
      ufe()
      ffe()
      pfe()
      LVe = { parser: cfe, db: hfe, renderer: dfe }
    })
  var xfe,
    jO,
    IS,
    KO,
    MVe,
    IVe,
    OVe,
    PVe,
    BVe,
    FVe,
    $Ve,
    OS,
    QO = N(() => {
      'use strict'
      yt()
      ci()
      _a()
      ;(xfe = or.pie),
        (jO = { sections: new Map(), showData: !1, config: xfe }),
        (IS = jO.sections),
        (KO = jO.showData),
        (MVe = structuredClone(xfe)),
        (IVe = o(() => structuredClone(MVe), 'getConfig')),
        (OVe = o(() => {
          ;(IS = new Map()), (KO = jO.showData), kr()
        }, 'clear')),
        (PVe = o(({ label: t, value: e }) => {
          IS.has(t) || (IS.set(t, e), X.debug(`added new section: ${t}, with value: ${e}`))
        }, 'addSection')),
        (BVe = o(() => IS, 'getSections')),
        (FVe = o(t => {
          KO = t
        }, 'setShowData')),
        ($Ve = o(() => KO, 'getShowData')),
        (OS = {
          getConfig: IVe,
          clear: OVe,
          setDiagramTitle: Or,
          getDiagramTitle: Nr,
          setAccTitle: Ar,
          getAccTitle: Dr,
          setAccDescription: Lr,
          getAccDescription: Rr,
          addSection: PVe,
          getSections: BVe,
          setShowData: FVe,
          getShowData: $Ve
        })
    })
  var zVe,
    bfe,
    Tfe = N(() => {
      'use strict'
      bf()
      yt()
      Mp()
      QO()
      ;(zVe = o((t, e) => {
        Jo(t, e), e.setShowData(t.showData), t.sections.map(e.addSection)
      }, 'populateDb')),
        (bfe = {
          parse: o(async t => {
            let e = await vs('pie', t)
            X.debug(e), zVe(e, OS)
          }, 'parse')
        })
    })
  var GVe,
    wfe,
    kfe = N(() => {
      'use strict'
      ;(GVe = o(
        t => `
  .pieCircle{
    stroke: ${t.pieStrokeColor};
    stroke-width : ${t.pieStrokeWidth};
    opacity : ${t.pieOpacity};
  }
  .pieOuterCircle{
    stroke: ${t.pieOuterStrokeColor};
    stroke-width: ${t.pieOuterStrokeWidth};
    fill: none;
  }
  .pieTitleText {
    text-anchor: middle;
    font-size: ${t.pieTitleTextSize};
    fill: ${t.pieTitleTextColor};
    font-family: ${t.fontFamily};
  }
  .slice {
    font-family: ${t.fontFamily};
    fill: ${t.pieSectionTextColor};
    font-size:${t.pieSectionTextSize};
    // fill: white;
  }
  .legend text {
    fill: ${t.pieLegendTextColor};
    font-family: ${t.fontFamily};
    font-size: ${t.pieLegendTextSize};
  }
`,
        'getStyles'
      )),
        (wfe = GVe)
    })
  var VVe,
    UVe,
    Efe,
    Sfe = N(() => {
      'use strict'
      fr()
      Gt()
      yt()
      Vl()
      xi()
      er()
      ;(VVe = o(t => {
        let e = [...t.entries()].map(n => ({ label: n[0], value: n[1] })).sort((n, i) => i.value - n.value)
        return q5().value(n => n.value)(e)
      }, 'createPieArcs')),
        (UVe = o((t, e, r, n) => {
          X.debug(
            `rendering pie chart
` + t
          )
          let i = n.db,
            a = me(),
            s = $n(i.getConfig(), a.pie),
            l = 40,
            u = 18,
            h = 4,
            f = 450,
            d = f,
            p = Li(e),
            m = p.append('g')
          m.attr('transform', 'translate(' + d / 2 + ',' + f / 2 + ')')
          let { themeVariables: g } = a,
            [y] = zo(g.pieOuterStrokeWidth)
          y ??= 2
          let v = s.textPosition,
            x = Math.min(d, f) / 2 - l,
            b = Sl().innerRadius(0).outerRadius(x),
            T = Sl()
              .innerRadius(x * v)
              .outerRadius(x * v)
          m.append('circle')
            .attr('cx', 0)
            .attr('cy', 0)
            .attr('r', x + y / 2)
            .attr('class', 'pieOuterCircle')
          let S = i.getSections(),
            w = VVe(S),
            E = [g.pie1, g.pie2, g.pie3, g.pie4, g.pie5, g.pie6, g.pie7, g.pie8, g.pie9, g.pie10, g.pie11, g.pie12],
            _ = Js(E)
          m.selectAll('mySlices')
            .data(w)
            .enter()
            .append('path')
            .attr('d', b)
            .attr('fill', k => _(k.data.label))
            .attr('class', 'pieCircle')
          let C = 0
          S.forEach(k => {
            C += k
          }),
            m
              .selectAll('mySlices')
              .data(w)
              .enter()
              .append('text')
              .text(k => ((k.data.value / C) * 100).toFixed(0) + '%')
              .attr('transform', k => 'translate(' + T.centroid(k) + ')')
              .style('text-anchor', 'middle')
              .attr('class', 'slice'),
            m
              .append('text')
              .text(i.getDiagramTitle())
              .attr('x', 0)
              .attr('y', -(f - 50) / 2)
              .attr('class', 'pieTitleText')
          let D = m
            .selectAll('.legend')
            .data(_.domain())
            .enter()
            .append('g')
            .attr('class', 'legend')
            .attr('transform', (k, L) => {
              let A = u + h,
                I = (A * _.domain().length) / 2,
                M = 12 * u,
                P = L * A - I
              return 'translate(' + M + ',' + P + ')'
            })
          D.append('rect').attr('width', u).attr('height', u).style('fill', _).style('stroke', _),
            D.data(w)
              .append('text')
              .attr('x', u + h)
              .attr('y', u - h)
              .text(k => {
                let { label: L, value: A } = k.data
                return i.getShowData() ? `${L} [${A}]` : L
              })
          let O = Math.max(
              ...D.selectAll('text')
                .nodes()
                .map(k => k?.getBoundingClientRect().width ?? 0)
            ),
            R = d + l + u + h + O
          p.attr('viewBox', `0 0 ${R} ${f}`), fn(p, f, R, s.useMaxWidth)
        }, 'draw')),
        (Efe = { draw: UVe })
    })
  var Cfe = {}
  ur(Cfe, { diagram: () => HVe })
  var HVe,
    Afe = N(() => {
      'use strict'
      Tfe()
      QO()
      kfe()
      Sfe()
      HVe = { parser: bfe, db: OS, renderer: Efe, styles: wfe }
    })
  var ZO,
    Lfe,
    Rfe = N(() => {
      'use strict'
      ZO = (function () {
        var t = o(function (Te, W, pe, ve) {
            for (pe = pe || {}, ve = Te.length; ve--; pe[Te[ve]] = W);
            return pe
          }, 'o'),
          e = [1, 3],
          r = [1, 4],
          n = [1, 5],
          i = [1, 6],
          a = [1, 7],
          s = [1, 4, 5, 10, 12, 13, 14, 18, 25, 35, 37, 39, 41, 42, 48, 50, 51, 52, 53, 54, 55, 56, 57, 60, 61, 63, 64, 65, 66, 67],
          l = [1, 4, 5, 10, 12, 13, 14, 18, 25, 28, 35, 37, 39, 41, 42, 48, 50, 51, 52, 53, 54, 55, 56, 57, 60, 61, 63, 64, 65, 66, 67],
          u = [55, 56, 57],
          h = [2, 36],
          f = [1, 37],
          d = [1, 36],
          p = [1, 38],
          m = [1, 35],
          g = [1, 43],
          y = [1, 41],
          v = [1, 14],
          x = [1, 23],
          b = [1, 18],
          T = [1, 19],
          S = [1, 20],
          w = [1, 21],
          E = [1, 22],
          _ = [1, 24],
          C = [1, 25],
          D = [1, 26],
          O = [1, 27],
          R = [1, 28],
          k = [1, 29],
          L = [1, 32],
          A = [1, 33],
          I = [1, 34],
          M = [1, 39],
          P = [1, 40],
          B = [1, 42],
          F = [1, 44],
          z = [1, 62],
          $ = [1, 61],
          U = [4, 5, 8, 10, 12, 13, 14, 18, 44, 47, 49, 55, 56, 57, 63, 64, 65, 66, 67],
          K = [1, 65],
          ee = [1, 66],
          Y = [1, 67],
          ce = [1, 68],
          Z = [1, 69],
          ue = [1, 70],
          Q = [1, 71],
          j = [1, 72],
          ne = [1, 73],
          te = [1, 74],
          he = [1, 75],
          le = [1, 76],
          J = [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18],
          Se = [1, 90],
          se = [1, 91],
          ae = [1, 92],
          Oe = [1, 99],
          ye = [1, 93],
          Be = [1, 96],
          He = [1, 94],
          ze = [1, 95],
          Le = [1, 97],
          Ie = [1, 98],
          xe = [1, 102],
          q = [10, 55, 56, 57],
          de = [4, 5, 6, 8, 10, 11, 13, 17, 18, 19, 20, 55, 56, 57],
          ie = {
            trace: o(function () {}, 'trace'),
            yy: {},
            symbols_: {
              error: 2,
              idStringToken: 3,
              ALPHA: 4,
              NUM: 5,
              NODE_STRING: 6,
              DOWN: 7,
              MINUS: 8,
              DEFAULT: 9,
              COMMA: 10,
              COLON: 11,
              AMP: 12,
              BRKT: 13,
              MULT: 14,
              UNICODE_TEXT: 15,
              styleComponent: 16,
              UNIT: 17,
              SPACE: 18,
              STYLE: 19,
              PCT: 20,
              idString: 21,
              style: 22,
              stylesOpt: 23,
              classDefStatement: 24,
              CLASSDEF: 25,
              start: 26,
              eol: 27,
              QUADRANT: 28,
              document: 29,
              line: 30,
              statement: 31,
              axisDetails: 32,
              quadrantDetails: 33,
              points: 34,
              title: 35,
              title_value: 36,
              acc_title: 37,
              acc_title_value: 38,
              acc_descr: 39,
              acc_descr_value: 40,
              acc_descr_multiline_value: 41,
              section: 42,
              text: 43,
              point_start: 44,
              point_x: 45,
              point_y: 46,
              class_name: 47,
              'X-AXIS': 48,
              'AXIS-TEXT-DELIMITER': 49,
              'Y-AXIS': 50,
              QUADRANT_1: 51,
              QUADRANT_2: 52,
              QUADRANT_3: 53,
              QUADRANT_4: 54,
              NEWLINE: 55,
              SEMI: 56,
              EOF: 57,
              alphaNumToken: 58,
              textNoTagsToken: 59,
              STR: 60,
              MD_STR: 61,
              alphaNum: 62,
              PUNCTUATION: 63,
              PLUS: 64,
              EQUALS: 65,
              DOT: 66,
              UNDERSCORE: 67,
              $accept: 0,
              $end: 1
            },
            terminals_: {
              2: 'error',
              4: 'ALPHA',
              5: 'NUM',
              6: 'NODE_STRING',
              7: 'DOWN',
              8: 'MINUS',
              9: 'DEFAULT',
              10: 'COMMA',
              11: 'COLON',
              12: 'AMP',
              13: 'BRKT',
              14: 'MULT',
              15: 'UNICODE_TEXT',
              17: 'UNIT',
              18: 'SPACE',
              19: 'STYLE',
              20: 'PCT',
              25: 'CLASSDEF',
              28: 'QUADRANT',
              35: 'title',
              36: 'title_value',
              37: 'acc_title',
              38: 'acc_title_value',
              39: 'acc_descr',
              40: 'acc_descr_value',
              41: 'acc_descr_multiline_value',
              42: 'section',
              44: 'point_start',
              45: 'point_x',
              46: 'point_y',
              47: 'class_name',
              48: 'X-AXIS',
              49: 'AXIS-TEXT-DELIMITER',
              50: 'Y-AXIS',
              51: 'QUADRANT_1',
              52: 'QUADRANT_2',
              53: 'QUADRANT_3',
              54: 'QUADRANT_4',
              55: 'NEWLINE',
              56: 'SEMI',
              57: 'EOF',
              60: 'STR',
              61: 'MD_STR',
              63: 'PUNCTUATION',
              64: 'PLUS',
              65: 'EQUALS',
              66: 'DOT',
              67: 'UNDERSCORE'
            },
            productions_: [
              0,
              [3, 1],
              [3, 1],
              [3, 1],
              [3, 1],
              [3, 1],
              [3, 1],
              [3, 1],
              [3, 1],
              [3, 1],
              [3, 1],
              [3, 1],
              [3, 1],
              [16, 1],
              [16, 1],
              [16, 1],
              [16, 1],
              [16, 1],
              [16, 1],
              [16, 1],
              [16, 1],
              [16, 1],
              [16, 1],
              [21, 1],
              [21, 2],
              [22, 1],
              [22, 2],
              [23, 1],
              [23, 3],
              [24, 5],
              [26, 2],
              [26, 2],
              [26, 2],
              [29, 0],
              [29, 2],
              [30, 2],
              [31, 0],
              [31, 1],
              [31, 2],
              [31, 1],
              [31, 1],
              [31, 1],
              [31, 2],
              [31, 2],
              [31, 2],
              [31, 1],
              [31, 1],
              [34, 4],
              [34, 5],
              [34, 5],
              [34, 6],
              [32, 4],
              [32, 3],
              [32, 2],
              [32, 4],
              [32, 3],
              [32, 2],
              [33, 2],
              [33, 2],
              [33, 2],
              [33, 2],
              [27, 1],
              [27, 1],
              [27, 1],
              [43, 1],
              [43, 2],
              [43, 1],
              [43, 1],
              [62, 1],
              [62, 2],
              [58, 1],
              [58, 1],
              [58, 1],
              [58, 1],
              [58, 1],
              [58, 1],
              [58, 1],
              [58, 1],
              [58, 1],
              [58, 1],
              [58, 1],
              [59, 1],
              [59, 1],
              [59, 1]
            ],
            performAction: o(function (W, pe, ve, Pe, _e, be, Ve) {
              var De = be.length - 1
              switch (_e) {
                case 23:
                  this.$ = be[De]
                  break
                case 24:
                  this.$ = be[De - 1] + '' + be[De]
                  break
                case 26:
                  this.$ = be[De - 1] + be[De]
                  break
                case 27:
                  this.$ = [be[De].trim()]
                  break
                case 28:
                  be[De - 2].push(be[De].trim()), (this.$ = be[De - 2])
                  break
                case 29:
                  ;(this.$ = be[De - 4]), Pe.addClass(be[De - 2], be[De])
                  break
                case 37:
                  this.$ = []
                  break
                case 42:
                  ;(this.$ = be[De].trim()), Pe.setDiagramTitle(this.$)
                  break
                case 43:
                  ;(this.$ = be[De].trim()), Pe.setAccTitle(this.$)
                  break
                case 44:
                case 45:
                  ;(this.$ = be[De].trim()), Pe.setAccDescription(this.$)
                  break
                case 46:
                  Pe.addSection(be[De].substr(8)), (this.$ = be[De].substr(8))
                  break
                case 47:
                  Pe.addPoint(be[De - 3], '', be[De - 1], be[De], [])
                  break
                case 48:
                  Pe.addPoint(be[De - 4], be[De - 3], be[De - 1], be[De], [])
                  break
                case 49:
                  Pe.addPoint(be[De - 4], '', be[De - 2], be[De - 1], be[De])
                  break
                case 50:
                  Pe.addPoint(be[De - 5], be[De - 4], be[De - 2], be[De - 1], be[De])
                  break
                case 51:
                  Pe.setXAxisLeftText(be[De - 2]), Pe.setXAxisRightText(be[De])
                  break
                case 52:
                  ;(be[De - 1].text += ' \u27F6 '), Pe.setXAxisLeftText(be[De - 1])
                  break
                case 53:
                  Pe.setXAxisLeftText(be[De])
                  break
                case 54:
                  Pe.setYAxisBottomText(be[De - 2]), Pe.setYAxisTopText(be[De])
                  break
                case 55:
                  ;(be[De - 1].text += ' \u27F6 '), Pe.setYAxisBottomText(be[De - 1])
                  break
                case 56:
                  Pe.setYAxisBottomText(be[De])
                  break
                case 57:
                  Pe.setQuadrant1Text(be[De])
                  break
                case 58:
                  Pe.setQuadrant2Text(be[De])
                  break
                case 59:
                  Pe.setQuadrant3Text(be[De])
                  break
                case 60:
                  Pe.setQuadrant4Text(be[De])
                  break
                case 64:
                  this.$ = { text: be[De], type: 'text' }
                  break
                case 65:
                  this.$ = { text: be[De - 1].text + '' + be[De], type: be[De - 1].type }
                  break
                case 66:
                  this.$ = { text: be[De], type: 'text' }
                  break
                case 67:
                  this.$ = { text: be[De], type: 'markdown' }
                  break
                case 68:
                  this.$ = be[De]
                  break
                case 69:
                  this.$ = be[De - 1] + '' + be[De]
                  break
              }
            }, 'anonymous'),
            table: [
              { 18: e, 26: 1, 27: 2, 28: r, 55: n, 56: i, 57: a },
              { 1: [3] },
              { 18: e, 26: 8, 27: 2, 28: r, 55: n, 56: i, 57: a },
              { 18: e, 26: 9, 27: 2, 28: r, 55: n, 56: i, 57: a },
              t(s, [2, 33], { 29: 10 }),
              t(l, [2, 61]),
              t(l, [2, 62]),
              t(l, [2, 63]),
              { 1: [2, 30] },
              { 1: [2, 31] },
              t(u, h, {
                30: 11,
                31: 12,
                24: 13,
                32: 15,
                33: 16,
                34: 17,
                43: 30,
                58: 31,
                1: [2, 32],
                4: f,
                5: d,
                10: p,
                12: m,
                13: g,
                14: y,
                18: v,
                25: x,
                35: b,
                37: T,
                39: S,
                41: w,
                42: E,
                48: _,
                50: C,
                51: D,
                52: O,
                53: R,
                54: k,
                60: L,
                61: A,
                63: I,
                64: M,
                65: P,
                66: B,
                67: F
              }),
              t(s, [2, 34]),
              { 27: 45, 55: n, 56: i, 57: a },
              t(u, [2, 37]),
              t(u, h, {
                24: 13,
                32: 15,
                33: 16,
                34: 17,
                43: 30,
                58: 31,
                31: 46,
                4: f,
                5: d,
                10: p,
                12: m,
                13: g,
                14: y,
                18: v,
                25: x,
                35: b,
                37: T,
                39: S,
                41: w,
                42: E,
                48: _,
                50: C,
                51: D,
                52: O,
                53: R,
                54: k,
                60: L,
                61: A,
                63: I,
                64: M,
                65: P,
                66: B,
                67: F
              }),
              t(u, [2, 39]),
              t(u, [2, 40]),
              t(u, [2, 41]),
              { 36: [1, 47] },
              { 38: [1, 48] },
              { 40: [1, 49] },
              t(u, [2, 45]),
              t(u, [2, 46]),
              { 18: [1, 50] },
              { 4: f, 5: d, 10: p, 12: m, 13: g, 14: y, 43: 51, 58: 31, 60: L, 61: A, 63: I, 64: M, 65: P, 66: B, 67: F },
              { 4: f, 5: d, 10: p, 12: m, 13: g, 14: y, 43: 52, 58: 31, 60: L, 61: A, 63: I, 64: M, 65: P, 66: B, 67: F },
              { 4: f, 5: d, 10: p, 12: m, 13: g, 14: y, 43: 53, 58: 31, 60: L, 61: A, 63: I, 64: M, 65: P, 66: B, 67: F },
              { 4: f, 5: d, 10: p, 12: m, 13: g, 14: y, 43: 54, 58: 31, 60: L, 61: A, 63: I, 64: M, 65: P, 66: B, 67: F },
              { 4: f, 5: d, 10: p, 12: m, 13: g, 14: y, 43: 55, 58: 31, 60: L, 61: A, 63: I, 64: M, 65: P, 66: B, 67: F },
              { 4: f, 5: d, 10: p, 12: m, 13: g, 14: y, 43: 56, 58: 31, 60: L, 61: A, 63: I, 64: M, 65: P, 66: B, 67: F },
              { 4: f, 5: d, 8: z, 10: p, 12: m, 13: g, 14: y, 18: $, 44: [1, 57], 47: [1, 58], 58: 60, 59: 59, 63: I, 64: M, 65: P, 66: B, 67: F },
              t(U, [2, 64]),
              t(U, [2, 66]),
              t(U, [2, 67]),
              t(U, [2, 70]),
              t(U, [2, 71]),
              t(U, [2, 72]),
              t(U, [2, 73]),
              t(U, [2, 74]),
              t(U, [2, 75]),
              t(U, [2, 76]),
              t(U, [2, 77]),
              t(U, [2, 78]),
              t(U, [2, 79]),
              t(U, [2, 80]),
              t(s, [2, 35]),
              t(u, [2, 38]),
              t(u, [2, 42]),
              t(u, [2, 43]),
              t(u, [2, 44]),
              { 3: 64, 4: K, 5: ee, 6: Y, 7: ce, 8: Z, 9: ue, 10: Q, 11: j, 12: ne, 13: te, 14: he, 15: le, 21: 63 },
              t(u, [2, 53], { 59: 59, 58: 60, 4: f, 5: d, 8: z, 10: p, 12: m, 13: g, 14: y, 18: $, 49: [1, 77], 63: I, 64: M, 65: P, 66: B, 67: F }),
              t(u, [2, 56], { 59: 59, 58: 60, 4: f, 5: d, 8: z, 10: p, 12: m, 13: g, 14: y, 18: $, 49: [1, 78], 63: I, 64: M, 65: P, 66: B, 67: F }),
              t(u, [2, 57], { 59: 59, 58: 60, 4: f, 5: d, 8: z, 10: p, 12: m, 13: g, 14: y, 18: $, 63: I, 64: M, 65: P, 66: B, 67: F }),
              t(u, [2, 58], { 59: 59, 58: 60, 4: f, 5: d, 8: z, 10: p, 12: m, 13: g, 14: y, 18: $, 63: I, 64: M, 65: P, 66: B, 67: F }),
              t(u, [2, 59], { 59: 59, 58: 60, 4: f, 5: d, 8: z, 10: p, 12: m, 13: g, 14: y, 18: $, 63: I, 64: M, 65: P, 66: B, 67: F }),
              t(u, [2, 60], { 59: 59, 58: 60, 4: f, 5: d, 8: z, 10: p, 12: m, 13: g, 14: y, 18: $, 63: I, 64: M, 65: P, 66: B, 67: F }),
              { 45: [1, 79] },
              { 44: [1, 80] },
              t(U, [2, 65]),
              t(U, [2, 81]),
              t(U, [2, 82]),
              t(U, [2, 83]),
              { 3: 82, 4: K, 5: ee, 6: Y, 7: ce, 8: Z, 9: ue, 10: Q, 11: j, 12: ne, 13: te, 14: he, 15: le, 18: [1, 81] },
              t(J, [2, 23]),
              t(J, [2, 1]),
              t(J, [2, 2]),
              t(J, [2, 3]),
              t(J, [2, 4]),
              t(J, [2, 5]),
              t(J, [2, 6]),
              t(J, [2, 7]),
              t(J, [2, 8]),
              t(J, [2, 9]),
              t(J, [2, 10]),
              t(J, [2, 11]),
              t(J, [2, 12]),
              t(u, [2, 52], { 58: 31, 43: 83, 4: f, 5: d, 10: p, 12: m, 13: g, 14: y, 60: L, 61: A, 63: I, 64: M, 65: P, 66: B, 67: F }),
              t(u, [2, 55], { 58: 31, 43: 84, 4: f, 5: d, 10: p, 12: m, 13: g, 14: y, 60: L, 61: A, 63: I, 64: M, 65: P, 66: B, 67: F }),
              { 46: [1, 85] },
              { 45: [1, 86] },
              { 4: Se, 5: se, 6: ae, 8: Oe, 11: ye, 13: Be, 16: 89, 17: He, 18: ze, 19: Le, 20: Ie, 22: 88, 23: 87 },
              t(J, [2, 24]),
              t(u, [2, 51], { 59: 59, 58: 60, 4: f, 5: d, 8: z, 10: p, 12: m, 13: g, 14: y, 18: $, 63: I, 64: M, 65: P, 66: B, 67: F }),
              t(u, [2, 54], { 59: 59, 58: 60, 4: f, 5: d, 8: z, 10: p, 12: m, 13: g, 14: y, 18: $, 63: I, 64: M, 65: P, 66: B, 67: F }),
              t(u, [2, 47], { 22: 88, 16: 89, 23: 100, 4: Se, 5: se, 6: ae, 8: Oe, 11: ye, 13: Be, 17: He, 18: ze, 19: Le, 20: Ie }),
              { 46: [1, 101] },
              t(u, [2, 29], { 10: xe }),
              t(q, [2, 27], { 16: 103, 4: Se, 5: se, 6: ae, 8: Oe, 11: ye, 13: Be, 17: He, 18: ze, 19: Le, 20: Ie }),
              t(de, [2, 25]),
              t(de, [2, 13]),
              t(de, [2, 14]),
              t(de, [2, 15]),
              t(de, [2, 16]),
              t(de, [2, 17]),
              t(de, [2, 18]),
              t(de, [2, 19]),
              t(de, [2, 20]),
              t(de, [2, 21]),
              t(de, [2, 22]),
              t(u, [2, 49], { 10: xe }),
              t(u, [2, 48], { 22: 88, 16: 89, 23: 104, 4: Se, 5: se, 6: ae, 8: Oe, 11: ye, 13: Be, 17: He, 18: ze, 19: Le, 20: Ie }),
              { 4: Se, 5: se, 6: ae, 8: Oe, 11: ye, 13: Be, 16: 89, 17: He, 18: ze, 19: Le, 20: Ie, 22: 105 },
              t(de, [2, 26]),
              t(u, [2, 50], { 10: xe }),
              t(q, [2, 28], { 16: 103, 4: Se, 5: se, 6: ae, 8: Oe, 11: ye, 13: Be, 17: He, 18: ze, 19: Le, 20: Ie })
            ],
            defaultActions: { 8: [2, 30], 9: [2, 31] },
            parseError: o(function (W, pe) {
              if (pe.recoverable) this.trace(W)
              else {
                var ve = new Error(W)
                throw ((ve.hash = pe), ve)
              }
            }, 'parseError'),
            parse: o(function (W) {
              var pe = this,
                ve = [0],
                Pe = [],
                _e = [null],
                be = [],
                Ve = this.table,
                De = '',
                qe = 0,
                at = 0,
                Rt = 0,
                st = 2,
                Ue = 1,
                ct = be.slice.call(arguments, 1),
                We = Object.create(this.lexer),
                ot = { yy: {} }
              for (var Yt in this.yy) Object.prototype.hasOwnProperty.call(this.yy, Yt) && (ot.yy[Yt] = this.yy[Yt])
              We.setInput(W, ot.yy), (ot.yy.lexer = We), (ot.yy.parser = this), typeof We.yylloc > 'u' && (We.yylloc = {})
              var Tt = We.yylloc
              be.push(Tt)
              var Mt = We.options && We.options.ranges
              typeof ot.yy.parseError == 'function' ? (this.parseError = ot.yy.parseError) : (this.parseError = Object.getPrototypeOf(this).parseError)
              function bt(Ce) {
                ;(ve.length = ve.length - 2 * Ce), (_e.length = _e.length - Ce), (be.length = be.length - Ce)
              }
              o(bt, 'popStack')
              function ut() {
                var Ce
                return (Ce = Pe.pop() || We.lex() || Ue), typeof Ce != 'number' && (Ce instanceof Array && ((Pe = Ce), (Ce = Pe.pop())), (Ce = pe.symbols_[Ce] || Ce)), Ce
              }
              o(ut, 'lex')
              for (var St, ft, vt, nt, pn, kt, On = {}, tn, Mr, Ir, Pn; ; ) {
                if (
                  ((vt = ve[ve.length - 1]),
                  this.defaultActions[vt] ? (nt = this.defaultActions[vt]) : ((St === null || typeof St > 'u') && (St = ut()), (nt = Ve[vt] && Ve[vt][St])),
                  typeof nt > 'u' || !nt.length || !nt[0])
                ) {
                  var Dt = ''
                  Pn = []
                  for (tn in Ve[vt]) this.terminals_[tn] && tn > st && Pn.push("'" + this.terminals_[tn] + "'")
                  We.showPosition
                    ? (Dt =
                        'Parse error on line ' +
                        (qe + 1) +
                        `:
` +
                        We.showPosition() +
                        `
Expecting ` +
                        Pn.join(', ') +
                        ", got '" +
                        (this.terminals_[St] || St) +
                        "'")
                    : (Dt = 'Parse error on line ' + (qe + 1) + ': Unexpected ' + (St == Ue ? 'end of input' : "'" + (this.terminals_[St] || St) + "'")),
                    this.parseError(Dt, { text: We.match, token: this.terminals_[St] || St, line: We.yylineno, loc: Tt, expected: Pn })
                }
                if (nt[0] instanceof Array && nt.length > 1) throw new Error('Parse Error: multiple actions possible at state: ' + vt + ', token: ' + St)
                switch (nt[0]) {
                  case 1:
                    ve.push(St),
                      _e.push(We.yytext),
                      be.push(We.yylloc),
                      ve.push(nt[1]),
                      (St = null),
                      ft ? ((St = ft), (ft = null)) : ((at = We.yyleng), (De = We.yytext), (qe = We.yylineno), (Tt = We.yylloc), Rt > 0 && Rt--)
                    break
                  case 2:
                    if (
                      ((Mr = this.productions_[nt[1]][1]),
                      (On.$ = _e[_e.length - Mr]),
                      (On._$ = {
                        first_line: be[be.length - (Mr || 1)].first_line,
                        last_line: be[be.length - 1].last_line,
                        first_column: be[be.length - (Mr || 1)].first_column,
                        last_column: be[be.length - 1].last_column
                      }),
                      Mt && (On._$.range = [be[be.length - (Mr || 1)].range[0], be[be.length - 1].range[1]]),
                      (kt = this.performAction.apply(On, [De, at, qe, ot.yy, nt[1], _e, be].concat(ct))),
                      typeof kt < 'u')
                    )
                      return kt
                    Mr && ((ve = ve.slice(0, -1 * Mr * 2)), (_e = _e.slice(0, -1 * Mr)), (be = be.slice(0, -1 * Mr))),
                      ve.push(this.productions_[nt[1]][0]),
                      _e.push(On.$),
                      be.push(On._$),
                      (Ir = Ve[ve[ve.length - 2]][ve[ve.length - 1]]),
                      ve.push(Ir)
                    break
                  case 3:
                    return !0
                }
              }
              return !0
            }, 'parse')
          },
          oe = (function () {
            var Te = {
              EOF: 1,
              parseError: o(function (pe, ve) {
                if (this.yy.parser) this.yy.parser.parseError(pe, ve)
                else throw new Error(pe)
              }, 'parseError'),
              setInput: o(function (W, pe) {
                return (
                  (this.yy = pe || this.yy || {}),
                  (this._input = W),
                  (this._more = this._backtrack = this.done = !1),
                  (this.yylineno = this.yyleng = 0),
                  (this.yytext = this.matched = this.match = ''),
                  (this.conditionStack = ['INITIAL']),
                  (this.yylloc = { first_line: 1, first_column: 0, last_line: 1, last_column: 0 }),
                  this.options.ranges && (this.yylloc.range = [0, 0]),
                  (this.offset = 0),
                  this
                )
              }, 'setInput'),
              input: o(function () {
                var W = this._input[0]
                ;(this.yytext += W), this.yyleng++, this.offset++, (this.match += W), (this.matched += W)
                var pe = W.match(/(?:\r\n?|\n).*/g)
                return (
                  pe ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++,
                  this.options.ranges && this.yylloc.range[1]++,
                  (this._input = this._input.slice(1)),
                  W
                )
              }, 'input'),
              unput: o(function (W) {
                var pe = W.length,
                  ve = W.split(/(?:\r\n?|\n)/g)
                ;(this._input = W + this._input), (this.yytext = this.yytext.substr(0, this.yytext.length - pe)), (this.offset -= pe)
                var Pe = this.match.split(/(?:\r\n?|\n)/g)
                ;(this.match = this.match.substr(0, this.match.length - 1)),
                  (this.matched = this.matched.substr(0, this.matched.length - 1)),
                  ve.length - 1 && (this.yylineno -= ve.length - 1)
                var _e = this.yylloc.range
                return (
                  (this.yylloc = {
                    first_line: this.yylloc.first_line,
                    last_line: this.yylineno + 1,
                    first_column: this.yylloc.first_column,
                    last_column: ve ? (ve.length === Pe.length ? this.yylloc.first_column : 0) + Pe[Pe.length - ve.length].length - ve[0].length : this.yylloc.first_column - pe
                  }),
                  this.options.ranges && (this.yylloc.range = [_e[0], _e[0] + this.yyleng - pe]),
                  (this.yyleng = this.yytext.length),
                  this
                )
              }, 'unput'),
              more: o(function () {
                return (this._more = !0), this
              }, 'more'),
              reject: o(function () {
                if (this.options.backtrack_lexer) this._backtrack = !0
                else
                  return this.parseError(
                    'Lexical error on line ' +
                      (this.yylineno + 1) +
                      `. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
` +
                      this.showPosition(),
                    { text: '', token: null, line: this.yylineno }
                  )
                return this
              }, 'reject'),
              less: o(function (W) {
                this.unput(this.match.slice(W))
              }, 'less'),
              pastInput: o(function () {
                var W = this.matched.substr(0, this.matched.length - this.match.length)
                return (W.length > 20 ? '...' : '') + W.substr(-20).replace(/\n/g, '')
              }, 'pastInput'),
              upcomingInput: o(function () {
                var W = this.match
                return W.length < 20 && (W += this._input.substr(0, 20 - W.length)), (W.substr(0, 20) + (W.length > 20 ? '...' : '')).replace(/\n/g, '')
              }, 'upcomingInput'),
              showPosition: o(function () {
                var W = this.pastInput(),
                  pe = new Array(W.length + 1).join('-')
                return (
                  W +
                  this.upcomingInput() +
                  `
` +
                  pe +
                  '^'
                )
              }, 'showPosition'),
              test_match: o(function (W, pe) {
                var ve, Pe, _e
                if (
                  (this.options.backtrack_lexer &&
                    ((_e = {
                      yylineno: this.yylineno,
                      yylloc: { first_line: this.yylloc.first_line, last_line: this.last_line, first_column: this.yylloc.first_column, last_column: this.yylloc.last_column },
                      yytext: this.yytext,
                      match: this.match,
                      matches: this.matches,
                      matched: this.matched,
                      yyleng: this.yyleng,
                      offset: this.offset,
                      _more: this._more,
                      _input: this._input,
                      yy: this.yy,
                      conditionStack: this.conditionStack.slice(0),
                      done: this.done
                    }),
                    this.options.ranges && (_e.yylloc.range = this.yylloc.range.slice(0))),
                  (Pe = W[0].match(/(?:\r\n?|\n).*/g)),
                  Pe && (this.yylineno += Pe.length),
                  (this.yylloc = {
                    first_line: this.yylloc.last_line,
                    last_line: this.yylineno + 1,
                    first_column: this.yylloc.last_column,
                    last_column: Pe ? Pe[Pe.length - 1].length - Pe[Pe.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + W[0].length
                  }),
                  (this.yytext += W[0]),
                  (this.match += W[0]),
                  (this.matches = W),
                  (this.yyleng = this.yytext.length),
                  this.options.ranges && (this.yylloc.range = [this.offset, (this.offset += this.yyleng)]),
                  (this._more = !1),
                  (this._backtrack = !1),
                  (this._input = this._input.slice(W[0].length)),
                  (this.matched += W[0]),
                  (ve = this.performAction.call(this, this.yy, this, pe, this.conditionStack[this.conditionStack.length - 1])),
                  this.done && this._input && (this.done = !1),
                  ve)
                )
                  return ve
                if (this._backtrack) {
                  for (var be in _e) this[be] = _e[be]
                  return !1
                }
                return !1
              }, 'test_match'),
              next: o(function () {
                if (this.done) return this.EOF
                this._input || (this.done = !0)
                var W, pe, ve, Pe
                this._more || ((this.yytext = ''), (this.match = ''))
                for (var _e = this._currentRules(), be = 0; be < _e.length; be++)
                  if (((ve = this._input.match(this.rules[_e[be]])), ve && (!pe || ve[0].length > pe[0].length))) {
                    if (((pe = ve), (Pe = be), this.options.backtrack_lexer)) {
                      if (((W = this.test_match(ve, _e[be])), W !== !1)) return W
                      if (this._backtrack) {
                        pe = !1
                        continue
                      } else return !1
                    } else if (!this.options.flex) break
                  }
                return pe
                  ? ((W = this.test_match(pe, _e[Pe])), W !== !1 ? W : !1)
                  : this._input === ''
                    ? this.EOF
                    : this.parseError(
                        'Lexical error on line ' +
                          (this.yylineno + 1) +
                          `. Unrecognized text.
` +
                          this.showPosition(),
                        { text: '', token: null, line: this.yylineno }
                      )
              }, 'next'),
              lex: o(function () {
                var pe = this.next()
                return pe || this.lex()
              }, 'lex'),
              begin: o(function (pe) {
                this.conditionStack.push(pe)
              }, 'begin'),
              popState: o(function () {
                var pe = this.conditionStack.length - 1
                return pe > 0 ? this.conditionStack.pop() : this.conditionStack[0]
              }, 'popState'),
              _currentRules: o(function () {
                return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]
                  ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
                  : this.conditions.INITIAL.rules
              }, '_currentRules'),
              topState: o(function (pe) {
                return (pe = this.conditionStack.length - 1 - Math.abs(pe || 0)), pe >= 0 ? this.conditionStack[pe] : 'INITIAL'
              }, 'topState'),
              pushState: o(function (pe) {
                this.begin(pe)
              }, 'pushState'),
              stateStackSize: o(function () {
                return this.conditionStack.length
              }, 'stateStackSize'),
              options: { 'case-insensitive': !0 },
              performAction: o(function (pe, ve, Pe, _e) {
                var be = _e
                switch (Pe) {
                  case 0:
                    break
                  case 1:
                    break
                  case 2:
                    return 55
                  case 3:
                    break
                  case 4:
                    return this.begin('title'), 35
                    break
                  case 5:
                    return this.popState(), 'title_value'
                    break
                  case 6:
                    return this.begin('acc_title'), 37
                    break
                  case 7:
                    return this.popState(), 'acc_title_value'
                    break
                  case 8:
                    return this.begin('acc_descr'), 39
                    break
                  case 9:
                    return this.popState(), 'acc_descr_value'
                    break
                  case 10:
                    this.begin('acc_descr_multiline')
                    break
                  case 11:
                    this.popState()
                    break
                  case 12:
                    return 'acc_descr_multiline_value'
                  case 13:
                    return 48
                  case 14:
                    return 50
                  case 15:
                    return 49
                  case 16:
                    return 51
                  case 17:
                    return 52
                  case 18:
                    return 53
                  case 19:
                    return 54
                  case 20:
                    return 25
                  case 21:
                    this.begin('md_string')
                    break
                  case 22:
                    return 'MD_STR'
                  case 23:
                    this.popState()
                    break
                  case 24:
                    this.begin('string')
                    break
                  case 25:
                    this.popState()
                    break
                  case 26:
                    return 'STR'
                  case 27:
                    this.begin('class_name')
                    break
                  case 28:
                    return this.popState(), 47
                    break
                  case 29:
                    return this.begin('point_start'), 44
                    break
                  case 30:
                    return this.begin('point_x'), 45
                    break
                  case 31:
                    this.popState()
                    break
                  case 32:
                    this.popState(), this.begin('point_y')
                    break
                  case 33:
                    return this.popState(), 46
                    break
                  case 34:
                    return 28
                  case 35:
                    return 4
                  case 36:
                    return 11
                  case 37:
                    return 64
                  case 38:
                    return 10
                  case 39:
                    return 65
                  case 40:
                    return 65
                  case 41:
                    return 14
                  case 42:
                    return 13
                  case 43:
                    return 67
                  case 44:
                    return 66
                  case 45:
                    return 12
                  case 46:
                    return 8
                  case 47:
                    return 5
                  case 48:
                    return 18
                  case 49:
                    return 56
                  case 50:
                    return 63
                  case 51:
                    return 57
                }
              }, 'anonymous'),
              rules: [
                /^(?:%%(?!\{)[^\n]*)/i,
                /^(?:[^\}]%%[^\n]*)/i,
                /^(?:[\n\r]+)/i,
                /^(?:%%[^\n]*)/i,
                /^(?:title\b)/i,
                /^(?:(?!\n||)*[^\n]*)/i,
                /^(?:accTitle\s*:\s*)/i,
                /^(?:(?!\n||)*[^\n]*)/i,
                /^(?:accDescr\s*:\s*)/i,
                /^(?:(?!\n||)*[^\n]*)/i,
                /^(?:accDescr\s*\{\s*)/i,
                /^(?:[\}])/i,
                /^(?:[^\}]*)/i,
                /^(?: *x-axis *)/i,
                /^(?: *y-axis *)/i,
                /^(?: *--+> *)/i,
                /^(?: *quadrant-1 *)/i,
                /^(?: *quadrant-2 *)/i,
                /^(?: *quadrant-3 *)/i,
                /^(?: *quadrant-4 *)/i,
                /^(?:classDef\b)/i,
                /^(?:["][`])/i,
                /^(?:[^`"]+)/i,
                /^(?:[`]["])/i,
                /^(?:["])/i,
                /^(?:["])/i,
                /^(?:[^"]*)/i,
                /^(?::::)/i,
                /^(?:^\w+)/i,
                /^(?:\s*:\s*\[\s*)/i,
                /^(?:(1)|(0(.\d+)?))/i,
                /^(?:\s*\] *)/i,
                /^(?:\s*,\s*)/i,
                /^(?:(1)|(0(.\d+)?))/i,
                /^(?: *quadrantChart *)/i,
                /^(?:[A-Za-z]+)/i,
                /^(?::)/i,
                /^(?:\+)/i,
                /^(?:,)/i,
                /^(?:=)/i,
                /^(?:=)/i,
                /^(?:\*)/i,
                /^(?:#)/i,
                /^(?:[\_])/i,
                /^(?:\.)/i,
                /^(?:&)/i,
                /^(?:-)/i,
                /^(?:[0-9]+)/i,
                /^(?:\s)/i,
                /^(?:;)/i,
                /^(?:[!"#$%&'*+,-.`?\\_/])/i,
                /^(?:$)/i
              ],
              conditions: {
                class_name: { rules: [28], inclusive: !1 },
                point_y: { rules: [33], inclusive: !1 },
                point_x: { rules: [32], inclusive: !1 },
                point_start: { rules: [30, 31], inclusive: !1 },
                acc_descr_multiline: { rules: [11, 12], inclusive: !1 },
                acc_descr: { rules: [9], inclusive: !1 },
                acc_title: { rules: [7], inclusive: !1 },
                title: { rules: [5], inclusive: !1 },
                md_string: { rules: [22, 23], inclusive: !1 },
                string: { rules: [25, 26], inclusive: !1 },
                INITIAL: {
                  rules: [0, 1, 2, 3, 4, 6, 8, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 24, 27, 29, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51],
                  inclusive: !0
                }
              }
            }
            return Te
          })()
        ie.lexer = oe
        function V() {
          this.yy = {}
        }
        return o(V, 'Parser'), (V.prototype = ie), (ie.Parser = V), new V()
      })()
      ZO.parser = ZO
      Lfe = ZO
    })
  var xs,
    PS,
    Nfe = N(() => {
      'use strict'
      fr()
      _a()
      yt()
      By()
      ;(xs = dh()),
        (PS = class {
          constructor() {
            this.classes = new Map()
            ;(this.config = this.getDefaultConfig()), (this.themeConfig = this.getDefaultThemeConfig()), (this.data = this.getDefaultData())
          }
          static {
            o(this, 'QuadrantBuilder')
          }
          getDefaultData() {
            return {
              titleText: '',
              quadrant1Text: '',
              quadrant2Text: '',
              quadrant3Text: '',
              quadrant4Text: '',
              xAxisLeftText: '',
              xAxisRightText: '',
              yAxisBottomText: '',
              yAxisTopText: '',
              points: []
            }
          }
          getDefaultConfig() {
            return {
              showXAxis: !0,
              showYAxis: !0,
              showTitle: !0,
              chartHeight: or.quadrantChart?.chartWidth || 500,
              chartWidth: or.quadrantChart?.chartHeight || 500,
              titlePadding: or.quadrantChart?.titlePadding || 10,
              titleFontSize: or.quadrantChart?.titleFontSize || 20,
              quadrantPadding: or.quadrantChart?.quadrantPadding || 5,
              xAxisLabelPadding: or.quadrantChart?.xAxisLabelPadding || 5,
              yAxisLabelPadding: or.quadrantChart?.yAxisLabelPadding || 5,
              xAxisLabelFontSize: or.quadrantChart?.xAxisLabelFontSize || 16,
              yAxisLabelFontSize: or.quadrantChart?.yAxisLabelFontSize || 16,
              quadrantLabelFontSize: or.quadrantChart?.quadrantLabelFontSize || 16,
              quadrantTextTopPadding: or.quadrantChart?.quadrantTextTopPadding || 5,
              pointTextPadding: or.quadrantChart?.pointTextPadding || 5,
              pointLabelFontSize: or.quadrantChart?.pointLabelFontSize || 12,
              pointRadius: or.quadrantChart?.pointRadius || 5,
              xAxisPosition: or.quadrantChart?.xAxisPosition || 'top',
              yAxisPosition: or.quadrantChart?.yAxisPosition || 'left',
              quadrantInternalBorderStrokeWidth: or.quadrantChart?.quadrantInternalBorderStrokeWidth || 1,
              quadrantExternalBorderStrokeWidth: or.quadrantChart?.quadrantExternalBorderStrokeWidth || 2
            }
          }
          getDefaultThemeConfig() {
            return {
              quadrant1Fill: xs.quadrant1Fill,
              quadrant2Fill: xs.quadrant2Fill,
              quadrant3Fill: xs.quadrant3Fill,
              quadrant4Fill: xs.quadrant4Fill,
              quadrant1TextFill: xs.quadrant1TextFill,
              quadrant2TextFill: xs.quadrant2TextFill,
              quadrant3TextFill: xs.quadrant3TextFill,
              quadrant4TextFill: xs.quadrant4TextFill,
              quadrantPointFill: xs.quadrantPointFill,
              quadrantPointTextFill: xs.quadrantPointTextFill,
              quadrantXAxisTextFill: xs.quadrantXAxisTextFill,
              quadrantYAxisTextFill: xs.quadrantYAxisTextFill,
              quadrantTitleFill: xs.quadrantTitleFill,
              quadrantInternalBorderStrokeFill: xs.quadrantInternalBorderStrokeFill,
              quadrantExternalBorderStrokeFill: xs.quadrantExternalBorderStrokeFill
            }
          }
          clear() {
            ;(this.config = this.getDefaultConfig()),
              (this.themeConfig = this.getDefaultThemeConfig()),
              (this.data = this.getDefaultData()),
              (this.classes = new Map()),
              X.info('clear called')
          }
          setData(e) {
            this.data = { ...this.data, ...e }
          }
          addPoints(e) {
            this.data.points = [...e, ...this.data.points]
          }
          addClass(e, r) {
            this.classes.set(e, r)
          }
          setConfig(e) {
            X.trace('setConfig called with: ', e), (this.config = { ...this.config, ...e })
          }
          setThemeConfig(e) {
            X.trace('setThemeConfig called with: ', e), (this.themeConfig = { ...this.themeConfig, ...e })
          }
          calculateSpace(e, r, n, i) {
            let a = this.config.xAxisLabelPadding * 2 + this.config.xAxisLabelFontSize,
              s = { top: e === 'top' && r ? a : 0, bottom: e === 'bottom' && r ? a : 0 },
              l = this.config.yAxisLabelPadding * 2 + this.config.yAxisLabelFontSize,
              u = { left: this.config.yAxisPosition === 'left' && n ? l : 0, right: this.config.yAxisPosition === 'right' && n ? l : 0 },
              h = this.config.titleFontSize + this.config.titlePadding * 2,
              f = { top: i ? h : 0 },
              d = this.config.quadrantPadding + u.left,
              p = this.config.quadrantPadding + s.top + f.top,
              m = this.config.chartWidth - this.config.quadrantPadding * 2 - u.left - u.right,
              g = this.config.chartHeight - this.config.quadrantPadding * 2 - s.top - s.bottom - f.top,
              y = m / 2,
              v = g / 2
            return {
              xAxisSpace: s,
              yAxisSpace: u,
              titleSpace: f,
              quadrantSpace: { quadrantLeft: d, quadrantTop: p, quadrantWidth: m, quadrantHalfWidth: y, quadrantHeight: g, quadrantHalfHeight: v }
            }
          }
          getAxisLabels(e, r, n, i) {
            let { quadrantSpace: a, titleSpace: s } = i,
              { quadrantHalfHeight: l, quadrantHeight: u, quadrantLeft: h, quadrantHalfWidth: f, quadrantTop: d, quadrantWidth: p } = a,
              m = !!this.data.xAxisRightText,
              g = !!this.data.yAxisTopText,
              y = []
            return (
              this.data.xAxisLeftText &&
                r &&
                y.push({
                  text: this.data.xAxisLeftText,
                  fill: this.themeConfig.quadrantXAxisTextFill,
                  x: h + (m ? f / 2 : 0),
                  y: e === 'top' ? this.config.xAxisLabelPadding + s.top : this.config.xAxisLabelPadding + d + u + this.config.quadrantPadding,
                  fontSize: this.config.xAxisLabelFontSize,
                  verticalPos: m ? 'center' : 'left',
                  horizontalPos: 'top',
                  rotation: 0
                }),
              this.data.xAxisRightText &&
                r &&
                y.push({
                  text: this.data.xAxisRightText,
                  fill: this.themeConfig.quadrantXAxisTextFill,
                  x: h + f + (m ? f / 2 : 0),
                  y: e === 'top' ? this.config.xAxisLabelPadding + s.top : this.config.xAxisLabelPadding + d + u + this.config.quadrantPadding,
                  fontSize: this.config.xAxisLabelFontSize,
                  verticalPos: m ? 'center' : 'left',
                  horizontalPos: 'top',
                  rotation: 0
                }),
              this.data.yAxisBottomText &&
                n &&
                y.push({
                  text: this.data.yAxisBottomText,
                  fill: this.themeConfig.quadrantYAxisTextFill,
                  x: this.config.yAxisPosition === 'left' ? this.config.yAxisLabelPadding : this.config.yAxisLabelPadding + h + p + this.config.quadrantPadding,
                  y: d + u - (g ? l / 2 : 0),
                  fontSize: this.config.yAxisLabelFontSize,
                  verticalPos: g ? 'center' : 'left',
                  horizontalPos: 'top',
                  rotation: -90
                }),
              this.data.yAxisTopText &&
                n &&
                y.push({
                  text: this.data.yAxisTopText,
                  fill: this.themeConfig.quadrantYAxisTextFill,
                  x: this.config.yAxisPosition === 'left' ? this.config.yAxisLabelPadding : this.config.yAxisLabelPadding + h + p + this.config.quadrantPadding,
                  y: d + l - (g ? l / 2 : 0),
                  fontSize: this.config.yAxisLabelFontSize,
                  verticalPos: g ? 'center' : 'left',
                  horizontalPos: 'top',
                  rotation: -90
                }),
              y
            )
          }
          getQuadrants(e) {
            let { quadrantSpace: r } = e,
              { quadrantHalfHeight: n, quadrantLeft: i, quadrantHalfWidth: a, quadrantTop: s } = r,
              l = [
                {
                  text: {
                    text: this.data.quadrant1Text,
                    fill: this.themeConfig.quadrant1TextFill,
                    x: 0,
                    y: 0,
                    fontSize: this.config.quadrantLabelFontSize,
                    verticalPos: 'center',
                    horizontalPos: 'middle',
                    rotation: 0
                  },
                  x: i + a,
                  y: s,
                  width: a,
                  height: n,
                  fill: this.themeConfig.quadrant1Fill
                },
                {
                  text: {
                    text: this.data.quadrant2Text,
                    fill: this.themeConfig.quadrant2TextFill,
                    x: 0,
                    y: 0,
                    fontSize: this.config.quadrantLabelFontSize,
                    verticalPos: 'center',
                    horizontalPos: 'middle',
                    rotation: 0
                  },
                  x: i,
                  y: s,
                  width: a,
                  height: n,
                  fill: this.themeConfig.quadrant2Fill
                },
                {
                  text: {
                    text: this.data.quadrant3Text,
                    fill: this.themeConfig.quadrant3TextFill,
                    x: 0,
                    y: 0,
                    fontSize: this.config.quadrantLabelFontSize,
                    verticalPos: 'center',
                    horizontalPos: 'middle',
                    rotation: 0
                  },
                  x: i,
                  y: s + n,
                  width: a,
                  height: n,
                  fill: this.themeConfig.quadrant3Fill
                },
                {
                  text: {
                    text: this.data.quadrant4Text,
                    fill: this.themeConfig.quadrant4TextFill,
                    x: 0,
                    y: 0,
                    fontSize: this.config.quadrantLabelFontSize,
                    verticalPos: 'center',
                    horizontalPos: 'middle',
                    rotation: 0
                  },
                  x: i + a,
                  y: s + n,
                  width: a,
                  height: n,
                  fill: this.themeConfig.quadrant4Fill
                }
              ]
            for (let u of l)
              (u.text.x = u.x + u.width / 2),
                this.data.points.length === 0
                  ? ((u.text.y = u.y + u.height / 2), (u.text.horizontalPos = 'middle'))
                  : ((u.text.y = u.y + this.config.quadrantTextTopPadding), (u.text.horizontalPos = 'top'))
            return l
          }
          getQuadrantPoints(e) {
            let { quadrantSpace: r } = e,
              { quadrantHeight: n, quadrantLeft: i, quadrantTop: a, quadrantWidth: s } = r,
              l = Tl()
                .domain([0, 1])
                .range([i, s + i]),
              u = Tl()
                .domain([0, 1])
                .range([n + a, a])
            return this.data.points.map(f => {
              let d = this.classes.get(f.className)
              return (
                d && (f = { ...d, ...f }),
                {
                  x: l(f.x),
                  y: u(f.y),
                  fill: f.color ?? this.themeConfig.quadrantPointFill,
                  radius: f.radius ?? this.config.pointRadius,
                  text: {
                    text: f.text,
                    fill: this.themeConfig.quadrantPointTextFill,
                    x: l(f.x),
                    y: u(f.y) + this.config.pointTextPadding,
                    verticalPos: 'center',
                    horizontalPos: 'top',
                    fontSize: this.config.pointLabelFontSize,
                    rotation: 0
                  },
                  strokeColor: f.strokeColor ?? this.themeConfig.quadrantPointFill,
                  strokeWidth: f.strokeWidth ?? '0px'
                }
              )
            })
          }
          getBorders(e) {
            let r = this.config.quadrantExternalBorderStrokeWidth / 2,
              { quadrantSpace: n } = e,
              { quadrantHalfHeight: i, quadrantHeight: a, quadrantLeft: s, quadrantHalfWidth: l, quadrantTop: u, quadrantWidth: h } = n
            return [
              { strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill, strokeWidth: this.config.quadrantExternalBorderStrokeWidth, x1: s - r, y1: u, x2: s + h + r, y2: u },
              {
                strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill,
                strokeWidth: this.config.quadrantExternalBorderStrokeWidth,
                x1: s + h,
                y1: u + r,
                x2: s + h,
                y2: u + a - r
              },
              {
                strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill,
                strokeWidth: this.config.quadrantExternalBorderStrokeWidth,
                x1: s - r,
                y1: u + a,
                x2: s + h + r,
                y2: u + a
              },
              { strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill, strokeWidth: this.config.quadrantExternalBorderStrokeWidth, x1: s, y1: u + r, x2: s, y2: u + a - r },
              {
                strokeFill: this.themeConfig.quadrantInternalBorderStrokeFill,
                strokeWidth: this.config.quadrantInternalBorderStrokeWidth,
                x1: s + l,
                y1: u + r,
                x2: s + l,
                y2: u + a - r
              },
              {
                strokeFill: this.themeConfig.quadrantInternalBorderStrokeFill,
                strokeWidth: this.config.quadrantInternalBorderStrokeWidth,
                x1: s + r,
                y1: u + i,
                x2: s + h - r,
                y2: u + i
              }
            ]
          }
          getTitle(e) {
            if (e)
              return {
                text: this.data.titleText,
                fill: this.themeConfig.quadrantTitleFill,
                fontSize: this.config.titleFontSize,
                horizontalPos: 'top',
                verticalPos: 'center',
                rotation: 0,
                y: this.config.titlePadding,
                x: this.config.chartWidth / 2
              }
          }
          build() {
            let e = this.config.showXAxis && !!(this.data.xAxisLeftText || this.data.xAxisRightText),
              r = this.config.showYAxis && !!(this.data.yAxisTopText || this.data.yAxisBottomText),
              n = this.config.showTitle && !!this.data.titleText,
              i = this.data.points.length > 0 ? 'bottom' : this.config.xAxisPosition,
              a = this.calculateSpace(i, e, r, n)
            return {
              points: this.getQuadrantPoints(a),
              quadrants: this.getQuadrants(a),
              axisLabels: this.getAxisLabels(i, e, r, a),
              borderLines: this.getBorders(a),
              title: this.getTitle(n)
            }
          }
        })
    })
  function JO(t) {
    return !/^#?([\dA-Fa-f]{6}|[\dA-Fa-f]{3})$/.test(t)
  }
  function Mfe(t) {
    return !/^\d+$/.test(t)
  }
  function Ife(t) {
    return !/^\d+px$/.test(t)
  }
  var Bp,
    Ofe = N(() => {
      'use strict'
      Bp = class extends Error {
        static {
          o(this, 'InvalidStyleError')
        }
        constructor(e, r, n) {
          super(`value for ${e} ${r} is invalid, please use a valid ${n}`), (this.name = 'InvalidStyleError')
        }
      }
      o(JO, 'validateHexCode')
      o(Mfe, 'validateNumber')
      o(Ife, 'validateSizeInPixels')
    })
  function eh(t) {
    return wr(t.trim(), YVe)
  }
  function XVe(t) {
    wa.setData({ quadrant1Text: eh(t.text) })
  }
  function jVe(t) {
    wa.setData({ quadrant2Text: eh(t.text) })
  }
  function KVe(t) {
    wa.setData({ quadrant3Text: eh(t.text) })
  }
  function QVe(t) {
    wa.setData({ quadrant4Text: eh(t.text) })
  }
  function ZVe(t) {
    wa.setData({ xAxisLeftText: eh(t.text) })
  }
  function JVe(t) {
    wa.setData({ xAxisRightText: eh(t.text) })
  }
  function eUe(t) {
    wa.setData({ yAxisTopText: eh(t.text) })
  }
  function tUe(t) {
    wa.setData({ yAxisBottomText: eh(t.text) })
  }
  function eP(t) {
    let e = {}
    for (let r of t) {
      let [n, i] = r.trim().split(/\s*:\s*/)
      if (n === 'radius') {
        if (Mfe(i)) throw new Bp(n, i, 'number')
        e.radius = parseInt(i)
      } else if (n === 'color') {
        if (JO(i)) throw new Bp(n, i, 'hex code')
        e.color = i
      } else if (n === 'stroke-color') {
        if (JO(i)) throw new Bp(n, i, 'hex code')
        e.strokeColor = i
      } else if (n === 'stroke-width') {
        if (Ife(i)) throw new Bp(n, i, 'number of pixels (eg. 10px)')
        e.strokeWidth = i
      } else throw new Error(`style named ${n} is not supported.`)
    }
    return e
  }
  function rUe(t, e, r, n, i) {
    let a = eP(i)
    wa.addPoints([{ x: r, y: n, text: eh(t.text), className: e, ...a }])
  }
  function nUe(t, e) {
    wa.addClass(t, eP(e))
  }
  function iUe(t) {
    wa.setConfig({ chartWidth: t })
  }
  function aUe(t) {
    wa.setConfig({ chartHeight: t })
  }
  function sUe() {
    let t = me(),
      { themeVariables: e, quadrantChart: r } = t
    return (
      r && wa.setConfig(r),
      wa.setThemeConfig({
        quadrant1Fill: e.quadrant1Fill,
        quadrant2Fill: e.quadrant2Fill,
        quadrant3Fill: e.quadrant3Fill,
        quadrant4Fill: e.quadrant4Fill,
        quadrant1TextFill: e.quadrant1TextFill,
        quadrant2TextFill: e.quadrant2TextFill,
        quadrant3TextFill: e.quadrant3TextFill,
        quadrant4TextFill: e.quadrant4TextFill,
        quadrantPointFill: e.quadrantPointFill,
        quadrantPointTextFill: e.quadrantPointTextFill,
        quadrantXAxisTextFill: e.quadrantXAxisTextFill,
        quadrantYAxisTextFill: e.quadrantYAxisTextFill,
        quadrantExternalBorderStrokeFill: e.quadrantExternalBorderStrokeFill,
        quadrantInternalBorderStrokeFill: e.quadrantInternalBorderStrokeFill,
        quadrantTitleFill: e.quadrantTitleFill
      }),
      wa.setData({ titleText: Nr() }),
      wa.build()
    )
  }
  var YVe,
    wa,
    oUe,
    Pfe,
    Bfe = N(() => {
      'use strict'
      Gt()
      pr()
      ci()
      Nfe()
      Ofe()
      YVe = me()
      o(eh, 'textSanitizer')
      wa = new PS()
      o(XVe, 'setQuadrant1Text')
      o(jVe, 'setQuadrant2Text')
      o(KVe, 'setQuadrant3Text')
      o(QVe, 'setQuadrant4Text')
      o(ZVe, 'setXAxisLeftText')
      o(JVe, 'setXAxisRightText')
      o(eUe, 'setYAxisTopText')
      o(tUe, 'setYAxisBottomText')
      o(eP, 'parseStyles')
      o(rUe, 'addPoint')
      o(nUe, 'addClass')
      o(iUe, 'setWidth')
      o(aUe, 'setHeight')
      o(sUe, 'getQuadrantData')
      ;(oUe = o(function () {
        wa.clear(), kr()
      }, 'clear')),
        (Pfe = {
          setWidth: iUe,
          setHeight: aUe,
          setQuadrant1Text: XVe,
          setQuadrant2Text: jVe,
          setQuadrant3Text: KVe,
          setQuadrant4Text: QVe,
          setXAxisLeftText: ZVe,
          setXAxisRightText: JVe,
          setYAxisTopText: eUe,
          setYAxisBottomText: tUe,
          parseStyles: eP,
          addPoint: rUe,
          addClass: nUe,
          getQuadrantData: sUe,
          clear: oUe,
          setAccTitle: Ar,
          getAccTitle: Dr,
          setDiagramTitle: Or,
          getDiagramTitle: Nr,
          getAccDescription: Rr,
          setAccDescription: Lr
        })
    })
  var lUe,
    Ffe,
    $fe = N(() => {
      'use strict'
      fr()
      Gt()
      yt()
      xi()
      ;(lUe = o((t, e, r, n) => {
        function i(C) {
          return C === 'top' ? 'hanging' : 'middle'
        }
        o(i, 'getDominantBaseLine')
        function a(C) {
          return C === 'left' ? 'start' : 'middle'
        }
        o(a, 'getTextAnchor')
        function s(C) {
          return `translate(${C.x}, ${C.y}) rotate(${C.rotation || 0})`
        }
        o(s, 'getTransformation')
        let l = me()
        X.debug(
          `Rendering quadrant chart
` + t
        )
        let u = l.securityLevel,
          h
        u === 'sandbox' && (h = Ge('#i' + e))
        let d = (u === 'sandbox' ? Ge(h.nodes()[0].contentDocument.body) : Ge('body')).select(`[id="${e}"]`),
          p = d.append('g').attr('class', 'main'),
          m = l.quadrantChart?.chartWidth ?? 500,
          g = l.quadrantChart?.chartHeight ?? 500
        fn(d, g, m, l.quadrantChart?.useMaxWidth ?? !0), d.attr('viewBox', '0 0 ' + m + ' ' + g), n.db.setHeight(g), n.db.setWidth(m)
        let y = n.db.getQuadrantData(),
          v = p.append('g').attr('class', 'quadrants'),
          x = p.append('g').attr('class', 'border'),
          b = p.append('g').attr('class', 'data-points'),
          T = p.append('g').attr('class', 'labels'),
          S = p.append('g').attr('class', 'title')
        y.title &&
          S.append('text')
            .attr('x', 0)
            .attr('y', 0)
            .attr('fill', y.title.fill)
            .attr('font-size', y.title.fontSize)
            .attr('dominant-baseline', i(y.title.horizontalPos))
            .attr('text-anchor', a(y.title.verticalPos))
            .attr('transform', s(y.title))
            .text(y.title.text),
          y.borderLines &&
            x
              .selectAll('line')
              .data(y.borderLines)
              .enter()
              .append('line')
              .attr('x1', C => C.x1)
              .attr('y1', C => C.y1)
              .attr('x2', C => C.x2)
              .attr('y2', C => C.y2)
              .style('stroke', C => C.strokeFill)
              .style('stroke-width', C => C.strokeWidth)
        let w = v.selectAll('g.quadrant').data(y.quadrants).enter().append('g').attr('class', 'quadrant')
        w
          .append('rect')
          .attr('x', C => C.x)
          .attr('y', C => C.y)
          .attr('width', C => C.width)
          .attr('height', C => C.height)
          .attr('fill', C => C.fill),
          w
            .append('text')
            .attr('x', 0)
            .attr('y', 0)
            .attr('fill', C => C.text.fill)
            .attr('font-size', C => C.text.fontSize)
            .attr('dominant-baseline', C => i(C.text.horizontalPos))
            .attr('text-anchor', C => a(C.text.verticalPos))
            .attr('transform', C => s(C.text))
            .text(C => C.text.text),
          T.selectAll('g.label')
            .data(y.axisLabels)
            .enter()
            .append('g')
            .attr('class', 'label')
            .append('text')
            .attr('x', 0)
            .attr('y', 0)
            .text(C => C.text)
            .attr('fill', C => C.fill)
            .attr('font-size', C => C.fontSize)
            .attr('dominant-baseline', C => i(C.horizontalPos))
            .attr('text-anchor', C => a(C.verticalPos))
            .attr('transform', C => s(C))
        let _ = b.selectAll('g.data-point').data(y.points).enter().append('g').attr('class', 'data-point')
        _.append('circle')
          .attr('cx', C => C.x)
          .attr('cy', C => C.y)
          .attr('r', C => C.radius)
          .attr('fill', C => C.fill)
          .attr('stroke', C => C.strokeColor)
          .attr('stroke-width', C => C.strokeWidth),
          _.append('text')
            .attr('x', 0)
            .attr('y', 0)
            .text(C => C.text.text)
            .attr('fill', C => C.text.fill)
            .attr('font-size', C => C.text.fontSize)
            .attr('dominant-baseline', C => i(C.text.horizontalPos))
            .attr('text-anchor', C => a(C.text.verticalPos))
            .attr('transform', C => s(C.text))
      }, 'draw')),
        (Ffe = { draw: lUe })
    })
  var zfe = {}
  ur(zfe, { diagram: () => cUe })
  var cUe,
    Gfe = N(() => {
      'use strict'
      Rfe()
      Bfe()
      $fe()
      cUe = { parser: Lfe, db: Pfe, renderer: Ffe, styles: o(() => '', 'styles') }
    })
  var tP,
    Hfe,
    Wfe = N(() => {
      'use strict'
      tP = (function () {
        var t = o(function (I, M, P, B) {
            for (P = P || {}, B = I.length; B--; P[I[B]] = M);
            return P
          }, 'o'),
          e = [1, 10, 12, 14, 16, 18, 19, 21, 23],
          r = [2, 6],
          n = [1, 3],
          i = [1, 5],
          a = [1, 6],
          s = [1, 7],
          l = [1, 5, 10, 12, 14, 16, 18, 19, 21, 23, 34, 35, 36],
          u = [1, 25],
          h = [1, 26],
          f = [1, 28],
          d = [1, 29],
          p = [1, 30],
          m = [1, 31],
          g = [1, 32],
          y = [1, 33],
          v = [1, 34],
          x = [1, 35],
          b = [1, 36],
          T = [1, 37],
          S = [1, 43],
          w = [1, 42],
          E = [1, 47],
          _ = [1, 50],
          C = [1, 10, 12, 14, 16, 18, 19, 21, 23, 34, 35, 36],
          D = [1, 10, 12, 14, 16, 18, 19, 21, 23, 24, 26, 27, 28, 34, 35, 36],
          O = [1, 10, 12, 14, 16, 18, 19, 21, 23, 24, 26, 27, 28, 34, 35, 36, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50],
          R = [1, 64],
          k = {
            trace: o(function () {}, 'trace'),
            yy: {},
            symbols_: {
              error: 2,
              start: 3,
              eol: 4,
              XYCHART: 5,
              chartConfig: 6,
              document: 7,
              CHART_ORIENTATION: 8,
              statement: 9,
              title: 10,
              text: 11,
              X_AXIS: 12,
              parseXAxis: 13,
              Y_AXIS: 14,
              parseYAxis: 15,
              LINE: 16,
              plotData: 17,
              BAR: 18,
              acc_title: 19,
              acc_title_value: 20,
              acc_descr: 21,
              acc_descr_value: 22,
              acc_descr_multiline_value: 23,
              SQUARE_BRACES_START: 24,
              commaSeparatedNumbers: 25,
              SQUARE_BRACES_END: 26,
              NUMBER_WITH_DECIMAL: 27,
              COMMA: 28,
              xAxisData: 29,
              bandData: 30,
              ARROW_DELIMITER: 31,
              commaSeparatedTexts: 32,
              yAxisData: 33,
              NEWLINE: 34,
              SEMI: 35,
              EOF: 36,
              alphaNum: 37,
              STR: 38,
              MD_STR: 39,
              alphaNumToken: 40,
              AMP: 41,
              NUM: 42,
              ALPHA: 43,
              PLUS: 44,
              EQUALS: 45,
              MULT: 46,
              DOT: 47,
              BRKT: 48,
              MINUS: 49,
              UNDERSCORE: 50,
              $accept: 0,
              $end: 1
            },
            terminals_: {
              2: 'error',
              5: 'XYCHART',
              8: 'CHART_ORIENTATION',
              10: 'title',
              12: 'X_AXIS',
              14: 'Y_AXIS',
              16: 'LINE',
              18: 'BAR',
              19: 'acc_title',
              20: 'acc_title_value',
              21: 'acc_descr',
              22: 'acc_descr_value',
              23: 'acc_descr_multiline_value',
              24: 'SQUARE_BRACES_START',
              26: 'SQUARE_BRACES_END',
              27: 'NUMBER_WITH_DECIMAL',
              28: 'COMMA',
              31: 'ARROW_DELIMITER',
              34: 'NEWLINE',
              35: 'SEMI',
              36: 'EOF',
              38: 'STR',
              39: 'MD_STR',
              41: 'AMP',
              42: 'NUM',
              43: 'ALPHA',
              44: 'PLUS',
              45: 'EQUALS',
              46: 'MULT',
              47: 'DOT',
              48: 'BRKT',
              49: 'MINUS',
              50: 'UNDERSCORE'
            },
            productions_: [
              0,
              [3, 2],
              [3, 3],
              [3, 2],
              [3, 1],
              [6, 1],
              [7, 0],
              [7, 2],
              [9, 2],
              [9, 2],
              [9, 2],
              [9, 2],
              [9, 2],
              [9, 3],
              [9, 2],
              [9, 3],
              [9, 2],
              [9, 2],
              [9, 1],
              [17, 3],
              [25, 3],
              [25, 1],
              [13, 1],
              [13, 2],
              [13, 1],
              [29, 1],
              [29, 3],
              [30, 3],
              [32, 3],
              [32, 1],
              [15, 1],
              [15, 2],
              [15, 1],
              [33, 3],
              [4, 1],
              [4, 1],
              [4, 1],
              [11, 1],
              [11, 1],
              [11, 1],
              [37, 1],
              [37, 2],
              [40, 1],
              [40, 1],
              [40, 1],
              [40, 1],
              [40, 1],
              [40, 1],
              [40, 1],
              [40, 1],
              [40, 1],
              [40, 1]
            ],
            performAction: o(function (M, P, B, F, z, $, U) {
              var K = $.length - 1
              switch (z) {
                case 5:
                  F.setOrientation($[K])
                  break
                case 9:
                  F.setDiagramTitle($[K].text.trim())
                  break
                case 12:
                  F.setLineData({ text: '', type: 'text' }, $[K])
                  break
                case 13:
                  F.setLineData($[K - 1], $[K])
                  break
                case 14:
                  F.setBarData({ text: '', type: 'text' }, $[K])
                  break
                case 15:
                  F.setBarData($[K - 1], $[K])
                  break
                case 16:
                  ;(this.$ = $[K].trim()), F.setAccTitle(this.$)
                  break
                case 17:
                case 18:
                  ;(this.$ = $[K].trim()), F.setAccDescription(this.$)
                  break
                case 19:
                  this.$ = $[K - 1]
                  break
                case 20:
                  this.$ = [Number($[K - 2]), ...$[K]]
                  break
                case 21:
                  this.$ = [Number($[K])]
                  break
                case 22:
                  F.setXAxisTitle($[K])
                  break
                case 23:
                  F.setXAxisTitle($[K - 1])
                  break
                case 24:
                  F.setXAxisTitle({ type: 'text', text: '' })
                  break
                case 25:
                  F.setXAxisBand($[K])
                  break
                case 26:
                  F.setXAxisRangeData(Number($[K - 2]), Number($[K]))
                  break
                case 27:
                  this.$ = $[K - 1]
                  break
                case 28:
                  this.$ = [$[K - 2], ...$[K]]
                  break
                case 29:
                  this.$ = [$[K]]
                  break
                case 30:
                  F.setYAxisTitle($[K])
                  break
                case 31:
                  F.setYAxisTitle($[K - 1])
                  break
                case 32:
                  F.setYAxisTitle({ type: 'text', text: '' })
                  break
                case 33:
                  F.setYAxisRangeData(Number($[K - 2]), Number($[K]))
                  break
                case 37:
                  this.$ = { text: $[K], type: 'text' }
                  break
                case 38:
                  this.$ = { text: $[K], type: 'text' }
                  break
                case 39:
                  this.$ = { text: $[K], type: 'markdown' }
                  break
                case 40:
                  this.$ = $[K]
                  break
                case 41:
                  this.$ = $[K - 1] + '' + $[K]
                  break
              }
            }, 'anonymous'),
            table: [
              t(e, r, { 3: 1, 4: 2, 7: 4, 5: n, 34: i, 35: a, 36: s }),
              { 1: [3] },
              t(e, r, { 4: 2, 7: 4, 3: 8, 5: n, 34: i, 35: a, 36: s }),
              t(e, r, { 4: 2, 7: 4, 6: 9, 3: 10, 5: n, 8: [1, 11], 34: i, 35: a, 36: s }),
              { 1: [2, 4], 9: 12, 10: [1, 13], 12: [1, 14], 14: [1, 15], 16: [1, 16], 18: [1, 17], 19: [1, 18], 21: [1, 19], 23: [1, 20] },
              t(l, [2, 34]),
              t(l, [2, 35]),
              t(l, [2, 36]),
              { 1: [2, 1] },
              t(e, r, { 4: 2, 7: 4, 3: 21, 5: n, 34: i, 35: a, 36: s }),
              { 1: [2, 3] },
              t(l, [2, 5]),
              t(e, [2, 7], { 4: 22, 34: i, 35: a, 36: s }),
              { 11: 23, 37: 24, 38: u, 39: h, 40: 27, 41: f, 42: d, 43: p, 44: m, 45: g, 46: y, 47: v, 48: x, 49: b, 50: T },
              { 11: 39, 13: 38, 24: S, 27: w, 29: 40, 30: 41, 37: 24, 38: u, 39: h, 40: 27, 41: f, 42: d, 43: p, 44: m, 45: g, 46: y, 47: v, 48: x, 49: b, 50: T },
              { 11: 45, 15: 44, 27: E, 33: 46, 37: 24, 38: u, 39: h, 40: 27, 41: f, 42: d, 43: p, 44: m, 45: g, 46: y, 47: v, 48: x, 49: b, 50: T },
              { 11: 49, 17: 48, 24: _, 37: 24, 38: u, 39: h, 40: 27, 41: f, 42: d, 43: p, 44: m, 45: g, 46: y, 47: v, 48: x, 49: b, 50: T },
              { 11: 52, 17: 51, 24: _, 37: 24, 38: u, 39: h, 40: 27, 41: f, 42: d, 43: p, 44: m, 45: g, 46: y, 47: v, 48: x, 49: b, 50: T },
              { 20: [1, 53] },
              { 22: [1, 54] },
              t(C, [2, 18]),
              { 1: [2, 2] },
              t(C, [2, 8]),
              t(C, [2, 9]),
              t(D, [2, 37], { 40: 55, 41: f, 42: d, 43: p, 44: m, 45: g, 46: y, 47: v, 48: x, 49: b, 50: T }),
              t(D, [2, 38]),
              t(D, [2, 39]),
              t(O, [2, 40]),
              t(O, [2, 42]),
              t(O, [2, 43]),
              t(O, [2, 44]),
              t(O, [2, 45]),
              t(O, [2, 46]),
              t(O, [2, 47]),
              t(O, [2, 48]),
              t(O, [2, 49]),
              t(O, [2, 50]),
              t(O, [2, 51]),
              t(C, [2, 10]),
              t(C, [2, 22], { 30: 41, 29: 56, 24: S, 27: w }),
              t(C, [2, 24]),
              t(C, [2, 25]),
              { 31: [1, 57] },
              { 11: 59, 32: 58, 37: 24, 38: u, 39: h, 40: 27, 41: f, 42: d, 43: p, 44: m, 45: g, 46: y, 47: v, 48: x, 49: b, 50: T },
              t(C, [2, 11]),
              t(C, [2, 30], { 33: 60, 27: E }),
              t(C, [2, 32]),
              { 31: [1, 61] },
              t(C, [2, 12]),
              { 17: 62, 24: _ },
              { 25: 63, 27: R },
              t(C, [2, 14]),
              { 17: 65, 24: _ },
              t(C, [2, 16]),
              t(C, [2, 17]),
              t(O, [2, 41]),
              t(C, [2, 23]),
              { 27: [1, 66] },
              { 26: [1, 67] },
              { 26: [2, 29], 28: [1, 68] },
              t(C, [2, 31]),
              { 27: [1, 69] },
              t(C, [2, 13]),
              { 26: [1, 70] },
              { 26: [2, 21], 28: [1, 71] },
              t(C, [2, 15]),
              t(C, [2, 26]),
              t(C, [2, 27]),
              { 11: 59, 32: 72, 37: 24, 38: u, 39: h, 40: 27, 41: f, 42: d, 43: p, 44: m, 45: g, 46: y, 47: v, 48: x, 49: b, 50: T },
              t(C, [2, 33]),
              t(C, [2, 19]),
              { 25: 73, 27: R },
              { 26: [2, 28] },
              { 26: [2, 20] }
            ],
            defaultActions: { 8: [2, 1], 10: [2, 3], 21: [2, 2], 72: [2, 28], 73: [2, 20] },
            parseError: o(function (M, P) {
              if (P.recoverable) this.trace(M)
              else {
                var B = new Error(M)
                throw ((B.hash = P), B)
              }
            }, 'parseError'),
            parse: o(function (M) {
              var P = this,
                B = [0],
                F = [],
                z = [null],
                $ = [],
                U = this.table,
                K = '',
                ee = 0,
                Y = 0,
                ce = 0,
                Z = 2,
                ue = 1,
                Q = $.slice.call(arguments, 1),
                j = Object.create(this.lexer),
                ne = { yy: {} }
              for (var te in this.yy) Object.prototype.hasOwnProperty.call(this.yy, te) && (ne.yy[te] = this.yy[te])
              j.setInput(M, ne.yy), (ne.yy.lexer = j), (ne.yy.parser = this), typeof j.yylloc > 'u' && (j.yylloc = {})
              var he = j.yylloc
              $.push(he)
              var le = j.options && j.options.ranges
              typeof ne.yy.parseError == 'function' ? (this.parseError = ne.yy.parseError) : (this.parseError = Object.getPrototypeOf(this).parseError)
              function J(ie) {
                ;(B.length = B.length - 2 * ie), (z.length = z.length - ie), ($.length = $.length - ie)
              }
              o(J, 'popStack')
              function Se() {
                var ie
                return (ie = F.pop() || j.lex() || ue), typeof ie != 'number' && (ie instanceof Array && ((F = ie), (ie = F.pop())), (ie = P.symbols_[ie] || ie)), ie
              }
              o(Se, 'lex')
              for (var se, ae, Oe, ye, Be, He, ze = {}, Le, Ie, xe, q; ; ) {
                if (
                  ((Oe = B[B.length - 1]),
                  this.defaultActions[Oe] ? (ye = this.defaultActions[Oe]) : ((se === null || typeof se > 'u') && (se = Se()), (ye = U[Oe] && U[Oe][se])),
                  typeof ye > 'u' || !ye.length || !ye[0])
                ) {
                  var de = ''
                  q = []
                  for (Le in U[Oe]) this.terminals_[Le] && Le > Z && q.push("'" + this.terminals_[Le] + "'")
                  j.showPosition
                    ? (de =
                        'Parse error on line ' +
                        (ee + 1) +
                        `:
` +
                        j.showPosition() +
                        `
Expecting ` +
                        q.join(', ') +
                        ", got '" +
                        (this.terminals_[se] || se) +
                        "'")
                    : (de = 'Parse error on line ' + (ee + 1) + ': Unexpected ' + (se == ue ? 'end of input' : "'" + (this.terminals_[se] || se) + "'")),
                    this.parseError(de, { text: j.match, token: this.terminals_[se] || se, line: j.yylineno, loc: he, expected: q })
                }
                if (ye[0] instanceof Array && ye.length > 1) throw new Error('Parse Error: multiple actions possible at state: ' + Oe + ', token: ' + se)
                switch (ye[0]) {
                  case 1:
                    B.push(se),
                      z.push(j.yytext),
                      $.push(j.yylloc),
                      B.push(ye[1]),
                      (se = null),
                      ae ? ((se = ae), (ae = null)) : ((Y = j.yyleng), (K = j.yytext), (ee = j.yylineno), (he = j.yylloc), ce > 0 && ce--)
                    break
                  case 2:
                    if (
                      ((Ie = this.productions_[ye[1]][1]),
                      (ze.$ = z[z.length - Ie]),
                      (ze._$ = {
                        first_line: $[$.length - (Ie || 1)].first_line,
                        last_line: $[$.length - 1].last_line,
                        first_column: $[$.length - (Ie || 1)].first_column,
                        last_column: $[$.length - 1].last_column
                      }),
                      le && (ze._$.range = [$[$.length - (Ie || 1)].range[0], $[$.length - 1].range[1]]),
                      (He = this.performAction.apply(ze, [K, Y, ee, ne.yy, ye[1], z, $].concat(Q))),
                      typeof He < 'u')
                    )
                      return He
                    Ie && ((B = B.slice(0, -1 * Ie * 2)), (z = z.slice(0, -1 * Ie)), ($ = $.slice(0, -1 * Ie))),
                      B.push(this.productions_[ye[1]][0]),
                      z.push(ze.$),
                      $.push(ze._$),
                      (xe = U[B[B.length - 2]][B[B.length - 1]]),
                      B.push(xe)
                    break
                  case 3:
                    return !0
                }
              }
              return !0
            }, 'parse')
          },
          L = (function () {
            var I = {
              EOF: 1,
              parseError: o(function (P, B) {
                if (this.yy.parser) this.yy.parser.parseError(P, B)
                else throw new Error(P)
              }, 'parseError'),
              setInput: o(function (M, P) {
                return (
                  (this.yy = P || this.yy || {}),
                  (this._input = M),
                  (this._more = this._backtrack = this.done = !1),
                  (this.yylineno = this.yyleng = 0),
                  (this.yytext = this.matched = this.match = ''),
                  (this.conditionStack = ['INITIAL']),
                  (this.yylloc = { first_line: 1, first_column: 0, last_line: 1, last_column: 0 }),
                  this.options.ranges && (this.yylloc.range = [0, 0]),
                  (this.offset = 0),
                  this
                )
              }, 'setInput'),
              input: o(function () {
                var M = this._input[0]
                ;(this.yytext += M), this.yyleng++, this.offset++, (this.match += M), (this.matched += M)
                var P = M.match(/(?:\r\n?|\n).*/g)
                return (
                  P ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++, this.options.ranges && this.yylloc.range[1]++, (this._input = this._input.slice(1)), M
                )
              }, 'input'),
              unput: o(function (M) {
                var P = M.length,
                  B = M.split(/(?:\r\n?|\n)/g)
                ;(this._input = M + this._input), (this.yytext = this.yytext.substr(0, this.yytext.length - P)), (this.offset -= P)
                var F = this.match.split(/(?:\r\n?|\n)/g)
                ;(this.match = this.match.substr(0, this.match.length - 1)),
                  (this.matched = this.matched.substr(0, this.matched.length - 1)),
                  B.length - 1 && (this.yylineno -= B.length - 1)
                var z = this.yylloc.range
                return (
                  (this.yylloc = {
                    first_line: this.yylloc.first_line,
                    last_line: this.yylineno + 1,
                    first_column: this.yylloc.first_column,
                    last_column: B ? (B.length === F.length ? this.yylloc.first_column : 0) + F[F.length - B.length].length - B[0].length : this.yylloc.first_column - P
                  }),
                  this.options.ranges && (this.yylloc.range = [z[0], z[0] + this.yyleng - P]),
                  (this.yyleng = this.yytext.length),
                  this
                )
              }, 'unput'),
              more: o(function () {
                return (this._more = !0), this
              }, 'more'),
              reject: o(function () {
                if (this.options.backtrack_lexer) this._backtrack = !0
                else
                  return this.parseError(
                    'Lexical error on line ' +
                      (this.yylineno + 1) +
                      `. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
` +
                      this.showPosition(),
                    { text: '', token: null, line: this.yylineno }
                  )
                return this
              }, 'reject'),
              less: o(function (M) {
                this.unput(this.match.slice(M))
              }, 'less'),
              pastInput: o(function () {
                var M = this.matched.substr(0, this.matched.length - this.match.length)
                return (M.length > 20 ? '...' : '') + M.substr(-20).replace(/\n/g, '')
              }, 'pastInput'),
              upcomingInput: o(function () {
                var M = this.match
                return M.length < 20 && (M += this._input.substr(0, 20 - M.length)), (M.substr(0, 20) + (M.length > 20 ? '...' : '')).replace(/\n/g, '')
              }, 'upcomingInput'),
              showPosition: o(function () {
                var M = this.pastInput(),
                  P = new Array(M.length + 1).join('-')
                return (
                  M +
                  this.upcomingInput() +
                  `
` +
                  P +
                  '^'
                )
              }, 'showPosition'),
              test_match: o(function (M, P) {
                var B, F, z
                if (
                  (this.options.backtrack_lexer &&
                    ((z = {
                      yylineno: this.yylineno,
                      yylloc: { first_line: this.yylloc.first_line, last_line: this.last_line, first_column: this.yylloc.first_column, last_column: this.yylloc.last_column },
                      yytext: this.yytext,
                      match: this.match,
                      matches: this.matches,
                      matched: this.matched,
                      yyleng: this.yyleng,
                      offset: this.offset,
                      _more: this._more,
                      _input: this._input,
                      yy: this.yy,
                      conditionStack: this.conditionStack.slice(0),
                      done: this.done
                    }),
                    this.options.ranges && (z.yylloc.range = this.yylloc.range.slice(0))),
                  (F = M[0].match(/(?:\r\n?|\n).*/g)),
                  F && (this.yylineno += F.length),
                  (this.yylloc = {
                    first_line: this.yylloc.last_line,
                    last_line: this.yylineno + 1,
                    first_column: this.yylloc.last_column,
                    last_column: F ? F[F.length - 1].length - F[F.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + M[0].length
                  }),
                  (this.yytext += M[0]),
                  (this.match += M[0]),
                  (this.matches = M),
                  (this.yyleng = this.yytext.length),
                  this.options.ranges && (this.yylloc.range = [this.offset, (this.offset += this.yyleng)]),
                  (this._more = !1),
                  (this._backtrack = !1),
                  (this._input = this._input.slice(M[0].length)),
                  (this.matched += M[0]),
                  (B = this.performAction.call(this, this.yy, this, P, this.conditionStack[this.conditionStack.length - 1])),
                  this.done && this._input && (this.done = !1),
                  B)
                )
                  return B
                if (this._backtrack) {
                  for (var $ in z) this[$] = z[$]
                  return !1
                }
                return !1
              }, 'test_match'),
              next: o(function () {
                if (this.done) return this.EOF
                this._input || (this.done = !0)
                var M, P, B, F
                this._more || ((this.yytext = ''), (this.match = ''))
                for (var z = this._currentRules(), $ = 0; $ < z.length; $++)
                  if (((B = this._input.match(this.rules[z[$]])), B && (!P || B[0].length > P[0].length))) {
                    if (((P = B), (F = $), this.options.backtrack_lexer)) {
                      if (((M = this.test_match(B, z[$])), M !== !1)) return M
                      if (this._backtrack) {
                        P = !1
                        continue
                      } else return !1
                    } else if (!this.options.flex) break
                  }
                return P
                  ? ((M = this.test_match(P, z[F])), M !== !1 ? M : !1)
                  : this._input === ''
                    ? this.EOF
                    : this.parseError(
                        'Lexical error on line ' +
                          (this.yylineno + 1) +
                          `. Unrecognized text.
` +
                          this.showPosition(),
                        { text: '', token: null, line: this.yylineno }
                      )
              }, 'next'),
              lex: o(function () {
                var P = this.next()
                return P || this.lex()
              }, 'lex'),
              begin: o(function (P) {
                this.conditionStack.push(P)
              }, 'begin'),
              popState: o(function () {
                var P = this.conditionStack.length - 1
                return P > 0 ? this.conditionStack.pop() : this.conditionStack[0]
              }, 'popState'),
              _currentRules: o(function () {
                return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]
                  ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
                  : this.conditions.INITIAL.rules
              }, '_currentRules'),
              topState: o(function (P) {
                return (P = this.conditionStack.length - 1 - Math.abs(P || 0)), P >= 0 ? this.conditionStack[P] : 'INITIAL'
              }, 'topState'),
              pushState: o(function (P) {
                this.begin(P)
              }, 'pushState'),
              stateStackSize: o(function () {
                return this.conditionStack.length
              }, 'stateStackSize'),
              options: { 'case-insensitive': !0 },
              performAction: o(function (P, B, F, z) {
                var $ = z
                switch (F) {
                  case 0:
                    break
                  case 1:
                    break
                  case 2:
                    return this.popState(), 34
                    break
                  case 3:
                    return this.popState(), 34
                    break
                  case 4:
                    return 34
                  case 5:
                    break
                  case 6:
                    return 10
                  case 7:
                    return this.pushState('acc_title'), 19
                    break
                  case 8:
                    return this.popState(), 'acc_title_value'
                    break
                  case 9:
                    return this.pushState('acc_descr'), 21
                    break
                  case 10:
                    return this.popState(), 'acc_descr_value'
                    break
                  case 11:
                    this.pushState('acc_descr_multiline')
                    break
                  case 12:
                    this.popState()
                    break
                  case 13:
                    return 'acc_descr_multiline_value'
                  case 14:
                    return 5
                  case 15:
                    return 8
                  case 16:
                    return this.pushState('axis_data'), 'X_AXIS'
                    break
                  case 17:
                    return this.pushState('axis_data'), 'Y_AXIS'
                    break
                  case 18:
                    return this.pushState('axis_band_data'), 24
                    break
                  case 19:
                    return 31
                  case 20:
                    return this.pushState('data'), 16
                    break
                  case 21:
                    return this.pushState('data'), 18
                    break
                  case 22:
                    return this.pushState('data_inner'), 24
                    break
                  case 23:
                    return 27
                  case 24:
                    return this.popState(), 26
                    break
                  case 25:
                    this.popState()
                    break
                  case 26:
                    this.pushState('string')
                    break
                  case 27:
                    this.popState()
                    break
                  case 28:
                    return 'STR'
                  case 29:
                    return 24
                  case 30:
                    return 26
                  case 31:
                    return 43
                  case 32:
                    return 'COLON'
                  case 33:
                    return 44
                  case 34:
                    return 28
                  case 35:
                    return 45
                  case 36:
                    return 46
                  case 37:
                    return 48
                  case 38:
                    return 50
                  case 39:
                    return 47
                  case 40:
                    return 41
                  case 41:
                    return 49
                  case 42:
                    return 42
                  case 43:
                    break
                  case 44:
                    return 35
                  case 45:
                    return 36
                }
              }, 'anonymous'),
              rules: [
                /^(?:%%(?!\{)[^\n]*)/i,
                /^(?:[^\}]%%[^\n]*)/i,
                /^(?:(\r?\n))/i,
                /^(?:(\r?\n))/i,
                /^(?:[\n\r]+)/i,
                /^(?:%%[^\n]*)/i,
                /^(?:title\b)/i,
                /^(?:accTitle\s*:\s*)/i,
                /^(?:(?!\n||)*[^\n]*)/i,
                /^(?:accDescr\s*:\s*)/i,
                /^(?:(?!\n||)*[^\n]*)/i,
                /^(?:accDescr\s*\{\s*)/i,
                /^(?:\{)/i,
                /^(?:[^\}]*)/i,
                /^(?:xychart-beta\b)/i,
                /^(?:(?:vertical|horizontal))/i,
                /^(?:x-axis\b)/i,
                /^(?:y-axis\b)/i,
                /^(?:\[)/i,
                /^(?:-->)/i,
                /^(?:line\b)/i,
                /^(?:bar\b)/i,
                /^(?:\[)/i,
                /^(?:[+-]?(?:\d+(?:\.\d+)?|\.\d+))/i,
                /^(?:\])/i,
                /^(?:(?:`\)                                    \{ this\.pushState\(md_string\); \}\n<md_string>\(\?:\(\?!`"\)\.\)\+                  \{ return MD_STR; \}\n<md_string>\(\?:`))/i,
                /^(?:["])/i,
                /^(?:["])/i,
                /^(?:[^"]*)/i,
                /^(?:\[)/i,
                /^(?:\])/i,
                /^(?:[A-Za-z]+)/i,
                /^(?::)/i,
                /^(?:\+)/i,
                /^(?:,)/i,
                /^(?:=)/i,
                /^(?:\*)/i,
                /^(?:#)/i,
                /^(?:[\_])/i,
                /^(?:\.)/i,
                /^(?:&)/i,
                /^(?:-)/i,
                /^(?:[0-9]+)/i,
                /^(?:\s+)/i,
                /^(?:;)/i,
                /^(?:$)/i
              ],
              conditions: {
                data_inner: {
                  rules: [0, 1, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 20, 21, 23, 24, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45],
                  inclusive: !0
                },
                data: {
                  rules: [0, 1, 3, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 20, 21, 22, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45],
                  inclusive: !0
                },
                axis_band_data: {
                  rules: [0, 1, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 20, 21, 24, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45],
                  inclusive: !0
                },
                axis_data: {
                  rules: [0, 1, 2, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 18, 19, 20, 21, 23, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45],
                  inclusive: !0
                },
                acc_descr_multiline: { rules: [12, 13], inclusive: !1 },
                acc_descr: { rules: [10], inclusive: !1 },
                acc_title: { rules: [8], inclusive: !1 },
                title: { rules: [], inclusive: !1 },
                md_string: { rules: [], inclusive: !1 },
                string: { rules: [27, 28], inclusive: !1 },
                INITIAL: { rules: [0, 1, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 20, 21, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45], inclusive: !0 }
              }
            }
            return I
          })()
        k.lexer = L
        function A() {
          this.yy = {}
        }
        return o(A, 'Parser'), (A.prototype = k), (k.Parser = A), new A()
      })()
      tP.parser = tP
      Hfe = tP
    })
  function rP(t) {
    return t.type === 'bar'
  }
  function BS(t) {
    return t.type === 'band'
  }
  function N1(t) {
    return t.type === 'linear'
  }
  var FS = N(() => {
    'use strict'
    o(rP, 'isBarPlot')
    o(BS, 'isBandAxisData')
    o(N1, 'isLinearAxisData')
  })
  var M1,
    nP = N(() => {
      'use strict'
      ao()
      M1 = class {
        constructor(e) {
          this.parentGroup = e
        }
        static {
          o(this, 'TextDimensionCalculatorWithFont')
        }
        getMaxDimension(e, r) {
          if (!this.parentGroup) return { width: e.reduce((a, s) => Math.max(s.length, a), 0) * r, height: r }
          let n = { width: 0, height: 0 },
            i = this.parentGroup.append('g').attr('visibility', 'hidden').attr('font-size', r)
          for (let a of e) {
            let s = wQ(i, 1, a),
              l = s ? s.width : a.length * r,
              u = s ? s.height : r
            ;(n.width = Math.max(n.width, l)), (n.height = Math.max(n.height, u))
          }
          return i.remove(), n
        }
      }
    })
  var I1,
    iP = N(() => {
      'use strict'
      I1 = class {
        constructor(e, r, n, i) {
          this.axisConfig = e
          this.title = r
          this.textDimensionCalculator = n
          this.axisThemeConfig = i
          this.boundingRect = { x: 0, y: 0, width: 0, height: 0 }
          this.axisPosition = 'left'
          this.showTitle = !1
          this.showLabel = !1
          this.showTick = !1
          this.showAxisLine = !1
          this.outerPadding = 0
          this.titleTextHeight = 0
          this.labelTextHeight = 0
          ;(this.range = [0, 10]), (this.boundingRect = { x: 0, y: 0, width: 0, height: 0 }), (this.axisPosition = 'left')
        }
        static {
          o(this, 'BaseAxis')
        }
        setRange(e) {
          ;(this.range = e),
            this.axisPosition === 'left' || this.axisPosition === 'right' ? (this.boundingRect.height = e[1] - e[0]) : (this.boundingRect.width = e[1] - e[0]),
            this.recalculateScale()
        }
        getRange() {
          return [this.range[0] + this.outerPadding, this.range[1] - this.outerPadding]
        }
        setAxisPosition(e) {
          ;(this.axisPosition = e), this.setRange(this.range)
        }
        getTickDistance() {
          let e = this.getRange()
          return Math.abs(e[0] - e[1]) / this.getTickValues().length
        }
        getAxisOuterPadding() {
          return this.outerPadding
        }
        getLabelDimension() {
          return this.textDimensionCalculator.getMaxDimension(
            this.getTickValues().map(e => e.toString()),
            this.axisConfig.labelFontSize
          )
        }
        recalculateOuterPaddingToDrawBar() {
          0.7 * this.getTickDistance() > this.outerPadding * 2 && (this.outerPadding = Math.floor((0.7 * this.getTickDistance()) / 2)), this.recalculateScale()
        }
        calculateSpaceIfDrawnHorizontally(e) {
          let r = e.height
          if ((this.axisConfig.showAxisLine && r > this.axisConfig.axisLineWidth && ((r -= this.axisConfig.axisLineWidth), (this.showAxisLine = !0)), this.axisConfig.showLabel)) {
            let n = this.getLabelDimension(),
              i = 0.2 * e.width
            this.outerPadding = Math.min(n.width / 2, i)
            let a = n.height + this.axisConfig.labelPadding * 2
            ;(this.labelTextHeight = n.height), a <= r && ((r -= a), (this.showLabel = !0))
          }
          if ((this.axisConfig.showTick && r >= this.axisConfig.tickLength && ((this.showTick = !0), (r -= this.axisConfig.tickLength)), this.axisConfig.showTitle && this.title)) {
            let n = this.textDimensionCalculator.getMaxDimension([this.title], this.axisConfig.titleFontSize),
              i = n.height + this.axisConfig.titlePadding * 2
            ;(this.titleTextHeight = n.height), i <= r && ((r -= i), (this.showTitle = !0))
          }
          ;(this.boundingRect.width = e.width), (this.boundingRect.height = e.height - r)
        }
        calculateSpaceIfDrawnVertical(e) {
          let r = e.width
          if ((this.axisConfig.showAxisLine && r > this.axisConfig.axisLineWidth && ((r -= this.axisConfig.axisLineWidth), (this.showAxisLine = !0)), this.axisConfig.showLabel)) {
            let n = this.getLabelDimension(),
              i = 0.2 * e.height
            this.outerPadding = Math.min(n.height / 2, i)
            let a = n.width + this.axisConfig.labelPadding * 2
            a <= r && ((r -= a), (this.showLabel = !0))
          }
          if ((this.axisConfig.showTick && r >= this.axisConfig.tickLength && ((this.showTick = !0), (r -= this.axisConfig.tickLength)), this.axisConfig.showTitle && this.title)) {
            let n = this.textDimensionCalculator.getMaxDimension([this.title], this.axisConfig.titleFontSize),
              i = n.height + this.axisConfig.titlePadding * 2
            ;(this.titleTextHeight = n.height), i <= r && ((r -= i), (this.showTitle = !0))
          }
          ;(this.boundingRect.width = e.width - r), (this.boundingRect.height = e.height)
        }
        calculateSpace(e) {
          return (
            this.axisPosition === 'left' || this.axisPosition === 'right' ? this.calculateSpaceIfDrawnVertical(e) : this.calculateSpaceIfDrawnHorizontally(e),
            this.recalculateScale(),
            { width: this.boundingRect.width, height: this.boundingRect.height }
          )
        }
        setBoundingBoxXY(e) {
          ;(this.boundingRect.x = e.x), (this.boundingRect.y = e.y)
        }
        getDrawableElementsForLeftAxis() {
          let e = []
          if (this.showAxisLine) {
            let r = this.boundingRect.x + this.boundingRect.width - this.axisConfig.axisLineWidth / 2
            e.push({
              type: 'path',
              groupTexts: ['left-axis', 'axisl-line'],
              data: [
                {
                  path: `M ${r},${this.boundingRect.y} L ${r},${this.boundingRect.y + this.boundingRect.height} `,
                  strokeFill: this.axisThemeConfig.axisLineColor,
                  strokeWidth: this.axisConfig.axisLineWidth
                }
              ]
            })
          }
          if (
            (this.showLabel &&
              e.push({
                type: 'text',
                groupTexts: ['left-axis', 'label'],
                data: this.getTickValues().map(r => ({
                  text: r.toString(),
                  x:
                    this.boundingRect.x +
                    this.boundingRect.width -
                    (this.showLabel ? this.axisConfig.labelPadding : 0) -
                    (this.showTick ? this.axisConfig.tickLength : 0) -
                    (this.showAxisLine ? this.axisConfig.axisLineWidth : 0),
                  y: this.getScaleValue(r),
                  fill: this.axisThemeConfig.labelColor,
                  fontSize: this.axisConfig.labelFontSize,
                  rotation: 0,
                  verticalPos: 'middle',
                  horizontalPos: 'right'
                }))
              }),
            this.showTick)
          ) {
            let r = this.boundingRect.x + this.boundingRect.width - (this.showAxisLine ? this.axisConfig.axisLineWidth : 0)
            e.push({
              type: 'path',
              groupTexts: ['left-axis', 'ticks'],
              data: this.getTickValues().map(n => ({
                path: `M ${r},${this.getScaleValue(n)} L ${r - this.axisConfig.tickLength},${this.getScaleValue(n)}`,
                strokeFill: this.axisThemeConfig.tickColor,
                strokeWidth: this.axisConfig.tickWidth
              }))
            })
          }
          return (
            this.showTitle &&
              e.push({
                type: 'text',
                groupTexts: ['left-axis', 'title'],
                data: [
                  {
                    text: this.title,
                    x: this.boundingRect.x + this.axisConfig.titlePadding,
                    y: this.boundingRect.y + this.boundingRect.height / 2,
                    fill: this.axisThemeConfig.titleColor,
                    fontSize: this.axisConfig.titleFontSize,
                    rotation: 270,
                    verticalPos: 'top',
                    horizontalPos: 'center'
                  }
                ]
              }),
            e
          )
        }
        getDrawableElementsForBottomAxis() {
          let e = []
          if (this.showAxisLine) {
            let r = this.boundingRect.y + this.axisConfig.axisLineWidth / 2
            e.push({
              type: 'path',
              groupTexts: ['bottom-axis', 'axis-line'],
              data: [
                {
                  path: `M ${this.boundingRect.x},${r} L ${this.boundingRect.x + this.boundingRect.width},${r}`,
                  strokeFill: this.axisThemeConfig.axisLineColor,
                  strokeWidth: this.axisConfig.axisLineWidth
                }
              ]
            })
          }
          if (
            (this.showLabel &&
              e.push({
                type: 'text',
                groupTexts: ['bottom-axis', 'label'],
                data: this.getTickValues().map(r => ({
                  text: r.toString(),
                  x: this.getScaleValue(r),
                  y:
                    this.boundingRect.y + this.axisConfig.labelPadding + (this.showTick ? this.axisConfig.tickLength : 0) + (this.showAxisLine ? this.axisConfig.axisLineWidth : 0),
                  fill: this.axisThemeConfig.labelColor,
                  fontSize: this.axisConfig.labelFontSize,
                  rotation: 0,
                  verticalPos: 'top',
                  horizontalPos: 'center'
                }))
              }),
            this.showTick)
          ) {
            let r = this.boundingRect.y + (this.showAxisLine ? this.axisConfig.axisLineWidth : 0)
            e.push({
              type: 'path',
              groupTexts: ['bottom-axis', 'ticks'],
              data: this.getTickValues().map(n => ({
                path: `M ${this.getScaleValue(n)},${r} L ${this.getScaleValue(n)},${r + this.axisConfig.tickLength}`,
                strokeFill: this.axisThemeConfig.tickColor,
                strokeWidth: this.axisConfig.tickWidth
              }))
            })
          }
          return (
            this.showTitle &&
              e.push({
                type: 'text',
                groupTexts: ['bottom-axis', 'title'],
                data: [
                  {
                    text: this.title,
                    x: this.range[0] + (this.range[1] - this.range[0]) / 2,
                    y: this.boundingRect.y + this.boundingRect.height - this.axisConfig.titlePadding - this.titleTextHeight,
                    fill: this.axisThemeConfig.titleColor,
                    fontSize: this.axisConfig.titleFontSize,
                    rotation: 0,
                    verticalPos: 'top',
                    horizontalPos: 'center'
                  }
                ]
              }),
            e
          )
        }
        getDrawableElementsForTopAxis() {
          let e = []
          if (this.showAxisLine) {
            let r = this.boundingRect.y + this.boundingRect.height - this.axisConfig.axisLineWidth / 2
            e.push({
              type: 'path',
              groupTexts: ['top-axis', 'axis-line'],
              data: [
                {
                  path: `M ${this.boundingRect.x},${r} L ${this.boundingRect.x + this.boundingRect.width},${r}`,
                  strokeFill: this.axisThemeConfig.axisLineColor,
                  strokeWidth: this.axisConfig.axisLineWidth
                }
              ]
            })
          }
          if (
            (this.showLabel &&
              e.push({
                type: 'text',
                groupTexts: ['top-axis', 'label'],
                data: this.getTickValues().map(r => ({
                  text: r.toString(),
                  x: this.getScaleValue(r),
                  y: this.boundingRect.y + (this.showTitle ? this.titleTextHeight + this.axisConfig.titlePadding * 2 : 0) + this.axisConfig.labelPadding,
                  fill: this.axisThemeConfig.labelColor,
                  fontSize: this.axisConfig.labelFontSize,
                  rotation: 0,
                  verticalPos: 'top',
                  horizontalPos: 'center'
                }))
              }),
            this.showTick)
          ) {
            let r = this.boundingRect.y
            e.push({
              type: 'path',
              groupTexts: ['top-axis', 'ticks'],
              data: this.getTickValues().map(n => ({
                path: `M ${this.getScaleValue(n)},${r + this.boundingRect.height - (this.showAxisLine ? this.axisConfig.axisLineWidth : 0)} L ${this.getScaleValue(n)},${r + this.boundingRect.height - this.axisConfig.tickLength - (this.showAxisLine ? this.axisConfig.axisLineWidth : 0)}`,
                strokeFill: this.axisThemeConfig.tickColor,
                strokeWidth: this.axisConfig.tickWidth
              }))
            })
          }
          return (
            this.showTitle &&
              e.push({
                type: 'text',
                groupTexts: ['top-axis', 'title'],
                data: [
                  {
                    text: this.title,
                    x: this.boundingRect.x + this.boundingRect.width / 2,
                    y: this.boundingRect.y + this.axisConfig.titlePadding,
                    fill: this.axisThemeConfig.titleColor,
                    fontSize: this.axisConfig.titleFontSize,
                    rotation: 0,
                    verticalPos: 'top',
                    horizontalPos: 'center'
                  }
                ]
              }),
            e
          )
        }
        getDrawableElements() {
          if (this.axisPosition === 'left') return this.getDrawableElementsForLeftAxis()
          if (this.axisPosition === 'right') throw Error('Drawing of right axis is not implemented')
          return this.axisPosition === 'bottom' ? this.getDrawableElementsForBottomAxis() : this.axisPosition === 'top' ? this.getDrawableElementsForTopAxis() : []
        }
      }
    })
  var $S,
    qfe = N(() => {
      'use strict'
      fr()
      yt()
      iP()
      $S = class extends I1 {
        static {
          o(this, 'BandAxis')
        }
        constructor(e, r, n, i, a) {
          super(e, i, a, r), (this.categories = n), (this.scale = V0().domain(this.categories).range(this.getRange()))
        }
        setRange(e) {
          super.setRange(e)
        }
        recalculateScale() {
          ;(this.scale = V0().domain(this.categories).range(this.getRange()).paddingInner(1).paddingOuter(0).align(0.5)),
            X.trace('BandAxis axis final categories, range: ', this.categories, this.getRange())
        }
        getTickValues() {
          return this.categories
        }
        getScaleValue(e) {
          return this.scale(e) ?? this.getRange()[0]
        }
      }
    })
  var zS,
    Yfe = N(() => {
      'use strict'
      fr()
      iP()
      zS = class extends I1 {
        static {
          o(this, 'LinearAxis')
        }
        constructor(e, r, n, i, a) {
          super(e, i, a, r), (this.domain = n), (this.scale = Tl().domain(this.domain).range(this.getRange()))
        }
        getTickValues() {
          return this.scale.ticks()
        }
        recalculateScale() {
          let e = [...this.domain]
          this.axisPosition === 'left' && e.reverse(), (this.scale = Tl().domain(e).range(this.getRange()))
        }
        getScaleValue(e) {
          return this.scale(e)
        }
      }
    })
  function aP(t, e, r, n) {
    let i = new M1(n)
    return BS(t) ? new $S(e, r, t.categories, t.title, i) : new zS(e, r, [t.min, t.max], t.title, i)
  }
  var Xfe = N(() => {
    'use strict'
    FS()
    nP()
    qfe()
    Yfe()
    o(aP, 'getAxis')
  })
  function jfe(t, e, r, n) {
    let i = new M1(n)
    return new sP(i, t, e, r)
  }
  var sP,
    Kfe = N(() => {
      'use strict'
      nP()
      sP = class {
        constructor(e, r, n, i) {
          this.textDimensionCalculator = e
          this.chartConfig = r
          this.chartData = n
          this.chartThemeConfig = i
          ;(this.boundingRect = { x: 0, y: 0, width: 0, height: 0 }), (this.showChartTitle = !1)
        }
        static {
          o(this, 'ChartTitle')
        }
        setBoundingBoxXY(e) {
          ;(this.boundingRect.x = e.x), (this.boundingRect.y = e.y)
        }
        calculateSpace(e) {
          let r = this.textDimensionCalculator.getMaxDimension([this.chartData.title], this.chartConfig.titleFontSize),
            n = Math.max(r.width, e.width),
            i = r.height + 2 * this.chartConfig.titlePadding
          return (
            r.width <= n &&
              r.height <= i &&
              this.chartConfig.showTitle &&
              this.chartData.title &&
              ((this.boundingRect.width = n), (this.boundingRect.height = i), (this.showChartTitle = !0)),
            { width: this.boundingRect.width, height: this.boundingRect.height }
          )
        }
        getDrawableElements() {
          let e = []
          return (
            this.showChartTitle &&
              e.push({
                groupTexts: ['chart-title'],
                type: 'text',
                data: [
                  {
                    fontSize: this.chartConfig.titleFontSize,
                    text: this.chartData.title,
                    verticalPos: 'middle',
                    horizontalPos: 'center',
                    x: this.boundingRect.x + this.boundingRect.width / 2,
                    y: this.boundingRect.y + this.boundingRect.height / 2,
                    fill: this.chartThemeConfig.titleColor,
                    rotation: 0
                  }
                ]
              }),
            e
          )
        }
      }
      o(jfe, 'getChartTitleComponent')
    })
  var GS,
    Qfe = N(() => {
      'use strict'
      fr()
      GS = class {
        constructor(e, r, n, i, a) {
          this.plotData = e
          this.xAxis = r
          this.yAxis = n
          this.orientation = i
          this.plotIndex = a
        }
        static {
          o(this, 'LinePlot')
        }
        getDrawableElement() {
          let e = this.plotData.data.map(n => [this.xAxis.getScaleValue(n[0]), this.yAxis.getScaleValue(n[1])]),
            r
          return (
            this.orientation === 'horizontal'
              ? (r = Cl()
                  .y(n => n[0])
                  .x(n => n[1])(e))
              : (r = Cl()
                  .x(n => n[0])
                  .y(n => n[1])(e)),
            r
              ? [
                  {
                    groupTexts: ['plot', `line-plot-${this.plotIndex}`],
                    type: 'path',
                    data: [{ path: r, strokeFill: this.plotData.strokeFill, strokeWidth: this.plotData.strokeWidth }]
                  }
                ]
              : []
          )
        }
      }
    })
  var VS,
    Zfe = N(() => {
      'use strict'
      VS = class {
        constructor(e, r, n, i, a, s) {
          this.barData = e
          this.boundingRect = r
          this.xAxis = n
          this.yAxis = i
          this.orientation = a
          this.plotIndex = s
        }
        static {
          o(this, 'BarPlot')
        }
        getDrawableElement() {
          let e = this.barData.data.map(a => [this.xAxis.getScaleValue(a[0]), this.yAxis.getScaleValue(a[1])]),
            n = Math.min(this.xAxis.getAxisOuterPadding() * 2, this.xAxis.getTickDistance()) * (1 - 0.05),
            i = n / 2
          return this.orientation === 'horizontal'
            ? [
                {
                  groupTexts: ['plot', `bar-plot-${this.plotIndex}`],
                  type: 'rect',
                  data: e.map(a => ({
                    x: this.boundingRect.x,
                    y: a[0] - i,
                    height: n,
                    width: a[1] - this.boundingRect.x,
                    fill: this.barData.fill,
                    strokeWidth: 0,
                    strokeFill: this.barData.fill
                  }))
                }
              ]
            : [
                {
                  groupTexts: ['plot', `bar-plot-${this.plotIndex}`],
                  type: 'rect',
                  data: e.map(a => ({
                    x: a[0] - i,
                    y: a[1],
                    width: n,
                    height: this.boundingRect.y + this.boundingRect.height - a[1],
                    fill: this.barData.fill,
                    strokeWidth: 0,
                    strokeFill: this.barData.fill
                  }))
                }
              ]
        }
      }
    })
  function Jfe(t, e, r) {
    return new oP(t, e, r)
  }
  var oP,
    ede = N(() => {
      'use strict'
      Qfe()
      Zfe()
      oP = class {
        constructor(e, r, n) {
          this.chartConfig = e
          this.chartData = r
          this.chartThemeConfig = n
          this.boundingRect = { x: 0, y: 0, width: 0, height: 0 }
        }
        static {
          o(this, 'BasePlot')
        }
        setAxes(e, r) {
          ;(this.xAxis = e), (this.yAxis = r)
        }
        setBoundingBoxXY(e) {
          ;(this.boundingRect.x = e.x), (this.boundingRect.y = e.y)
        }
        calculateSpace(e) {
          return (this.boundingRect.width = e.width), (this.boundingRect.height = e.height), { width: this.boundingRect.width, height: this.boundingRect.height }
        }
        getDrawableElements() {
          if (!(this.xAxis && this.yAxis)) throw Error('Axes must be passed to render Plots')
          let e = []
          for (let [r, n] of this.chartData.plots.entries())
            switch (n.type) {
              case 'line':
                {
                  let i = new GS(n, this.xAxis, this.yAxis, this.chartConfig.chartOrientation, r)
                  e.push(...i.getDrawableElement())
                }
                break
              case 'bar':
                {
                  let i = new VS(n, this.boundingRect, this.xAxis, this.yAxis, this.chartConfig.chartOrientation, r)
                  e.push(...i.getDrawableElement())
                }
                break
            }
          return e
        }
      }
      o(Jfe, 'getPlotComponent')
    })
  var US,
    tde = N(() => {
      'use strict'
      Xfe()
      Kfe()
      ede()
      FS()
      US = class {
        constructor(e, r, n, i) {
          this.chartConfig = e
          this.chartData = r
          this.componentStore = {
            title: jfe(e, r, n, i),
            plot: Jfe(e, r, n),
            xAxis: aP(r.xAxis, e.xAxis, { titleColor: n.xAxisTitleColor, labelColor: n.xAxisLabelColor, tickColor: n.xAxisTickColor, axisLineColor: n.xAxisLineColor }, i),
            yAxis: aP(r.yAxis, e.yAxis, { titleColor: n.yAxisTitleColor, labelColor: n.yAxisLabelColor, tickColor: n.yAxisTickColor, axisLineColor: n.yAxisLineColor }, i)
          }
        }
        static {
          o(this, 'Orchestrator')
        }
        calculateVerticalSpace() {
          let e = this.chartConfig.width,
            r = this.chartConfig.height,
            n = 0,
            i = 0,
            a = Math.floor((e * this.chartConfig.plotReservedSpacePercent) / 100),
            s = Math.floor((r * this.chartConfig.plotReservedSpacePercent) / 100),
            l = this.componentStore.plot.calculateSpace({ width: a, height: s })
          ;(e -= l.width),
            (r -= l.height),
            (l = this.componentStore.title.calculateSpace({ width: this.chartConfig.width, height: r })),
            (i = l.height),
            (r -= l.height),
            this.componentStore.xAxis.setAxisPosition('bottom'),
            (l = this.componentStore.xAxis.calculateSpace({ width: e, height: r })),
            (r -= l.height),
            this.componentStore.yAxis.setAxisPosition('left'),
            (l = this.componentStore.yAxis.calculateSpace({ width: e, height: r })),
            (n = l.width),
            (e -= l.width),
            e > 0 && ((a += e), (e = 0)),
            r > 0 && ((s += r), (r = 0)),
            this.componentStore.plot.calculateSpace({ width: a, height: s }),
            this.componentStore.plot.setBoundingBoxXY({ x: n, y: i }),
            this.componentStore.xAxis.setRange([n, n + a]),
            this.componentStore.xAxis.setBoundingBoxXY({ x: n, y: i + s }),
            this.componentStore.yAxis.setRange([i, i + s]),
            this.componentStore.yAxis.setBoundingBoxXY({ x: 0, y: i }),
            this.chartData.plots.some(u => rP(u)) && this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()
        }
        calculateHorizontalSpace() {
          let e = this.chartConfig.width,
            r = this.chartConfig.height,
            n = 0,
            i = 0,
            a = 0,
            s = Math.floor((e * this.chartConfig.plotReservedSpacePercent) / 100),
            l = Math.floor((r * this.chartConfig.plotReservedSpacePercent) / 100),
            u = this.componentStore.plot.calculateSpace({ width: s, height: l })
          ;(e -= u.width),
            (r -= u.height),
            (u = this.componentStore.title.calculateSpace({ width: this.chartConfig.width, height: r })),
            (n = u.height),
            (r -= u.height),
            this.componentStore.xAxis.setAxisPosition('left'),
            (u = this.componentStore.xAxis.calculateSpace({ width: e, height: r })),
            (e -= u.width),
            (i = u.width),
            this.componentStore.yAxis.setAxisPosition('top'),
            (u = this.componentStore.yAxis.calculateSpace({ width: e, height: r })),
            (r -= u.height),
            (a = n + u.height),
            e > 0 && ((s += e), (e = 0)),
            r > 0 && ((l += r), (r = 0)),
            this.componentStore.plot.calculateSpace({ width: s, height: l }),
            this.componentStore.plot.setBoundingBoxXY({ x: i, y: a }),
            this.componentStore.yAxis.setRange([i, i + s]),
            this.componentStore.yAxis.setBoundingBoxXY({ x: i, y: n }),
            this.componentStore.xAxis.setRange([a, a + l]),
            this.componentStore.xAxis.setBoundingBoxXY({ x: 0, y: a }),
            this.chartData.plots.some(h => rP(h)) && this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()
        }
        calculateSpace() {
          this.chartConfig.chartOrientation === 'horizontal' ? this.calculateHorizontalSpace() : this.calculateVerticalSpace()
        }
        getDrawableElement() {
          this.calculateSpace()
          let e = []
          this.componentStore.plot.setAxes(this.componentStore.xAxis, this.componentStore.yAxis)
          for (let r of Object.values(this.componentStore)) e.push(...r.getDrawableElements())
          return e
        }
      }
    })
  var HS,
    rde = N(() => {
      'use strict'
      tde()
      HS = class {
        static {
          o(this, 'XYChartBuilder')
        }
        static build(e, r, n, i) {
          return new US(e, r, n, i).getDrawableElement()
        }
      }
    })
  function ide() {
    let t = dh(),
      e = tr()
    return $n(t.xyChart, e.themeVariables.xyChart)
  }
  function ade() {
    let t = tr()
    return $n(or.xyChart, t.xyChart)
  }
  function sde() {
    return { yAxis: { type: 'linear', title: '', min: 1 / 0, max: -1 / 0 }, xAxis: { type: 'band', title: '', categories: [] }, title: '', plots: [] }
  }
  function uP(t) {
    let e = tr()
    return wr(t.trim(), e)
  }
  function dUe(t) {
    nde = t
  }
  function pUe(t) {
    t === 'horizontal' ? (Rb.chartOrientation = 'horizontal') : (Rb.chartOrientation = 'vertical')
  }
  function mUe(t) {
    cn.xAxis.title = uP(t.text)
  }
  function ode(t, e) {
    ;(cn.xAxis = { type: 'linear', title: cn.xAxis.title, min: t, max: e }), (WS = !0)
  }
  function gUe(t) {
    ;(cn.xAxis = { type: 'band', title: cn.xAxis.title, categories: t.map(e => uP(e.text)) }), (WS = !0)
  }
  function yUe(t) {
    cn.yAxis.title = uP(t.text)
  }
  function vUe(t, e) {
    ;(cn.yAxis = { type: 'linear', title: cn.yAxis.title, min: t, max: e }), (cP = !0)
  }
  function xUe(t) {
    let e = Math.min(...t),
      r = Math.max(...t),
      n = N1(cn.yAxis) ? cn.yAxis.min : 1 / 0,
      i = N1(cn.yAxis) ? cn.yAxis.max : -1 / 0
    cn.yAxis = { type: 'linear', title: cn.yAxis.title, min: Math.min(n, e), max: Math.max(i, r) }
  }
  function lde(t) {
    let e = []
    if (t.length === 0) return e
    if (!WS) {
      let r = N1(cn.xAxis) ? cn.xAxis.min : 1 / 0,
        n = N1(cn.xAxis) ? cn.xAxis.max : -1 / 0
      ode(Math.min(r, 1), Math.max(n, t.length))
    }
    if ((cP || xUe(t), BS(cn.xAxis) && (e = cn.xAxis.categories.map((r, n) => [r, t[n]])), N1(cn.xAxis))) {
      let r = cn.xAxis.min,
        n = cn.xAxis.max,
        i = (n - r) / (t.length - 1),
        a = []
      for (let s = r; s <= n; s += i) a.push(`${s}`)
      e = a.map((s, l) => [s, t[l]])
    }
    return e
  }
  function cde(t) {
    return lP[t === 0 ? 0 : t % lP.length]
  }
  function bUe(t, e) {
    let r = lde(e)
    cn.plots.push({ type: 'line', strokeFill: cde(Lb), strokeWidth: 2, data: r }), Lb++
  }
  function TUe(t, e) {
    let r = lde(e)
    cn.plots.push({ type: 'bar', fill: cde(Lb), data: r }), Lb++
  }
  function wUe() {
    if (cn.plots.length === 0) throw Error('No Plot to render, please provide a plot with some data')
    return (cn.title = Nr()), HS.build(Rb, cn, Nb, nde)
  }
  function kUe() {
    return Nb
  }
  function EUe() {
    return Rb
  }
  function SUe() {
    return cn
  }
  var Lb,
    nde,
    Rb,
    Nb,
    cn,
    lP,
    WS,
    cP,
    CUe,
    ude,
    hde = N(() => {
      'use strict'
      mi()
      _a()
      By()
      er()
      pr()
      ci()
      rde()
      FS()
      ;(Lb = 0), (Rb = ade()), (Nb = ide()), (cn = sde()), (lP = Nb.plotColorPalette.split(',').map(t => t.trim())), (WS = !1), (cP = !1)
      o(ide, 'getChartDefaultThemeConfig')
      o(ade, 'getChartDefaultConfig')
      o(sde, 'getChartDefaultData')
      o(uP, 'textSanitizer')
      o(dUe, 'setTmpSVGG')
      o(pUe, 'setOrientation')
      o(mUe, 'setXAxisTitle')
      o(ode, 'setXAxisRangeData')
      o(gUe, 'setXAxisBand')
      o(yUe, 'setYAxisTitle')
      o(vUe, 'setYAxisRangeData')
      o(xUe, 'setYAxisRangeFromPlotData')
      o(lde, 'transformDataWithoutCategory')
      o(cde, 'getPlotColorFromPalette')
      o(bUe, 'setLineData')
      o(TUe, 'setBarData')
      o(wUe, 'getDrawableElem')
      o(kUe, 'getChartThemeConfig')
      o(EUe, 'getChartConfig')
      o(SUe, 'getXYChartData')
      ;(CUe = o(function () {
        kr(), (Lb = 0), (Rb = ade()), (cn = sde()), (Nb = ide()), (lP = Nb.plotColorPalette.split(',').map(t => t.trim())), (WS = !1), (cP = !1)
      }, 'clear')),
        (ude = {
          getDrawableElem: wUe,
          clear: CUe,
          setAccTitle: Ar,
          getAccTitle: Dr,
          setDiagramTitle: Or,
          getDiagramTitle: Nr,
          getAccDescription: Rr,
          setAccDescription: Lr,
          setOrientation: pUe,
          setXAxisTitle: mUe,
          setXAxisRangeData: ode,
          setXAxisBand: gUe,
          setYAxisTitle: yUe,
          setYAxisRangeData: vUe,
          setLineData: bUe,
          setBarData: TUe,
          setTmpSVGG: dUe,
          getChartThemeConfig: kUe,
          getChartConfig: EUe,
          getXYChartData: SUe
        })
    })
  var AUe,
    fde,
    dde = N(() => {
      'use strict'
      yt()
      Vl()
      xi()
      ;(AUe = o((t, e, r, n) => {
        let i = n.db,
          a = i.getChartThemeConfig(),
          s = i.getChartConfig(),
          l = i.getXYChartData().plots[0].data.map(T => T[1])
        function u(T) {
          return T === 'top' ? 'text-before-edge' : 'middle'
        }
        o(u, 'getDominantBaseLine')
        function h(T) {
          return T === 'left' ? 'start' : T === 'right' ? 'end' : 'middle'
        }
        o(h, 'getTextAnchor')
        function f(T) {
          return `translate(${T.x}, ${T.y}) rotate(${T.rotation || 0})`
        }
        o(f, 'getTextTransformation'),
          X.debug(
            `Rendering xychart chart
` + t
          )
        let d = Li(e),
          p = d.append('g').attr('class', 'main'),
          m = p.append('rect').attr('width', s.width).attr('height', s.height).attr('class', 'background')
        fn(d, s.height, s.width, !0),
          d.attr('viewBox', `0 0 ${s.width} ${s.height}`),
          m.attr('fill', a.backgroundColor),
          i.setTmpSVGG(d.append('g').attr('class', 'mermaid-tmp-group'))
        let g = i.getDrawableElem(),
          y = {}
        function v(T) {
          let S = p,
            w = ''
          for (let [E] of T.entries()) {
            let _ = p
            E > 0 && y[w] && (_ = y[w]), (w += T[E]), (S = y[w]), S || (S = y[w] = _.append('g').attr('class', T[E]))
          }
          return S
        }
        o(v, 'getGroup')
        for (let T of g) {
          if (T.data.length === 0) continue
          let S = v(T.groupTexts)
          switch (T.type) {
            case 'rect':
              if (
                (S.selectAll('rect')
                  .data(T.data)
                  .enter()
                  .append('rect')
                  .attr('x', w => w.x)
                  .attr('y', w => w.y)
                  .attr('width', w => w.width)
                  .attr('height', w => w.height)
                  .attr('fill', w => w.fill)
                  .attr('stroke', w => w.strokeFill)
                  .attr('stroke-width', w => w.strokeWidth),
                s.showDataLabel)
              )
                if (s.chartOrientation === 'horizontal') {
                  let _ = function (O, R) {
                    let { data: k, label: L } = O
                    return R * L.length * 0.7 <= k.width - 10
                  }
                  var x = _
                  o(_, 'fitsHorizontally')
                  let w = 0.7,
                    E = T.data.map((O, R) => ({ data: O, label: l[R].toString() })).filter(O => O.data.width > 0 && O.data.height > 0),
                    C = E.map(O => {
                      let { data: R } = O,
                        k = R.height * 0.7
                      for (; !_(O, k) && k > 0; ) k -= 1
                      return k
                    }),
                    D = Math.floor(Math.min(...C))
                  S.selectAll('text')
                    .data(E)
                    .enter()
                    .append('text')
                    .attr('x', O => O.data.x + O.data.width - 10)
                    .attr('y', O => O.data.y + O.data.height / 2)
                    .attr('text-anchor', 'end')
                    .attr('dominant-baseline', 'middle')
                    .attr('fill', 'black')
                    .attr('font-size', `${D}px`)
                    .text(O => O.label)
                } else {
                  let _ = function (O, R, k) {
                    let { data: L, label: A } = O,
                      M = R * A.length * 0.7,
                      P = L.x + L.width / 2,
                      B = P - M / 2,
                      F = P + M / 2,
                      z = B >= L.x && F <= L.x + L.width,
                      $ = L.y + k + R <= L.y + L.height
                    return z && $
                  }
                  var b = _
                  o(_, 'fitsInBar')
                  let w = 10,
                    E = T.data.map((O, R) => ({ data: O, label: l[R].toString() })).filter(O => O.data.width > 0 && O.data.height > 0),
                    C = E.map(O => {
                      let { data: R, label: k } = O,
                        L = R.width / (k.length * 0.7)
                      for (; !_(O, L, 10) && L > 0; ) L -= 1
                      return L
                    }),
                    D = Math.floor(Math.min(...C))
                  S.selectAll('text')
                    .data(E)
                    .enter()
                    .append('text')
                    .attr('x', O => O.data.x + O.data.width / 2)
                    .attr('y', O => O.data.y + 10)
                    .attr('text-anchor', 'middle')
                    .attr('dominant-baseline', 'hanging')
                    .attr('fill', 'black')
                    .attr('font-size', `${D}px`)
                    .text(O => O.label)
                }
              break
            case 'text':
              S.selectAll('text')
                .data(T.data)
                .enter()
                .append('text')
                .attr('x', 0)
                .attr('y', 0)
                .attr('fill', w => w.fill)
                .attr('font-size', w => w.fontSize)
                .attr('dominant-baseline', w => u(w.verticalPos))
                .attr('text-anchor', w => h(w.horizontalPos))
                .attr('transform', w => f(w))
                .text(w => w.text)
              break
            case 'path':
              S.selectAll('path')
                .data(T.data)
                .enter()
                .append('path')
                .attr('d', w => w.path)
                .attr('fill', w => (w.fill ? w.fill : 'none'))
                .attr('stroke', w => w.strokeFill)
                .attr('stroke-width', w => w.strokeWidth)
              break
          }
        }
      }, 'draw')),
        (fde = { draw: AUe })
    })
  var pde = {}
  ur(pde, { diagram: () => _Ue })
  var _Ue,
    mde = N(() => {
      'use strict'
      Wfe()
      hde()
      dde()
      _Ue = { parser: Hfe, db: ude, renderer: fde }
    })
  var hP,
    vde,
    xde = N(() => {
      'use strict'
      hP = (function () {
        var t = o(function (ie, oe, V, Te) {
            for (V = V || {}, Te = ie.length; Te--; V[ie[Te]] = oe);
            return V
          }, 'o'),
          e = [1, 3],
          r = [1, 4],
          n = [1, 5],
          i = [1, 6],
          a = [5, 6, 8, 9, 11, 13, 21, 22, 23, 24, 41, 42, 43, 44, 45, 46, 54, 72, 74, 77, 89, 90],
          s = [1, 22],
          l = [2, 7],
          u = [1, 26],
          h = [1, 27],
          f = [1, 28],
          d = [1, 29],
          p = [1, 33],
          m = [1, 34],
          g = [1, 35],
          y = [1, 36],
          v = [1, 37],
          x = [1, 38],
          b = [1, 24],
          T = [1, 31],
          S = [1, 32],
          w = [1, 30],
          E = [1, 39],
          _ = [1, 40],
          C = [5, 8, 9, 11, 13, 21, 22, 23, 24, 41, 42, 43, 44, 45, 46, 54, 72, 74, 77, 89, 90],
          D = [1, 61],
          O = [89, 90],
          R = [5, 8, 9, 11, 13, 21, 22, 23, 24, 27, 29, 41, 42, 43, 44, 45, 46, 54, 61, 63, 72, 74, 75, 76, 77, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90],
          k = [27, 29],
          L = [1, 70],
          A = [1, 71],
          I = [1, 72],
          M = [1, 73],
          P = [1, 74],
          B = [1, 75],
          F = [1, 76],
          z = [1, 83],
          $ = [1, 80],
          U = [1, 84],
          K = [1, 85],
          ee = [1, 86],
          Y = [1, 87],
          ce = [1, 88],
          Z = [1, 89],
          ue = [1, 90],
          Q = [1, 91],
          j = [1, 92],
          ne = [5, 8, 9, 11, 13, 21, 22, 23, 24, 27, 41, 42, 43, 44, 45, 46, 54, 72, 74, 75, 76, 77, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90],
          te = [63, 64],
          he = [1, 101],
          le = [5, 8, 9, 11, 13, 21, 22, 23, 24, 41, 42, 43, 44, 45, 46, 54, 72, 74, 76, 77, 89, 90],
          J = [5, 8, 9, 11, 13, 21, 22, 23, 24, 41, 42, 43, 44, 45, 46, 54, 72, 74, 75, 76, 77, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90],
          Se = [1, 110],
          se = [1, 106],
          ae = [1, 107],
          Oe = [1, 108],
          ye = [1, 109],
          Be = [1, 111],
          He = [1, 116],
          ze = [1, 117],
          Le = [1, 114],
          Ie = [1, 115],
          xe = {
            trace: o(function () {}, 'trace'),
            yy: {},
            symbols_: {
              error: 2,
              start: 3,
              directive: 4,
              NEWLINE: 5,
              RD: 6,
              diagram: 7,
              EOF: 8,
              acc_title: 9,
              acc_title_value: 10,
              acc_descr: 11,
              acc_descr_value: 12,
              acc_descr_multiline_value: 13,
              requirementDef: 14,
              elementDef: 15,
              relationshipDef: 16,
              direction: 17,
              styleStatement: 18,
              classDefStatement: 19,
              classStatement: 20,
              direction_tb: 21,
              direction_bt: 22,
              direction_rl: 23,
              direction_lr: 24,
              requirementType: 25,
              requirementName: 26,
              STRUCT_START: 27,
              requirementBody: 28,
              STYLE_SEPARATOR: 29,
              idList: 30,
              ID: 31,
              COLONSEP: 32,
              id: 33,
              TEXT: 34,
              text: 35,
              RISK: 36,
              riskLevel: 37,
              VERIFYMTHD: 38,
              verifyType: 39,
              STRUCT_STOP: 40,
              REQUIREMENT: 41,
              FUNCTIONAL_REQUIREMENT: 42,
              INTERFACE_REQUIREMENT: 43,
              PERFORMANCE_REQUIREMENT: 44,
              PHYSICAL_REQUIREMENT: 45,
              DESIGN_CONSTRAINT: 46,
              LOW_RISK: 47,
              MED_RISK: 48,
              HIGH_RISK: 49,
              VERIFY_ANALYSIS: 50,
              VERIFY_DEMONSTRATION: 51,
              VERIFY_INSPECTION: 52,
              VERIFY_TEST: 53,
              ELEMENT: 54,
              elementName: 55,
              elementBody: 56,
              TYPE: 57,
              type: 58,
              DOCREF: 59,
              ref: 60,
              END_ARROW_L: 61,
              relationship: 62,
              LINE: 63,
              END_ARROW_R: 64,
              CONTAINS: 65,
              COPIES: 66,
              DERIVES: 67,
              SATISFIES: 68,
              VERIFIES: 69,
              REFINES: 70,
              TRACES: 71,
              CLASSDEF: 72,
              stylesOpt: 73,
              CLASS: 74,
              ALPHA: 75,
              COMMA: 76,
              STYLE: 77,
              style: 78,
              styleComponent: 79,
              NUM: 80,
              COLON: 81,
              UNIT: 82,
              SPACE: 83,
              BRKT: 84,
              PCT: 85,
              MINUS: 86,
              LABEL: 87,
              SEMICOLON: 88,
              unqString: 89,
              qString: 90,
              $accept: 0,
              $end: 1
            },
            terminals_: {
              2: 'error',
              5: 'NEWLINE',
              6: 'RD',
              8: 'EOF',
              9: 'acc_title',
              10: 'acc_title_value',
              11: 'acc_descr',
              12: 'acc_descr_value',
              13: 'acc_descr_multiline_value',
              21: 'direction_tb',
              22: 'direction_bt',
              23: 'direction_rl',
              24: 'direction_lr',
              27: 'STRUCT_START',
              29: 'STYLE_SEPARATOR',
              31: 'ID',
              32: 'COLONSEP',
              34: 'TEXT',
              36: 'RISK',
              38: 'VERIFYMTHD',
              40: 'STRUCT_STOP',
              41: 'REQUIREMENT',
              42: 'FUNCTIONAL_REQUIREMENT',
              43: 'INTERFACE_REQUIREMENT',
              44: 'PERFORMANCE_REQUIREMENT',
              45: 'PHYSICAL_REQUIREMENT',
              46: 'DESIGN_CONSTRAINT',
              47: 'LOW_RISK',
              48: 'MED_RISK',
              49: 'HIGH_RISK',
              50: 'VERIFY_ANALYSIS',
              51: 'VERIFY_DEMONSTRATION',
              52: 'VERIFY_INSPECTION',
              53: 'VERIFY_TEST',
              54: 'ELEMENT',
              57: 'TYPE',
              59: 'DOCREF',
              61: 'END_ARROW_L',
              63: 'LINE',
              64: 'END_ARROW_R',
              65: 'CONTAINS',
              66: 'COPIES',
              67: 'DERIVES',
              68: 'SATISFIES',
              69: 'VERIFIES',
              70: 'REFINES',
              71: 'TRACES',
              72: 'CLASSDEF',
              74: 'CLASS',
              75: 'ALPHA',
              76: 'COMMA',
              77: 'STYLE',
              80: 'NUM',
              81: 'COLON',
              82: 'UNIT',
              83: 'SPACE',
              84: 'BRKT',
              85: 'PCT',
              86: 'MINUS',
              87: 'LABEL',
              88: 'SEMICOLON',
              89: 'unqString',
              90: 'qString'
            },
            productions_: [
              0,
              [3, 3],
              [3, 2],
              [3, 4],
              [4, 2],
              [4, 2],
              [4, 1],
              [7, 0],
              [7, 2],
              [7, 2],
              [7, 2],
              [7, 2],
              [7, 2],
              [7, 2],
              [7, 2],
              [7, 2],
              [7, 2],
              [17, 1],
              [17, 1],
              [17, 1],
              [17, 1],
              [14, 5],
              [14, 7],
              [28, 5],
              [28, 5],
              [28, 5],
              [28, 5],
              [28, 2],
              [28, 1],
              [25, 1],
              [25, 1],
              [25, 1],
              [25, 1],
              [25, 1],
              [25, 1],
              [37, 1],
              [37, 1],
              [37, 1],
              [39, 1],
              [39, 1],
              [39, 1],
              [39, 1],
              [15, 5],
              [15, 7],
              [56, 5],
              [56, 5],
              [56, 2],
              [56, 1],
              [16, 5],
              [16, 5],
              [62, 1],
              [62, 1],
              [62, 1],
              [62, 1],
              [62, 1],
              [62, 1],
              [62, 1],
              [19, 3],
              [20, 3],
              [20, 3],
              [30, 1],
              [30, 3],
              [30, 1],
              [30, 3],
              [18, 3],
              [73, 1],
              [73, 3],
              [78, 1],
              [78, 2],
              [79, 1],
              [79, 1],
              [79, 1],
              [79, 1],
              [79, 1],
              [79, 1],
              [79, 1],
              [79, 1],
              [79, 1],
              [79, 1],
              [26, 1],
              [26, 1],
              [33, 1],
              [33, 1],
              [35, 1],
              [35, 1],
              [55, 1],
              [55, 1],
              [58, 1],
              [58, 1],
              [60, 1],
              [60, 1]
            ],
            performAction: o(function (oe, V, Te, W, pe, ve, Pe) {
              var _e = ve.length - 1
              switch (pe) {
                case 4:
                  ;(this.$ = ve[_e].trim()), W.setAccTitle(this.$)
                  break
                case 5:
                case 6:
                  ;(this.$ = ve[_e].trim()), W.setAccDescription(this.$)
                  break
                case 7:
                  this.$ = []
                  break
                case 17:
                  W.setDirection('TB')
                  break
                case 18:
                  W.setDirection('BT')
                  break
                case 19:
                  W.setDirection('RL')
                  break
                case 20:
                  W.setDirection('LR')
                  break
                case 21:
                  W.addRequirement(ve[_e - 3], ve[_e - 4])
                  break
                case 22:
                  W.addRequirement(ve[_e - 5], ve[_e - 6]), W.setClass([ve[_e - 5]], ve[_e - 3])
                  break
                case 23:
                  W.setNewReqId(ve[_e - 2])
                  break
                case 24:
                  W.setNewReqText(ve[_e - 2])
                  break
                case 25:
                  W.setNewReqRisk(ve[_e - 2])
                  break
                case 26:
                  W.setNewReqVerifyMethod(ve[_e - 2])
                  break
                case 29:
                  this.$ = W.RequirementType.REQUIREMENT
                  break
                case 30:
                  this.$ = W.RequirementType.FUNCTIONAL_REQUIREMENT
                  break
                case 31:
                  this.$ = W.RequirementType.INTERFACE_REQUIREMENT
                  break
                case 32:
                  this.$ = W.RequirementType.PERFORMANCE_REQUIREMENT
                  break
                case 33:
                  this.$ = W.RequirementType.PHYSICAL_REQUIREMENT
                  break
                case 34:
                  this.$ = W.RequirementType.DESIGN_CONSTRAINT
                  break
                case 35:
                  this.$ = W.RiskLevel.LOW_RISK
                  break
                case 36:
                  this.$ = W.RiskLevel.MED_RISK
                  break
                case 37:
                  this.$ = W.RiskLevel.HIGH_RISK
                  break
                case 38:
                  this.$ = W.VerifyType.VERIFY_ANALYSIS
                  break
                case 39:
                  this.$ = W.VerifyType.VERIFY_DEMONSTRATION
                  break
                case 40:
                  this.$ = W.VerifyType.VERIFY_INSPECTION
                  break
                case 41:
                  this.$ = W.VerifyType.VERIFY_TEST
                  break
                case 42:
                  W.addElement(ve[_e - 3])
                  break
                case 43:
                  W.addElement(ve[_e - 5]), W.setClass([ve[_e - 5]], ve[_e - 3])
                  break
                case 44:
                  W.setNewElementType(ve[_e - 2])
                  break
                case 45:
                  W.setNewElementDocRef(ve[_e - 2])
                  break
                case 48:
                  W.addRelationship(ve[_e - 2], ve[_e], ve[_e - 4])
                  break
                case 49:
                  W.addRelationship(ve[_e - 2], ve[_e - 4], ve[_e])
                  break
                case 50:
                  this.$ = W.Relationships.CONTAINS
                  break
                case 51:
                  this.$ = W.Relationships.COPIES
                  break
                case 52:
                  this.$ = W.Relationships.DERIVES
                  break
                case 53:
                  this.$ = W.Relationships.SATISFIES
                  break
                case 54:
                  this.$ = W.Relationships.VERIFIES
                  break
                case 55:
                  this.$ = W.Relationships.REFINES
                  break
                case 56:
                  this.$ = W.Relationships.TRACES
                  break
                case 57:
                  ;(this.$ = ve[_e - 2]), W.defineClass(ve[_e - 1], ve[_e])
                  break
                case 58:
                  W.setClass(ve[_e - 1], ve[_e])
                  break
                case 59:
                  W.setClass([ve[_e - 2]], ve[_e])
                  break
                case 60:
                case 62:
                  this.$ = [ve[_e]]
                  break
                case 61:
                case 63:
                  this.$ = ve[_e - 2].concat([ve[_e]])
                  break
                case 64:
                  ;(this.$ = ve[_e - 2]), W.setCssStyle(ve[_e - 1], ve[_e])
                  break
                case 65:
                  this.$ = [ve[_e]]
                  break
                case 66:
                  ve[_e - 2].push(ve[_e]), (this.$ = ve[_e - 2])
                  break
                case 68:
                  this.$ = ve[_e - 1] + ve[_e]
                  break
              }
            }, 'anonymous'),
            table: [
              { 3: 1, 4: 2, 6: e, 9: r, 11: n, 13: i },
              { 1: [3] },
              { 3: 8, 4: 2, 5: [1, 7], 6: e, 9: r, 11: n, 13: i },
              { 5: [1, 9] },
              { 10: [1, 10] },
              { 12: [1, 11] },
              t(a, [2, 6]),
              { 3: 12, 4: 2, 6: e, 9: r, 11: n, 13: i },
              { 1: [2, 2] },
              {
                4: 17,
                5: s,
                7: 13,
                8: l,
                9: r,
                11: n,
                13: i,
                14: 14,
                15: 15,
                16: 16,
                17: 18,
                18: 19,
                19: 20,
                20: 21,
                21: u,
                22: h,
                23: f,
                24: d,
                25: 23,
                33: 25,
                41: p,
                42: m,
                43: g,
                44: y,
                45: v,
                46: x,
                54: b,
                72: T,
                74: S,
                77: w,
                89: E,
                90: _
              },
              t(a, [2, 4]),
              t(a, [2, 5]),
              { 1: [2, 1] },
              { 8: [1, 41] },
              {
                4: 17,
                5: s,
                7: 42,
                8: l,
                9: r,
                11: n,
                13: i,
                14: 14,
                15: 15,
                16: 16,
                17: 18,
                18: 19,
                19: 20,
                20: 21,
                21: u,
                22: h,
                23: f,
                24: d,
                25: 23,
                33: 25,
                41: p,
                42: m,
                43: g,
                44: y,
                45: v,
                46: x,
                54: b,
                72: T,
                74: S,
                77: w,
                89: E,
                90: _
              },
              {
                4: 17,
                5: s,
                7: 43,
                8: l,
                9: r,
                11: n,
                13: i,
                14: 14,
                15: 15,
                16: 16,
                17: 18,
                18: 19,
                19: 20,
                20: 21,
                21: u,
                22: h,
                23: f,
                24: d,
                25: 23,
                33: 25,
                41: p,
                42: m,
                43: g,
                44: y,
                45: v,
                46: x,
                54: b,
                72: T,
                74: S,
                77: w,
                89: E,
                90: _
              },
              {
                4: 17,
                5: s,
                7: 44,
                8: l,
                9: r,
                11: n,
                13: i,
                14: 14,
                15: 15,
                16: 16,
                17: 18,
                18: 19,
                19: 20,
                20: 21,
                21: u,
                22: h,
                23: f,
                24: d,
                25: 23,
                33: 25,
                41: p,
                42: m,
                43: g,
                44: y,
                45: v,
                46: x,
                54: b,
                72: T,
                74: S,
                77: w,
                89: E,
                90: _
              },
              {
                4: 17,
                5: s,
                7: 45,
                8: l,
                9: r,
                11: n,
                13: i,
                14: 14,
                15: 15,
                16: 16,
                17: 18,
                18: 19,
                19: 20,
                20: 21,
                21: u,
                22: h,
                23: f,
                24: d,
                25: 23,
                33: 25,
                41: p,
                42: m,
                43: g,
                44: y,
                45: v,
                46: x,
                54: b,
                72: T,
                74: S,
                77: w,
                89: E,
                90: _
              },
              {
                4: 17,
                5: s,
                7: 46,
                8: l,
                9: r,
                11: n,
                13: i,
                14: 14,
                15: 15,
                16: 16,
                17: 18,
                18: 19,
                19: 20,
                20: 21,
                21: u,
                22: h,
                23: f,
                24: d,
                25: 23,
                33: 25,
                41: p,
                42: m,
                43: g,
                44: y,
                45: v,
                46: x,
                54: b,
                72: T,
                74: S,
                77: w,
                89: E,
                90: _
              },
              {
                4: 17,
                5: s,
                7: 47,
                8: l,
                9: r,
                11: n,
                13: i,
                14: 14,
                15: 15,
                16: 16,
                17: 18,
                18: 19,
                19: 20,
                20: 21,
                21: u,
                22: h,
                23: f,
                24: d,
                25: 23,
                33: 25,
                41: p,
                42: m,
                43: g,
                44: y,
                45: v,
                46: x,
                54: b,
                72: T,
                74: S,
                77: w,
                89: E,
                90: _
              },
              {
                4: 17,
                5: s,
                7: 48,
                8: l,
                9: r,
                11: n,
                13: i,
                14: 14,
                15: 15,
                16: 16,
                17: 18,
                18: 19,
                19: 20,
                20: 21,
                21: u,
                22: h,
                23: f,
                24: d,
                25: 23,
                33: 25,
                41: p,
                42: m,
                43: g,
                44: y,
                45: v,
                46: x,
                54: b,
                72: T,
                74: S,
                77: w,
                89: E,
                90: _
              },
              {
                4: 17,
                5: s,
                7: 49,
                8: l,
                9: r,
                11: n,
                13: i,
                14: 14,
                15: 15,
                16: 16,
                17: 18,
                18: 19,
                19: 20,
                20: 21,
                21: u,
                22: h,
                23: f,
                24: d,
                25: 23,
                33: 25,
                41: p,
                42: m,
                43: g,
                44: y,
                45: v,
                46: x,
                54: b,
                72: T,
                74: S,
                77: w,
                89: E,
                90: _
              },
              {
                4: 17,
                5: s,
                7: 50,
                8: l,
                9: r,
                11: n,
                13: i,
                14: 14,
                15: 15,
                16: 16,
                17: 18,
                18: 19,
                19: 20,
                20: 21,
                21: u,
                22: h,
                23: f,
                24: d,
                25: 23,
                33: 25,
                41: p,
                42: m,
                43: g,
                44: y,
                45: v,
                46: x,
                54: b,
                72: T,
                74: S,
                77: w,
                89: E,
                90: _
              },
              { 26: 51, 89: [1, 52], 90: [1, 53] },
              { 55: 54, 89: [1, 55], 90: [1, 56] },
              { 29: [1, 59], 61: [1, 57], 63: [1, 58] },
              t(C, [2, 17]),
              t(C, [2, 18]),
              t(C, [2, 19]),
              t(C, [2, 20]),
              { 30: 60, 33: 62, 75: D, 89: E, 90: _ },
              { 30: 63, 33: 62, 75: D, 89: E, 90: _ },
              { 30: 64, 33: 62, 75: D, 89: E, 90: _ },
              t(O, [2, 29]),
              t(O, [2, 30]),
              t(O, [2, 31]),
              t(O, [2, 32]),
              t(O, [2, 33]),
              t(O, [2, 34]),
              t(R, [2, 81]),
              t(R, [2, 82]),
              { 1: [2, 3] },
              { 8: [2, 8] },
              { 8: [2, 9] },
              { 8: [2, 10] },
              { 8: [2, 11] },
              { 8: [2, 12] },
              { 8: [2, 13] },
              { 8: [2, 14] },
              { 8: [2, 15] },
              { 8: [2, 16] },
              { 27: [1, 65], 29: [1, 66] },
              t(k, [2, 79]),
              t(k, [2, 80]),
              { 27: [1, 67], 29: [1, 68] },
              t(k, [2, 85]),
              t(k, [2, 86]),
              { 62: 69, 65: L, 66: A, 67: I, 68: M, 69: P, 70: B, 71: F },
              { 62: 77, 65: L, 66: A, 67: I, 68: M, 69: P, 70: B, 71: F },
              { 30: 78, 33: 62, 75: D, 89: E, 90: _ },
              { 73: 79, 75: z, 76: $, 78: 81, 79: 82, 80: U, 81: K, 82: ee, 83: Y, 84: ce, 85: Z, 86: ue, 87: Q, 88: j },
              t(ne, [2, 60]),
              t(ne, [2, 62]),
              { 73: 93, 75: z, 76: $, 78: 81, 79: 82, 80: U, 81: K, 82: ee, 83: Y, 84: ce, 85: Z, 86: ue, 87: Q, 88: j },
              { 30: 94, 33: 62, 75: D, 76: $, 89: E, 90: _ },
              { 5: [1, 95] },
              { 30: 96, 33: 62, 75: D, 89: E, 90: _ },
              { 5: [1, 97] },
              { 30: 98, 33: 62, 75: D, 89: E, 90: _ },
              { 63: [1, 99] },
              t(te, [2, 50]),
              t(te, [2, 51]),
              t(te, [2, 52]),
              t(te, [2, 53]),
              t(te, [2, 54]),
              t(te, [2, 55]),
              t(te, [2, 56]),
              { 64: [1, 100] },
              t(C, [2, 59], { 76: $ }),
              t(C, [2, 64], { 76: he }),
              { 33: 103, 75: [1, 102], 89: E, 90: _ },
              t(le, [2, 65], { 79: 104, 75: z, 80: U, 81: K, 82: ee, 83: Y, 84: ce, 85: Z, 86: ue, 87: Q, 88: j }),
              t(J, [2, 67]),
              t(J, [2, 69]),
              t(J, [2, 70]),
              t(J, [2, 71]),
              t(J, [2, 72]),
              t(J, [2, 73]),
              t(J, [2, 74]),
              t(J, [2, 75]),
              t(J, [2, 76]),
              t(J, [2, 77]),
              t(J, [2, 78]),
              t(C, [2, 57], { 76: he }),
              t(C, [2, 58], { 76: $ }),
              { 5: Se, 28: 105, 31: se, 34: ae, 36: Oe, 38: ye, 40: Be },
              { 27: [1, 112], 76: $ },
              { 5: He, 40: ze, 56: 113, 57: Le, 59: Ie },
              { 27: [1, 118], 76: $ },
              { 33: 119, 89: E, 90: _ },
              { 33: 120, 89: E, 90: _ },
              { 75: z, 78: 121, 79: 82, 80: U, 81: K, 82: ee, 83: Y, 84: ce, 85: Z, 86: ue, 87: Q, 88: j },
              t(ne, [2, 61]),
              t(ne, [2, 63]),
              t(J, [2, 68]),
              t(C, [2, 21]),
              { 32: [1, 122] },
              { 32: [1, 123] },
              { 32: [1, 124] },
              { 32: [1, 125] },
              { 5: Se, 28: 126, 31: se, 34: ae, 36: Oe, 38: ye, 40: Be },
              t(C, [2, 28]),
              { 5: [1, 127] },
              t(C, [2, 42]),
              { 32: [1, 128] },
              { 32: [1, 129] },
              { 5: He, 40: ze, 56: 130, 57: Le, 59: Ie },
              t(C, [2, 47]),
              { 5: [1, 131] },
              t(C, [2, 48]),
              t(C, [2, 49]),
              t(le, [2, 66], { 79: 104, 75: z, 80: U, 81: K, 82: ee, 83: Y, 84: ce, 85: Z, 86: ue, 87: Q, 88: j }),
              { 33: 132, 89: E, 90: _ },
              { 35: 133, 89: [1, 134], 90: [1, 135] },
              { 37: 136, 47: [1, 137], 48: [1, 138], 49: [1, 139] },
              { 39: 140, 50: [1, 141], 51: [1, 142], 52: [1, 143], 53: [1, 144] },
              t(C, [2, 27]),
              { 5: Se, 28: 145, 31: se, 34: ae, 36: Oe, 38: ye, 40: Be },
              { 58: 146, 89: [1, 147], 90: [1, 148] },
              { 60: 149, 89: [1, 150], 90: [1, 151] },
              t(C, [2, 46]),
              { 5: He, 40: ze, 56: 152, 57: Le, 59: Ie },
              { 5: [1, 153] },
              { 5: [1, 154] },
              { 5: [2, 83] },
              { 5: [2, 84] },
              { 5: [1, 155] },
              { 5: [2, 35] },
              { 5: [2, 36] },
              { 5: [2, 37] },
              { 5: [1, 156] },
              { 5: [2, 38] },
              { 5: [2, 39] },
              { 5: [2, 40] },
              { 5: [2, 41] },
              t(C, [2, 22]),
              { 5: [1, 157] },
              { 5: [2, 87] },
              { 5: [2, 88] },
              { 5: [1, 158] },
              { 5: [2, 89] },
              { 5: [2, 90] },
              t(C, [2, 43]),
              { 5: Se, 28: 159, 31: se, 34: ae, 36: Oe, 38: ye, 40: Be },
              { 5: Se, 28: 160, 31: se, 34: ae, 36: Oe, 38: ye, 40: Be },
              { 5: Se, 28: 161, 31: se, 34: ae, 36: Oe, 38: ye, 40: Be },
              { 5: Se, 28: 162, 31: se, 34: ae, 36: Oe, 38: ye, 40: Be },
              { 5: He, 40: ze, 56: 163, 57: Le, 59: Ie },
              { 5: He, 40: ze, 56: 164, 57: Le, 59: Ie },
              t(C, [2, 23]),
              t(C, [2, 24]),
              t(C, [2, 25]),
              t(C, [2, 26]),
              t(C, [2, 44]),
              t(C, [2, 45])
            ],
            defaultActions: {
              8: [2, 2],
              12: [2, 1],
              41: [2, 3],
              42: [2, 8],
              43: [2, 9],
              44: [2, 10],
              45: [2, 11],
              46: [2, 12],
              47: [2, 13],
              48: [2, 14],
              49: [2, 15],
              50: [2, 16],
              134: [2, 83],
              135: [2, 84],
              137: [2, 35],
              138: [2, 36],
              139: [2, 37],
              141: [2, 38],
              142: [2, 39],
              143: [2, 40],
              144: [2, 41],
              147: [2, 87],
              148: [2, 88],
              150: [2, 89],
              151: [2, 90]
            },
            parseError: o(function (oe, V) {
              if (V.recoverable) this.trace(oe)
              else {
                var Te = new Error(oe)
                throw ((Te.hash = V), Te)
              }
            }, 'parseError'),
            parse: o(function (oe) {
              var V = this,
                Te = [0],
                W = [],
                pe = [null],
                ve = [],
                Pe = this.table,
                _e = '',
                be = 0,
                Ve = 0,
                De = 0,
                qe = 2,
                at = 1,
                Rt = ve.slice.call(arguments, 1),
                st = Object.create(this.lexer),
                Ue = { yy: {} }
              for (var ct in this.yy) Object.prototype.hasOwnProperty.call(this.yy, ct) && (Ue.yy[ct] = this.yy[ct])
              st.setInput(oe, Ue.yy), (Ue.yy.lexer = st), (Ue.yy.parser = this), typeof st.yylloc > 'u' && (st.yylloc = {})
              var We = st.yylloc
              ve.push(We)
              var ot = st.options && st.options.ranges
              typeof Ue.yy.parseError == 'function' ? (this.parseError = Ue.yy.parseError) : (this.parseError = Object.getPrototypeOf(this).parseError)
              function Yt(Ir) {
                ;(Te.length = Te.length - 2 * Ir), (pe.length = pe.length - Ir), (ve.length = ve.length - Ir)
              }
              o(Yt, 'popStack')
              function Tt() {
                var Ir
                return (Ir = W.pop() || st.lex() || at), typeof Ir != 'number' && (Ir instanceof Array && ((W = Ir), (Ir = W.pop())), (Ir = V.symbols_[Ir] || Ir)), Ir
              }
              o(Tt, 'lex')
              for (var Mt, bt, ut, St, ft, vt, nt = {}, pn, kt, On, tn; ; ) {
                if (
                  ((ut = Te[Te.length - 1]),
                  this.defaultActions[ut] ? (St = this.defaultActions[ut]) : ((Mt === null || typeof Mt > 'u') && (Mt = Tt()), (St = Pe[ut] && Pe[ut][Mt])),
                  typeof St > 'u' || !St.length || !St[0])
                ) {
                  var Mr = ''
                  tn = []
                  for (pn in Pe[ut]) this.terminals_[pn] && pn > qe && tn.push("'" + this.terminals_[pn] + "'")
                  st.showPosition
                    ? (Mr =
                        'Parse error on line ' +
                        (be + 1) +
                        `:
` +
                        st.showPosition() +
                        `
Expecting ` +
                        tn.join(', ') +
                        ", got '" +
                        (this.terminals_[Mt] || Mt) +
                        "'")
                    : (Mr = 'Parse error on line ' + (be + 1) + ': Unexpected ' + (Mt == at ? 'end of input' : "'" + (this.terminals_[Mt] || Mt) + "'")),
                    this.parseError(Mr, { text: st.match, token: this.terminals_[Mt] || Mt, line: st.yylineno, loc: We, expected: tn })
                }
                if (St[0] instanceof Array && St.length > 1) throw new Error('Parse Error: multiple actions possible at state: ' + ut + ', token: ' + Mt)
                switch (St[0]) {
                  case 1:
                    Te.push(Mt),
                      pe.push(st.yytext),
                      ve.push(st.yylloc),
                      Te.push(St[1]),
                      (Mt = null),
                      bt ? ((Mt = bt), (bt = null)) : ((Ve = st.yyleng), (_e = st.yytext), (be = st.yylineno), (We = st.yylloc), De > 0 && De--)
                    break
                  case 2:
                    if (
                      ((kt = this.productions_[St[1]][1]),
                      (nt.$ = pe[pe.length - kt]),
                      (nt._$ = {
                        first_line: ve[ve.length - (kt || 1)].first_line,
                        last_line: ve[ve.length - 1].last_line,
                        first_column: ve[ve.length - (kt || 1)].first_column,
                        last_column: ve[ve.length - 1].last_column
                      }),
                      ot && (nt._$.range = [ve[ve.length - (kt || 1)].range[0], ve[ve.length - 1].range[1]]),
                      (vt = this.performAction.apply(nt, [_e, Ve, be, Ue.yy, St[1], pe, ve].concat(Rt))),
                      typeof vt < 'u')
                    )
                      return vt
                    kt && ((Te = Te.slice(0, -1 * kt * 2)), (pe = pe.slice(0, -1 * kt)), (ve = ve.slice(0, -1 * kt))),
                      Te.push(this.productions_[St[1]][0]),
                      pe.push(nt.$),
                      ve.push(nt._$),
                      (On = Pe[Te[Te.length - 2]][Te[Te.length - 1]]),
                      Te.push(On)
                    break
                  case 3:
                    return !0
                }
              }
              return !0
            }, 'parse')
          },
          q = (function () {
            var ie = {
              EOF: 1,
              parseError: o(function (V, Te) {
                if (this.yy.parser) this.yy.parser.parseError(V, Te)
                else throw new Error(V)
              }, 'parseError'),
              setInput: o(function (oe, V) {
                return (
                  (this.yy = V || this.yy || {}),
                  (this._input = oe),
                  (this._more = this._backtrack = this.done = !1),
                  (this.yylineno = this.yyleng = 0),
                  (this.yytext = this.matched = this.match = ''),
                  (this.conditionStack = ['INITIAL']),
                  (this.yylloc = { first_line: 1, first_column: 0, last_line: 1, last_column: 0 }),
                  this.options.ranges && (this.yylloc.range = [0, 0]),
                  (this.offset = 0),
                  this
                )
              }, 'setInput'),
              input: o(function () {
                var oe = this._input[0]
                ;(this.yytext += oe), this.yyleng++, this.offset++, (this.match += oe), (this.matched += oe)
                var V = oe.match(/(?:\r\n?|\n).*/g)
                return (
                  V ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++,
                  this.options.ranges && this.yylloc.range[1]++,
                  (this._input = this._input.slice(1)),
                  oe
                )
              }, 'input'),
              unput: o(function (oe) {
                var V = oe.length,
                  Te = oe.split(/(?:\r\n?|\n)/g)
                ;(this._input = oe + this._input), (this.yytext = this.yytext.substr(0, this.yytext.length - V)), (this.offset -= V)
                var W = this.match.split(/(?:\r\n?|\n)/g)
                ;(this.match = this.match.substr(0, this.match.length - 1)),
                  (this.matched = this.matched.substr(0, this.matched.length - 1)),
                  Te.length - 1 && (this.yylineno -= Te.length - 1)
                var pe = this.yylloc.range
                return (
                  (this.yylloc = {
                    first_line: this.yylloc.first_line,
                    last_line: this.yylineno + 1,
                    first_column: this.yylloc.first_column,
                    last_column: Te ? (Te.length === W.length ? this.yylloc.first_column : 0) + W[W.length - Te.length].length - Te[0].length : this.yylloc.first_column - V
                  }),
                  this.options.ranges && (this.yylloc.range = [pe[0], pe[0] + this.yyleng - V]),
                  (this.yyleng = this.yytext.length),
                  this
                )
              }, 'unput'),
              more: o(function () {
                return (this._more = !0), this
              }, 'more'),
              reject: o(function () {
                if (this.options.backtrack_lexer) this._backtrack = !0
                else
                  return this.parseError(
                    'Lexical error on line ' +
                      (this.yylineno + 1) +
                      `. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
` +
                      this.showPosition(),
                    { text: '', token: null, line: this.yylineno }
                  )
                return this
              }, 'reject'),
              less: o(function (oe) {
                this.unput(this.match.slice(oe))
              }, 'less'),
              pastInput: o(function () {
                var oe = this.matched.substr(0, this.matched.length - this.match.length)
                return (oe.length > 20 ? '...' : '') + oe.substr(-20).replace(/\n/g, '')
              }, 'pastInput'),
              upcomingInput: o(function () {
                var oe = this.match
                return oe.length < 20 && (oe += this._input.substr(0, 20 - oe.length)), (oe.substr(0, 20) + (oe.length > 20 ? '...' : '')).replace(/\n/g, '')
              }, 'upcomingInput'),
              showPosition: o(function () {
                var oe = this.pastInput(),
                  V = new Array(oe.length + 1).join('-')
                return (
                  oe +
                  this.upcomingInput() +
                  `
` +
                  V +
                  '^'
                )
              }, 'showPosition'),
              test_match: o(function (oe, V) {
                var Te, W, pe
                if (
                  (this.options.backtrack_lexer &&
                    ((pe = {
                      yylineno: this.yylineno,
                      yylloc: { first_line: this.yylloc.first_line, last_line: this.last_line, first_column: this.yylloc.first_column, last_column: this.yylloc.last_column },
                      yytext: this.yytext,
                      match: this.match,
                      matches: this.matches,
                      matched: this.matched,
                      yyleng: this.yyleng,
                      offset: this.offset,
                      _more: this._more,
                      _input: this._input,
                      yy: this.yy,
                      conditionStack: this.conditionStack.slice(0),
                      done: this.done
                    }),
                    this.options.ranges && (pe.yylloc.range = this.yylloc.range.slice(0))),
                  (W = oe[0].match(/(?:\r\n?|\n).*/g)),
                  W && (this.yylineno += W.length),
                  (this.yylloc = {
                    first_line: this.yylloc.last_line,
                    last_line: this.yylineno + 1,
                    first_column: this.yylloc.last_column,
                    last_column: W ? W[W.length - 1].length - W[W.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + oe[0].length
                  }),
                  (this.yytext += oe[0]),
                  (this.match += oe[0]),
                  (this.matches = oe),
                  (this.yyleng = this.yytext.length),
                  this.options.ranges && (this.yylloc.range = [this.offset, (this.offset += this.yyleng)]),
                  (this._more = !1),
                  (this._backtrack = !1),
                  (this._input = this._input.slice(oe[0].length)),
                  (this.matched += oe[0]),
                  (Te = this.performAction.call(this, this.yy, this, V, this.conditionStack[this.conditionStack.length - 1])),
                  this.done && this._input && (this.done = !1),
                  Te)
                )
                  return Te
                if (this._backtrack) {
                  for (var ve in pe) this[ve] = pe[ve]
                  return !1
                }
                return !1
              }, 'test_match'),
              next: o(function () {
                if (this.done) return this.EOF
                this._input || (this.done = !0)
                var oe, V, Te, W
                this._more || ((this.yytext = ''), (this.match = ''))
                for (var pe = this._currentRules(), ve = 0; ve < pe.length; ve++)
                  if (((Te = this._input.match(this.rules[pe[ve]])), Te && (!V || Te[0].length > V[0].length))) {
                    if (((V = Te), (W = ve), this.options.backtrack_lexer)) {
                      if (((oe = this.test_match(Te, pe[ve])), oe !== !1)) return oe
                      if (this._backtrack) {
                        V = !1
                        continue
                      } else return !1
                    } else if (!this.options.flex) break
                  }
                return V
                  ? ((oe = this.test_match(V, pe[W])), oe !== !1 ? oe : !1)
                  : this._input === ''
                    ? this.EOF
                    : this.parseError(
                        'Lexical error on line ' +
                          (this.yylineno + 1) +
                          `. Unrecognized text.
` +
                          this.showPosition(),
                        { text: '', token: null, line: this.yylineno }
                      )
              }, 'next'),
              lex: o(function () {
                var V = this.next()
                return V || this.lex()
              }, 'lex'),
              begin: o(function (V) {
                this.conditionStack.push(V)
              }, 'begin'),
              popState: o(function () {
                var V = this.conditionStack.length - 1
                return V > 0 ? this.conditionStack.pop() : this.conditionStack[0]
              }, 'popState'),
              _currentRules: o(function () {
                return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]
                  ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
                  : this.conditions.INITIAL.rules
              }, '_currentRules'),
              topState: o(function (V) {
                return (V = this.conditionStack.length - 1 - Math.abs(V || 0)), V >= 0 ? this.conditionStack[V] : 'INITIAL'
              }, 'topState'),
              pushState: o(function (V) {
                this.begin(V)
              }, 'pushState'),
              stateStackSize: o(function () {
                return this.conditionStack.length
              }, 'stateStackSize'),
              options: { 'case-insensitive': !0 },
              performAction: o(function (V, Te, W, pe) {
                var ve = pe
                switch (W) {
                  case 0:
                    return 'title'
                  case 1:
                    return this.begin('acc_title'), 9
                    break
                  case 2:
                    return this.popState(), 'acc_title_value'
                    break
                  case 3:
                    return this.begin('acc_descr'), 11
                    break
                  case 4:
                    return this.popState(), 'acc_descr_value'
                    break
                  case 5:
                    this.begin('acc_descr_multiline')
                    break
                  case 6:
                    this.popState()
                    break
                  case 7:
                    return 'acc_descr_multiline_value'
                  case 8:
                    return 21
                  case 9:
                    return 22
                  case 10:
                    return 23
                  case 11:
                    return 24
                  case 12:
                    return 5
                  case 13:
                    break
                  case 14:
                    break
                  case 15:
                    break
                  case 16:
                    return 8
                  case 17:
                    return 6
                  case 18:
                    return 27
                  case 19:
                    return 40
                  case 20:
                    return 29
                  case 21:
                    return 32
                  case 22:
                    return 31
                  case 23:
                    return 34
                  case 24:
                    return 36
                  case 25:
                    return 38
                  case 26:
                    return 41
                  case 27:
                    return 42
                  case 28:
                    return 43
                  case 29:
                    return 44
                  case 30:
                    return 45
                  case 31:
                    return 46
                  case 32:
                    return 47
                  case 33:
                    return 48
                  case 34:
                    return 49
                  case 35:
                    return 50
                  case 36:
                    return 51
                  case 37:
                    return 52
                  case 38:
                    return 53
                  case 39:
                    return 54
                  case 40:
                    return 65
                  case 41:
                    return 66
                  case 42:
                    return 67
                  case 43:
                    return 68
                  case 44:
                    return 69
                  case 45:
                    return 70
                  case 46:
                    return 71
                  case 47:
                    return 57
                  case 48:
                    return 59
                  case 49:
                    return this.begin('style'), 77
                    break
                  case 50:
                    return 75
                  case 51:
                    return 81
                  case 52:
                    return 88
                  case 53:
                    return 'PERCENT'
                  case 54:
                    return 86
                  case 55:
                    return 84
                  case 56:
                    break
                  case 57:
                    this.begin('string')
                    break
                  case 58:
                    this.popState()
                    break
                  case 59:
                    return this.begin('style'), 72
                    break
                  case 60:
                    return this.begin('style'), 74
                    break
                  case 61:
                    return 61
                  case 62:
                    return 64
                  case 63:
                    return 63
                  case 64:
                    this.begin('string')
                    break
                  case 65:
                    this.popState()
                    break
                  case 66:
                    return 'qString'
                  case 67:
                    return (Te.yytext = Te.yytext.trim()), 89
                    break
                  case 68:
                    return 75
                  case 69:
                    return 80
                  case 70:
                    return 76
                }
              }, 'anonymous'),
              rules: [
                /^(?:title\s[^#\n;]+)/i,
                /^(?:accTitle\s*:\s*)/i,
                /^(?:(?!\n||)*[^\n]*)/i,
                /^(?:accDescr\s*:\s*)/i,
                /^(?:(?!\n||)*[^\n]*)/i,
                /^(?:accDescr\s*\{\s*)/i,
                /^(?:[\}])/i,
                /^(?:[^\}]*)/i,
                /^(?:.*direction\s+TB[^\n]*)/i,
                /^(?:.*direction\s+BT[^\n]*)/i,
                /^(?:.*direction\s+RL[^\n]*)/i,
                /^(?:.*direction\s+LR[^\n]*)/i,
                /^(?:(\r?\n)+)/i,
                /^(?:\s+)/i,
                /^(?:#[^\n]*)/i,
                /^(?:%[^\n]*)/i,
                /^(?:$)/i,
                /^(?:requirementDiagram\b)/i,
                /^(?:\{)/i,
                /^(?:\})/i,
                /^(?::{3})/i,
                /^(?::)/i,
                /^(?:id\b)/i,
                /^(?:text\b)/i,
                /^(?:risk\b)/i,
                /^(?:verifyMethod\b)/i,
                /^(?:requirement\b)/i,
                /^(?:functionalRequirement\b)/i,
                /^(?:interfaceRequirement\b)/i,
                /^(?:performanceRequirement\b)/i,
                /^(?:physicalRequirement\b)/i,
                /^(?:designConstraint\b)/i,
                /^(?:low\b)/i,
                /^(?:medium\b)/i,
                /^(?:high\b)/i,
                /^(?:analysis\b)/i,
                /^(?:demonstration\b)/i,
                /^(?:inspection\b)/i,
                /^(?:test\b)/i,
                /^(?:element\b)/i,
                /^(?:contains\b)/i,
                /^(?:copies\b)/i,
                /^(?:derives\b)/i,
                /^(?:satisfies\b)/i,
                /^(?:verifies\b)/i,
                /^(?:refines\b)/i,
                /^(?:traces\b)/i,
                /^(?:type\b)/i,
                /^(?:docref\b)/i,
                /^(?:style\b)/i,
                /^(?:\w+)/i,
                /^(?::)/i,
                /^(?:;)/i,
                /^(?:%)/i,
                /^(?:-)/i,
                /^(?:#)/i,
                /^(?: )/i,
                /^(?:["])/i,
                /^(?:\n)/i,
                /^(?:classDef\b)/i,
                /^(?:class\b)/i,
                /^(?:<-)/i,
                /^(?:->)/i,
                /^(?:-)/i,
                /^(?:["])/i,
                /^(?:["])/i,
                /^(?:[^"]*)/i,
                /^(?:[\w][^:,\r\n\{\<\>\-\=]*)/i,
                /^(?:\w+)/i,
                /^(?:[0-9]+)/i,
                /^(?:,)/i
              ],
              conditions: {
                acc_descr_multiline: { rules: [6, 7, 68, 69, 70], inclusive: !1 },
                acc_descr: { rules: [4, 68, 69, 70], inclusive: !1 },
                acc_title: { rules: [2, 68, 69, 70], inclusive: !1 },
                style: { rules: [50, 51, 52, 53, 54, 55, 56, 57, 58, 68, 69, 70], inclusive: !1 },
                unqString: { rules: [68, 69, 70], inclusive: !1 },
                token: { rules: [68, 69, 70], inclusive: !1 },
                string: { rules: [65, 66, 68, 69, 70], inclusive: !1 },
                INITIAL: {
                  rules: [
                    0, 1, 3, 5, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
                    45, 46, 47, 48, 49, 59, 60, 61, 62, 63, 64, 67, 68, 69, 70
                  ],
                  inclusive: !0
                }
              }
            }
            return ie
          })()
        xe.lexer = q
        function de() {
          this.yy = {}
        }
        return o(de, 'Parser'), (de.prototype = xe), (xe.Parser = de), new de()
      })()
      hP.parser = hP
      vde = hP
    })
  var qS,
    bde = N(() => {
      'use strict'
      Gt()
      yt()
      ci()
      qS = class {
        constructor() {
          this.relations = []
          this.latestRequirement = this.getInitialRequirement()
          this.requirements = new Map()
          this.latestElement = this.getInitialElement()
          this.elements = new Map()
          this.classes = new Map()
          this.direction = 'TB'
          this.RequirementType = {
            REQUIREMENT: 'Requirement',
            FUNCTIONAL_REQUIREMENT: 'Functional Requirement',
            INTERFACE_REQUIREMENT: 'Interface Requirement',
            PERFORMANCE_REQUIREMENT: 'Performance Requirement',
            PHYSICAL_REQUIREMENT: 'Physical Requirement',
            DESIGN_CONSTRAINT: 'Design Constraint'
          }
          this.RiskLevel = { LOW_RISK: 'Low', MED_RISK: 'Medium', HIGH_RISK: 'High' }
          this.VerifyType = { VERIFY_ANALYSIS: 'Analysis', VERIFY_DEMONSTRATION: 'Demonstration', VERIFY_INSPECTION: 'Inspection', VERIFY_TEST: 'Test' }
          this.Relationships = { CONTAINS: 'contains', COPIES: 'copies', DERIVES: 'derives', SATISFIES: 'satisfies', VERIFIES: 'verifies', REFINES: 'refines', TRACES: 'traces' }
          this.setAccTitle = Ar
          this.getAccTitle = Dr
          this.setAccDescription = Lr
          this.getAccDescription = Rr
          this.setDiagramTitle = Or
          this.getDiagramTitle = Nr
          this.getConfig = o(() => me().requirement, 'getConfig')
          this.clear(),
            (this.setDirection = this.setDirection.bind(this)),
            (this.addRequirement = this.addRequirement.bind(this)),
            (this.setNewReqId = this.setNewReqId.bind(this)),
            (this.setNewReqRisk = this.setNewReqRisk.bind(this)),
            (this.setNewReqText = this.setNewReqText.bind(this)),
            (this.setNewReqVerifyMethod = this.setNewReqVerifyMethod.bind(this)),
            (this.addElement = this.addElement.bind(this)),
            (this.setNewElementType = this.setNewElementType.bind(this)),
            (this.setNewElementDocRef = this.setNewElementDocRef.bind(this)),
            (this.addRelationship = this.addRelationship.bind(this)),
            (this.setCssStyle = this.setCssStyle.bind(this)),
            (this.setClass = this.setClass.bind(this)),
            (this.defineClass = this.defineClass.bind(this)),
            (this.setAccTitle = this.setAccTitle.bind(this)),
            (this.setAccDescription = this.setAccDescription.bind(this))
        }
        static {
          o(this, 'RequirementDB')
        }
        getDirection() {
          return this.direction
        }
        setDirection(e) {
          this.direction = e
        }
        resetLatestRequirement() {
          this.latestRequirement = this.getInitialRequirement()
        }
        resetLatestElement() {
          this.latestElement = this.getInitialElement()
        }
        getInitialRequirement() {
          return { requirementId: '', text: '', risk: '', verifyMethod: '', name: '', type: '', cssStyles: [], classes: ['default'] }
        }
        getInitialElement() {
          return { name: '', type: '', docRef: '', cssStyles: [], classes: ['default'] }
        }
        addRequirement(e, r) {
          return (
            this.requirements.has(e) ||
              this.requirements.set(e, {
                name: e,
                type: r,
                requirementId: this.latestRequirement.requirementId,
                text: this.latestRequirement.text,
                risk: this.latestRequirement.risk,
                verifyMethod: this.latestRequirement.verifyMethod,
                cssStyles: [],
                classes: ['default']
              }),
            this.resetLatestRequirement(),
            this.requirements.get(e)
          )
        }
        getRequirements() {
          return this.requirements
        }
        setNewReqId(e) {
          this.latestRequirement !== void 0 && (this.latestRequirement.requirementId = e)
        }
        setNewReqText(e) {
          this.latestRequirement !== void 0 && (this.latestRequirement.text = e)
        }
        setNewReqRisk(e) {
          this.latestRequirement !== void 0 && (this.latestRequirement.risk = e)
        }
        setNewReqVerifyMethod(e) {
          this.latestRequirement !== void 0 && (this.latestRequirement.verifyMethod = e)
        }
        addElement(e) {
          return (
            this.elements.has(e) ||
              (this.elements.set(e, { name: e, type: this.latestElement.type, docRef: this.latestElement.docRef, cssStyles: [], classes: ['default'] }),
              X.info('Added new element: ', e)),
            this.resetLatestElement(),
            this.elements.get(e)
          )
        }
        getElements() {
          return this.elements
        }
        setNewElementType(e) {
          this.latestElement !== void 0 && (this.latestElement.type = e)
        }
        setNewElementDocRef(e) {
          this.latestElement !== void 0 && (this.latestElement.docRef = e)
        }
        addRelationship(e, r, n) {
          this.relations.push({ type: e, src: r, dst: n })
        }
        getRelationships() {
          return this.relations
        }
        clear() {
          ;(this.relations = []),
            this.resetLatestRequirement(),
            (this.requirements = new Map()),
            this.resetLatestElement(),
            (this.elements = new Map()),
            (this.classes = new Map()),
            kr()
        }
        setCssStyle(e, r) {
          for (let n of e) {
            let i = this.requirements.get(n) ?? this.elements.get(n)
            if (!r || !i) return
            for (let a of r) a.includes(',') ? i.cssStyles.push(...a.split(',')) : i.cssStyles.push(a)
          }
        }
        setClass(e, r) {
          for (let n of e) {
            let i = this.requirements.get(n) ?? this.elements.get(n)
            if (i)
              for (let a of r) {
                i.classes.push(a)
                let s = this.classes.get(a)?.styles
                s && i.cssStyles.push(...s)
              }
          }
        }
        defineClass(e, r) {
          for (let n of e) {
            let i = this.classes.get(n)
            i === void 0 && ((i = { id: n, styles: [], textStyles: [] }), this.classes.set(n, i)),
              r &&
                r.forEach(function (a) {
                  if (/color/.exec(a)) {
                    let s = a.replace('fill', 'bgFill')
                    i.textStyles.push(s)
                  }
                  i.styles.push(a)
                }),
              this.requirements.forEach(a => {
                a.classes.includes(n) && a.cssStyles.push(...r.flatMap(s => s.split(',')))
              }),
              this.elements.forEach(a => {
                a.classes.includes(n) && a.cssStyles.push(...r.flatMap(s => s.split(',')))
              })
          }
        }
        getClasses() {
          return this.classes
        }
        getData() {
          let e = me(),
            r = [],
            n = []
          for (let i of this.requirements.values()) {
            let a = i
            ;(a.id = i.name), (a.cssStyles = i.cssStyles), (a.cssClasses = i.classes.join(' ')), (a.shape = 'requirementBox'), (a.look = e.look), r.push(a)
          }
          for (let i of this.elements.values()) {
            let a = i
            ;(a.shape = 'requirementBox'), (a.look = e.look), (a.id = i.name), (a.cssStyles = i.cssStyles), (a.cssClasses = i.classes.join(' ')), r.push(a)
          }
          for (let i of this.relations) {
            let a = 0,
              s = i.type === this.Relationships.CONTAINS,
              l = {
                id: `${i.src}-${i.dst}-${a}`,
                start: this.requirements.get(i.src)?.name ?? this.elements.get(i.src)?.name,
                end: this.requirements.get(i.dst)?.name ?? this.elements.get(i.dst)?.name,
                label: `&lt;&lt;${i.type}&gt;&gt;`,
                classes: 'relationshipLine',
                style: ['fill:none', s ? '' : 'stroke-dasharray: 10,7'],
                labelpos: 'c',
                thickness: 'normal',
                type: 'normal',
                pattern: s ? 'normal' : 'dashed',
                arrowTypeStart: s ? 'requirement_contains' : '',
                arrowTypeEnd: s ? '' : 'requirement_arrow',
                look: e.look
              }
            n.push(l), a++
          }
          return { nodes: r, edges: n, other: {}, config: e, direction: this.getDirection() }
        }
      }
    })
  var NUe,
    Tde,
    wde = N(() => {
      'use strict'
      ;(NUe = o(
        t => `

  marker {
    fill: ${t.relationColor};
    stroke: ${t.relationColor};
  }

  marker.cross {
    stroke: ${t.lineColor};
  }

  svg {
    font-family: ${t.fontFamily};
    font-size: ${t.fontSize};
  }

  .reqBox {
    fill: ${t.requirementBackground};
    fill-opacity: 1.0;
    stroke: ${t.requirementBorderColor};
    stroke-width: ${t.requirementBorderSize};
  }
  
  .reqTitle, .reqLabel{
    fill:  ${t.requirementTextColor};
  }
  .reqLabelBox {
    fill: ${t.relationLabelBackground};
    fill-opacity: 1.0;
  }

  .req-title-line {
    stroke: ${t.requirementBorderColor};
    stroke-width: ${t.requirementBorderSize};
  }
  .relationshipLine {
    stroke: ${t.relationColor};
    stroke-width: 1;
  }
  .relationshipLabel {
    fill: ${t.relationLabelColor};
  }
  .divider {
    stroke: ${t.nodeBorder};
    stroke-width: 1;
  }
  .label {
    font-family: ${t.fontFamily};
    color: ${t.nodeTextColor || t.textColor};
  }
  .label text,span {
    fill: ${t.nodeTextColor || t.textColor};
    color: ${t.nodeTextColor || t.textColor};
  }
  .labelBkg {
    background-color: ${t.edgeLabelBackground};
  }

`,
        'getStyles'
      )),
        (Tde = NUe)
    })
  var fP = {}
  ur(fP, { draw: () => MUe })
  var MUe,
    kde = N(() => {
      'use strict'
      Gt()
      yt()
      Sm()
      rp()
      np()
      er()
      MUe = o(async function (t, e, r, n) {
        X.info('REF0:'), X.info('Drawing requirement diagram (unified)', e)
        let { securityLevel: i, state: a, layout: s } = me(),
          l = n.db.getData(),
          u = wc(e, i)
        ;(l.type = n.type),
          (l.layoutAlgorithm = uf(s)),
          (l.nodeSpacing = a?.nodeSpacing ?? 50),
          (l.rankSpacing = a?.rankSpacing ?? 50),
          (l.markers = ['requirement_contains', 'requirement_arrow']),
          (l.diagramId = e),
          await Rc(l, u)
        let h = 8
        Vt.insertTitle(u, 'requirementDiagramTitleText', a?.titleTopMargin ?? 25, n.db.getDiagramTitle()), Yo(u, h, 'requirementDiagram', a?.useMaxWidth ?? !0)
      }, 'draw')
    })
  var Ede = {}
  ur(Ede, { diagram: () => IUe })
  var IUe,
    Sde = N(() => {
      'use strict'
      xde()
      bde()
      wde()
      kde()
      IUe = {
        parser: vde,
        get db() {
          return new qS()
        },
        renderer: fP,
        styles: Tde
      }
    })
  var dP,
    _de,
    Dde = N(() => {
      'use strict'
      dP = (function () {
        var t = o(function (Q, j, ne, te) {
            for (ne = ne || {}, te = Q.length; te--; ne[Q[te]] = j);
            return ne
          }, 'o'),
          e = [1, 2],
          r = [1, 3],
          n = [1, 4],
          i = [2, 4],
          a = [1, 9],
          s = [1, 11],
          l = [1, 13],
          u = [1, 14],
          h = [1, 16],
          f = [1, 17],
          d = [1, 18],
          p = [1, 24],
          m = [1, 25],
          g = [1, 26],
          y = [1, 27],
          v = [1, 28],
          x = [1, 29],
          b = [1, 30],
          T = [1, 31],
          S = [1, 32],
          w = [1, 33],
          E = [1, 34],
          _ = [1, 35],
          C = [1, 36],
          D = [1, 37],
          O = [1, 38],
          R = [1, 39],
          k = [1, 41],
          L = [1, 42],
          A = [1, 43],
          I = [1, 44],
          M = [1, 45],
          P = [1, 46],
          B = [1, 4, 5, 13, 14, 16, 18, 21, 23, 29, 30, 31, 33, 35, 36, 37, 38, 39, 41, 43, 44, 46, 47, 48, 49, 50, 52, 53, 54, 59, 60, 61, 62, 70],
          F = [4, 5, 16, 50, 52, 53],
          z = [4, 5, 13, 14, 16, 18, 21, 23, 29, 30, 31, 33, 35, 36, 37, 38, 39, 41, 43, 44, 46, 50, 52, 53, 54, 59, 60, 61, 62, 70],
          $ = [4, 5, 13, 14, 16, 18, 21, 23, 29, 30, 31, 33, 35, 36, 37, 38, 39, 41, 43, 44, 46, 49, 50, 52, 53, 54, 59, 60, 61, 62, 70],
          U = [4, 5, 13, 14, 16, 18, 21, 23, 29, 30, 31, 33, 35, 36, 37, 38, 39, 41, 43, 44, 46, 48, 50, 52, 53, 54, 59, 60, 61, 62, 70],
          K = [4, 5, 13, 14, 16, 18, 21, 23, 29, 30, 31, 33, 35, 36, 37, 38, 39, 41, 43, 44, 46, 47, 50, 52, 53, 54, 59, 60, 61, 62, 70],
          ee = [68, 69, 70],
          Y = [1, 122],
          ce = {
            trace: o(function () {}, 'trace'),
            yy: {},
            symbols_: {
              error: 2,
              start: 3,
              SPACE: 4,
              NEWLINE: 5,
              SD: 6,
              document: 7,
              line: 8,
              statement: 9,
              box_section: 10,
              box_line: 11,
              participant_statement: 12,
              create: 13,
              box: 14,
              restOfLine: 15,
              end: 16,
              signal: 17,
              autonumber: 18,
              NUM: 19,
              off: 20,
              activate: 21,
              actor: 22,
              deactivate: 23,
              note_statement: 24,
              links_statement: 25,
              link_statement: 26,
              properties_statement: 27,
              details_statement: 28,
              title: 29,
              legacy_title: 30,
              acc_title: 31,
              acc_title_value: 32,
              acc_descr: 33,
              acc_descr_value: 34,
              acc_descr_multiline_value: 35,
              loop: 36,
              rect: 37,
              opt: 38,
              alt: 39,
              else_sections: 40,
              par: 41,
              par_sections: 42,
              par_over: 43,
              critical: 44,
              option_sections: 45,
              break: 46,
              option: 47,
              and: 48,
              else: 49,
              participant: 50,
              AS: 51,
              participant_actor: 52,
              destroy: 53,
              note: 54,
              placement: 55,
              text2: 56,
              over: 57,
              actor_pair: 58,
              links: 59,
              link: 60,
              properties: 61,
              details: 62,
              spaceList: 63,
              ',': 64,
              left_of: 65,
              right_of: 66,
              signaltype: 67,
              '+': 68,
              '-': 69,
              ACTOR: 70,
              SOLID_OPEN_ARROW: 71,
              DOTTED_OPEN_ARROW: 72,
              SOLID_ARROW: 73,
              BIDIRECTIONAL_SOLID_ARROW: 74,
              DOTTED_ARROW: 75,
              BIDIRECTIONAL_DOTTED_ARROW: 76,
              SOLID_CROSS: 77,
              DOTTED_CROSS: 78,
              SOLID_POINT: 79,
              DOTTED_POINT: 80,
              TXT: 81,
              $accept: 0,
              $end: 1
            },
            terminals_: {
              2: 'error',
              4: 'SPACE',
              5: 'NEWLINE',
              6: 'SD',
              13: 'create',
              14: 'box',
              15: 'restOfLine',
              16: 'end',
              18: 'autonumber',
              19: 'NUM',
              20: 'off',
              21: 'activate',
              23: 'deactivate',
              29: 'title',
              30: 'legacy_title',
              31: 'acc_title',
              32: 'acc_title_value',
              33: 'acc_descr',
              34: 'acc_descr_value',
              35: 'acc_descr_multiline_value',
              36: 'loop',
              37: 'rect',
              38: 'opt',
              39: 'alt',
              41: 'par',
              43: 'par_over',
              44: 'critical',
              46: 'break',
              47: 'option',
              48: 'and',
              49: 'else',
              50: 'participant',
              51: 'AS',
              52: 'participant_actor',
              53: 'destroy',
              54: 'note',
              57: 'over',
              59: 'links',
              60: 'link',
              61: 'properties',
              62: 'details',
              64: ',',
              65: 'left_of',
              66: 'right_of',
              68: '+',
              69: '-',
              70: 'ACTOR',
              71: 'SOLID_OPEN_ARROW',
              72: 'DOTTED_OPEN_ARROW',
              73: 'SOLID_ARROW',
              74: 'BIDIRECTIONAL_SOLID_ARROW',
              75: 'DOTTED_ARROW',
              76: 'BIDIRECTIONAL_DOTTED_ARROW',
              77: 'SOLID_CROSS',
              78: 'DOTTED_CROSS',
              79: 'SOLID_POINT',
              80: 'DOTTED_POINT',
              81: 'TXT'
            },
            productions_: [
              0,
              [3, 2],
              [3, 2],
              [3, 2],
              [7, 0],
              [7, 2],
              [8, 2],
              [8, 1],
              [8, 1],
              [10, 0],
              [10, 2],
              [11, 2],
              [11, 1],
              [11, 1],
              [9, 1],
              [9, 2],
              [9, 4],
              [9, 2],
              [9, 4],
              [9, 3],
              [9, 3],
              [9, 2],
              [9, 3],
              [9, 3],
              [9, 2],
              [9, 2],
              [9, 2],
              [9, 2],
              [9, 2],
              [9, 1],
              [9, 1],
              [9, 2],
              [9, 2],
              [9, 1],
              [9, 4],
              [9, 4],
              [9, 4],
              [9, 4],
              [9, 4],
              [9, 4],
              [9, 4],
              [9, 4],
              [45, 1],
              [45, 4],
              [42, 1],
              [42, 4],
              [40, 1],
              [40, 4],
              [12, 5],
              [12, 3],
              [12, 5],
              [12, 3],
              [12, 3],
              [24, 4],
              [24, 4],
              [25, 3],
              [26, 3],
              [27, 3],
              [28, 3],
              [63, 2],
              [63, 1],
              [58, 3],
              [58, 1],
              [55, 1],
              [55, 1],
              [17, 5],
              [17, 5],
              [17, 4],
              [22, 1],
              [67, 1],
              [67, 1],
              [67, 1],
              [67, 1],
              [67, 1],
              [67, 1],
              [67, 1],
              [67, 1],
              [67, 1],
              [67, 1],
              [56, 1]
            ],
            performAction: o(function (j, ne, te, he, le, J, Se) {
              var se = J.length - 1
              switch (le) {
                case 3:
                  return he.apply(J[se]), J[se]
                  break
                case 4:
                case 9:
                  this.$ = []
                  break
                case 5:
                case 10:
                  J[se - 1].push(J[se]), (this.$ = J[se - 1])
                  break
                case 6:
                case 7:
                case 11:
                case 12:
                  this.$ = J[se]
                  break
                case 8:
                case 13:
                  this.$ = []
                  break
                case 15:
                  ;(J[se].type = 'createParticipant'), (this.$ = J[se])
                  break
                case 16:
                  J[se - 1].unshift({ type: 'boxStart', boxData: he.parseBoxData(J[se - 2]) }), J[se - 1].push({ type: 'boxEnd', boxText: J[se - 2] }), (this.$ = J[se - 1])
                  break
                case 18:
                  this.$ = {
                    type: 'sequenceIndex',
                    sequenceIndex: Number(J[se - 2]),
                    sequenceIndexStep: Number(J[se - 1]),
                    sequenceVisible: !0,
                    signalType: he.LINETYPE.AUTONUMBER
                  }
                  break
                case 19:
                  this.$ = { type: 'sequenceIndex', sequenceIndex: Number(J[se - 1]), sequenceIndexStep: 1, sequenceVisible: !0, signalType: he.LINETYPE.AUTONUMBER }
                  break
                case 20:
                  this.$ = { type: 'sequenceIndex', sequenceVisible: !1, signalType: he.LINETYPE.AUTONUMBER }
                  break
                case 21:
                  this.$ = { type: 'sequenceIndex', sequenceVisible: !0, signalType: he.LINETYPE.AUTONUMBER }
                  break
                case 22:
                  this.$ = { type: 'activeStart', signalType: he.LINETYPE.ACTIVE_START, actor: J[se - 1].actor }
                  break
                case 23:
                  this.$ = { type: 'activeEnd', signalType: he.LINETYPE.ACTIVE_END, actor: J[se - 1].actor }
                  break
                case 29:
                  he.setDiagramTitle(J[se].substring(6)), (this.$ = J[se].substring(6))
                  break
                case 30:
                  he.setDiagramTitle(J[se].substring(7)), (this.$ = J[se].substring(7))
                  break
                case 31:
                  ;(this.$ = J[se].trim()), he.setAccTitle(this.$)
                  break
                case 32:
                case 33:
                  ;(this.$ = J[se].trim()), he.setAccDescription(this.$)
                  break
                case 34:
                  J[se - 1].unshift({ type: 'loopStart', loopText: he.parseMessage(J[se - 2]), signalType: he.LINETYPE.LOOP_START }),
                    J[se - 1].push({ type: 'loopEnd', loopText: J[se - 2], signalType: he.LINETYPE.LOOP_END }),
                    (this.$ = J[se - 1])
                  break
                case 35:
                  J[se - 1].unshift({ type: 'rectStart', color: he.parseMessage(J[se - 2]), signalType: he.LINETYPE.RECT_START }),
                    J[se - 1].push({ type: 'rectEnd', color: he.parseMessage(J[se - 2]), signalType: he.LINETYPE.RECT_END }),
                    (this.$ = J[se - 1])
                  break
                case 36:
                  J[se - 1].unshift({ type: 'optStart', optText: he.parseMessage(J[se - 2]), signalType: he.LINETYPE.OPT_START }),
                    J[se - 1].push({ type: 'optEnd', optText: he.parseMessage(J[se - 2]), signalType: he.LINETYPE.OPT_END }),
                    (this.$ = J[se - 1])
                  break
                case 37:
                  J[se - 1].unshift({ type: 'altStart', altText: he.parseMessage(J[se - 2]), signalType: he.LINETYPE.ALT_START }),
                    J[se - 1].push({ type: 'altEnd', signalType: he.LINETYPE.ALT_END }),
                    (this.$ = J[se - 1])
                  break
                case 38:
                  J[se - 1].unshift({ type: 'parStart', parText: he.parseMessage(J[se - 2]), signalType: he.LINETYPE.PAR_START }),
                    J[se - 1].push({ type: 'parEnd', signalType: he.LINETYPE.PAR_END }),
                    (this.$ = J[se - 1])
                  break
                case 39:
                  J[se - 1].unshift({ type: 'parStart', parText: he.parseMessage(J[se - 2]), signalType: he.LINETYPE.PAR_OVER_START }),
                    J[se - 1].push({ type: 'parEnd', signalType: he.LINETYPE.PAR_END }),
                    (this.$ = J[se - 1])
                  break
                case 40:
                  J[se - 1].unshift({ type: 'criticalStart', criticalText: he.parseMessage(J[se - 2]), signalType: he.LINETYPE.CRITICAL_START }),
                    J[se - 1].push({ type: 'criticalEnd', signalType: he.LINETYPE.CRITICAL_END }),
                    (this.$ = J[se - 1])
                  break
                case 41:
                  J[se - 1].unshift({ type: 'breakStart', breakText: he.parseMessage(J[se - 2]), signalType: he.LINETYPE.BREAK_START }),
                    J[se - 1].push({ type: 'breakEnd', optText: he.parseMessage(J[se - 2]), signalType: he.LINETYPE.BREAK_END }),
                    (this.$ = J[se - 1])
                  break
                case 43:
                  this.$ = J[se - 3].concat([{ type: 'option', optionText: he.parseMessage(J[se - 1]), signalType: he.LINETYPE.CRITICAL_OPTION }, J[se]])
                  break
                case 45:
                  this.$ = J[se - 3].concat([{ type: 'and', parText: he.parseMessage(J[se - 1]), signalType: he.LINETYPE.PAR_AND }, J[se]])
                  break
                case 47:
                  this.$ = J[se - 3].concat([{ type: 'else', altText: he.parseMessage(J[se - 1]), signalType: he.LINETYPE.ALT_ELSE }, J[se]])
                  break
                case 48:
                  ;(J[se - 3].draw = 'participant'), (J[se - 3].type = 'addParticipant'), (J[se - 3].description = he.parseMessage(J[se - 1])), (this.$ = J[se - 3])
                  break
                case 49:
                  ;(J[se - 1].draw = 'participant'), (J[se - 1].type = 'addParticipant'), (this.$ = J[se - 1])
                  break
                case 50:
                  ;(J[se - 3].draw = 'actor'), (J[se - 3].type = 'addParticipant'), (J[se - 3].description = he.parseMessage(J[se - 1])), (this.$ = J[se - 3])
                  break
                case 51:
                  ;(J[se - 1].draw = 'actor'), (J[se - 1].type = 'addParticipant'), (this.$ = J[se - 1])
                  break
                case 52:
                  ;(J[se - 1].type = 'destroyParticipant'), (this.$ = J[se - 1])
                  break
                case 53:
                  this.$ = [J[se - 1], { type: 'addNote', placement: J[se - 2], actor: J[se - 1].actor, text: J[se] }]
                  break
                case 54:
                  ;(J[se - 2] = [].concat(J[se - 1], J[se - 1]).slice(0, 2)),
                    (J[se - 2][0] = J[se - 2][0].actor),
                    (J[se - 2][1] = J[se - 2][1].actor),
                    (this.$ = [J[se - 1], { type: 'addNote', placement: he.PLACEMENT.OVER, actor: J[se - 2].slice(0, 2), text: J[se] }])
                  break
                case 55:
                  this.$ = [J[se - 1], { type: 'addLinks', actor: J[se - 1].actor, text: J[se] }]
                  break
                case 56:
                  this.$ = [J[se - 1], { type: 'addALink', actor: J[se - 1].actor, text: J[se] }]
                  break
                case 57:
                  this.$ = [J[se - 1], { type: 'addProperties', actor: J[se - 1].actor, text: J[se] }]
                  break
                case 58:
                  this.$ = [J[se - 1], { type: 'addDetails', actor: J[se - 1].actor, text: J[se] }]
                  break
                case 61:
                  this.$ = [J[se - 2], J[se]]
                  break
                case 62:
                  this.$ = J[se]
                  break
                case 63:
                  this.$ = he.PLACEMENT.LEFTOF
                  break
                case 64:
                  this.$ = he.PLACEMENT.RIGHTOF
                  break
                case 65:
                  this.$ = [
                    J[se - 4],
                    J[se - 1],
                    { type: 'addMessage', from: J[se - 4].actor, to: J[se - 1].actor, signalType: J[se - 3], msg: J[se], activate: !0 },
                    { type: 'activeStart', signalType: he.LINETYPE.ACTIVE_START, actor: J[se - 1].actor }
                  ]
                  break
                case 66:
                  this.$ = [
                    J[se - 4],
                    J[se - 1],
                    { type: 'addMessage', from: J[se - 4].actor, to: J[se - 1].actor, signalType: J[se - 3], msg: J[se] },
                    { type: 'activeEnd', signalType: he.LINETYPE.ACTIVE_END, actor: J[se - 4].actor }
                  ]
                  break
                case 67:
                  this.$ = [J[se - 3], J[se - 1], { type: 'addMessage', from: J[se - 3].actor, to: J[se - 1].actor, signalType: J[se - 2], msg: J[se] }]
                  break
                case 68:
                  this.$ = { type: 'addParticipant', actor: J[se] }
                  break
                case 69:
                  this.$ = he.LINETYPE.SOLID_OPEN
                  break
                case 70:
                  this.$ = he.LINETYPE.DOTTED_OPEN
                  break
                case 71:
                  this.$ = he.LINETYPE.SOLID
                  break
                case 72:
                  this.$ = he.LINETYPE.BIDIRECTIONAL_SOLID
                  break
                case 73:
                  this.$ = he.LINETYPE.DOTTED
                  break
                case 74:
                  this.$ = he.LINETYPE.BIDIRECTIONAL_DOTTED
                  break
                case 75:
                  this.$ = he.LINETYPE.SOLID_CROSS
                  break
                case 76:
                  this.$ = he.LINETYPE.DOTTED_CROSS
                  break
                case 77:
                  this.$ = he.LINETYPE.SOLID_POINT
                  break
                case 78:
                  this.$ = he.LINETYPE.DOTTED_POINT
                  break
                case 79:
                  this.$ = he.parseMessage(J[se].trim().substring(1))
                  break
              }
            }, 'anonymous'),
            table: [
              { 3: 1, 4: e, 5: r, 6: n },
              { 1: [3] },
              { 3: 5, 4: e, 5: r, 6: n },
              { 3: 6, 4: e, 5: r, 6: n },
              t([1, 4, 5, 13, 14, 18, 21, 23, 29, 30, 31, 33, 35, 36, 37, 38, 39, 41, 43, 44, 46, 50, 52, 53, 54, 59, 60, 61, 62, 70], i, { 7: 7 }),
              { 1: [2, 1] },
              { 1: [2, 2] },
              {
                1: [2, 3],
                4: a,
                5: s,
                8: 8,
                9: 10,
                12: 12,
                13: l,
                14: u,
                17: 15,
                18: h,
                21: f,
                22: 40,
                23: d,
                24: 19,
                25: 20,
                26: 21,
                27: 22,
                28: 23,
                29: p,
                30: m,
                31: g,
                33: y,
                35: v,
                36: x,
                37: b,
                38: T,
                39: S,
                41: w,
                43: E,
                44: _,
                46: C,
                50: D,
                52: O,
                53: R,
                54: k,
                59: L,
                60: A,
                61: I,
                62: M,
                70: P
              },
              t(B, [2, 5]),
              {
                9: 47,
                12: 12,
                13: l,
                14: u,
                17: 15,
                18: h,
                21: f,
                22: 40,
                23: d,
                24: 19,
                25: 20,
                26: 21,
                27: 22,
                28: 23,
                29: p,
                30: m,
                31: g,
                33: y,
                35: v,
                36: x,
                37: b,
                38: T,
                39: S,
                41: w,
                43: E,
                44: _,
                46: C,
                50: D,
                52: O,
                53: R,
                54: k,
                59: L,
                60: A,
                61: I,
                62: M,
                70: P
              },
              t(B, [2, 7]),
              t(B, [2, 8]),
              t(B, [2, 14]),
              { 12: 48, 50: D, 52: O, 53: R },
              { 15: [1, 49] },
              { 5: [1, 50] },
              { 5: [1, 53], 19: [1, 51], 20: [1, 52] },
              { 22: 54, 70: P },
              { 22: 55, 70: P },
              { 5: [1, 56] },
              { 5: [1, 57] },
              { 5: [1, 58] },
              { 5: [1, 59] },
              { 5: [1, 60] },
              t(B, [2, 29]),
              t(B, [2, 30]),
              { 32: [1, 61] },
              { 34: [1, 62] },
              t(B, [2, 33]),
              { 15: [1, 63] },
              { 15: [1, 64] },
              { 15: [1, 65] },
              { 15: [1, 66] },
              { 15: [1, 67] },
              { 15: [1, 68] },
              { 15: [1, 69] },
              { 15: [1, 70] },
              { 22: 71, 70: P },
              { 22: 72, 70: P },
              { 22: 73, 70: P },
              { 67: 74, 71: [1, 75], 72: [1, 76], 73: [1, 77], 74: [1, 78], 75: [1, 79], 76: [1, 80], 77: [1, 81], 78: [1, 82], 79: [1, 83], 80: [1, 84] },
              { 55: 85, 57: [1, 86], 65: [1, 87], 66: [1, 88] },
              { 22: 89, 70: P },
              { 22: 90, 70: P },
              { 22: 91, 70: P },
              { 22: 92, 70: P },
              t([5, 51, 64, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81], [2, 68]),
              t(B, [2, 6]),
              t(B, [2, 15]),
              t(F, [2, 9], { 10: 93 }),
              t(B, [2, 17]),
              { 5: [1, 95], 19: [1, 94] },
              { 5: [1, 96] },
              t(B, [2, 21]),
              { 5: [1, 97] },
              { 5: [1, 98] },
              t(B, [2, 24]),
              t(B, [2, 25]),
              t(B, [2, 26]),
              t(B, [2, 27]),
              t(B, [2, 28]),
              t(B, [2, 31]),
              t(B, [2, 32]),
              t(z, i, { 7: 99 }),
              t(z, i, { 7: 100 }),
              t(z, i, { 7: 101 }),
              t($, i, { 40: 102, 7: 103 }),
              t(U, i, { 42: 104, 7: 105 }),
              t(U, i, { 7: 105, 42: 106 }),
              t(K, i, { 45: 107, 7: 108 }),
              t(z, i, { 7: 109 }),
              { 5: [1, 111], 51: [1, 110] },
              { 5: [1, 113], 51: [1, 112] },
              { 5: [1, 114] },
              { 22: 117, 68: [1, 115], 69: [1, 116], 70: P },
              t(ee, [2, 69]),
              t(ee, [2, 70]),
              t(ee, [2, 71]),
              t(ee, [2, 72]),
              t(ee, [2, 73]),
              t(ee, [2, 74]),
              t(ee, [2, 75]),
              t(ee, [2, 76]),
              t(ee, [2, 77]),
              t(ee, [2, 78]),
              { 22: 118, 70: P },
              { 22: 120, 58: 119, 70: P },
              { 70: [2, 63] },
              { 70: [2, 64] },
              { 56: 121, 81: Y },
              { 56: 123, 81: Y },
              { 56: 124, 81: Y },
              { 56: 125, 81: Y },
              { 4: [1, 128], 5: [1, 130], 11: 127, 12: 129, 16: [1, 126], 50: D, 52: O, 53: R },
              { 5: [1, 131] },
              t(B, [2, 19]),
              t(B, [2, 20]),
              t(B, [2, 22]),
              t(B, [2, 23]),
              {
                4: a,
                5: s,
                8: 8,
                9: 10,
                12: 12,
                13: l,
                14: u,
                16: [1, 132],
                17: 15,
                18: h,
                21: f,
                22: 40,
                23: d,
                24: 19,
                25: 20,
                26: 21,
                27: 22,
                28: 23,
                29: p,
                30: m,
                31: g,
                33: y,
                35: v,
                36: x,
                37: b,
                38: T,
                39: S,
                41: w,
                43: E,
                44: _,
                46: C,
                50: D,
                52: O,
                53: R,
                54: k,
                59: L,
                60: A,
                61: I,
                62: M,
                70: P
              },
              {
                4: a,
                5: s,
                8: 8,
                9: 10,
                12: 12,
                13: l,
                14: u,
                16: [1, 133],
                17: 15,
                18: h,
                21: f,
                22: 40,
                23: d,
                24: 19,
                25: 20,
                26: 21,
                27: 22,
                28: 23,
                29: p,
                30: m,
                31: g,
                33: y,
                35: v,
                36: x,
                37: b,
                38: T,
                39: S,
                41: w,
                43: E,
                44: _,
                46: C,
                50: D,
                52: O,
                53: R,
                54: k,
                59: L,
                60: A,
                61: I,
                62: M,
                70: P
              },
              {
                4: a,
                5: s,
                8: 8,
                9: 10,
                12: 12,
                13: l,
                14: u,
                16: [1, 134],
                17: 15,
                18: h,
                21: f,
                22: 40,
                23: d,
                24: 19,
                25: 20,
                26: 21,
                27: 22,
                28: 23,
                29: p,
                30: m,
                31: g,
                33: y,
                35: v,
                36: x,
                37: b,
                38: T,
                39: S,
                41: w,
                43: E,
                44: _,
                46: C,
                50: D,
                52: O,
                53: R,
                54: k,
                59: L,
                60: A,
                61: I,
                62: M,
                70: P
              },
              { 16: [1, 135] },
              {
                4: a,
                5: s,
                8: 8,
                9: 10,
                12: 12,
                13: l,
                14: u,
                16: [2, 46],
                17: 15,
                18: h,
                21: f,
                22: 40,
                23: d,
                24: 19,
                25: 20,
                26: 21,
                27: 22,
                28: 23,
                29: p,
                30: m,
                31: g,
                33: y,
                35: v,
                36: x,
                37: b,
                38: T,
                39: S,
                41: w,
                43: E,
                44: _,
                46: C,
                49: [1, 136],
                50: D,
                52: O,
                53: R,
                54: k,
                59: L,
                60: A,
                61: I,
                62: M,
                70: P
              },
              { 16: [1, 137] },
              {
                4: a,
                5: s,
                8: 8,
                9: 10,
                12: 12,
                13: l,
                14: u,
                16: [2, 44],
                17: 15,
                18: h,
                21: f,
                22: 40,
                23: d,
                24: 19,
                25: 20,
                26: 21,
                27: 22,
                28: 23,
                29: p,
                30: m,
                31: g,
                33: y,
                35: v,
                36: x,
                37: b,
                38: T,
                39: S,
                41: w,
                43: E,
                44: _,
                46: C,
                48: [1, 138],
                50: D,
                52: O,
                53: R,
                54: k,
                59: L,
                60: A,
                61: I,
                62: M,
                70: P
              },
              { 16: [1, 139] },
              { 16: [1, 140] },
              {
                4: a,
                5: s,
                8: 8,
                9: 10,
                12: 12,
                13: l,
                14: u,
                16: [2, 42],
                17: 15,
                18: h,
                21: f,
                22: 40,
                23: d,
                24: 19,
                25: 20,
                26: 21,
                27: 22,
                28: 23,
                29: p,
                30: m,
                31: g,
                33: y,
                35: v,
                36: x,
                37: b,
                38: T,
                39: S,
                41: w,
                43: E,
                44: _,
                46: C,
                47: [1, 141],
                50: D,
                52: O,
                53: R,
                54: k,
                59: L,
                60: A,
                61: I,
                62: M,
                70: P
              },
              {
                4: a,
                5: s,
                8: 8,
                9: 10,
                12: 12,
                13: l,
                14: u,
                16: [1, 142],
                17: 15,
                18: h,
                21: f,
                22: 40,
                23: d,
                24: 19,
                25: 20,
                26: 21,
                27: 22,
                28: 23,
                29: p,
                30: m,
                31: g,
                33: y,
                35: v,
                36: x,
                37: b,
                38: T,
                39: S,
                41: w,
                43: E,
                44: _,
                46: C,
                50: D,
                52: O,
                53: R,
                54: k,
                59: L,
                60: A,
                61: I,
                62: M,
                70: P
              },
              { 15: [1, 143] },
              t(B, [2, 49]),
              { 15: [1, 144] },
              t(B, [2, 51]),
              t(B, [2, 52]),
              { 22: 145, 70: P },
              { 22: 146, 70: P },
              { 56: 147, 81: Y },
              { 56: 148, 81: Y },
              { 56: 149, 81: Y },
              { 64: [1, 150], 81: [2, 62] },
              { 5: [2, 55] },
              { 5: [2, 79] },
              { 5: [2, 56] },
              { 5: [2, 57] },
              { 5: [2, 58] },
              t(B, [2, 16]),
              t(F, [2, 10]),
              { 12: 151, 50: D, 52: O, 53: R },
              t(F, [2, 12]),
              t(F, [2, 13]),
              t(B, [2, 18]),
              t(B, [2, 34]),
              t(B, [2, 35]),
              t(B, [2, 36]),
              t(B, [2, 37]),
              { 15: [1, 152] },
              t(B, [2, 38]),
              { 15: [1, 153] },
              t(B, [2, 39]),
              t(B, [2, 40]),
              { 15: [1, 154] },
              t(B, [2, 41]),
              { 5: [1, 155] },
              { 5: [1, 156] },
              { 56: 157, 81: Y },
              { 56: 158, 81: Y },
              { 5: [2, 67] },
              { 5: [2, 53] },
              { 5: [2, 54] },
              { 22: 159, 70: P },
              t(F, [2, 11]),
              t($, i, { 7: 103, 40: 160 }),
              t(U, i, { 7: 105, 42: 161 }),
              t(K, i, { 7: 108, 45: 162 }),
              t(B, [2, 48]),
              t(B, [2, 50]),
              { 5: [2, 65] },
              { 5: [2, 66] },
              { 81: [2, 61] },
              { 16: [2, 47] },
              { 16: [2, 45] },
              { 16: [2, 43] }
            ],
            defaultActions: {
              5: [2, 1],
              6: [2, 2],
              87: [2, 63],
              88: [2, 64],
              121: [2, 55],
              122: [2, 79],
              123: [2, 56],
              124: [2, 57],
              125: [2, 58],
              147: [2, 67],
              148: [2, 53],
              149: [2, 54],
              157: [2, 65],
              158: [2, 66],
              159: [2, 61],
              160: [2, 47],
              161: [2, 45],
              162: [2, 43]
            },
            parseError: o(function (j, ne) {
              if (ne.recoverable) this.trace(j)
              else {
                var te = new Error(j)
                throw ((te.hash = ne), te)
              }
            }, 'parseError'),
            parse: o(function (j) {
              var ne = this,
                te = [0],
                he = [],
                le = [null],
                J = [],
                Se = this.table,
                se = '',
                ae = 0,
                Oe = 0,
                ye = 0,
                Be = 2,
                He = 1,
                ze = J.slice.call(arguments, 1),
                Le = Object.create(this.lexer),
                Ie = { yy: {} }
              for (var xe in this.yy) Object.prototype.hasOwnProperty.call(this.yy, xe) && (Ie.yy[xe] = this.yy[xe])
              Le.setInput(j, Ie.yy), (Ie.yy.lexer = Le), (Ie.yy.parser = this), typeof Le.yylloc > 'u' && (Le.yylloc = {})
              var q = Le.yylloc
              J.push(q)
              var de = Le.options && Le.options.ranges
              typeof Ie.yy.parseError == 'function' ? (this.parseError = Ie.yy.parseError) : (this.parseError = Object.getPrototypeOf(this).parseError)
              function ie(Rt) {
                ;(te.length = te.length - 2 * Rt), (le.length = le.length - Rt), (J.length = J.length - Rt)
              }
              o(ie, 'popStack')
              function oe() {
                var Rt
                return (Rt = he.pop() || Le.lex() || He), typeof Rt != 'number' && (Rt instanceof Array && ((he = Rt), (Rt = he.pop())), (Rt = ne.symbols_[Rt] || Rt)), Rt
              }
              o(oe, 'lex')
              for (var V, Te, W, pe, ve, Pe, _e = {}, be, Ve, De, qe; ; ) {
                if (
                  ((W = te[te.length - 1]),
                  this.defaultActions[W] ? (pe = this.defaultActions[W]) : ((V === null || typeof V > 'u') && (V = oe()), (pe = Se[W] && Se[W][V])),
                  typeof pe > 'u' || !pe.length || !pe[0])
                ) {
                  var at = ''
                  qe = []
                  for (be in Se[W]) this.terminals_[be] && be > Be && qe.push("'" + this.terminals_[be] + "'")
                  Le.showPosition
                    ? (at =
                        'Parse error on line ' +
                        (ae + 1) +
                        `:
` +
                        Le.showPosition() +
                        `
Expecting ` +
                        qe.join(', ') +
                        ", got '" +
                        (this.terminals_[V] || V) +
                        "'")
                    : (at = 'Parse error on line ' + (ae + 1) + ': Unexpected ' + (V == He ? 'end of input' : "'" + (this.terminals_[V] || V) + "'")),
                    this.parseError(at, { text: Le.match, token: this.terminals_[V] || V, line: Le.yylineno, loc: q, expected: qe })
                }
                if (pe[0] instanceof Array && pe.length > 1) throw new Error('Parse Error: multiple actions possible at state: ' + W + ', token: ' + V)
                switch (pe[0]) {
                  case 1:
                    te.push(V),
                      le.push(Le.yytext),
                      J.push(Le.yylloc),
                      te.push(pe[1]),
                      (V = null),
                      Te ? ((V = Te), (Te = null)) : ((Oe = Le.yyleng), (se = Le.yytext), (ae = Le.yylineno), (q = Le.yylloc), ye > 0 && ye--)
                    break
                  case 2:
                    if (
                      ((Ve = this.productions_[pe[1]][1]),
                      (_e.$ = le[le.length - Ve]),
                      (_e._$ = {
                        first_line: J[J.length - (Ve || 1)].first_line,
                        last_line: J[J.length - 1].last_line,
                        first_column: J[J.length - (Ve || 1)].first_column,
                        last_column: J[J.length - 1].last_column
                      }),
                      de && (_e._$.range = [J[J.length - (Ve || 1)].range[0], J[J.length - 1].range[1]]),
                      (Pe = this.performAction.apply(_e, [se, Oe, ae, Ie.yy, pe[1], le, J].concat(ze))),
                      typeof Pe < 'u')
                    )
                      return Pe
                    Ve && ((te = te.slice(0, -1 * Ve * 2)), (le = le.slice(0, -1 * Ve)), (J = J.slice(0, -1 * Ve))),
                      te.push(this.productions_[pe[1]][0]),
                      le.push(_e.$),
                      J.push(_e._$),
                      (De = Se[te[te.length - 2]][te[te.length - 1]]),
                      te.push(De)
                    break
                  case 3:
                    return !0
                }
              }
              return !0
            }, 'parse')
          },
          Z = (function () {
            var Q = {
              EOF: 1,
              parseError: o(function (ne, te) {
                if (this.yy.parser) this.yy.parser.parseError(ne, te)
                else throw new Error(ne)
              }, 'parseError'),
              setInput: o(function (j, ne) {
                return (
                  (this.yy = ne || this.yy || {}),
                  (this._input = j),
                  (this._more = this._backtrack = this.done = !1),
                  (this.yylineno = this.yyleng = 0),
                  (this.yytext = this.matched = this.match = ''),
                  (this.conditionStack = ['INITIAL']),
                  (this.yylloc = { first_line: 1, first_column: 0, last_line: 1, last_column: 0 }),
                  this.options.ranges && (this.yylloc.range = [0, 0]),
                  (this.offset = 0),
                  this
                )
              }, 'setInput'),
              input: o(function () {
                var j = this._input[0]
                ;(this.yytext += j), this.yyleng++, this.offset++, (this.match += j), (this.matched += j)
                var ne = j.match(/(?:\r\n?|\n).*/g)
                return (
                  ne ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++,
                  this.options.ranges && this.yylloc.range[1]++,
                  (this._input = this._input.slice(1)),
                  j
                )
              }, 'input'),
              unput: o(function (j) {
                var ne = j.length,
                  te = j.split(/(?:\r\n?|\n)/g)
                ;(this._input = j + this._input), (this.yytext = this.yytext.substr(0, this.yytext.length - ne)), (this.offset -= ne)
                var he = this.match.split(/(?:\r\n?|\n)/g)
                ;(this.match = this.match.substr(0, this.match.length - 1)),
                  (this.matched = this.matched.substr(0, this.matched.length - 1)),
                  te.length - 1 && (this.yylineno -= te.length - 1)
                var le = this.yylloc.range
                return (
                  (this.yylloc = {
                    first_line: this.yylloc.first_line,
                    last_line: this.yylineno + 1,
                    first_column: this.yylloc.first_column,
                    last_column: te ? (te.length === he.length ? this.yylloc.first_column : 0) + he[he.length - te.length].length - te[0].length : this.yylloc.first_column - ne
                  }),
                  this.options.ranges && (this.yylloc.range = [le[0], le[0] + this.yyleng - ne]),
                  (this.yyleng = this.yytext.length),
                  this
                )
              }, 'unput'),
              more: o(function () {
                return (this._more = !0), this
              }, 'more'),
              reject: o(function () {
                if (this.options.backtrack_lexer) this._backtrack = !0
                else
                  return this.parseError(
                    'Lexical error on line ' +
                      (this.yylineno + 1) +
                      `. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
` +
                      this.showPosition(),
                    { text: '', token: null, line: this.yylineno }
                  )
                return this
              }, 'reject'),
              less: o(function (j) {
                this.unput(this.match.slice(j))
              }, 'less'),
              pastInput: o(function () {
                var j = this.matched.substr(0, this.matched.length - this.match.length)
                return (j.length > 20 ? '...' : '') + j.substr(-20).replace(/\n/g, '')
              }, 'pastInput'),
              upcomingInput: o(function () {
                var j = this.match
                return j.length < 20 && (j += this._input.substr(0, 20 - j.length)), (j.substr(0, 20) + (j.length > 20 ? '...' : '')).replace(/\n/g, '')
              }, 'upcomingInput'),
              showPosition: o(function () {
                var j = this.pastInput(),
                  ne = new Array(j.length + 1).join('-')
                return (
                  j +
                  this.upcomingInput() +
                  `
` +
                  ne +
                  '^'
                )
              }, 'showPosition'),
              test_match: o(function (j, ne) {
                var te, he, le
                if (
                  (this.options.backtrack_lexer &&
                    ((le = {
                      yylineno: this.yylineno,
                      yylloc: { first_line: this.yylloc.first_line, last_line: this.last_line, first_column: this.yylloc.first_column, last_column: this.yylloc.last_column },
                      yytext: this.yytext,
                      match: this.match,
                      matches: this.matches,
                      matched: this.matched,
                      yyleng: this.yyleng,
                      offset: this.offset,
                      _more: this._more,
                      _input: this._input,
                      yy: this.yy,
                      conditionStack: this.conditionStack.slice(0),
                      done: this.done
                    }),
                    this.options.ranges && (le.yylloc.range = this.yylloc.range.slice(0))),
                  (he = j[0].match(/(?:\r\n?|\n).*/g)),
                  he && (this.yylineno += he.length),
                  (this.yylloc = {
                    first_line: this.yylloc.last_line,
                    last_line: this.yylineno + 1,
                    first_column: this.yylloc.last_column,
                    last_column: he ? he[he.length - 1].length - he[he.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + j[0].length
                  }),
                  (this.yytext += j[0]),
                  (this.match += j[0]),
                  (this.matches = j),
                  (this.yyleng = this.yytext.length),
                  this.options.ranges && (this.yylloc.range = [this.offset, (this.offset += this.yyleng)]),
                  (this._more = !1),
                  (this._backtrack = !1),
                  (this._input = this._input.slice(j[0].length)),
                  (this.matched += j[0]),
                  (te = this.performAction.call(this, this.yy, this, ne, this.conditionStack[this.conditionStack.length - 1])),
                  this.done && this._input && (this.done = !1),
                  te)
                )
                  return te
                if (this._backtrack) {
                  for (var J in le) this[J] = le[J]
                  return !1
                }
                return !1
              }, 'test_match'),
              next: o(function () {
                if (this.done) return this.EOF
                this._input || (this.done = !0)
                var j, ne, te, he
                this._more || ((this.yytext = ''), (this.match = ''))
                for (var le = this._currentRules(), J = 0; J < le.length; J++)
                  if (((te = this._input.match(this.rules[le[J]])), te && (!ne || te[0].length > ne[0].length))) {
                    if (((ne = te), (he = J), this.options.backtrack_lexer)) {
                      if (((j = this.test_match(te, le[J])), j !== !1)) return j
                      if (this._backtrack) {
                        ne = !1
                        continue
                      } else return !1
                    } else if (!this.options.flex) break
                  }
                return ne
                  ? ((j = this.test_match(ne, le[he])), j !== !1 ? j : !1)
                  : this._input === ''
                    ? this.EOF
                    : this.parseError(
                        'Lexical error on line ' +
                          (this.yylineno + 1) +
                          `. Unrecognized text.
` +
                          this.showPosition(),
                        { text: '', token: null, line: this.yylineno }
                      )
              }, 'next'),
              lex: o(function () {
                var ne = this.next()
                return ne || this.lex()
              }, 'lex'),
              begin: o(function (ne) {
                this.conditionStack.push(ne)
              }, 'begin'),
              popState: o(function () {
                var ne = this.conditionStack.length - 1
                return ne > 0 ? this.conditionStack.pop() : this.conditionStack[0]
              }, 'popState'),
              _currentRules: o(function () {
                return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]
                  ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
                  : this.conditions.INITIAL.rules
              }, '_currentRules'),
              topState: o(function (ne) {
                return (ne = this.conditionStack.length - 1 - Math.abs(ne || 0)), ne >= 0 ? this.conditionStack[ne] : 'INITIAL'
              }, 'topState'),
              pushState: o(function (ne) {
                this.begin(ne)
              }, 'pushState'),
              stateStackSize: o(function () {
                return this.conditionStack.length
              }, 'stateStackSize'),
              options: { 'case-insensitive': !0 },
              performAction: o(function (ne, te, he, le) {
                var J = le
                switch (he) {
                  case 0:
                    return 5
                  case 1:
                    break
                  case 2:
                    break
                  case 3:
                    break
                  case 4:
                    break
                  case 5:
                    break
                  case 6:
                    return 19
                  case 7:
                    return this.begin('LINE'), 14
                    break
                  case 8:
                    return this.begin('ID'), 50
                    break
                  case 9:
                    return this.begin('ID'), 52
                    break
                  case 10:
                    return 13
                  case 11:
                    return this.begin('ID'), 53
                    break
                  case 12:
                    return (te.yytext = te.yytext.trim()), this.begin('ALIAS'), 70
                    break
                  case 13:
                    return this.popState(), this.popState(), this.begin('LINE'), 51
                    break
                  case 14:
                    return this.popState(), this.popState(), 5
                    break
                  case 15:
                    return this.begin('LINE'), 36
                    break
                  case 16:
                    return this.begin('LINE'), 37
                    break
                  case 17:
                    return this.begin('LINE'), 38
                    break
                  case 18:
                    return this.begin('LINE'), 39
                    break
                  case 19:
                    return this.begin('LINE'), 49
                    break
                  case 20:
                    return this.begin('LINE'), 41
                    break
                  case 21:
                    return this.begin('LINE'), 43
                    break
                  case 22:
                    return this.begin('LINE'), 48
                    break
                  case 23:
                    return this.begin('LINE'), 44
                    break
                  case 24:
                    return this.begin('LINE'), 47
                    break
                  case 25:
                    return this.begin('LINE'), 46
                    break
                  case 26:
                    return this.popState(), 15
                    break
                  case 27:
                    return 16
                  case 28:
                    return 65
                  case 29:
                    return 66
                  case 30:
                    return 59
                  case 31:
                    return 60
                  case 32:
                    return 61
                  case 33:
                    return 62
                  case 34:
                    return 57
                  case 35:
                    return 54
                  case 36:
                    return this.begin('ID'), 21
                    break
                  case 37:
                    return this.begin('ID'), 23
                    break
                  case 38:
                    return 29
                  case 39:
                    return 30
                  case 40:
                    return this.begin('acc_title'), 31
                    break
                  case 41:
                    return this.popState(), 'acc_title_value'
                    break
                  case 42:
                    return this.begin('acc_descr'), 33
                    break
                  case 43:
                    return this.popState(), 'acc_descr_value'
                    break
                  case 44:
                    this.begin('acc_descr_multiline')
                    break
                  case 45:
                    this.popState()
                    break
                  case 46:
                    return 'acc_descr_multiline_value'
                  case 47:
                    return 6
                  case 48:
                    return 18
                  case 49:
                    return 20
                  case 50:
                    return 64
                  case 51:
                    return 5
                  case 52:
                    return (te.yytext = te.yytext.trim()), 70
                    break
                  case 53:
                    return 73
                  case 54:
                    return 74
                  case 55:
                    return 75
                  case 56:
                    return 76
                  case 57:
                    return 71
                  case 58:
                    return 72
                  case 59:
                    return 77
                  case 60:
                    return 78
                  case 61:
                    return 79
                  case 62:
                    return 80
                  case 63:
                    return 81
                  case 64:
                    return 81
                  case 65:
                    return 68
                  case 66:
                    return 69
                  case 67:
                    return 5
                  case 68:
                    return 'INVALID'
                }
              }, 'anonymous'),
              rules: [
                /^(?:[\n]+)/i,
                /^(?:\s+)/i,
                /^(?:((?!\n)\s)+)/i,
                /^(?:#[^\n]*)/i,
                /^(?:%(?!\{)[^\n]*)/i,
                /^(?:[^\}]%%[^\n]*)/i,
                /^(?:[0-9]+(?=[ \n]+))/i,
                /^(?:box\b)/i,
                /^(?:participant\b)/i,
                /^(?:actor\b)/i,
                /^(?:create\b)/i,
                /^(?:destroy\b)/i,
                /^(?:[^\<->\->:\n,;]+?([\-]*[^\<->\->:\n,;]+?)*?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i,
                /^(?:as\b)/i,
                /^(?:(?:))/i,
                /^(?:loop\b)/i,
                /^(?:rect\b)/i,
                /^(?:opt\b)/i,
                /^(?:alt\b)/i,
                /^(?:else\b)/i,
                /^(?:par\b)/i,
                /^(?:par_over\b)/i,
                /^(?:and\b)/i,
                /^(?:critical\b)/i,
                /^(?:option\b)/i,
                /^(?:break\b)/i,
                /^(?:(?:[:]?(?:no)?wrap)?[^#\n;]*)/i,
                /^(?:end\b)/i,
                /^(?:left of\b)/i,
                /^(?:right of\b)/i,
                /^(?:links\b)/i,
                /^(?:link\b)/i,
                /^(?:properties\b)/i,
                /^(?:details\b)/i,
                /^(?:over\b)/i,
                /^(?:note\b)/i,
                /^(?:activate\b)/i,
                /^(?:deactivate\b)/i,
                /^(?:title\s[^#\n;]+)/i,
                /^(?:title:\s[^#\n;]+)/i,
                /^(?:accTitle\s*:\s*)/i,
                /^(?:(?!\n||)*[^\n]*)/i,
                /^(?:accDescr\s*:\s*)/i,
                /^(?:(?!\n||)*[^\n]*)/i,
                /^(?:accDescr\s*\{\s*)/i,
                /^(?:[\}])/i,
                /^(?:[^\}]*)/i,
                /^(?:sequenceDiagram\b)/i,
                /^(?:autonumber\b)/i,
                /^(?:off\b)/i,
                /^(?:,)/i,
                /^(?:;)/i,
                /^(?:[^\+\<->\->:\n,;]+((?!(-x|--x|-\)|--\)))[\-]*[^\+\<->\->:\n,;]+)*)/i,
                /^(?:->>)/i,
                /^(?:<<->>)/i,
                /^(?:-->>)/i,
                /^(?:<<-->>)/i,
                /^(?:->)/i,
                /^(?:-->)/i,
                /^(?:-[x])/i,
                /^(?:--[x])/i,
                /^(?:-[\)])/i,
                /^(?:--[\)])/i,
                /^(?::(?:(?:no)?wrap)?[^#\n;]*)/i,
                /^(?::)/i,
                /^(?:\+)/i,
                /^(?:-)/i,
                /^(?:$)/i,
                /^(?:.)/i
              ],
              conditions: {
                acc_descr_multiline: { rules: [45, 46], inclusive: !1 },
                acc_descr: { rules: [43], inclusive: !1 },
                acc_title: { rules: [41], inclusive: !1 },
                ID: { rules: [2, 3, 12], inclusive: !1 },
                ALIAS: { rules: [2, 3, 13, 14], inclusive: !1 },
                LINE: { rules: [2, 3, 26], inclusive: !1 },
                INITIAL: {
                  rules: [
                    0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 42, 44, 47, 48, 49, 50,
                    51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68
                  ],
                  inclusive: !0
                }
              }
            }
            return Q
          })()
        ce.lexer = Z
        function ue() {
          this.yy = {}
        }
        return o(ue, 'Parser'), (ue.prototype = ce), (ce.Parser = ue), new ue()
      })()
      dP.parser = dP
      _de = dP
    })
  var FUe,
    $Ue,
    zUe,
    YS,
    Lde = N(() => {
      'use strict'
      Gt()
      yt()
      SS()
      pr()
      ci()
      ;(FUe = {
        SOLID: 0,
        DOTTED: 1,
        NOTE: 2,
        SOLID_CROSS: 3,
        DOTTED_CROSS: 4,
        SOLID_OPEN: 5,
        DOTTED_OPEN: 6,
        LOOP_START: 10,
        LOOP_END: 11,
        ALT_START: 12,
        ALT_ELSE: 13,
        ALT_END: 14,
        OPT_START: 15,
        OPT_END: 16,
        ACTIVE_START: 17,
        ACTIVE_END: 18,
        PAR_START: 19,
        PAR_AND: 20,
        PAR_END: 21,
        RECT_START: 22,
        RECT_END: 23,
        SOLID_POINT: 24,
        DOTTED_POINT: 25,
        AUTONUMBER: 26,
        CRITICAL_START: 27,
        CRITICAL_OPTION: 28,
        CRITICAL_END: 29,
        BREAK_START: 30,
        BREAK_END: 31,
        PAR_OVER_START: 32,
        BIDIRECTIONAL_SOLID: 33,
        BIDIRECTIONAL_DOTTED: 34
      }),
        ($Ue = { FILLED: 0, OPEN: 1 }),
        (zUe = { LEFTOF: 0, RIGHTOF: 1, OVER: 2 }),
        (YS = class {
          constructor() {
            this.state = new Tf(() => ({
              prevActor: void 0,
              actors: new Map(),
              createdActors: new Map(),
              destroyedActors: new Map(),
              boxes: [],
              messages: [],
              notes: [],
              sequenceNumbersEnabled: !1,
              wrapEnabled: void 0,
              currentBox: void 0,
              lastCreated: void 0,
              lastDestroyed: void 0
            }))
            this.setAccTitle = Ar
            this.setAccDescription = Lr
            this.setDiagramTitle = Or
            this.getAccTitle = Dr
            this.getAccDescription = Rr
            this.getDiagramTitle = Nr
            ;(this.apply = this.apply.bind(this)),
              (this.parseBoxData = this.parseBoxData.bind(this)),
              (this.parseMessage = this.parseMessage.bind(this)),
              this.clear(),
              this.setWrap(me().wrap),
              (this.LINETYPE = FUe),
              (this.ARROWTYPE = $Ue),
              (this.PLACEMENT = zUe)
          }
          static {
            o(this, 'SequenceDB')
          }
          addBox(e) {
            this.state.records.boxes.push({ name: e.text, wrap: e.wrap ?? this.autoWrap(), fill: e.color, actorKeys: [] }),
              (this.state.records.currentBox = this.state.records.boxes.slice(-1)[0])
          }
          addActor(e, r, n, i) {
            let a = this.state.records.currentBox,
              s = this.state.records.actors.get(e)
            if (s) {
              if (this.state.records.currentBox && s.box && this.state.records.currentBox !== s.box)
                throw new Error(
                  `A same participant should only be defined in one Box: ${s.name} can't be in '${s.box.name}' and in '${this.state.records.currentBox.name}' at the same time.`
                )
              if (((a = s.box ? s.box : this.state.records.currentBox), (s.box = a), s && r === s.name && n == null)) return
            }
            if (
              (n?.text == null && (n = { text: r, type: i }),
              (i == null || n.text == null) && (n = { text: r, type: i }),
              this.state.records.actors.set(e, {
                box: a,
                name: r,
                description: n.text,
                wrap: n.wrap ?? this.autoWrap(),
                prevActor: this.state.records.prevActor,
                links: {},
                properties: {},
                actorCnt: null,
                rectData: null,
                type: i ?? 'participant'
              }),
              this.state.records.prevActor)
            ) {
              let l = this.state.records.actors.get(this.state.records.prevActor)
              l && (l.nextActor = e)
            }
            this.state.records.currentBox && this.state.records.currentBox.actorKeys.push(e), (this.state.records.prevActor = e)
          }
          activationCount(e) {
            let r,
              n = 0
            if (!e) return 0
            for (r = 0; r < this.state.records.messages.length; r++)
              this.state.records.messages[r].type === this.LINETYPE.ACTIVE_START && this.state.records.messages[r].from === e && n++,
                this.state.records.messages[r].type === this.LINETYPE.ACTIVE_END && this.state.records.messages[r].from === e && n--
            return n
          }
          addMessage(e, r, n, i) {
            this.state.records.messages.push({ id: this.state.records.messages.length.toString(), from: e, to: r, message: n.text, wrap: n.wrap ?? this.autoWrap(), answer: i })
          }
          addSignal(e, r, n, i, a = !1) {
            if (i === this.LINETYPE.ACTIVE_END && this.activationCount(e ?? '') < 1) {
              let l = new Error('Trying to inactivate an inactive participant (' + e + ')')
              throw (
                ((l.hash = { text: '->>-', token: '->>-', line: '1', loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 }, expected: ["'ACTIVE_PARTICIPANT'"] }),
                l)
              )
            }
            return (
              this.state.records.messages.push({
                id: this.state.records.messages.length.toString(),
                from: e,
                to: r,
                message: n?.text ?? '',
                wrap: n?.wrap ?? this.autoWrap(),
                type: i,
                activate: a
              }),
              !0
            )
          }
          hasAtLeastOneBox() {
            return this.state.records.boxes.length > 0
          }
          hasAtLeastOneBoxWithTitle() {
            return this.state.records.boxes.some(e => e.name)
          }
          getMessages() {
            return this.state.records.messages
          }
          getBoxes() {
            return this.state.records.boxes
          }
          getActors() {
            return this.state.records.actors
          }
          getCreatedActors() {
            return this.state.records.createdActors
          }
          getDestroyedActors() {
            return this.state.records.destroyedActors
          }
          getActor(e) {
            return this.state.records.actors.get(e)
          }
          getActorKeys() {
            return [...this.state.records.actors.keys()]
          }
          enableSequenceNumbers() {
            this.state.records.sequenceNumbersEnabled = !0
          }
          disableSequenceNumbers() {
            this.state.records.sequenceNumbersEnabled = !1
          }
          showSequenceNumbers() {
            return this.state.records.sequenceNumbersEnabled
          }
          setWrap(e) {
            this.state.records.wrapEnabled = e
          }
          extractWrap(e) {
            if (e === void 0) return {}
            e = e.trim()
            let r = /^:?wrap:/.exec(e) !== null ? !0 : /^:?nowrap:/.exec(e) !== null ? !1 : void 0
            return { cleanedText: (r === void 0 ? e : e.replace(/^:?(?:no)?wrap:/, '')).trim(), wrap: r }
          }
          autoWrap() {
            return this.state.records.wrapEnabled !== void 0 ? this.state.records.wrapEnabled : me().sequence?.wrap ?? !1
          }
          clear() {
            this.state.reset(), kr()
          }
          parseMessage(e) {
            let r = e.trim(),
              { wrap: n, cleanedText: i } = this.extractWrap(r),
              a = { text: i, wrap: n }
            return X.debug(`parseMessage: ${JSON.stringify(a)}`), a
          }
          parseBoxData(e) {
            let r = /^((?:rgba?|hsla?)\s*\(.*\)|\w*)(.*)$/.exec(e),
              n = r?.[1] ? r[1].trim() : 'transparent',
              i = r?.[2] ? r[2].trim() : void 0
            if (window?.CSS) window.CSS.supports('color', n) || ((n = 'transparent'), (i = e.trim()))
            else {
              let l = new Option().style
              ;(l.color = n), l.color !== n && ((n = 'transparent'), (i = e.trim()))
            }
            let { wrap: a, cleanedText: s } = this.extractWrap(i)
            return { text: s ? wr(s, me()) : void 0, color: n, wrap: a }
          }
          addNote(e, r, n) {
            let i = { actor: e, placement: r, message: n.text, wrap: n.wrap ?? this.autoWrap() },
              a = [].concat(e, e)
            this.state.records.notes.push(i),
              this.state.records.messages.push({
                id: this.state.records.messages.length.toString(),
                from: a[0],
                to: a[1],
                message: n.text,
                wrap: n.wrap ?? this.autoWrap(),
                type: this.LINETYPE.NOTE,
                placement: r
              })
          }
          addLinks(e, r) {
            let n = this.getActor(e)
            try {
              let i = wr(r.text, me())
              ;(i = i.replace(/&equals;/g, '=')), (i = i.replace(/&amp;/g, '&'))
              let a = JSON.parse(i)
              this.insertLinks(n, a)
            } catch (i) {
              X.error('error while parsing actor link text', i)
            }
          }
          addALink(e, r) {
            let n = this.getActor(e)
            try {
              let i = {},
                a = wr(r.text, me()),
                s = a.indexOf('@')
              ;(a = a.replace(/&equals;/g, '=')), (a = a.replace(/&amp;/g, '&'))
              let l = a.slice(0, s - 1).trim(),
                u = a.slice(s + 1).trim()
              ;(i[l] = u), this.insertLinks(n, i)
            } catch (i) {
              X.error('error while parsing actor link text', i)
            }
          }
          insertLinks(e, r) {
            if (e.links == null) e.links = r
            else for (let n in r) e.links[n] = r[n]
          }
          addProperties(e, r) {
            let n = this.getActor(e)
            try {
              let i = wr(r.text, me()),
                a = JSON.parse(i)
              this.insertProperties(n, a)
            } catch (i) {
              X.error('error while parsing actor properties text', i)
            }
          }
          insertProperties(e, r) {
            if (e.properties == null) e.properties = r
            else for (let n in r) e.properties[n] = r[n]
          }
          boxEnd() {
            this.state.records.currentBox = void 0
          }
          addDetails(e, r) {
            let n = this.getActor(e),
              i = document.getElementById(r.text)
            try {
              let a = i.innerHTML,
                s = JSON.parse(a)
              s.properties && this.insertProperties(n, s.properties), s.links && this.insertLinks(n, s.links)
            } catch (a) {
              X.error('error while parsing actor details text', a)
            }
          }
          getActorProperty(e, r) {
            if (e?.properties !== void 0) return e.properties[r]
          }
          apply(e) {
            if (Array.isArray(e))
              e.forEach(r => {
                this.apply(r)
              })
            else
              switch (e.type) {
                case 'sequenceIndex':
                  this.state.records.messages.push({
                    id: this.state.records.messages.length.toString(),
                    from: void 0,
                    to: void 0,
                    message: { start: e.sequenceIndex, step: e.sequenceIndexStep, visible: e.sequenceVisible },
                    wrap: !1,
                    type: e.signalType
                  })
                  break
                case 'addParticipant':
                  this.addActor(e.actor, e.actor, e.description, e.draw)
                  break
                case 'createParticipant':
                  if (this.state.records.actors.has(e.actor))
                    throw new Error(
                      "It is not possible to have actors with the same id, even if one is destroyed before the next is created. Use 'AS' aliases to simulate the behavior"
                    )
                  ;(this.state.records.lastCreated = e.actor),
                    this.addActor(e.actor, e.actor, e.description, e.draw),
                    this.state.records.createdActors.set(e.actor, this.state.records.messages.length)
                  break
                case 'destroyParticipant':
                  ;(this.state.records.lastDestroyed = e.actor), this.state.records.destroyedActors.set(e.actor, this.state.records.messages.length)
                  break
                case 'activeStart':
                  this.addSignal(e.actor, void 0, void 0, e.signalType)
                  break
                case 'activeEnd':
                  this.addSignal(e.actor, void 0, void 0, e.signalType)
                  break
                case 'addNote':
                  this.addNote(e.actor, e.placement, e.text)
                  break
                case 'addLinks':
                  this.addLinks(e.actor, e.text)
                  break
                case 'addALink':
                  this.addALink(e.actor, e.text)
                  break
                case 'addProperties':
                  this.addProperties(e.actor, e.text)
                  break
                case 'addDetails':
                  this.addDetails(e.actor, e.text)
                  break
                case 'addMessage':
                  if (this.state.records.lastCreated) {
                    if (e.to !== this.state.records.lastCreated)
                      throw new Error(
                        'The created participant ' +
                          this.state.records.lastCreated.name +
                          ' does not have an associated creating message after its declaration. Please check the sequence diagram.'
                      )
                    this.state.records.lastCreated = void 0
                  } else if (this.state.records.lastDestroyed) {
                    if (e.to !== this.state.records.lastDestroyed && e.from !== this.state.records.lastDestroyed)
                      throw new Error(
                        'The destroyed participant ' +
                          this.state.records.lastDestroyed.name +
                          ' does not have an associated destroying message after its declaration. Please check the sequence diagram.'
                      )
                    this.state.records.lastDestroyed = void 0
                  }
                  this.addSignal(e.from, e.to, e.msg, e.signalType, e.activate)
                  break
                case 'boxStart':
                  this.addBox(e.boxData)
                  break
                case 'boxEnd':
                  this.boxEnd()
                  break
                case 'loopStart':
                  this.addSignal(void 0, void 0, e.loopText, e.signalType)
                  break
                case 'loopEnd':
                  this.addSignal(void 0, void 0, void 0, e.signalType)
                  break
                case 'rectStart':
                  this.addSignal(void 0, void 0, e.color, e.signalType)
                  break
                case 'rectEnd':
                  this.addSignal(void 0, void 0, void 0, e.signalType)
                  break
                case 'optStart':
                  this.addSignal(void 0, void 0, e.optText, e.signalType)
                  break
                case 'optEnd':
                  this.addSignal(void 0, void 0, void 0, e.signalType)
                  break
                case 'altStart':
                  this.addSignal(void 0, void 0, e.altText, e.signalType)
                  break
                case 'else':
                  this.addSignal(void 0, void 0, e.altText, e.signalType)
                  break
                case 'altEnd':
                  this.addSignal(void 0, void 0, void 0, e.signalType)
                  break
                case 'setAccTitle':
                  Ar(e.text)
                  break
                case 'parStart':
                  this.addSignal(void 0, void 0, e.parText, e.signalType)
                  break
                case 'and':
                  this.addSignal(void 0, void 0, e.parText, e.signalType)
                  break
                case 'parEnd':
                  this.addSignal(void 0, void 0, void 0, e.signalType)
                  break
                case 'criticalStart':
                  this.addSignal(void 0, void 0, e.criticalText, e.signalType)
                  break
                case 'option':
                  this.addSignal(void 0, void 0, e.optionText, e.signalType)
                  break
                case 'criticalEnd':
                  this.addSignal(void 0, void 0, void 0, e.signalType)
                  break
                case 'breakStart':
                  this.addSignal(void 0, void 0, e.breakText, e.signalType)
                  break
                case 'breakEnd':
                  this.addSignal(void 0, void 0, void 0, e.signalType)
                  break
              }
          }
          getConfig() {
            return me().sequence
          }
        })
    })
  var GUe,
    Rde,
    Nde = N(() => {
      'use strict'
      ;(GUe = o(
        t => `.actor {
    stroke: ${t.actorBorder};
    fill: ${t.actorBkg};
  }

  text.actor > tspan {
    fill: ${t.actorTextColor};
    stroke: none;
  }

  .actor-line {
    stroke: ${t.actorLineColor};
  }

  .messageLine0 {
    stroke-width: 1.5;
    stroke-dasharray: none;
    stroke: ${t.signalColor};
  }

  .messageLine1 {
    stroke-width: 1.5;
    stroke-dasharray: 2, 2;
    stroke: ${t.signalColor};
  }

  #arrowhead path {
    fill: ${t.signalColor};
    stroke: ${t.signalColor};
  }

  .sequenceNumber {
    fill: ${t.sequenceNumberColor};
  }

  #sequencenumber {
    fill: ${t.signalColor};
  }

  #crosshead path {
    fill: ${t.signalColor};
    stroke: ${t.signalColor};
  }

  .messageText {
    fill: ${t.signalTextColor};
    stroke: none;
  }

  .labelBox {
    stroke: ${t.labelBoxBorderColor};
    fill: ${t.labelBoxBkgColor};
  }

  .labelText, .labelText > tspan {
    fill: ${t.labelTextColor};
    stroke: none;
  }

  .loopText, .loopText > tspan {
    fill: ${t.loopTextColor};
    stroke: none;
  }

  .loopLine {
    stroke-width: 2px;
    stroke-dasharray: 2, 2;
    stroke: ${t.labelBoxBorderColor};
    fill: ${t.labelBoxBorderColor};
  }

  .note {
    //stroke: #decc93;
    stroke: ${t.noteBorderColor};
    fill: ${t.noteBkgColor};
  }

  .noteText, .noteText > tspan {
    fill: ${t.noteTextColor};
    stroke: none;
  }

  .activation0 {
    fill: ${t.activationBkgColor};
    stroke: ${t.activationBorderColor};
  }

  .activation1 {
    fill: ${t.activationBkgColor};
    stroke: ${t.activationBorderColor};
  }

  .activation2 {
    fill: ${t.activationBkgColor};
    stroke: ${t.activationBorderColor};
  }

  .actorPopupMenu {
    position: absolute;
  }

  .actorPopupMenuPanel {
    position: absolute;
    fill: ${t.actorBkg};
    box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
    filter: drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));
}
  .actor-man line {
    stroke: ${t.actorBorder};
    fill: ${t.actorBkg};
  }
  .actor-man circle, line {
    stroke: ${t.actorBorder};
    fill: ${t.actorBkg};
    stroke-width: 2px;
  }
`,
        'getStyles'
      )),
        (Rde = GUe)
    })
  var pP,
    Sf,
    Ide,
    Ode,
    VUe,
    Mde,
    mP,
    UUe,
    HUe,
    Mb,
    Fp,
    Pde,
    Yc,
    gP,
    WUe,
    qUe,
    YUe,
    XUe,
    jUe,
    KUe,
    QUe,
    Bde,
    ZUe,
    JUe,
    eHe,
    tHe,
    rHe,
    nHe,
    iHe,
    Fde,
    aHe,
    yP,
    sHe,
    di,
    $de = N(() => {
      'use strict'
      pr()
      t2()
      er()
      pP = Aa(Z0(), 1)
      mi()
      ;(Sf = 18 * 2),
        (Ide = 'actor-top'),
        (Ode = 'actor-bottom'),
        (VUe = 'actor-box'),
        (Mde = 'actor-man'),
        (mP = o(function (t, e) {
          return Nd(t, e)
        }, 'drawRect')),
        (UUe = o(function (t, e, r, n, i) {
          if (e.links === void 0 || e.links === null || Object.keys(e.links).length === 0) return { height: 0, width: 0 }
          let a = e.links,
            s = e.actorCnt,
            l = e.rectData
          var u = 'none'
          i && (u = 'block !important')
          let h = t.append('g')
          h.attr('id', 'actor' + s + '_popup'), h.attr('class', 'actorPopupMenu'), h.attr('display', u)
          var f = ''
          l.class !== void 0 && (f = ' ' + l.class)
          let d = l.width > r ? l.width : r,
            p = h.append('rect')
          if (
            (p.attr('class', 'actorPopupMenuPanel' + f),
            p.attr('x', l.x),
            p.attr('y', l.height),
            p.attr('fill', l.fill),
            p.attr('stroke', l.stroke),
            p.attr('width', d),
            p.attr('height', l.height),
            p.attr('rx', l.rx),
            p.attr('ry', l.ry),
            a != null)
          ) {
            var m = 20
            for (let v in a) {
              var g = h.append('a'),
                y = (0, pP.sanitizeUrl)(a[v])
              g.attr('xlink:href', y), g.attr('target', '_blank'), sHe(n)(v, g, l.x + 10, l.height + m, d, 20, { class: 'actor' }, n), (m += 30)
            }
          }
          return p.attr('height', m), { height: l.height + m, width: d }
        }, 'drawPopup')),
        (HUe = o(function (t) {
          return "var pu = document.getElementById('" + t + "'); if (pu != null) { pu.style.display = pu.style.display == 'block' ? 'none' : 'block'; }"
        }, 'popupMenuToggle')),
        (Mb = o(async function (t, e, r = null) {
          let n = t.append('foreignObject'),
            i = await Th(e.text, tr()),
            s = n.append('xhtml:div').attr('style', 'width: fit-content;').attr('xmlns', 'http://www.w3.org/1999/xhtml').html(i).node().getBoundingClientRect()
          if ((n.attr('height', Math.round(s.height)).attr('width', Math.round(s.width)), e.class === 'noteText')) {
            let l = t.node().firstChild
            l.setAttribute('height', s.height + 2 * e.textMargin)
            let u = l.getBBox()
            n.attr('x', Math.round(u.x + u.width / 2 - s.width / 2)).attr('y', Math.round(u.y + u.height / 2 - s.height / 2))
          } else if (r) {
            let { startx: l, stopx: u, starty: h } = r
            if (l > u) {
              let f = l
              ;(l = u), (u = f)
            }
            n.attr('x', Math.round(l + Math.abs(l - u) / 2 - s.width / 2)), e.class === 'loopText' ? n.attr('y', Math.round(h)) : n.attr('y', Math.round(h - s.height))
          }
          return [n]
        }, 'drawKatex')),
        (Fp = o(function (t, e) {
          let r = 0,
            n = 0,
            i = e.text.split(Ze.lineBreakRegex),
            [a, s] = zo(e.fontSize),
            l = [],
            u = 0,
            h = o(() => e.y, 'yfunc')
          if (e.valign !== void 0 && e.textMargin !== void 0 && e.textMargin > 0)
            switch (e.valign) {
              case 'top':
              case 'start':
                h = o(() => Math.round(e.y + e.textMargin), 'yfunc')
                break
              case 'middle':
              case 'center':
                h = o(() => Math.round(e.y + (r + n + e.textMargin) / 2), 'yfunc')
                break
              case 'bottom':
              case 'end':
                h = o(() => Math.round(e.y + (r + n + 2 * e.textMargin) - e.textMargin), 'yfunc')
                break
            }
          if (e.anchor !== void 0 && e.textMargin !== void 0 && e.width !== void 0)
            switch (e.anchor) {
              case 'left':
              case 'start':
                ;(e.x = Math.round(e.x + e.textMargin)), (e.anchor = 'start'), (e.dominantBaseline = 'middle'), (e.alignmentBaseline = 'middle')
                break
              case 'middle':
              case 'center':
                ;(e.x = Math.round(e.x + e.width / 2)), (e.anchor = 'middle'), (e.dominantBaseline = 'middle'), (e.alignmentBaseline = 'middle')
                break
              case 'right':
              case 'end':
                ;(e.x = Math.round(e.x + e.width - e.textMargin)), (e.anchor = 'end'), (e.dominantBaseline = 'middle'), (e.alignmentBaseline = 'middle')
                break
            }
          for (let [f, d] of i.entries()) {
            e.textMargin !== void 0 && e.textMargin === 0 && a !== void 0 && (u = f * a)
            let p = t.append('text')
            p.attr('x', e.x),
              p.attr('y', h()),
              e.anchor !== void 0 && p.attr('text-anchor', e.anchor).attr('dominant-baseline', e.dominantBaseline).attr('alignment-baseline', e.alignmentBaseline),
              e.fontFamily !== void 0 && p.style('font-family', e.fontFamily),
              s !== void 0 && p.style('font-size', s),
              e.fontWeight !== void 0 && p.style('font-weight', e.fontWeight),
              e.fill !== void 0 && p.attr('fill', e.fill),
              e.class !== void 0 && p.attr('class', e.class),
              e.dy !== void 0 ? p.attr('dy', e.dy) : u !== 0 && p.attr('dy', u)
            let m = d || C9
            if (e.tspan) {
              let g = p.append('tspan')
              g.attr('x', e.x), e.fill !== void 0 && g.attr('fill', e.fill), g.text(m)
            } else p.text(m)
            e.valign !== void 0 && e.textMargin !== void 0 && e.textMargin > 0 && ((n += (p._groups || p)[0][0].getBBox().height), (r = n)), l.push(p)
          }
          return l
        }, 'drawText')),
        (Pde = o(function (t, e) {
          function r(i, a, s, l, u) {
            return i + ',' + a + ' ' + (i + s) + ',' + a + ' ' + (i + s) + ',' + (a + l - u) + ' ' + (i + s - u * 1.2) + ',' + (a + l) + ' ' + i + ',' + (a + l)
          }
          o(r, 'genPoints')
          let n = t.append('polygon')
          return n.attr('points', r(e.x, e.y, e.width, e.height, 7)), n.attr('class', 'labelBox'), (e.y = e.y + e.height / 2), Fp(t, e), n
        }, 'drawLabel')),
        (Yc = -1),
        (gP = o((t, e, r, n) => {
          t.select &&
            r.forEach(i => {
              let a = e.get(i),
                s = t.select('#actor' + a.actorCnt)
              !n.mirrorActors && a.stopy ? s.attr('y2', a.stopy + a.height / 2) : n.mirrorActors && s.attr('y2', a.stopy)
            })
        }, 'fixLifeLineHeights')),
        (WUe = o(function (t, e, r, n) {
          let i = n ? e.stopy : e.starty,
            a = e.x + e.width / 2,
            s = i + e.height,
            l = t.append('g').lower()
          var u = l
          n ||
            (Yc++,
            Object.keys(e.links || {}).length && !r.forceMenus && u.attr('onclick', HUe(`actor${Yc}_popup`)).attr('cursor', 'pointer'),
            u
              .append('line')
              .attr('id', 'actor' + Yc)
              .attr('x1', a)
              .attr('y1', s)
              .attr('x2', a)
              .attr('y2', 2e3)
              .attr('class', 'actor-line 200')
              .attr('stroke-width', '0.5px')
              .attr('stroke', '#999')
              .attr('name', e.name),
            (u = l.append('g')),
            (e.actorCnt = Yc),
            e.links != null && u.attr('id', 'root-' + Yc))
          let h = Al()
          var f = 'actor'
          e.properties?.class ? (f = e.properties.class) : (h.fill = '#eaeaea'),
            n ? (f += ` ${Ode}`) : (f += ` ${Ide}`),
            (h.x = e.x),
            (h.y = i),
            (h.width = e.width),
            (h.height = e.height),
            (h.class = f),
            (h.rx = 3),
            (h.ry = 3),
            (h.name = e.name)
          let d = mP(u, h)
          if (((e.rectData = h), e.properties?.icon)) {
            let m = e.properties.icon.trim()
            m.charAt(0) === '@' ? KY(u, h.x + h.width - 20, h.y + 10, m.substr(1)) : jY(u, h.x + h.width - 20, h.y + 10, m)
          }
          yP(r, yi(e.description))(e.description, u, h.x, h.y, h.width, h.height, { class: `actor ${VUe}` }, r)
          let p = e.height
          if (d.node) {
            let m = d.node().getBBox()
            ;(e.height = m.height), (p = m.height)
          }
          return p
        }, 'drawActorTypeParticipant')),
        (qUe = o(function (t, e, r, n) {
          let i = n ? e.stopy : e.starty,
            a = e.x + e.width / 2,
            s = i + 80,
            l = t.append('g').lower()
          n ||
            (Yc++,
            l
              .append('line')
              .attr('id', 'actor' + Yc)
              .attr('x1', a)
              .attr('y1', s)
              .attr('x2', a)
              .attr('y2', 2e3)
              .attr('class', 'actor-line 200')
              .attr('stroke-width', '0.5px')
              .attr('stroke', '#999')
              .attr('name', e.name),
            (e.actorCnt = Yc))
          let u = t.append('g'),
            h = Mde
          n ? (h += ` ${Ode}`) : (h += ` ${Ide}`), u.attr('class', h), u.attr('name', e.name)
          let f = Al()
          ;(f.x = e.x),
            (f.y = i),
            (f.fill = '#eaeaea'),
            (f.width = e.width),
            (f.height = e.height),
            (f.class = 'actor'),
            (f.rx = 3),
            (f.ry = 3),
            u
              .append('line')
              .attr('id', 'actor-man-torso' + Yc)
              .attr('x1', a)
              .attr('y1', i + 25)
              .attr('x2', a)
              .attr('y2', i + 45),
            u
              .append('line')
              .attr('id', 'actor-man-arms' + Yc)
              .attr('x1', a - Sf / 2)
              .attr('y1', i + 33)
              .attr('x2', a + Sf / 2)
              .attr('y2', i + 33),
            u
              .append('line')
              .attr('x1', a - Sf / 2)
              .attr('y1', i + 60)
              .attr('x2', a)
              .attr('y2', i + 45),
            u
              .append('line')
              .attr('x1', a)
              .attr('y1', i + 45)
              .attr('x2', a + Sf / 2 - 2)
              .attr('y2', i + 60)
          let d = u.append('circle')
          d.attr('cx', e.x + e.width / 2), d.attr('cy', i + 10), d.attr('r', 15), d.attr('width', e.width), d.attr('height', e.height)
          let p = u.node().getBBox()
          return (e.height = p.height), yP(r, yi(e.description))(e.description, u, f.x, f.y + 35, f.width, f.height, { class: `actor ${Mde}` }, r), e.height
        }, 'drawActorTypeActor')),
        (YUe = o(async function (t, e, r, n) {
          switch (e.type) {
            case 'actor':
              return await qUe(t, e, r, n)
            case 'participant':
              return await WUe(t, e, r, n)
          }
        }, 'drawActor')),
        (XUe = o(function (t, e, r) {
          let i = t.append('g')
          Bde(i, e), e.name && yP(r)(e.name, i, e.x, e.y + r.boxTextMargin + (e.textMaxHeight || 0) / 2, e.width, 0, { class: 'text' }, r), i.lower()
        }, 'drawBox')),
        (jUe = o(function (t) {
          return t.append('g')
        }, 'anchorElement')),
        (KUe = o(function (t, e, r, n, i) {
          let a = Al(),
            s = e.anchored
          ;(a.x = e.startx), (a.y = e.starty), (a.class = 'activation' + (i % 3)), (a.width = e.stopx - e.startx), (a.height = r - e.starty), mP(s, a)
        }, 'drawActivation')),
        (QUe = o(async function (t, e, r, n) {
          let { boxMargin: i, boxTextMargin: a, labelBoxHeight: s, labelBoxWidth: l, messageFontFamily: u, messageFontSize: h, messageFontWeight: f } = n,
            d = t.append('g'),
            p = o(function (y, v, x, b) {
              return d.append('line').attr('x1', y).attr('y1', v).attr('x2', x).attr('y2', b).attr('class', 'loopLine')
            }, 'drawLoopLine')
          p(e.startx, e.starty, e.stopx, e.starty),
            p(e.stopx, e.starty, e.stopx, e.stopy),
            p(e.startx, e.stopy, e.stopx, e.stopy),
            p(e.startx, e.starty, e.startx, e.stopy),
            e.sections !== void 0 &&
              e.sections.forEach(function (y) {
                p(e.startx, y.y, e.stopx, y.y).style('stroke-dasharray', '3, 3')
              })
          let m = e2()
          ;(m.text = r),
            (m.x = e.startx),
            (m.y = e.starty),
            (m.fontFamily = u),
            (m.fontSize = h),
            (m.fontWeight = f),
            (m.anchor = 'middle'),
            (m.valign = 'middle'),
            (m.tspan = !1),
            (m.width = l || 50),
            (m.height = s || 20),
            (m.textMargin = a),
            (m.class = 'labelText'),
            Pde(d, m),
            (m = Fde()),
            (m.text = e.title),
            (m.x = e.startx + l / 2 + (e.stopx - e.startx) / 2),
            (m.y = e.starty + i + a),
            (m.anchor = 'middle'),
            (m.valign = 'middle'),
            (m.textMargin = a),
            (m.class = 'loopText'),
            (m.fontFamily = u),
            (m.fontSize = h),
            (m.fontWeight = f),
            (m.wrap = !0)
          let g = yi(m.text) ? await Mb(d, m, e) : Fp(d, m)
          if (e.sectionTitles !== void 0) {
            for (let [y, v] of Object.entries(e.sectionTitles))
              if (v.message) {
                ;(m.text = v.message),
                  (m.x = e.startx + (e.stopx - e.startx) / 2),
                  (m.y = e.sections[y].y + i + a),
                  (m.class = 'loopText'),
                  (m.anchor = 'middle'),
                  (m.valign = 'middle'),
                  (m.tspan = !1),
                  (m.fontFamily = u),
                  (m.fontSize = h),
                  (m.fontWeight = f),
                  (m.wrap = e.wrap),
                  yi(m.text) ? ((e.starty = e.sections[y].y), await Mb(d, m, e)) : Fp(d, m)
                let x = Math.round(g.map(b => (b._groups || b)[0][0].getBBox().height).reduce((b, T) => b + T))
                e.sections[y].height += x - (i + a)
              }
          }
          return (e.height = Math.round(e.stopy - e.starty)), d
        }, 'drawLoop')),
        (Bde = o(function (t, e) {
          iT(t, e)
        }, 'drawBackgroundRect')),
        (ZUe = o(function (t) {
          t.append('defs')
            .append('symbol')
            .attr('id', 'database')
            .attr('fill-rule', 'evenodd')
            .attr('clip-rule', 'evenodd')
            .append('path')
            .attr('transform', 'scale(.5)')
            .attr(
              'd',
              'M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z'
            )
        }, 'insertDatabaseIcon')),
        (JUe = o(function (t) {
          t.append('defs')
            .append('symbol')
            .attr('id', 'computer')
            .attr('width', '24')
            .attr('height', '24')
            .append('path')
            .attr('transform', 'scale(.5)')
            .attr('d', 'M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z')
        }, 'insertComputerIcon')),
        (eHe = o(function (t) {
          t.append('defs')
            .append('symbol')
            .attr('id', 'clock')
            .attr('width', '24')
            .attr('height', '24')
            .append('path')
            .attr('transform', 'scale(.5)')
            .attr(
              'd',
              'M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z'
            )
        }, 'insertClockIcon')),
        (tHe = o(function (t) {
          t.append('defs')
            .append('marker')
            .attr('id', 'arrowhead')
            .attr('refX', 7.9)
            .attr('refY', 5)
            .attr('markerUnits', 'userSpaceOnUse')
            .attr('markerWidth', 12)
            .attr('markerHeight', 12)
            .attr('orient', 'auto-start-reverse')
            .append('path')
            .attr('d', 'M -1 0 L 10 5 L 0 10 z')
        }, 'insertArrowHead')),
        (rHe = o(function (t) {
          t.append('defs')
            .append('marker')
            .attr('id', 'filled-head')
            .attr('refX', 15.5)
            .attr('refY', 7)
            .attr('markerWidth', 20)
            .attr('markerHeight', 28)
            .attr('orient', 'auto')
            .append('path')
            .attr('d', 'M 18,7 L9,13 L14,7 L9,1 Z')
        }, 'insertArrowFilledHead')),
        (nHe = o(function (t) {
          t.append('defs')
            .append('marker')
            .attr('id', 'sequencenumber')
            .attr('refX', 15)
            .attr('refY', 15)
            .attr('markerWidth', 60)
            .attr('markerHeight', 40)
            .attr('orient', 'auto')
            .append('circle')
            .attr('cx', 15)
            .attr('cy', 15)
            .attr('r', 6)
        }, 'insertSequenceNumber')),
        (iHe = o(function (t) {
          t.append('defs')
            .append('marker')
            .attr('id', 'crosshead')
            .attr('markerWidth', 15)
            .attr('markerHeight', 8)
            .attr('orient', 'auto')
            .attr('refX', 4)
            .attr('refY', 4.5)
            .append('path')
            .attr('fill', 'none')
            .attr('stroke', '#000000')
            .style('stroke-dasharray', '0, 0')
            .attr('stroke-width', '1pt')
            .attr('d', 'M 1,2 L 6,7 M 6,2 L 1,7')
        }, 'insertArrowCrossHead')),
        (Fde = o(function () {
          return { x: 0, y: 0, fill: void 0, anchor: void 0, style: '#666', width: void 0, height: void 0, textMargin: 0, rx: 0, ry: 0, tspan: !0, valign: void 0 }
        }, 'getTextObj')),
        (aHe = o(function () {
          return { x: 0, y: 0, fill: '#EDF2AE', stroke: '#666', width: 100, anchor: 'start', height: 100, rx: 0, ry: 0 }
        }, 'getNoteRect')),
        (yP = (function () {
          function t(a, s, l, u, h, f, d) {
            let p = s
              .append('text')
              .attr('x', l + h / 2)
              .attr('y', u + f / 2 + 5)
              .style('text-anchor', 'middle')
              .text(a)
            i(p, d)
          }
          o(t, 'byText')
          function e(a, s, l, u, h, f, d, p) {
            let { actorFontSize: m, actorFontFamily: g, actorFontWeight: y } = p,
              [v, x] = zo(m),
              b = a.split(Ze.lineBreakRegex)
            for (let T = 0; T < b.length; T++) {
              let S = T * v - (v * (b.length - 1)) / 2,
                w = s
                  .append('text')
                  .attr('x', l + h / 2)
                  .attr('y', u)
                  .style('text-anchor', 'middle')
                  .style('font-size', x)
                  .style('font-weight', y)
                  .style('font-family', g)
              w
                .append('tspan')
                .attr('x', l + h / 2)
                .attr('dy', S)
                .text(b[T]),
                w
                  .attr('y', u + f / 2)
                  .attr('dominant-baseline', 'central')
                  .attr('alignment-baseline', 'central'),
                i(w, d)
            }
          }
          o(e, 'byTspan')
          function r(a, s, l, u, h, f, d, p) {
            let m = s.append('switch'),
              y = m
                .append('foreignObject')
                .attr('x', l)
                .attr('y', u)
                .attr('width', h)
                .attr('height', f)
                .append('xhtml:div')
                .style('display', 'table')
                .style('height', '100%')
                .style('width', '100%')
            y.append('div').style('display', 'table-cell').style('text-align', 'center').style('vertical-align', 'middle').text(a), e(a, m, l, u, h, f, d, p), i(y, d)
          }
          o(r, 'byFo')
          async function n(a, s, l, u, h, f, d, p) {
            let m = await hd(a, tr()),
              g = s.append('switch'),
              v = g
                .append('foreignObject')
                .attr('x', l + h / 2 - m.width / 2)
                .attr('y', u + f / 2 - m.height / 2)
                .attr('width', m.width)
                .attr('height', m.height)
                .append('xhtml:div')
                .style('height', '100%')
                .style('width', '100%')
            v
              .append('div')
              .style('text-align', 'center')
              .style('vertical-align', 'middle')
              .html(await Th(a, tr())),
              e(a, g, l, u, h, f, d, p),
              i(v, d)
          }
          o(n, 'byKatex')
          function i(a, s) {
            for (let l in s) s.hasOwnProperty(l) && a.attr(l, s[l])
          }
          return (
            o(i, '_setTextAttrs'),
            function (a, s = !1) {
              return s ? n : a.textPlacement === 'fo' ? r : a.textPlacement === 'old' ? t : e
            }
          )
        })()),
        (sHe = (function () {
          function t(i, a, s, l, u, h, f) {
            let d = a.append('text').attr('x', s).attr('y', l).style('text-anchor', 'start').text(i)
            n(d, f)
          }
          o(t, 'byText')
          function e(i, a, s, l, u, h, f, d) {
            let { actorFontSize: p, actorFontFamily: m, actorFontWeight: g } = d,
              y = i.split(Ze.lineBreakRegex)
            for (let v = 0; v < y.length; v++) {
              let x = v * p - (p * (y.length - 1)) / 2,
                b = a.append('text').attr('x', s).attr('y', l).style('text-anchor', 'start').style('font-size', p).style('font-weight', g).style('font-family', m)
              b.append('tspan').attr('x', s).attr('dy', x).text(y[v]),
                b
                  .attr('y', l + h / 2)
                  .attr('dominant-baseline', 'central')
                  .attr('alignment-baseline', 'central'),
                n(b, f)
            }
          }
          o(e, 'byTspan')
          function r(i, a, s, l, u, h, f, d) {
            let p = a.append('switch'),
              g = p
                .append('foreignObject')
                .attr('x', s)
                .attr('y', l)
                .attr('width', u)
                .attr('height', h)
                .append('xhtml:div')
                .style('display', 'table')
                .style('height', '100%')
                .style('width', '100%')
            g.append('div').style('display', 'table-cell').style('text-align', 'center').style('vertical-align', 'middle').text(i), e(i, p, s, l, u, h, f, d), n(g, f)
          }
          o(r, 'byFo')
          function n(i, a) {
            for (let s in a) a.hasOwnProperty(s) && i.attr(s, a[s])
          }
          return (
            o(n, '_setTextAttrs'),
            function (i) {
              return i.textPlacement === 'fo' ? r : i.textPlacement === 'old' ? t : e
            }
          )
        })()),
        (di = {
          drawRect: mP,
          drawText: Fp,
          drawLabel: Pde,
          drawActor: YUe,
          drawBox: XUe,
          drawPopup: UUe,
          anchorElement: jUe,
          drawActivation: KUe,
          drawLoop: QUe,
          drawBackgroundRect: Bde,
          insertArrowHead: tHe,
          insertArrowFilledHead: rHe,
          insertSequenceNumber: nHe,
          insertArrowCrossHead: iHe,
          insertDatabaseIcon: ZUe,
          insertComputerIcon: JUe,
          insertClockIcon: eHe,
          getTextObj: Fde,
          getNoteRect: aHe,
          fixLifeLineHeights: gP,
          sanitizeUrl: pP.sanitizeUrl
        })
    })
  async function lHe(t, e) {
    rt.bumpVerticalPos(10)
    let { startx: r, stopx: n, message: i } = e,
      a = Ze.splitBreaks(i).length,
      s = yi(i),
      l = s ? await hd(i, me()) : Vt.calculateTextDimensions(i, $p(Ne))
    if (!s) {
      let d = l.height / a
      ;(e.height += d), rt.bumpVerticalPos(d)
    }
    let u,
      h = l.height - 10,
      f = l.width
    if (r === n) {
      ;(u = rt.getVerticalPos() + h), Ne.rightAngles || ((h += Ne.boxMargin), (u = rt.getVerticalPos() + h)), (h += 30)
      let d = Ze.getMax(f / 2, Ne.width / 2)
      rt.insert(r - d, rt.getVerticalPos() - 10 + h, n + d, rt.getVerticalPos() + 30 + h)
    } else (h += Ne.boxMargin), (u = rt.getVerticalPos() + h), rt.insert(r, u - 10, n, u)
    return rt.bumpVerticalPos(h), (e.height += h), (e.stopy = e.starty + e.height), rt.insert(e.fromBounds, e.starty, e.toBounds, e.stopy), u
  }
  function Xc(t, e, r, n, i) {
    rt.bumpVerticalPos(r)
    let a = n
    if (e.id && e.message && t[e.id]) {
      let s = t[e.id].width,
        l = $p(Ne)
      ;(e.message = Vt.wrapLabel(`[${e.message}]`, s - 2 * Ne.wrapPadding, l)), (e.width = s), (e.wrap = !0)
      let u = Vt.calculateTextDimensions(e.message, l),
        h = Ze.getMax(u.height, Ne.labelBoxHeight)
      ;(a = n + h), X.debug(`${h} - ${e.message}`)
    }
    i(e), rt.bumpVerticalPos(a)
  }
  function hHe(t, e, r, n, i, a, s) {
    function l(h, f) {
      h.x < i.get(t.from).x
        ? (rt.insert(e.stopx - f, e.starty, e.startx, e.stopy + h.height / 2 + Ne.noteMargin), (e.stopx = e.stopx + f))
        : (rt.insert(e.startx, e.starty, e.stopx + f, e.stopy + h.height / 2 + Ne.noteMargin), (e.stopx = e.stopx - f))
    }
    o(l, 'receiverAdjustment')
    function u(h, f) {
      h.x < i.get(t.to).x
        ? (rt.insert(e.startx - f, e.starty, e.stopx, e.stopy + h.height / 2 + Ne.noteMargin), (e.startx = e.startx + f))
        : (rt.insert(e.stopx, e.starty, e.startx + f, e.stopy + h.height / 2 + Ne.noteMargin), (e.startx = e.startx - f))
    }
    if ((o(u, 'senderAdjustment'), a.get(t.to) == n)) {
      let h = i.get(t.to),
        f = h.type == 'actor' ? Sf / 2 + 3 : h.width / 2 + 3
      l(h, f), (h.starty = r - h.height / 2), rt.bumpVerticalPos(h.height / 2)
    } else if (s.get(t.from) == n) {
      let h = i.get(t.from)
      if (Ne.mirrorActors) {
        let f = h.type == 'actor' ? Sf / 2 : h.width / 2
        u(h, f)
      }
      ;(h.stopy = r - h.height / 2), rt.bumpVerticalPos(h.height / 2)
    } else if (s.get(t.to) == n) {
      let h = i.get(t.to)
      if (Ne.mirrorActors) {
        let f = h.type == 'actor' ? Sf / 2 + 3 : h.width / 2 + 3
        l(h, f)
      }
      ;(h.stopy = r - h.height / 2), rt.bumpVerticalPos(h.height / 2)
    }
  }
  async function dHe(t, e, r) {
    let n = {}
    for (let i of e)
      if (t.get(i.to) && t.get(i.from)) {
        let a = t.get(i.to)
        if ((i.placement === r.db.PLACEMENT.LEFTOF && !a.prevActor) || (i.placement === r.db.PLACEMENT.RIGHTOF && !a.nextActor)) continue
        let s = i.placement !== void 0,
          l = !s,
          u = s ? O1(Ne) : $p(Ne),
          h = i.wrap ? Vt.wrapLabel(i.message, Ne.width - 2 * Ne.wrapPadding, u) : i.message,
          d = (yi(h) ? await hd(i.message, me()) : Vt.calculateTextDimensions(h, u)).width + 2 * Ne.wrapPadding
        l && i.from === a.nextActor
          ? (n[i.to] = Ze.getMax(n[i.to] || 0, d))
          : l && i.from === a.prevActor
            ? (n[i.from] = Ze.getMax(n[i.from] || 0, d))
            : l && i.from === i.to
              ? ((n[i.from] = Ze.getMax(n[i.from] || 0, d / 2)), (n[i.to] = Ze.getMax(n[i.to] || 0, d / 2)))
              : i.placement === r.db.PLACEMENT.RIGHTOF
                ? (n[i.from] = Ze.getMax(n[i.from] || 0, d))
                : i.placement === r.db.PLACEMENT.LEFTOF
                  ? (n[a.prevActor] = Ze.getMax(n[a.prevActor] || 0, d))
                  : i.placement === r.db.PLACEMENT.OVER &&
                    (a.prevActor && (n[a.prevActor] = Ze.getMax(n[a.prevActor] || 0, d / 2)), a.nextActor && (n[i.from] = Ze.getMax(n[i.from] || 0, d / 2)))
      }
    return X.debug('maxMessageWidthPerActor:', n), n
  }
  async function mHe(t, e, r) {
    let n = 0
    for (let a of t.keys()) {
      let s = t.get(a)
      s.wrap && (s.description = Vt.wrapLabel(s.description, Ne.width - 2 * Ne.wrapPadding, vP(Ne)))
      let l = yi(s.description) ? await hd(s.description, me()) : Vt.calculateTextDimensions(s.description, vP(Ne))
      ;(s.width = s.wrap ? Ne.width : Ze.getMax(Ne.width, l.width + 2 * Ne.wrapPadding)),
        (s.height = s.wrap ? Ze.getMax(l.height, Ne.height) : Ne.height),
        (n = Ze.getMax(n, s.height))
    }
    for (let a in e) {
      let s = t.get(a)
      if (!s) continue
      let l = t.get(s.nextActor)
      if (!l) {
        let d = e[a] + Ne.actorMargin - s.width / 2
        s.margin = Ze.getMax(d, Ne.actorMargin)
        continue
      }
      let h = e[a] + Ne.actorMargin - s.width / 2 - l.width / 2
      s.margin = Ze.getMax(h, Ne.actorMargin)
    }
    let i = 0
    return (
      r.forEach(a => {
        let s = $p(Ne),
          l = a.actorKeys.reduce((f, d) => (f += t.get(d).width + (t.get(d).margin || 0)), 0)
        ;(l -= 2 * Ne.boxTextMargin), a.wrap && (a.name = Vt.wrapLabel(a.name, l - 2 * Ne.wrapPadding, s))
        let u = Vt.calculateTextDimensions(a.name, s)
        i = Ze.getMax(u.height, i)
        let h = Ze.getMax(l, u.width + 2 * Ne.wrapPadding)
        if (((a.margin = Ne.boxTextMargin), l < h)) {
          let f = (h - l) / 2
          a.margin += f
        }
      }),
      r.forEach(a => (a.textMaxHeight = i)),
      Ze.getMax(n, Ne.height)
    )
  }
  var Ne,
    rt,
    oHe,
    $p,
    O1,
    vP,
    cHe,
    uHe,
    xP,
    Gde,
    Vde,
    XS,
    zde,
    fHe,
    pHe,
    gHe,
    yHe,
    vHe,
    Ude,
    Hde = N(() => {
      'use strict'
      fr()
      $de()
      yt()
      pr()
      pr()
      t2()
      Gt()
      g0()
      er()
      xi()
      ;(Ne = {}),
        (rt = {
          data: { startx: void 0, stopx: void 0, starty: void 0, stopy: void 0 },
          verticalPos: 0,
          sequenceItems: [],
          activations: [],
          models: {
            getHeight: o(function () {
              return (
                Math.max.apply(null, this.actors.length === 0 ? [0] : this.actors.map(t => t.height || 0)) +
                (this.loops.length === 0 ? 0 : this.loops.map(t => t.height || 0).reduce((t, e) => t + e)) +
                (this.messages.length === 0 ? 0 : this.messages.map(t => t.height || 0).reduce((t, e) => t + e)) +
                (this.notes.length === 0 ? 0 : this.notes.map(t => t.height || 0).reduce((t, e) => t + e))
              )
            }, 'getHeight'),
            clear: o(function () {
              ;(this.actors = []), (this.boxes = []), (this.loops = []), (this.messages = []), (this.notes = [])
            }, 'clear'),
            addBox: o(function (t) {
              this.boxes.push(t)
            }, 'addBox'),
            addActor: o(function (t) {
              this.actors.push(t)
            }, 'addActor'),
            addLoop: o(function (t) {
              this.loops.push(t)
            }, 'addLoop'),
            addMessage: o(function (t) {
              this.messages.push(t)
            }, 'addMessage'),
            addNote: o(function (t) {
              this.notes.push(t)
            }, 'addNote'),
            lastActor: o(function () {
              return this.actors[this.actors.length - 1]
            }, 'lastActor'),
            lastLoop: o(function () {
              return this.loops[this.loops.length - 1]
            }, 'lastLoop'),
            lastMessage: o(function () {
              return this.messages[this.messages.length - 1]
            }, 'lastMessage'),
            lastNote: o(function () {
              return this.notes[this.notes.length - 1]
            }, 'lastNote'),
            actors: [],
            boxes: [],
            loops: [],
            messages: [],
            notes: []
          },
          init: o(function () {
            ;(this.sequenceItems = []),
              (this.activations = []),
              this.models.clear(),
              (this.data = { startx: void 0, stopx: void 0, starty: void 0, stopy: void 0 }),
              (this.verticalPos = 0),
              Vde(me())
          }, 'init'),
          updateVal: o(function (t, e, r, n) {
            t[e] === void 0 ? (t[e] = r) : (t[e] = n(r, t[e]))
          }, 'updateVal'),
          updateBounds: o(function (t, e, r, n) {
            let i = this,
              a = 0
            function s(l) {
              return o(function (h) {
                a++
                let f = i.sequenceItems.length - a + 1
                i.updateVal(h, 'starty', e - f * Ne.boxMargin, Math.min),
                  i.updateVal(h, 'stopy', n + f * Ne.boxMargin, Math.max),
                  i.updateVal(rt.data, 'startx', t - f * Ne.boxMargin, Math.min),
                  i.updateVal(rt.data, 'stopx', r + f * Ne.boxMargin, Math.max),
                  l !== 'activation' &&
                    (i.updateVal(h, 'startx', t - f * Ne.boxMargin, Math.min),
                    i.updateVal(h, 'stopx', r + f * Ne.boxMargin, Math.max),
                    i.updateVal(rt.data, 'starty', e - f * Ne.boxMargin, Math.min),
                    i.updateVal(rt.data, 'stopy', n + f * Ne.boxMargin, Math.max))
              }, 'updateItemBounds')
            }
            o(s, 'updateFn'), this.sequenceItems.forEach(s()), this.activations.forEach(s('activation'))
          }, 'updateBounds'),
          insert: o(function (t, e, r, n) {
            let i = Ze.getMin(t, r),
              a = Ze.getMax(t, r),
              s = Ze.getMin(e, n),
              l = Ze.getMax(e, n)
            this.updateVal(rt.data, 'startx', i, Math.min),
              this.updateVal(rt.data, 'starty', s, Math.min),
              this.updateVal(rt.data, 'stopx', a, Math.max),
              this.updateVal(rt.data, 'stopy', l, Math.max),
              this.updateBounds(i, s, a, l)
          }, 'insert'),
          newActivation: o(function (t, e, r) {
            let n = r.get(t.from),
              i = XS(t.from).length || 0,
              a = n.x + n.width / 2 + ((i - 1) * Ne.activationWidth) / 2
            this.activations.push({ startx: a, starty: this.verticalPos + 2, stopx: a + Ne.activationWidth, stopy: void 0, actor: t.from, anchored: di.anchorElement(e) })
          }, 'newActivation'),
          endActivation: o(function (t) {
            let e = this.activations
              .map(function (r) {
                return r.actor
              })
              .lastIndexOf(t.from)
            return this.activations.splice(e, 1)[0]
          }, 'endActivation'),
          createLoop: o(function (t = { message: void 0, wrap: !1, width: void 0 }, e) {
            return { startx: void 0, starty: this.verticalPos, stopx: void 0, stopy: void 0, title: t.message, wrap: t.wrap, width: t.width, height: 0, fill: e }
          }, 'createLoop'),
          newLoop: o(function (t = { message: void 0, wrap: !1, width: void 0 }, e) {
            this.sequenceItems.push(this.createLoop(t, e))
          }, 'newLoop'),
          endLoop: o(function () {
            return this.sequenceItems.pop()
          }, 'endLoop'),
          isLoopOverlap: o(function () {
            return this.sequenceItems.length ? this.sequenceItems[this.sequenceItems.length - 1].overlap : !1
          }, 'isLoopOverlap'),
          addSectionToLoop: o(function (t) {
            let e = this.sequenceItems.pop()
            ;(e.sections = e.sections || []),
              (e.sectionTitles = e.sectionTitles || []),
              e.sections.push({ y: rt.getVerticalPos(), height: 0 }),
              e.sectionTitles.push(t),
              this.sequenceItems.push(e)
          }, 'addSectionToLoop'),
          saveVerticalPos: o(function () {
            this.isLoopOverlap() && (this.savedVerticalPos = this.verticalPos)
          }, 'saveVerticalPos'),
          resetVerticalPos: o(function () {
            this.isLoopOverlap() && (this.verticalPos = this.savedVerticalPos)
          }, 'resetVerticalPos'),
          bumpVerticalPos: o(function (t) {
            ;(this.verticalPos = this.verticalPos + t), (this.data.stopy = Ze.getMax(this.data.stopy, this.verticalPos))
          }, 'bumpVerticalPos'),
          getVerticalPos: o(function () {
            return this.verticalPos
          }, 'getVerticalPos'),
          getBounds: o(function () {
            return { bounds: this.data, models: this.models }
          }, 'getBounds')
        }),
        (oHe = o(async function (t, e) {
          rt.bumpVerticalPos(Ne.boxMargin), (e.height = Ne.boxMargin), (e.starty = rt.getVerticalPos())
          let r = Al()
          ;(r.x = e.startx), (r.y = e.starty), (r.width = e.width || Ne.width), (r.class = 'note')
          let n = t.append('g'),
            i = di.drawRect(n, r),
            a = e2()
          ;(a.x = e.startx),
            (a.y = e.starty),
            (a.width = r.width),
            (a.dy = '1em'),
            (a.text = e.message),
            (a.class = 'noteText'),
            (a.fontFamily = Ne.noteFontFamily),
            (a.fontSize = Ne.noteFontSize),
            (a.fontWeight = Ne.noteFontWeight),
            (a.anchor = Ne.noteAlign),
            (a.textMargin = Ne.noteMargin),
            (a.valign = 'center')
          let s = yi(a.text) ? await Mb(n, a) : Fp(n, a),
            l = Math.round(s.map(u => (u._groups || u)[0][0].getBBox().height).reduce((u, h) => u + h))
          i.attr('height', l + 2 * Ne.noteMargin),
            (e.height += l + 2 * Ne.noteMargin),
            rt.bumpVerticalPos(l + 2 * Ne.noteMargin),
            (e.stopy = e.starty + l + 2 * Ne.noteMargin),
            (e.stopx = e.startx + r.width),
            rt.insert(e.startx, e.starty, e.stopx, e.stopy),
            rt.models.addNote(e)
        }, 'drawNote')),
        ($p = o(t => ({ fontFamily: t.messageFontFamily, fontSize: t.messageFontSize, fontWeight: t.messageFontWeight }), 'messageFont')),
        (O1 = o(t => ({ fontFamily: t.noteFontFamily, fontSize: t.noteFontSize, fontWeight: t.noteFontWeight }), 'noteFont')),
        (vP = o(t => ({ fontFamily: t.actorFontFamily, fontSize: t.actorFontSize, fontWeight: t.actorFontWeight }), 'actorFont'))
      o(lHe, 'boundMessage')
      ;(cHe = o(async function (t, e, r, n) {
        let { startx: i, stopx: a, starty: s, message: l, type: u, sequenceIndex: h, sequenceVisible: f } = e,
          d = Vt.calculateTextDimensions(l, $p(Ne)),
          p = e2()
        ;(p.x = i),
          (p.y = s + 10),
          (p.width = a - i),
          (p.class = 'messageText'),
          (p.dy = '1em'),
          (p.text = l),
          (p.fontFamily = Ne.messageFontFamily),
          (p.fontSize = Ne.messageFontSize),
          (p.fontWeight = Ne.messageFontWeight),
          (p.anchor = Ne.messageAlign),
          (p.valign = 'center'),
          (p.textMargin = Ne.wrapPadding),
          (p.tspan = !1),
          yi(p.text) ? await Mb(t, p, { startx: i, stopx: a, starty: r }) : Fp(t, p)
        let m = d.width,
          g
        i === a
          ? Ne.rightAngles
            ? (g = t.append('path').attr('d', `M  ${i},${r} H ${i + Ze.getMax(Ne.width / 2, m / 2)} V ${r + 25} H ${i}`))
            : (g = t.append('path').attr('d', 'M ' + i + ',' + r + ' C ' + (i + 60) + ',' + (r - 10) + ' ' + (i + 60) + ',' + (r + 30) + ' ' + i + ',' + (r + 20)))
          : ((g = t.append('line')), g.attr('x1', i), g.attr('y1', r), g.attr('x2', a), g.attr('y2', r)),
          u === n.db.LINETYPE.DOTTED ||
          u === n.db.LINETYPE.DOTTED_CROSS ||
          u === n.db.LINETYPE.DOTTED_POINT ||
          u === n.db.LINETYPE.DOTTED_OPEN ||
          u === n.db.LINETYPE.BIDIRECTIONAL_DOTTED
            ? (g.style('stroke-dasharray', '3, 3'), g.attr('class', 'messageLine1'))
            : g.attr('class', 'messageLine0')
        let y = ''
        Ne.arrowMarkerAbsolute && (y = mu(!0)),
          g.attr('stroke-width', 2),
          g.attr('stroke', 'none'),
          g.style('fill', 'none'),
          (u === n.db.LINETYPE.SOLID || u === n.db.LINETYPE.DOTTED) && g.attr('marker-end', 'url(' + y + '#arrowhead)'),
          (u === n.db.LINETYPE.BIDIRECTIONAL_SOLID || u === n.db.LINETYPE.BIDIRECTIONAL_DOTTED) &&
            (g.attr('marker-start', 'url(' + y + '#arrowhead)'), g.attr('marker-end', 'url(' + y + '#arrowhead)')),
          (u === n.db.LINETYPE.SOLID_POINT || u === n.db.LINETYPE.DOTTED_POINT) && g.attr('marker-end', 'url(' + y + '#filled-head)'),
          (u === n.db.LINETYPE.SOLID_CROSS || u === n.db.LINETYPE.DOTTED_CROSS) && g.attr('marker-end', 'url(' + y + '#crosshead)'),
          (f || Ne.showSequenceNumbers) &&
            (g.attr('marker-start', 'url(' + y + '#sequencenumber)'),
            t
              .append('text')
              .attr('x', i)
              .attr('y', r + 4)
              .attr('font-family', 'sans-serif')
              .attr('font-size', '12px')
              .attr('text-anchor', 'middle')
              .attr('class', 'sequenceNumber')
              .text(h))
      }, 'drawMessage')),
        (uHe = o(function (t, e, r, n, i, a, s) {
          let l = 0,
            u = 0,
            h,
            f = 0
          for (let d of n) {
            let p = e.get(d),
              m = p.box
            h && h != m && (s || rt.models.addBox(h), (u += Ne.boxMargin + h.margin)),
              m && m != h && (s || ((m.x = l + u), (m.y = i)), (u += m.margin)),
              (p.width = p.width || Ne.width),
              (p.height = Ze.getMax(p.height || Ne.height, Ne.height)),
              (p.margin = p.margin || Ne.actorMargin),
              (f = Ze.getMax(f, p.height)),
              r.get(p.name) && (u += p.width / 2),
              (p.x = l + u),
              (p.starty = rt.getVerticalPos()),
              rt.insert(p.x, i, p.x + p.width, p.height),
              (l += p.width + u),
              p.box && (p.box.width = l + m.margin - p.box.x),
              (u = p.margin),
              (h = p.box),
              rt.models.addActor(p)
          }
          h && !s && rt.models.addBox(h), rt.bumpVerticalPos(f)
        }, 'addActorRenderingData')),
        (xP = o(async function (t, e, r, n) {
          if (n) {
            let i = 0
            rt.bumpVerticalPos(Ne.boxMargin * 2)
            for (let a of r) {
              let s = e.get(a)
              s.stopy || (s.stopy = rt.getVerticalPos())
              let l = await di.drawActor(t, s, Ne, !0)
              i = Ze.getMax(i, l)
            }
            rt.bumpVerticalPos(i + Ne.boxMargin)
          } else
            for (let i of r) {
              let a = e.get(i)
              await di.drawActor(t, a, Ne, !1)
            }
        }, 'drawActors')),
        (Gde = o(function (t, e, r, n) {
          let i = 0,
            a = 0
          for (let s of r) {
            let l = e.get(s),
              u = pHe(l),
              h = di.drawPopup(t, l, u, Ne, Ne.forceMenus, n)
            h.height > i && (i = h.height), h.width + l.x > a && (a = h.width + l.x)
          }
          return { maxHeight: i, maxWidth: a }
        }, 'drawActorsPopup')),
        (Vde = o(function (t) {
          Un(Ne, t),
            t.fontFamily && (Ne.actorFontFamily = Ne.noteFontFamily = Ne.messageFontFamily = t.fontFamily),
            t.fontSize && (Ne.actorFontSize = Ne.noteFontSize = Ne.messageFontSize = t.fontSize),
            t.fontWeight && (Ne.actorFontWeight = Ne.noteFontWeight = Ne.messageFontWeight = t.fontWeight)
        }, 'setConf')),
        (XS = o(function (t) {
          return rt.activations.filter(function (e) {
            return e.actor === t
          })
        }, 'actorActivations')),
        (zde = o(function (t, e) {
          let r = e.get(t),
            n = XS(t),
            i = n.reduce(
              function (s, l) {
                return Ze.getMin(s, l.startx)
              },
              r.x + r.width / 2 - 1
            ),
            a = n.reduce(
              function (s, l) {
                return Ze.getMax(s, l.stopx)
              },
              r.x + r.width / 2 + 1
            )
          return [i, a]
        }, 'activationBounds'))
      o(Xc, 'adjustLoopHeightForWrap')
      o(hHe, 'adjustCreatedDestroyedData')
      fHe = o(async function (t, e, r, n) {
        let { securityLevel: i, sequence: a } = me()
        Ne = a
        let s
        i === 'sandbox' && (s = Ge('#i' + e))
        let l = i === 'sandbox' ? Ge(s.nodes()[0].contentDocument.body) : Ge('body'),
          u = i === 'sandbox' ? s.nodes()[0].contentDocument : document
        rt.init(), X.debug(n.db)
        let h = i === 'sandbox' ? l.select(`[id="${e}"]`) : Ge(`[id="${e}"]`),
          f = n.db.getActors(),
          d = n.db.getCreatedActors(),
          p = n.db.getDestroyedActors(),
          m = n.db.getBoxes(),
          g = n.db.getActorKeys(),
          y = n.db.getMessages(),
          v = n.db.getDiagramTitle(),
          x = n.db.hasAtLeastOneBox(),
          b = n.db.hasAtLeastOneBoxWithTitle(),
          T = await dHe(f, y, n)
        if (
          ((Ne.height = await mHe(f, T, m)),
          di.insertComputerIcon(h),
          di.insertDatabaseIcon(h),
          di.insertClockIcon(h),
          x && (rt.bumpVerticalPos(Ne.boxMargin), b && rt.bumpVerticalPos(m[0].textMaxHeight)),
          Ne.hideUnusedParticipants === !0)
        ) {
          let B = new Set()
          y.forEach(F => {
            B.add(F.from), B.add(F.to)
          }),
            (g = g.filter(F => B.has(F)))
        }
        uHe(h, f, d, g, 0, y, !1)
        let S = await vHe(y, f, T, n)
        di.insertArrowHead(h), di.insertArrowCrossHead(h), di.insertArrowFilledHead(h), di.insertSequenceNumber(h)
        function w(B, F) {
          let z = rt.endActivation(B)
          z.starty + 18 > F && ((z.starty = F - 6), (F += 12)), di.drawActivation(h, z, F, Ne, XS(B.from).length), rt.insert(z.startx, F - 10, z.stopx, F)
        }
        o(w, 'activeEnd')
        let E = 1,
          _ = 1,
          C = [],
          D = [],
          O = 0
        for (let B of y) {
          let F, z, $
          switch (B.type) {
            case n.db.LINETYPE.NOTE:
              rt.resetVerticalPos(), (z = B.noteModel), await oHe(h, z)
              break
            case n.db.LINETYPE.ACTIVE_START:
              rt.newActivation(B, h, f)
              break
            case n.db.LINETYPE.ACTIVE_END:
              w(B, rt.getVerticalPos())
              break
            case n.db.LINETYPE.LOOP_START:
              Xc(S, B, Ne.boxMargin, Ne.boxMargin + Ne.boxTextMargin, U => rt.newLoop(U))
              break
            case n.db.LINETYPE.LOOP_END:
              ;(F = rt.endLoop()), await di.drawLoop(h, F, 'loop', Ne), rt.bumpVerticalPos(F.stopy - rt.getVerticalPos()), rt.models.addLoop(F)
              break
            case n.db.LINETYPE.RECT_START:
              Xc(S, B, Ne.boxMargin, Ne.boxMargin, U => rt.newLoop(void 0, U.message))
              break
            case n.db.LINETYPE.RECT_END:
              ;(F = rt.endLoop()), D.push(F), rt.models.addLoop(F), rt.bumpVerticalPos(F.stopy - rt.getVerticalPos())
              break
            case n.db.LINETYPE.OPT_START:
              Xc(S, B, Ne.boxMargin, Ne.boxMargin + Ne.boxTextMargin, U => rt.newLoop(U))
              break
            case n.db.LINETYPE.OPT_END:
              ;(F = rt.endLoop()), await di.drawLoop(h, F, 'opt', Ne), rt.bumpVerticalPos(F.stopy - rt.getVerticalPos()), rt.models.addLoop(F)
              break
            case n.db.LINETYPE.ALT_START:
              Xc(S, B, Ne.boxMargin, Ne.boxMargin + Ne.boxTextMargin, U => rt.newLoop(U))
              break
            case n.db.LINETYPE.ALT_ELSE:
              Xc(S, B, Ne.boxMargin + Ne.boxTextMargin, Ne.boxMargin, U => rt.addSectionToLoop(U))
              break
            case n.db.LINETYPE.ALT_END:
              ;(F = rt.endLoop()), await di.drawLoop(h, F, 'alt', Ne), rt.bumpVerticalPos(F.stopy - rt.getVerticalPos()), rt.models.addLoop(F)
              break
            case n.db.LINETYPE.PAR_START:
            case n.db.LINETYPE.PAR_OVER_START:
              Xc(S, B, Ne.boxMargin, Ne.boxMargin + Ne.boxTextMargin, U => rt.newLoop(U)), rt.saveVerticalPos()
              break
            case n.db.LINETYPE.PAR_AND:
              Xc(S, B, Ne.boxMargin + Ne.boxTextMargin, Ne.boxMargin, U => rt.addSectionToLoop(U))
              break
            case n.db.LINETYPE.PAR_END:
              ;(F = rt.endLoop()), await di.drawLoop(h, F, 'par', Ne), rt.bumpVerticalPos(F.stopy - rt.getVerticalPos()), rt.models.addLoop(F)
              break
            case n.db.LINETYPE.AUTONUMBER:
              ;(E = B.message.start || E), (_ = B.message.step || _), B.message.visible ? n.db.enableSequenceNumbers() : n.db.disableSequenceNumbers()
              break
            case n.db.LINETYPE.CRITICAL_START:
              Xc(S, B, Ne.boxMargin, Ne.boxMargin + Ne.boxTextMargin, U => rt.newLoop(U))
              break
            case n.db.LINETYPE.CRITICAL_OPTION:
              Xc(S, B, Ne.boxMargin + Ne.boxTextMargin, Ne.boxMargin, U => rt.addSectionToLoop(U))
              break
            case n.db.LINETYPE.CRITICAL_END:
              ;(F = rt.endLoop()), await di.drawLoop(h, F, 'critical', Ne), rt.bumpVerticalPos(F.stopy - rt.getVerticalPos()), rt.models.addLoop(F)
              break
            case n.db.LINETYPE.BREAK_START:
              Xc(S, B, Ne.boxMargin, Ne.boxMargin + Ne.boxTextMargin, U => rt.newLoop(U))
              break
            case n.db.LINETYPE.BREAK_END:
              ;(F = rt.endLoop()), await di.drawLoop(h, F, 'break', Ne), rt.bumpVerticalPos(F.stopy - rt.getVerticalPos()), rt.models.addLoop(F)
              break
            default:
              try {
                ;($ = B.msgModel), ($.starty = rt.getVerticalPos()), ($.sequenceIndex = E), ($.sequenceVisible = n.db.showSequenceNumbers())
                let U = await lHe(h, $)
                hHe(B, $, U, O, f, d, p), C.push({ messageModel: $, lineStartY: U }), rt.models.addMessage($)
              } catch (U) {
                X.error('error while drawing message', U)
              }
          }
          ;[
            n.db.LINETYPE.SOLID_OPEN,
            n.db.LINETYPE.DOTTED_OPEN,
            n.db.LINETYPE.SOLID,
            n.db.LINETYPE.DOTTED,
            n.db.LINETYPE.SOLID_CROSS,
            n.db.LINETYPE.DOTTED_CROSS,
            n.db.LINETYPE.SOLID_POINT,
            n.db.LINETYPE.DOTTED_POINT,
            n.db.LINETYPE.BIDIRECTIONAL_SOLID,
            n.db.LINETYPE.BIDIRECTIONAL_DOTTED
          ].includes(B.type) && (E = E + _),
            O++
        }
        X.debug('createdActors', d), X.debug('destroyedActors', p), await xP(h, f, g, !1)
        for (let B of C) await cHe(h, B.messageModel, B.lineStartY, n)
        Ne.mirrorActors && (await xP(h, f, g, !0)), D.forEach(B => di.drawBackgroundRect(h, B)), gP(h, f, g, Ne)
        for (let B of rt.models.boxes)
          (B.height = rt.getVerticalPos() - B.y),
            rt.insert(B.x, B.y, B.x + B.width, B.height),
            (B.startx = B.x),
            (B.starty = B.y),
            (B.stopx = B.startx + B.width),
            (B.stopy = B.starty + B.height),
            (B.stroke = 'rgb(0,0,0, 0.5)'),
            di.drawBox(h, B, Ne)
        x && rt.bumpVerticalPos(Ne.boxMargin)
        let R = Gde(h, f, g, u),
          { bounds: k } = rt.getBounds()
        k.startx === void 0 && (k.startx = 0), k.starty === void 0 && (k.starty = 0), k.stopx === void 0 && (k.stopx = 0), k.stopy === void 0 && (k.stopy = 0)
        let L = k.stopy - k.starty
        L < R.maxHeight && (L = R.maxHeight)
        let A = L + 2 * Ne.diagramMarginY
        Ne.mirrorActors && (A = A - Ne.boxMargin + Ne.bottomMarginAdj)
        let I = k.stopx - k.startx
        I < R.maxWidth && (I = R.maxWidth)
        let M = I + 2 * Ne.diagramMarginX
        v &&
          h
            .append('text')
            .text(v)
            .attr('x', (k.stopx - k.startx) / 2 - 2 * Ne.diagramMarginX)
            .attr('y', -25),
          fn(h, A, M, Ne.useMaxWidth)
        let P = v ? 40 : 0
        h.attr('viewBox', k.startx - Ne.diagramMarginX + ' -' + (Ne.diagramMarginY + P) + ' ' + M + ' ' + (A + P)), X.debug('models:', rt.models)
      }, 'draw')
      o(dHe, 'getMaxMessageWidthPerActor')
      pHe = o(function (t) {
        let e = 0,
          r = vP(Ne)
        for (let n in t.links) {
          let a = Vt.calculateTextDimensions(n, r).width + 2 * Ne.wrapPadding + 2 * Ne.boxMargin
          e < a && (e = a)
        }
        return e
      }, 'getRequiredPopupWidth')
      o(mHe, 'calculateActorMargins')
      ;(gHe = o(async function (t, e, r) {
        let n = e.get(t.from),
          i = e.get(t.to),
          a = n.x,
          s = i.x,
          l = t.wrap && t.message,
          u = yi(t.message) ? await hd(t.message, me()) : Vt.calculateTextDimensions(l ? Vt.wrapLabel(t.message, Ne.width, O1(Ne)) : t.message, O1(Ne)),
          h = { width: l ? Ne.width : Ze.getMax(Ne.width, u.width + 2 * Ne.noteMargin), height: 0, startx: n.x, stopx: 0, starty: 0, stopy: 0, message: t.message }
        return (
          t.placement === r.db.PLACEMENT.RIGHTOF
            ? ((h.width = l ? Ze.getMax(Ne.width, u.width) : Ze.getMax(n.width / 2 + i.width / 2, u.width + 2 * Ne.noteMargin)), (h.startx = a + (n.width + Ne.actorMargin) / 2))
            : t.placement === r.db.PLACEMENT.LEFTOF
              ? ((h.width = l ? Ze.getMax(Ne.width, u.width + 2 * Ne.noteMargin) : Ze.getMax(n.width / 2 + i.width / 2, u.width + 2 * Ne.noteMargin)),
                (h.startx = a - h.width + (n.width - Ne.actorMargin) / 2))
              : t.to === t.from
                ? ((u = Vt.calculateTextDimensions(l ? Vt.wrapLabel(t.message, Ze.getMax(Ne.width, n.width), O1(Ne)) : t.message, O1(Ne))),
                  (h.width = l ? Ze.getMax(Ne.width, n.width) : Ze.getMax(n.width, Ne.width, u.width + 2 * Ne.noteMargin)),
                  (h.startx = a + (n.width - h.width) / 2))
                : ((h.width = Math.abs(a + n.width / 2 - (s + i.width / 2)) + Ne.actorMargin),
                  (h.startx = a < s ? a + n.width / 2 - Ne.actorMargin / 2 : s + i.width / 2 - Ne.actorMargin / 2)),
          l && (h.message = Vt.wrapLabel(t.message, h.width - 2 * Ne.wrapPadding, O1(Ne))),
          X.debug(`NM:[${h.startx},${h.stopx},${h.starty},${h.stopy}:${h.width},${h.height}=${t.message}]`),
          h
        )
      }, 'buildNoteModel')),
        (yHe = o(function (t, e, r) {
          if (
            ![
              r.db.LINETYPE.SOLID_OPEN,
              r.db.LINETYPE.DOTTED_OPEN,
              r.db.LINETYPE.SOLID,
              r.db.LINETYPE.DOTTED,
              r.db.LINETYPE.SOLID_CROSS,
              r.db.LINETYPE.DOTTED_CROSS,
              r.db.LINETYPE.SOLID_POINT,
              r.db.LINETYPE.DOTTED_POINT,
              r.db.LINETYPE.BIDIRECTIONAL_SOLID,
              r.db.LINETYPE.BIDIRECTIONAL_DOTTED
            ].includes(t.type)
          )
            return {}
          let [n, i] = zde(t.from, e),
            [a, s] = zde(t.to, e),
            l = n <= a,
            u = l ? i : n,
            h = l ? a : s,
            f = Math.abs(a - s) > 2,
            d = o(y => (l ? -y : y), 'adjustValue')
          t.from === t.to
            ? (h = u)
            : (t.activate && !f && (h += d(Ne.activationWidth / 2 - 1)),
              [r.db.LINETYPE.SOLID_OPEN, r.db.LINETYPE.DOTTED_OPEN].includes(t.type) || (h += d(3)),
              [r.db.LINETYPE.BIDIRECTIONAL_SOLID, r.db.LINETYPE.BIDIRECTIONAL_DOTTED].includes(t.type) && (u -= d(3)))
          let p = [n, i, a, s],
            m = Math.abs(u - h)
          t.wrap && t.message && (t.message = Vt.wrapLabel(t.message, Ze.getMax(m + 2 * Ne.wrapPadding, Ne.width), $p(Ne)))
          let g = Vt.calculateTextDimensions(t.message, $p(Ne))
          return {
            width: Ze.getMax(t.wrap ? 0 : g.width + 2 * Ne.wrapPadding, m + 2 * Ne.wrapPadding, Ne.width),
            height: 0,
            startx: u,
            stopx: h,
            starty: 0,
            stopy: 0,
            message: t.message,
            type: t.type,
            wrap: t.wrap,
            fromBounds: Math.min.apply(null, p),
            toBounds: Math.max.apply(null, p)
          }
        }, 'buildMessageModel')),
        (vHe = o(async function (t, e, r, n) {
          let i = {},
            a = [],
            s,
            l,
            u
          for (let h of t) {
            switch (h.type) {
              case n.db.LINETYPE.LOOP_START:
              case n.db.LINETYPE.ALT_START:
              case n.db.LINETYPE.OPT_START:
              case n.db.LINETYPE.PAR_START:
              case n.db.LINETYPE.PAR_OVER_START:
              case n.db.LINETYPE.CRITICAL_START:
              case n.db.LINETYPE.BREAK_START:
                a.push({ id: h.id, msg: h.message, from: Number.MAX_SAFE_INTEGER, to: Number.MIN_SAFE_INTEGER, width: 0 })
                break
              case n.db.LINETYPE.ALT_ELSE:
              case n.db.LINETYPE.PAR_AND:
              case n.db.LINETYPE.CRITICAL_OPTION:
                h.message && ((s = a.pop()), (i[s.id] = s), (i[h.id] = s), a.push(s))
                break
              case n.db.LINETYPE.LOOP_END:
              case n.db.LINETYPE.ALT_END:
              case n.db.LINETYPE.OPT_END:
              case n.db.LINETYPE.PAR_END:
              case n.db.LINETYPE.CRITICAL_END:
              case n.db.LINETYPE.BREAK_END:
                ;(s = a.pop()), (i[s.id] = s)
                break
              case n.db.LINETYPE.ACTIVE_START:
                {
                  let d = e.get(h.from ? h.from : h.to.actor),
                    p = XS(h.from ? h.from : h.to.actor).length,
                    m = d.x + d.width / 2 + ((p - 1) * Ne.activationWidth) / 2,
                    g = { startx: m, stopx: m + Ne.activationWidth, actor: h.from, enabled: !0 }
                  rt.activations.push(g)
                }
                break
              case n.db.LINETYPE.ACTIVE_END:
                {
                  let d = rt.activations.map(p => p.actor).lastIndexOf(h.from)
                  rt.activations.splice(d, 1).splice(0, 1)
                }
                break
            }
            h.placement !== void 0
              ? ((l = await gHe(h, e, n)),
                (h.noteModel = l),
                a.forEach(d => {
                  ;(s = d),
                    (s.from = Ze.getMin(s.from, l.startx)),
                    (s.to = Ze.getMax(s.to, l.startx + l.width)),
                    (s.width = Ze.getMax(s.width, Math.abs(s.from - s.to)) - Ne.labelBoxWidth)
                }))
              : ((u = yHe(h, e, n)),
                (h.msgModel = u),
                u.startx &&
                  u.stopx &&
                  a.length > 0 &&
                  a.forEach(d => {
                    if (((s = d), u.startx === u.stopx)) {
                      let p = e.get(h.from),
                        m = e.get(h.to)
                      ;(s.from = Ze.getMin(p.x - u.width / 2, p.x - p.width / 2, s.from)),
                        (s.to = Ze.getMax(m.x + u.width / 2, m.x + p.width / 2, s.to)),
                        (s.width = Ze.getMax(s.width, Math.abs(s.to - s.from)) - Ne.labelBoxWidth)
                    } else (s.from = Ze.getMin(u.startx, s.from)), (s.to = Ze.getMax(u.stopx, s.to)), (s.width = Ze.getMax(s.width, u.width) - Ne.labelBoxWidth)
                  }))
          }
          return (rt.activations = []), X.debug('Loop type widths:', i), i
        }, 'calculateLoopBounds')),
        (Ude = { bounds: rt, drawActors: xP, drawActorsPopup: Gde, setConf: Vde, draw: fHe })
    })
  var Wde = {}
  ur(Wde, { diagram: () => xHe })
  var xHe,
    qde = N(() => {
      'use strict'
      Dde()
      Lde()
      Nde()
      Gt()
      Hde()
      xHe = {
        parser: _de,
        get db() {
          return new YS()
        },
        renderer: Ude,
        styles: Rde,
        init: o(t => {
          t.sequence || (t.sequence = {}), t.wrap && ((t.sequence.wrap = t.wrap), nv({ sequence: { wrap: t.wrap } }))
        }, 'init')
      }
    })
  var bP,
    jS,
    TP = N(() => {
      'use strict'
      bP = (function () {
        var t = o(function (Ie, xe, q, de) {
            for (q = q || {}, de = Ie.length; de--; q[Ie[de]] = xe);
            return q
          }, 'o'),
          e = [1, 18],
          r = [1, 19],
          n = [1, 20],
          i = [1, 41],
          a = [1, 42],
          s = [1, 26],
          l = [1, 24],
          u = [1, 25],
          h = [1, 32],
          f = [1, 33],
          d = [1, 34],
          p = [1, 45],
          m = [1, 35],
          g = [1, 36],
          y = [1, 37],
          v = [1, 38],
          x = [1, 27],
          b = [1, 28],
          T = [1, 29],
          S = [1, 30],
          w = [1, 31],
          E = [1, 44],
          _ = [1, 46],
          C = [1, 43],
          D = [1, 47],
          O = [1, 9],
          R = [1, 8, 9],
          k = [1, 58],
          L = [1, 59],
          A = [1, 60],
          I = [1, 61],
          M = [1, 62],
          P = [1, 63],
          B = [1, 64],
          F = [1, 8, 9, 41],
          z = [1, 76],
          $ = [1, 8, 9, 12, 13, 22, 39, 41, 44, 66, 67, 68, 69, 70, 71, 72, 77, 79],
          U = [1, 8, 9, 12, 13, 17, 20, 22, 39, 41, 44, 48, 58, 66, 67, 68, 69, 70, 71, 72, 77, 79, 84, 99, 101, 102],
          K = [13, 58, 84, 99, 101, 102],
          ee = [13, 58, 71, 72, 84, 99, 101, 102],
          Y = [13, 58, 66, 67, 68, 69, 70, 84, 99, 101, 102],
          ce = [1, 98],
          Z = [1, 115],
          ue = [1, 107],
          Q = [1, 113],
          j = [1, 108],
          ne = [1, 109],
          te = [1, 110],
          he = [1, 111],
          le = [1, 112],
          J = [1, 114],
          Se = [22, 58, 59, 80, 84, 85, 86, 87, 88, 89],
          se = [1, 8, 9, 39, 41, 44],
          ae = [1, 8, 9, 22],
          Oe = [1, 143],
          ye = [1, 8, 9, 59],
          Be = [1, 8, 9, 22, 58, 59, 80, 84, 85, 86, 87, 88, 89],
          He = {
            trace: o(function () {}, 'trace'),
            yy: {},
            symbols_: {
              error: 2,
              start: 3,
              mermaidDoc: 4,
              statements: 5,
              graphConfig: 6,
              CLASS_DIAGRAM: 7,
              NEWLINE: 8,
              EOF: 9,
              statement: 10,
              classLabel: 11,
              SQS: 12,
              STR: 13,
              SQE: 14,
              namespaceName: 15,
              alphaNumToken: 16,
              DOT: 17,
              className: 18,
              classLiteralName: 19,
              GENERICTYPE: 20,
              relationStatement: 21,
              LABEL: 22,
              namespaceStatement: 23,
              classStatement: 24,
              memberStatement: 25,
              annotationStatement: 26,
              clickStatement: 27,
              styleStatement: 28,
              cssClassStatement: 29,
              noteStatement: 30,
              classDefStatement: 31,
              direction: 32,
              acc_title: 33,
              acc_title_value: 34,
              acc_descr: 35,
              acc_descr_value: 36,
              acc_descr_multiline_value: 37,
              namespaceIdentifier: 38,
              STRUCT_START: 39,
              classStatements: 40,
              STRUCT_STOP: 41,
              NAMESPACE: 42,
              classIdentifier: 43,
              STYLE_SEPARATOR: 44,
              members: 45,
              CLASS: 46,
              ANNOTATION_START: 47,
              ANNOTATION_END: 48,
              MEMBER: 49,
              SEPARATOR: 50,
              relation: 51,
              NOTE_FOR: 52,
              noteText: 53,
              NOTE: 54,
              CLASSDEF: 55,
              classList: 56,
              stylesOpt: 57,
              ALPHA: 58,
              COMMA: 59,
              direction_tb: 60,
              direction_bt: 61,
              direction_rl: 62,
              direction_lr: 63,
              relationType: 64,
              lineType: 65,
              AGGREGATION: 66,
              EXTENSION: 67,
              COMPOSITION: 68,
              DEPENDENCY: 69,
              LOLLIPOP: 70,
              LINE: 71,
              DOTTED_LINE: 72,
              CALLBACK: 73,
              LINK: 74,
              LINK_TARGET: 75,
              CLICK: 76,
              CALLBACK_NAME: 77,
              CALLBACK_ARGS: 78,
              HREF: 79,
              STYLE: 80,
              CSSCLASS: 81,
              style: 82,
              styleComponent: 83,
              NUM: 84,
              COLON: 85,
              UNIT: 86,
              SPACE: 87,
              BRKT: 88,
              PCT: 89,
              commentToken: 90,
              textToken: 91,
              graphCodeTokens: 92,
              textNoTagsToken: 93,
              TAGSTART: 94,
              TAGEND: 95,
              '==': 96,
              '--': 97,
              DEFAULT: 98,
              MINUS: 99,
              keywords: 100,
              UNICODE_TEXT: 101,
              BQUOTE_STR: 102,
              $accept: 0,
              $end: 1
            },
            terminals_: {
              2: 'error',
              7: 'CLASS_DIAGRAM',
              8: 'NEWLINE',
              9: 'EOF',
              12: 'SQS',
              13: 'STR',
              14: 'SQE',
              17: 'DOT',
              20: 'GENERICTYPE',
              22: 'LABEL',
              33: 'acc_title',
              34: 'acc_title_value',
              35: 'acc_descr',
              36: 'acc_descr_value',
              37: 'acc_descr_multiline_value',
              39: 'STRUCT_START',
              41: 'STRUCT_STOP',
              42: 'NAMESPACE',
              44: 'STYLE_SEPARATOR',
              46: 'CLASS',
              47: 'ANNOTATION_START',
              48: 'ANNOTATION_END',
              49: 'MEMBER',
              50: 'SEPARATOR',
              52: 'NOTE_FOR',
              54: 'NOTE',
              55: 'CLASSDEF',
              58: 'ALPHA',
              59: 'COMMA',
              60: 'direction_tb',
              61: 'direction_bt',
              62: 'direction_rl',
              63: 'direction_lr',
              66: 'AGGREGATION',
              67: 'EXTENSION',
              68: 'COMPOSITION',
              69: 'DEPENDENCY',
              70: 'LOLLIPOP',
              71: 'LINE',
              72: 'DOTTED_LINE',
              73: 'CALLBACK',
              74: 'LINK',
              75: 'LINK_TARGET',
              76: 'CLICK',
              77: 'CALLBACK_NAME',
              78: 'CALLBACK_ARGS',
              79: 'HREF',
              80: 'STYLE',
              81: 'CSSCLASS',
              84: 'NUM',
              85: 'COLON',
              86: 'UNIT',
              87: 'SPACE',
              88: 'BRKT',
              89: 'PCT',
              92: 'graphCodeTokens',
              94: 'TAGSTART',
              95: 'TAGEND',
              96: '==',
              97: '--',
              98: 'DEFAULT',
              99: 'MINUS',
              100: 'keywords',
              101: 'UNICODE_TEXT',
              102: 'BQUOTE_STR'
            },
            productions_: [
              0,
              [3, 1],
              [3, 1],
              [4, 1],
              [6, 4],
              [5, 1],
              [5, 2],
              [5, 3],
              [11, 3],
              [15, 1],
              [15, 3],
              [15, 2],
              [18, 1],
              [18, 3],
              [18, 1],
              [18, 2],
              [18, 2],
              [18, 2],
              [10, 1],
              [10, 2],
              [10, 1],
              [10, 1],
              [10, 1],
              [10, 1],
              [10, 1],
              [10, 1],
              [10, 1],
              [10, 1],
              [10, 1],
              [10, 1],
              [10, 2],
              [10, 2],
              [10, 1],
              [23, 4],
              [23, 5],
              [38, 2],
              [40, 1],
              [40, 2],
              [40, 3],
              [24, 1],
              [24, 3],
              [24, 4],
              [24, 6],
              [43, 2],
              [43, 3],
              [26, 4],
              [45, 1],
              [45, 2],
              [25, 1],
              [25, 2],
              [25, 1],
              [25, 1],
              [21, 3],
              [21, 4],
              [21, 4],
              [21, 5],
              [30, 3],
              [30, 2],
              [31, 3],
              [56, 1],
              [56, 3],
              [32, 1],
              [32, 1],
              [32, 1],
              [32, 1],
              [51, 3],
              [51, 2],
              [51, 2],
              [51, 1],
              [64, 1],
              [64, 1],
              [64, 1],
              [64, 1],
              [64, 1],
              [65, 1],
              [65, 1],
              [27, 3],
              [27, 4],
              [27, 3],
              [27, 4],
              [27, 4],
              [27, 5],
              [27, 3],
              [27, 4],
              [27, 4],
              [27, 5],
              [27, 4],
              [27, 5],
              [27, 5],
              [27, 6],
              [28, 3],
              [29, 3],
              [57, 1],
              [57, 3],
              [82, 1],
              [82, 2],
              [83, 1],
              [83, 1],
              [83, 1],
              [83, 1],
              [83, 1],
              [83, 1],
              [83, 1],
              [83, 1],
              [83, 1],
              [90, 1],
              [90, 1],
              [91, 1],
              [91, 1],
              [91, 1],
              [91, 1],
              [91, 1],
              [91, 1],
              [91, 1],
              [93, 1],
              [93, 1],
              [93, 1],
              [93, 1],
              [16, 1],
              [16, 1],
              [16, 1],
              [16, 1],
              [19, 1],
              [53, 1]
            ],
            performAction: o(function (xe, q, de, ie, oe, V, Te) {
              var W = V.length - 1
              switch (oe) {
                case 8:
                  this.$ = V[W - 1]
                  break
                case 9:
                case 12:
                case 14:
                  this.$ = V[W]
                  break
                case 10:
                case 13:
                  this.$ = V[W - 2] + '.' + V[W]
                  break
                case 11:
                case 15:
                  this.$ = V[W - 1] + V[W]
                  break
                case 16:
                case 17:
                  this.$ = V[W - 1] + '~' + V[W] + '~'
                  break
                case 18:
                  ie.addRelation(V[W])
                  break
                case 19:
                  ;(V[W - 1].title = ie.cleanupLabel(V[W])), ie.addRelation(V[W - 1])
                  break
                case 30:
                  ;(this.$ = V[W].trim()), ie.setAccTitle(this.$)
                  break
                case 31:
                case 32:
                  ;(this.$ = V[W].trim()), ie.setAccDescription(this.$)
                  break
                case 33:
                  ie.addClassesToNamespace(V[W - 3], V[W - 1])
                  break
                case 34:
                  ie.addClassesToNamespace(V[W - 4], V[W - 1])
                  break
                case 35:
                  ;(this.$ = V[W]), ie.addNamespace(V[W])
                  break
                case 36:
                  this.$ = [V[W]]
                  break
                case 37:
                  this.$ = [V[W - 1]]
                  break
                case 38:
                  V[W].unshift(V[W - 2]), (this.$ = V[W])
                  break
                case 40:
                  ie.setCssClass(V[W - 2], V[W])
                  break
                case 41:
                  ie.addMembers(V[W - 3], V[W - 1])
                  break
                case 42:
                  ie.setCssClass(V[W - 5], V[W - 3]), ie.addMembers(V[W - 5], V[W - 1])
                  break
                case 43:
                  ;(this.$ = V[W]), ie.addClass(V[W])
                  break
                case 44:
                  ;(this.$ = V[W - 1]), ie.addClass(V[W - 1]), ie.setClassLabel(V[W - 1], V[W])
                  break
                case 45:
                  ie.addAnnotation(V[W], V[W - 2])
                  break
                case 46:
                case 59:
                  this.$ = [V[W]]
                  break
                case 47:
                  V[W].push(V[W - 1]), (this.$ = V[W])
                  break
                case 48:
                  break
                case 49:
                  ie.addMember(V[W - 1], ie.cleanupLabel(V[W]))
                  break
                case 50:
                  break
                case 51:
                  break
                case 52:
                  this.$ = { id1: V[W - 2], id2: V[W], relation: V[W - 1], relationTitle1: 'none', relationTitle2: 'none' }
                  break
                case 53:
                  this.$ = { id1: V[W - 3], id2: V[W], relation: V[W - 1], relationTitle1: V[W - 2], relationTitle2: 'none' }
                  break
                case 54:
                  this.$ = { id1: V[W - 3], id2: V[W], relation: V[W - 2], relationTitle1: 'none', relationTitle2: V[W - 1] }
                  break
                case 55:
                  this.$ = { id1: V[W - 4], id2: V[W], relation: V[W - 2], relationTitle1: V[W - 3], relationTitle2: V[W - 1] }
                  break
                case 56:
                  ie.addNote(V[W], V[W - 1])
                  break
                case 57:
                  ie.addNote(V[W])
                  break
                case 58:
                  ;(this.$ = V[W - 2]), ie.defineClass(V[W - 1], V[W])
                  break
                case 60:
                  this.$ = V[W - 2].concat([V[W]])
                  break
                case 61:
                  ie.setDirection('TB')
                  break
                case 62:
                  ie.setDirection('BT')
                  break
                case 63:
                  ie.setDirection('RL')
                  break
                case 64:
                  ie.setDirection('LR')
                  break
                case 65:
                  this.$ = { type1: V[W - 2], type2: V[W], lineType: V[W - 1] }
                  break
                case 66:
                  this.$ = { type1: 'none', type2: V[W], lineType: V[W - 1] }
                  break
                case 67:
                  this.$ = { type1: V[W - 1], type2: 'none', lineType: V[W] }
                  break
                case 68:
                  this.$ = { type1: 'none', type2: 'none', lineType: V[W] }
                  break
                case 69:
                  this.$ = ie.relationType.AGGREGATION
                  break
                case 70:
                  this.$ = ie.relationType.EXTENSION
                  break
                case 71:
                  this.$ = ie.relationType.COMPOSITION
                  break
                case 72:
                  this.$ = ie.relationType.DEPENDENCY
                  break
                case 73:
                  this.$ = ie.relationType.LOLLIPOP
                  break
                case 74:
                  this.$ = ie.lineType.LINE
                  break
                case 75:
                  this.$ = ie.lineType.DOTTED_LINE
                  break
                case 76:
                case 82:
                  ;(this.$ = V[W - 2]), ie.setClickEvent(V[W - 1], V[W])
                  break
                case 77:
                case 83:
                  ;(this.$ = V[W - 3]), ie.setClickEvent(V[W - 2], V[W - 1]), ie.setTooltip(V[W - 2], V[W])
                  break
                case 78:
                  ;(this.$ = V[W - 2]), ie.setLink(V[W - 1], V[W])
                  break
                case 79:
                  ;(this.$ = V[W - 3]), ie.setLink(V[W - 2], V[W - 1], V[W])
                  break
                case 80:
                  ;(this.$ = V[W - 3]), ie.setLink(V[W - 2], V[W - 1]), ie.setTooltip(V[W - 2], V[W])
                  break
                case 81:
                  ;(this.$ = V[W - 4]), ie.setLink(V[W - 3], V[W - 2], V[W]), ie.setTooltip(V[W - 3], V[W - 1])
                  break
                case 84:
                  ;(this.$ = V[W - 3]), ie.setClickEvent(V[W - 2], V[W - 1], V[W])
                  break
                case 85:
                  ;(this.$ = V[W - 4]), ie.setClickEvent(V[W - 3], V[W - 2], V[W - 1]), ie.setTooltip(V[W - 3], V[W])
                  break
                case 86:
                  ;(this.$ = V[W - 3]), ie.setLink(V[W - 2], V[W])
                  break
                case 87:
                  ;(this.$ = V[W - 4]), ie.setLink(V[W - 3], V[W - 1], V[W])
                  break
                case 88:
                  ;(this.$ = V[W - 4]), ie.setLink(V[W - 3], V[W - 1]), ie.setTooltip(V[W - 3], V[W])
                  break
                case 89:
                  ;(this.$ = V[W - 5]), ie.setLink(V[W - 4], V[W - 2], V[W]), ie.setTooltip(V[W - 4], V[W - 1])
                  break
                case 90:
                  ;(this.$ = V[W - 2]), ie.setCssStyle(V[W - 1], V[W])
                  break
                case 91:
                  ie.setCssClass(V[W - 1], V[W])
                  break
                case 92:
                  this.$ = [V[W]]
                  break
                case 93:
                  V[W - 2].push(V[W]), (this.$ = V[W - 2])
                  break
                case 95:
                  this.$ = V[W - 1] + V[W]
                  break
              }
            }, 'anonymous'),
            table: [
              {
                3: 1,
                4: 2,
                5: 3,
                6: 4,
                7: [1, 6],
                10: 5,
                16: 39,
                18: 21,
                19: 40,
                21: 7,
                23: 8,
                24: 9,
                25: 10,
                26: 11,
                27: 12,
                28: 13,
                29: 14,
                30: 15,
                31: 16,
                32: 17,
                33: e,
                35: r,
                37: n,
                38: 22,
                42: i,
                43: 23,
                46: a,
                47: s,
                49: l,
                50: u,
                52: h,
                54: f,
                55: d,
                58: p,
                60: m,
                61: g,
                62: y,
                63: v,
                73: x,
                74: b,
                76: T,
                80: S,
                81: w,
                84: E,
                99: _,
                101: C,
                102: D
              },
              { 1: [3] },
              { 1: [2, 1] },
              { 1: [2, 2] },
              { 1: [2, 3] },
              t(O, [2, 5], { 8: [1, 48] }),
              { 8: [1, 49] },
              t(R, [2, 18], { 22: [1, 50] }),
              t(R, [2, 20]),
              t(R, [2, 21]),
              t(R, [2, 22]),
              t(R, [2, 23]),
              t(R, [2, 24]),
              t(R, [2, 25]),
              t(R, [2, 26]),
              t(R, [2, 27]),
              t(R, [2, 28]),
              t(R, [2, 29]),
              { 34: [1, 51] },
              { 36: [1, 52] },
              t(R, [2, 32]),
              t(R, [2, 48], { 51: 53, 64: 56, 65: 57, 13: [1, 54], 22: [1, 55], 66: k, 67: L, 68: A, 69: I, 70: M, 71: P, 72: B }),
              { 39: [1, 65] },
              t(F, [2, 39], { 39: [1, 67], 44: [1, 66] }),
              t(R, [2, 50]),
              t(R, [2, 51]),
              { 16: 68, 58: p, 84: E, 99: _, 101: C },
              { 16: 39, 18: 69, 19: 40, 58: p, 84: E, 99: _, 101: C, 102: D },
              { 16: 39, 18: 70, 19: 40, 58: p, 84: E, 99: _, 101: C, 102: D },
              { 16: 39, 18: 71, 19: 40, 58: p, 84: E, 99: _, 101: C, 102: D },
              { 58: [1, 72] },
              { 13: [1, 73] },
              { 16: 39, 18: 74, 19: 40, 58: p, 84: E, 99: _, 101: C, 102: D },
              { 13: z, 53: 75 },
              { 56: 77, 58: [1, 78] },
              t(R, [2, 61]),
              t(R, [2, 62]),
              t(R, [2, 63]),
              t(R, [2, 64]),
              t($, [2, 12], { 16: 39, 19: 40, 18: 80, 17: [1, 79], 20: [1, 81], 58: p, 84: E, 99: _, 101: C, 102: D }),
              t($, [2, 14], { 20: [1, 82] }),
              { 15: 83, 16: 84, 58: p, 84: E, 99: _, 101: C },
              { 16: 39, 18: 85, 19: 40, 58: p, 84: E, 99: _, 101: C, 102: D },
              t(U, [2, 118]),
              t(U, [2, 119]),
              t(U, [2, 120]),
              t(U, [2, 121]),
              t([1, 8, 9, 12, 13, 20, 22, 39, 41, 44, 66, 67, 68, 69, 70, 71, 72, 77, 79], [2, 122]),
              t(O, [2, 6], {
                10: 5,
                21: 7,
                23: 8,
                24: 9,
                25: 10,
                26: 11,
                27: 12,
                28: 13,
                29: 14,
                30: 15,
                31: 16,
                32: 17,
                18: 21,
                38: 22,
                43: 23,
                16: 39,
                19: 40,
                5: 86,
                33: e,
                35: r,
                37: n,
                42: i,
                46: a,
                47: s,
                49: l,
                50: u,
                52: h,
                54: f,
                55: d,
                58: p,
                60: m,
                61: g,
                62: y,
                63: v,
                73: x,
                74: b,
                76: T,
                80: S,
                81: w,
                84: E,
                99: _,
                101: C,
                102: D
              }),
              {
                5: 87,
                10: 5,
                16: 39,
                18: 21,
                19: 40,
                21: 7,
                23: 8,
                24: 9,
                25: 10,
                26: 11,
                27: 12,
                28: 13,
                29: 14,
                30: 15,
                31: 16,
                32: 17,
                33: e,
                35: r,
                37: n,
                38: 22,
                42: i,
                43: 23,
                46: a,
                47: s,
                49: l,
                50: u,
                52: h,
                54: f,
                55: d,
                58: p,
                60: m,
                61: g,
                62: y,
                63: v,
                73: x,
                74: b,
                76: T,
                80: S,
                81: w,
                84: E,
                99: _,
                101: C,
                102: D
              },
              t(R, [2, 19]),
              t(R, [2, 30]),
              t(R, [2, 31]),
              { 13: [1, 89], 16: 39, 18: 88, 19: 40, 58: p, 84: E, 99: _, 101: C, 102: D },
              { 51: 90, 64: 56, 65: 57, 66: k, 67: L, 68: A, 69: I, 70: M, 71: P, 72: B },
              t(R, [2, 49]),
              { 65: 91, 71: P, 72: B },
              t(K, [2, 68], { 64: 92, 66: k, 67: L, 68: A, 69: I, 70: M }),
              t(ee, [2, 69]),
              t(ee, [2, 70]),
              t(ee, [2, 71]),
              t(ee, [2, 72]),
              t(ee, [2, 73]),
              t(Y, [2, 74]),
              t(Y, [2, 75]),
              { 8: [1, 94], 24: 95, 40: 93, 43: 23, 46: a },
              { 16: 96, 58: p, 84: E, 99: _, 101: C },
              { 45: 97, 49: ce },
              { 48: [1, 99] },
              { 13: [1, 100] },
              { 13: [1, 101] },
              { 77: [1, 102], 79: [1, 103] },
              { 22: Z, 57: 104, 58: ue, 80: Q, 82: 105, 83: 106, 84: j, 85: ne, 86: te, 87: he, 88: le, 89: J },
              { 58: [1, 116] },
              { 13: z, 53: 117 },
              t(R, [2, 57]),
              t(R, [2, 123]),
              { 22: Z, 57: 118, 58: ue, 59: [1, 119], 80: Q, 82: 105, 83: 106, 84: j, 85: ne, 86: te, 87: he, 88: le, 89: J },
              t(Se, [2, 59]),
              { 16: 39, 18: 120, 19: 40, 58: p, 84: E, 99: _, 101: C, 102: D },
              t($, [2, 15]),
              t($, [2, 16]),
              t($, [2, 17]),
              { 39: [2, 35] },
              { 15: 122, 16: 84, 17: [1, 121], 39: [2, 9], 58: p, 84: E, 99: _, 101: C },
              t(se, [2, 43], { 11: 123, 12: [1, 124] }),
              t(O, [2, 7]),
              { 9: [1, 125] },
              t(ae, [2, 52]),
              { 16: 39, 18: 126, 19: 40, 58: p, 84: E, 99: _, 101: C, 102: D },
              { 13: [1, 128], 16: 39, 18: 127, 19: 40, 58: p, 84: E, 99: _, 101: C, 102: D },
              t(K, [2, 67], { 64: 129, 66: k, 67: L, 68: A, 69: I, 70: M }),
              t(K, [2, 66]),
              { 41: [1, 130] },
              { 24: 95, 40: 131, 43: 23, 46: a },
              { 8: [1, 132], 41: [2, 36] },
              t(F, [2, 40], { 39: [1, 133] }),
              { 41: [1, 134] },
              { 41: [2, 46], 45: 135, 49: ce },
              { 16: 39, 18: 136, 19: 40, 58: p, 84: E, 99: _, 101: C, 102: D },
              t(R, [2, 76], { 13: [1, 137] }),
              t(R, [2, 78], { 13: [1, 139], 75: [1, 138] }),
              t(R, [2, 82], { 13: [1, 140], 78: [1, 141] }),
              { 13: [1, 142] },
              t(R, [2, 90], { 59: Oe }),
              t(ye, [2, 92], { 83: 144, 22: Z, 58: ue, 80: Q, 84: j, 85: ne, 86: te, 87: he, 88: le, 89: J }),
              t(Be, [2, 94]),
              t(Be, [2, 96]),
              t(Be, [2, 97]),
              t(Be, [2, 98]),
              t(Be, [2, 99]),
              t(Be, [2, 100]),
              t(Be, [2, 101]),
              t(Be, [2, 102]),
              t(Be, [2, 103]),
              t(Be, [2, 104]),
              t(R, [2, 91]),
              t(R, [2, 56]),
              t(R, [2, 58], { 59: Oe }),
              { 58: [1, 145] },
              t($, [2, 13]),
              { 15: 146, 16: 84, 58: p, 84: E, 99: _, 101: C },
              { 39: [2, 11] },
              t(se, [2, 44]),
              { 13: [1, 147] },
              { 1: [2, 4] },
              t(ae, [2, 54]),
              t(ae, [2, 53]),
              { 16: 39, 18: 148, 19: 40, 58: p, 84: E, 99: _, 101: C, 102: D },
              t(K, [2, 65]),
              t(R, [2, 33]),
              { 41: [1, 149] },
              { 24: 95, 40: 150, 41: [2, 37], 43: 23, 46: a },
              { 45: 151, 49: ce },
              t(F, [2, 41]),
              { 41: [2, 47] },
              t(R, [2, 45]),
              t(R, [2, 77]),
              t(R, [2, 79]),
              t(R, [2, 80], { 75: [1, 152] }),
              t(R, [2, 83]),
              t(R, [2, 84], { 13: [1, 153] }),
              t(R, [2, 86], { 13: [1, 155], 75: [1, 154] }),
              { 22: Z, 58: ue, 80: Q, 82: 156, 83: 106, 84: j, 85: ne, 86: te, 87: he, 88: le, 89: J },
              t(Be, [2, 95]),
              t(Se, [2, 60]),
              { 39: [2, 10] },
              { 14: [1, 157] },
              t(ae, [2, 55]),
              t(R, [2, 34]),
              { 41: [2, 38] },
              { 41: [1, 158] },
              t(R, [2, 81]),
              t(R, [2, 85]),
              t(R, [2, 87]),
              t(R, [2, 88], { 75: [1, 159] }),
              t(ye, [2, 93], { 83: 144, 22: Z, 58: ue, 80: Q, 84: j, 85: ne, 86: te, 87: he, 88: le, 89: J }),
              t(se, [2, 8]),
              t(F, [2, 42]),
              t(R, [2, 89])
            ],
            defaultActions: { 2: [2, 1], 3: [2, 2], 4: [2, 3], 83: [2, 35], 122: [2, 11], 125: [2, 4], 135: [2, 47], 146: [2, 10], 150: [2, 38] },
            parseError: o(function (xe, q) {
              if (q.recoverable) this.trace(xe)
              else {
                var de = new Error(xe)
                throw ((de.hash = q), de)
              }
            }, 'parseError'),
            parse: o(function (xe) {
              var q = this,
                de = [0],
                ie = [],
                oe = [null],
                V = [],
                Te = this.table,
                W = '',
                pe = 0,
                ve = 0,
                Pe = 0,
                _e = 2,
                be = 1,
                Ve = V.slice.call(arguments, 1),
                De = Object.create(this.lexer),
                qe = { yy: {} }
              for (var at in this.yy) Object.prototype.hasOwnProperty.call(this.yy, at) && (qe.yy[at] = this.yy[at])
              De.setInput(xe, qe.yy), (qe.yy.lexer = De), (qe.yy.parser = this), typeof De.yylloc > 'u' && (De.yylloc = {})
              var Rt = De.yylloc
              V.push(Rt)
              var st = De.options && De.options.ranges
              typeof qe.yy.parseError == 'function' ? (this.parseError = qe.yy.parseError) : (this.parseError = Object.getPrototypeOf(this).parseError)
              function Ue(kt) {
                ;(de.length = de.length - 2 * kt), (oe.length = oe.length - kt), (V.length = V.length - kt)
              }
              o(Ue, 'popStack')
              function ct() {
                var kt
                return (kt = ie.pop() || De.lex() || be), typeof kt != 'number' && (kt instanceof Array && ((ie = kt), (kt = ie.pop())), (kt = q.symbols_[kt] || kt)), kt
              }
              o(ct, 'lex')
              for (var We, ot, Yt, Tt, Mt, bt, ut = {}, St, ft, vt, nt; ; ) {
                if (
                  ((Yt = de[de.length - 1]),
                  this.defaultActions[Yt] ? (Tt = this.defaultActions[Yt]) : ((We === null || typeof We > 'u') && (We = ct()), (Tt = Te[Yt] && Te[Yt][We])),
                  typeof Tt > 'u' || !Tt.length || !Tt[0])
                ) {
                  var pn = ''
                  nt = []
                  for (St in Te[Yt]) this.terminals_[St] && St > _e && nt.push("'" + this.terminals_[St] + "'")
                  De.showPosition
                    ? (pn =
                        'Parse error on line ' +
                        (pe + 1) +
                        `:
` +
                        De.showPosition() +
                        `
Expecting ` +
                        nt.join(', ') +
                        ", got '" +
                        (this.terminals_[We] || We) +
                        "'")
                    : (pn = 'Parse error on line ' + (pe + 1) + ': Unexpected ' + (We == be ? 'end of input' : "'" + (this.terminals_[We] || We) + "'")),
                    this.parseError(pn, { text: De.match, token: this.terminals_[We] || We, line: De.yylineno, loc: Rt, expected: nt })
                }
                if (Tt[0] instanceof Array && Tt.length > 1) throw new Error('Parse Error: multiple actions possible at state: ' + Yt + ', token: ' + We)
                switch (Tt[0]) {
                  case 1:
                    de.push(We),
                      oe.push(De.yytext),
                      V.push(De.yylloc),
                      de.push(Tt[1]),
                      (We = null),
                      ot ? ((We = ot), (ot = null)) : ((ve = De.yyleng), (W = De.yytext), (pe = De.yylineno), (Rt = De.yylloc), Pe > 0 && Pe--)
                    break
                  case 2:
                    if (
                      ((ft = this.productions_[Tt[1]][1]),
                      (ut.$ = oe[oe.length - ft]),
                      (ut._$ = {
                        first_line: V[V.length - (ft || 1)].first_line,
                        last_line: V[V.length - 1].last_line,
                        first_column: V[V.length - (ft || 1)].first_column,
                        last_column: V[V.length - 1].last_column
                      }),
                      st && (ut._$.range = [V[V.length - (ft || 1)].range[0], V[V.length - 1].range[1]]),
                      (bt = this.performAction.apply(ut, [W, ve, pe, qe.yy, Tt[1], oe, V].concat(Ve))),
                      typeof bt < 'u')
                    )
                      return bt
                    ft && ((de = de.slice(0, -1 * ft * 2)), (oe = oe.slice(0, -1 * ft)), (V = V.slice(0, -1 * ft))),
                      de.push(this.productions_[Tt[1]][0]),
                      oe.push(ut.$),
                      V.push(ut._$),
                      (vt = Te[de[de.length - 2]][de[de.length - 1]]),
                      de.push(vt)
                    break
                  case 3:
                    return !0
                }
              }
              return !0
            }, 'parse')
          },
          ze = (function () {
            var Ie = {
              EOF: 1,
              parseError: o(function (q, de) {
                if (this.yy.parser) this.yy.parser.parseError(q, de)
                else throw new Error(q)
              }, 'parseError'),
              setInput: o(function (xe, q) {
                return (
                  (this.yy = q || this.yy || {}),
                  (this._input = xe),
                  (this._more = this._backtrack = this.done = !1),
                  (this.yylineno = this.yyleng = 0),
                  (this.yytext = this.matched = this.match = ''),
                  (this.conditionStack = ['INITIAL']),
                  (this.yylloc = { first_line: 1, first_column: 0, last_line: 1, last_column: 0 }),
                  this.options.ranges && (this.yylloc.range = [0, 0]),
                  (this.offset = 0),
                  this
                )
              }, 'setInput'),
              input: o(function () {
                var xe = this._input[0]
                ;(this.yytext += xe), this.yyleng++, this.offset++, (this.match += xe), (this.matched += xe)
                var q = xe.match(/(?:\r\n?|\n).*/g)
                return (
                  q ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++,
                  this.options.ranges && this.yylloc.range[1]++,
                  (this._input = this._input.slice(1)),
                  xe
                )
              }, 'input'),
              unput: o(function (xe) {
                var q = xe.length,
                  de = xe.split(/(?:\r\n?|\n)/g)
                ;(this._input = xe + this._input), (this.yytext = this.yytext.substr(0, this.yytext.length - q)), (this.offset -= q)
                var ie = this.match.split(/(?:\r\n?|\n)/g)
                ;(this.match = this.match.substr(0, this.match.length - 1)),
                  (this.matched = this.matched.substr(0, this.matched.length - 1)),
                  de.length - 1 && (this.yylineno -= de.length - 1)
                var oe = this.yylloc.range
                return (
                  (this.yylloc = {
                    first_line: this.yylloc.first_line,
                    last_line: this.yylineno + 1,
                    first_column: this.yylloc.first_column,
                    last_column: de ? (de.length === ie.length ? this.yylloc.first_column : 0) + ie[ie.length - de.length].length - de[0].length : this.yylloc.first_column - q
                  }),
                  this.options.ranges && (this.yylloc.range = [oe[0], oe[0] + this.yyleng - q]),
                  (this.yyleng = this.yytext.length),
                  this
                )
              }, 'unput'),
              more: o(function () {
                return (this._more = !0), this
              }, 'more'),
              reject: o(function () {
                if (this.options.backtrack_lexer) this._backtrack = !0
                else
                  return this.parseError(
                    'Lexical error on line ' +
                      (this.yylineno + 1) +
                      `. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
` +
                      this.showPosition(),
                    { text: '', token: null, line: this.yylineno }
                  )
                return this
              }, 'reject'),
              less: o(function (xe) {
                this.unput(this.match.slice(xe))
              }, 'less'),
              pastInput: o(function () {
                var xe = this.matched.substr(0, this.matched.length - this.match.length)
                return (xe.length > 20 ? '...' : '') + xe.substr(-20).replace(/\n/g, '')
              }, 'pastInput'),
              upcomingInput: o(function () {
                var xe = this.match
                return xe.length < 20 && (xe += this._input.substr(0, 20 - xe.length)), (xe.substr(0, 20) + (xe.length > 20 ? '...' : '')).replace(/\n/g, '')
              }, 'upcomingInput'),
              showPosition: o(function () {
                var xe = this.pastInput(),
                  q = new Array(xe.length + 1).join('-')
                return (
                  xe +
                  this.upcomingInput() +
                  `
` +
                  q +
                  '^'
                )
              }, 'showPosition'),
              test_match: o(function (xe, q) {
                var de, ie, oe
                if (
                  (this.options.backtrack_lexer &&
                    ((oe = {
                      yylineno: this.yylineno,
                      yylloc: { first_line: this.yylloc.first_line, last_line: this.last_line, first_column: this.yylloc.first_column, last_column: this.yylloc.last_column },
                      yytext: this.yytext,
                      match: this.match,
                      matches: this.matches,
                      matched: this.matched,
                      yyleng: this.yyleng,
                      offset: this.offset,
                      _more: this._more,
                      _input: this._input,
                      yy: this.yy,
                      conditionStack: this.conditionStack.slice(0),
                      done: this.done
                    }),
                    this.options.ranges && (oe.yylloc.range = this.yylloc.range.slice(0))),
                  (ie = xe[0].match(/(?:\r\n?|\n).*/g)),
                  ie && (this.yylineno += ie.length),
                  (this.yylloc = {
                    first_line: this.yylloc.last_line,
                    last_line: this.yylineno + 1,
                    first_column: this.yylloc.last_column,
                    last_column: ie ? ie[ie.length - 1].length - ie[ie.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + xe[0].length
                  }),
                  (this.yytext += xe[0]),
                  (this.match += xe[0]),
                  (this.matches = xe),
                  (this.yyleng = this.yytext.length),
                  this.options.ranges && (this.yylloc.range = [this.offset, (this.offset += this.yyleng)]),
                  (this._more = !1),
                  (this._backtrack = !1),
                  (this._input = this._input.slice(xe[0].length)),
                  (this.matched += xe[0]),
                  (de = this.performAction.call(this, this.yy, this, q, this.conditionStack[this.conditionStack.length - 1])),
                  this.done && this._input && (this.done = !1),
                  de)
                )
                  return de
                if (this._backtrack) {
                  for (var V in oe) this[V] = oe[V]
                  return !1
                }
                return !1
              }, 'test_match'),
              next: o(function () {
                if (this.done) return this.EOF
                this._input || (this.done = !0)
                var xe, q, de, ie
                this._more || ((this.yytext = ''), (this.match = ''))
                for (var oe = this._currentRules(), V = 0; V < oe.length; V++)
                  if (((de = this._input.match(this.rules[oe[V]])), de && (!q || de[0].length > q[0].length))) {
                    if (((q = de), (ie = V), this.options.backtrack_lexer)) {
                      if (((xe = this.test_match(de, oe[V])), xe !== !1)) return xe
                      if (this._backtrack) {
                        q = !1
                        continue
                      } else return !1
                    } else if (!this.options.flex) break
                  }
                return q
                  ? ((xe = this.test_match(q, oe[ie])), xe !== !1 ? xe : !1)
                  : this._input === ''
                    ? this.EOF
                    : this.parseError(
                        'Lexical error on line ' +
                          (this.yylineno + 1) +
                          `. Unrecognized text.
` +
                          this.showPosition(),
                        { text: '', token: null, line: this.yylineno }
                      )
              }, 'next'),
              lex: o(function () {
                var q = this.next()
                return q || this.lex()
              }, 'lex'),
              begin: o(function (q) {
                this.conditionStack.push(q)
              }, 'begin'),
              popState: o(function () {
                var q = this.conditionStack.length - 1
                return q > 0 ? this.conditionStack.pop() : this.conditionStack[0]
              }, 'popState'),
              _currentRules: o(function () {
                return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]
                  ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
                  : this.conditions.INITIAL.rules
              }, '_currentRules'),
              topState: o(function (q) {
                return (q = this.conditionStack.length - 1 - Math.abs(q || 0)), q >= 0 ? this.conditionStack[q] : 'INITIAL'
              }, 'topState'),
              pushState: o(function (q) {
                this.begin(q)
              }, 'pushState'),
              stateStackSize: o(function () {
                return this.conditionStack.length
              }, 'stateStackSize'),
              options: {},
              performAction: o(function (q, de, ie, oe) {
                var V = oe
                switch (ie) {
                  case 0:
                    return 60
                  case 1:
                    return 61
                  case 2:
                    return 62
                  case 3:
                    return 63
                  case 4:
                    break
                  case 5:
                    break
                  case 6:
                    return this.begin('acc_title'), 33
                    break
                  case 7:
                    return this.popState(), 'acc_title_value'
                    break
                  case 8:
                    return this.begin('acc_descr'), 35
                    break
                  case 9:
                    return this.popState(), 'acc_descr_value'
                    break
                  case 10:
                    this.begin('acc_descr_multiline')
                    break
                  case 11:
                    this.popState()
                    break
                  case 12:
                    return 'acc_descr_multiline_value'
                  case 13:
                    return 8
                  case 14:
                    break
                  case 15:
                    return 7
                  case 16:
                    return 7
                  case 17:
                    return 'EDGE_STATE'
                  case 18:
                    this.begin('callback_name')
                    break
                  case 19:
                    this.popState()
                    break
                  case 20:
                    this.popState(), this.begin('callback_args')
                    break
                  case 21:
                    return 77
                  case 22:
                    this.popState()
                    break
                  case 23:
                    return 78
                  case 24:
                    this.popState()
                    break
                  case 25:
                    return 'STR'
                  case 26:
                    this.begin('string')
                    break
                  case 27:
                    return 80
                  case 28:
                    return 55
                  case 29:
                    return this.begin('namespace'), 42
                    break
                  case 30:
                    return this.popState(), 8
                    break
                  case 31:
                    break
                  case 32:
                    return this.begin('namespace-body'), 39
                    break
                  case 33:
                    return this.popState(), 41
                    break
                  case 34:
                    return 'EOF_IN_STRUCT'
                  case 35:
                    return 8
                  case 36:
                    break
                  case 37:
                    return 'EDGE_STATE'
                  case 38:
                    return this.begin('class'), 46
                    break
                  case 39:
                    return this.popState(), 8
                    break
                  case 40:
                    break
                  case 41:
                    return this.popState(), this.popState(), 41
                    break
                  case 42:
                    return this.begin('class-body'), 39
                    break
                  case 43:
                    return this.popState(), 41
                    break
                  case 44:
                    return 'EOF_IN_STRUCT'
                  case 45:
                    return 'EDGE_STATE'
                  case 46:
                    return 'OPEN_IN_STRUCT'
                  case 47:
                    break
                  case 48:
                    return 'MEMBER'
                  case 49:
                    return 81
                  case 50:
                    return 73
                  case 51:
                    return 74
                  case 52:
                    return 76
                  case 53:
                    return 52
                  case 54:
                    return 54
                  case 55:
                    return 47
                  case 56:
                    return 48
                  case 57:
                    return 79
                  case 58:
                    this.popState()
                    break
                  case 59:
                    return 'GENERICTYPE'
                  case 60:
                    this.begin('generic')
                    break
                  case 61:
                    this.popState()
                    break
                  case 62:
                    return 'BQUOTE_STR'
                  case 63:
                    this.begin('bqstring')
                    break
                  case 64:
                    return 75
                  case 65:
                    return 75
                  case 66:
                    return 75
                  case 67:
                    return 75
                  case 68:
                    return 67
                  case 69:
                    return 67
                  case 70:
                    return 69
                  case 71:
                    return 69
                  case 72:
                    return 68
                  case 73:
                    return 66
                  case 74:
                    return 70
                  case 75:
                    return 71
                  case 76:
                    return 72
                  case 77:
                    return 22
                  case 78:
                    return 44
                  case 79:
                    return 99
                  case 80:
                    return 17
                  case 81:
                    return 'PLUS'
                  case 82:
                    return 85
                  case 83:
                    return 59
                  case 84:
                    return 88
                  case 85:
                    return 88
                  case 86:
                    return 89
                  case 87:
                    return 'EQUALS'
                  case 88:
                    return 'EQUALS'
                  case 89:
                    return 58
                  case 90:
                    return 12
                  case 91:
                    return 14
                  case 92:
                    return 'PUNCTUATION'
                  case 93:
                    return 84
                  case 94:
                    return 101
                  case 95:
                    return 87
                  case 96:
                    return 87
                  case 97:
                    return 9
                }
              }, 'anonymous'),
              rules: [
                /^(?:.*direction\s+TB[^\n]*)/,
                /^(?:.*direction\s+BT[^\n]*)/,
                /^(?:.*direction\s+RL[^\n]*)/,
                /^(?:.*direction\s+LR[^\n]*)/,
                /^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,
                /^(?:%%[^\n]*(\r?\n)*)/,
                /^(?:accTitle\s*:\s*)/,
                /^(?:(?!\n||)*[^\n]*)/,
                /^(?:accDescr\s*:\s*)/,
                /^(?:(?!\n||)*[^\n]*)/,
                /^(?:accDescr\s*\{\s*)/,
                /^(?:[\}])/,
                /^(?:[^\}]*)/,
                /^(?:\s*(\r?\n)+)/,
                /^(?:\s+)/,
                /^(?:classDiagram-v2\b)/,
                /^(?:classDiagram\b)/,
                /^(?:\[\*\])/,
                /^(?:call[\s]+)/,
                /^(?:\([\s]*\))/,
                /^(?:\()/,
                /^(?:[^(]*)/,
                /^(?:\))/,
                /^(?:[^)]*)/,
                /^(?:["])/,
                /^(?:[^"]*)/,
                /^(?:["])/,
                /^(?:style\b)/,
                /^(?:classDef\b)/,
                /^(?:namespace\b)/,
                /^(?:\s*(\r?\n)+)/,
                /^(?:\s+)/,
                /^(?:[{])/,
                /^(?:[}])/,
                /^(?:$)/,
                /^(?:\s*(\r?\n)+)/,
                /^(?:\s+)/,
                /^(?:\[\*\])/,
                /^(?:class\b)/,
                /^(?:\s*(\r?\n)+)/,
                /^(?:\s+)/,
                /^(?:[}])/,
                /^(?:[{])/,
                /^(?:[}])/,
                /^(?:$)/,
                /^(?:\[\*\])/,
                /^(?:[{])/,
                /^(?:[\n])/,
                /^(?:[^{}\n]*)/,
                /^(?:cssClass\b)/,
                /^(?:callback\b)/,
                /^(?:link\b)/,
                /^(?:click\b)/,
                /^(?:note for\b)/,
                /^(?:note\b)/,
                /^(?:<<)/,
                /^(?:>>)/,
                /^(?:href\b)/,
                /^(?:[~])/,
                /^(?:[^~]*)/,
                /^(?:~)/,
                /^(?:[`])/,
                /^(?:[^`]+)/,
                /^(?:[`])/,
                /^(?:_self\b)/,
                /^(?:_blank\b)/,
                /^(?:_parent\b)/,
                /^(?:_top\b)/,
                /^(?:\s*<\|)/,
                /^(?:\s*\|>)/,
                /^(?:\s*>)/,
                /^(?:\s*<)/,
                /^(?:\s*\*)/,
                /^(?:\s*o\b)/,
                /^(?:\s*\(\))/,
                /^(?:--)/,
                /^(?:\.\.)/,
                /^(?::{1}[^:\n;]+)/,
                /^(?::{3})/,
                /^(?:-)/,
                /^(?:\.)/,
                /^(?:\+)/,
                /^(?::)/,
                /^(?:,)/,
                /^(?:#)/,
                /^(?:#)/,
                /^(?:%)/,
                /^(?:=)/,
                /^(?:=)/,
                /^(?:\w+)/,
                /^(?:\[)/,
                /^(?:\])/,
                /^(?:[!"#$%&'*+,-.`?\\/])/,
                /^(?:[0-9]+)/,
                /^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,
                /^(?:\s)/,
                /^(?:\s)/,
                /^(?:$)/
              ],
              conditions: {
                'namespace-body': {
                  rules: [
                    26, 33, 34, 35, 36, 37, 38, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89,
                    90, 91, 92, 93, 94, 95, 97
                  ],
                  inclusive: !1
                },
                namespace: {
                  rules: [
                    26, 29, 30, 31, 32, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89, 90, 91,
                    92, 93, 94, 95, 97
                  ],
                  inclusive: !1
                },
                'class-body': {
                  rules: [
                    26, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89,
                    90, 91, 92, 93, 94, 95, 97
                  ],
                  inclusive: !1
                },
                class: {
                  rules: [
                    26, 39, 40, 41, 42, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89, 90, 91,
                    92, 93, 94, 95, 97
                  ],
                  inclusive: !1
                },
                acc_descr_multiline: {
                  rules: [
                    11, 12, 26, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89, 90, 91, 92, 93,
                    94, 95, 97
                  ],
                  inclusive: !1
                },
                acc_descr: {
                  rules: [
                    9, 26, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89, 90, 91, 92, 93, 94,
                    95, 97
                  ],
                  inclusive: !1
                },
                acc_title: {
                  rules: [
                    7, 26, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89, 90, 91, 92, 93, 94,
                    95, 97
                  ],
                  inclusive: !1
                },
                callback_args: {
                  rules: [
                    22, 23, 26, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89, 90, 91, 92, 93,
                    94, 95, 97
                  ],
                  inclusive: !1
                },
                callback_name: {
                  rules: [
                    19, 20, 21, 26, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89, 90, 91, 92,
                    93, 94, 95, 97
                  ],
                  inclusive: !1
                },
                href: {
                  rules: [
                    26, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
                    97
                  ],
                  inclusive: !1
                },
                struct: {
                  rules: [
                    26, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
                    97
                  ],
                  inclusive: !1
                },
                generic: {
                  rules: [
                    26, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89, 90, 91, 92, 93,
                    94, 95, 97
                  ],
                  inclusive: !1
                },
                bqstring: {
                  rules: [
                    26, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89, 90, 91, 92, 93,
                    94, 95, 97
                  ],
                  inclusive: !1
                },
                string: {
                  rules: [
                    24, 25, 26, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 86, 87, 88, 89, 90, 91, 92, 93,
                    94, 95, 97
                  ],
                  inclusive: !1
                },
                INITIAL: {
                  rules: [
                    0, 1, 2, 3, 4, 5, 6, 8, 10, 13, 14, 15, 16, 17, 18, 26, 27, 28, 29, 38, 49, 50, 51, 52, 53, 54, 55, 56, 57, 60, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
                    75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97
                  ],
                  inclusive: !0
                }
              }
            }
            return Ie
          })()
        He.lexer = ze
        function Le() {
          this.yy = {}
        }
        return o(Le, 'Parser'), (Le.prototype = He), (He.Parser = Le), new Le()
      })()
      bP.parser = bP
      jS = bP
    })
  var jde,
    Ib,
    Kde = N(() => {
      'use strict'
      Gt()
      pr()
      ;(jde = ['#', '+', '~', '-', '']),
        (Ib = class {
          static {
            o(this, 'ClassMember')
          }
          constructor(e, r) {
            ;(this.memberType = r), (this.visibility = ''), (this.classifier = ''), (this.text = '')
            let n = wr(e, me())
            this.parseMember(n)
          }
          getDisplayDetails() {
            let e = this.visibility + ic(this.id)
            this.memberType === 'method' && ((e += `(${ic(this.parameters.trim())})`), this.returnType && (e += ' : ' + ic(this.returnType))), (e = e.trim())
            let r = this.parseClassifier()
            return { displayText: e, cssStyle: r }
          }
          parseMember(e) {
            let r = ''
            if (this.memberType === 'method') {
              let a = /([#+~-])?(.+)\((.*)\)([\s$*])?(.*)([$*])?/.exec(e)
              if (a) {
                let s = a[1] ? a[1].trim() : ''
                if (
                  (jde.includes(s) && (this.visibility = s),
                  (this.id = a[2]),
                  (this.parameters = a[3] ? a[3].trim() : ''),
                  (r = a[4] ? a[4].trim() : ''),
                  (this.returnType = a[5] ? a[5].trim() : ''),
                  r === '')
                ) {
                  let l = this.returnType.substring(this.returnType.length - 1)
                  ;/[$*]/.exec(l) && ((r = l), (this.returnType = this.returnType.substring(0, this.returnType.length - 1)))
                }
              }
            } else {
              let i = e.length,
                a = e.substring(0, 1),
                s = e.substring(i - 1)
              jde.includes(a) && (this.visibility = a), /[$*]/.exec(s) && (r = s), (this.id = e.substring(this.visibility === '' ? 0 : 1, r === '' ? i : i - 1))
            }
            ;(this.classifier = r), (this.id = this.id.startsWith(' ') ? ' ' + this.id.trim() : this.id.trim())
            let n = `${this.visibility ? '\\' + this.visibility : ''}${ic(this.id)}${this.memberType === 'method' ? `(${ic(this.parameters)})${this.returnType ? ' : ' + ic(this.returnType) : ''}` : ''}`
            ;(this.text = n.replaceAll('<', '&lt;').replaceAll('>', '&gt;')), this.text.startsWith('\\&lt;') && (this.text = this.text.replace('\\&lt;', '~'))
          }
          parseClassifier() {
            switch (this.classifier) {
              case '*':
                return 'font-style:italic;'
              case '$':
                return 'text-decoration:underline;'
              default:
                return ''
            }
          }
        })
    })
  var KS,
    Qde,
    zp,
    P1,
    wP = N(() => {
      'use strict'
      fr()
      yt()
      Gt()
      pr()
      er()
      ci()
      Kde()
      ;(KS = 'classId-'),
        (Qde = 0),
        (zp = o(t => Ze.sanitizeText(t, me()), 'sanitizeText')),
        (P1 = class {
          constructor() {
            this.relations = []
            this.classes = new Map()
            this.styleClasses = new Map()
            this.notes = []
            this.interfaces = []
            this.namespaces = new Map()
            this.namespaceCounter = 0
            this.functions = []
            this.lineType = { LINE: 0, DOTTED_LINE: 1 }
            this.relationType = { AGGREGATION: 0, EXTENSION: 1, COMPOSITION: 2, DEPENDENCY: 3, LOLLIPOP: 4 }
            this.setupToolTips = o(e => {
              let r = Ge('.mermaidTooltip')
              ;(r._groups || r)[0][0] === null && (r = Ge('body').append('div').attr('class', 'mermaidTooltip').style('opacity', 0)),
                Ge(e)
                  .select('svg')
                  .selectAll('g.node')
                  .on('mouseover', a => {
                    let s = Ge(a.currentTarget)
                    if (s.attr('title') === null) return
                    let u = this.getBoundingClientRect()
                    r.transition().duration(200).style('opacity', '.9'),
                      r
                        .text(s.attr('title'))
                        .style('left', window.scrollX + u.left + (u.right - u.left) / 2 + 'px')
                        .style('top', window.scrollY + u.top - 14 + document.body.scrollTop + 'px'),
                      r.html(r.html().replace(/&lt;br\/&gt;/g, '<br/>')),
                      s.classed('hover', !0)
                  })
                  .on('mouseout', a => {
                    r.transition().duration(500).style('opacity', 0), Ge(a.currentTarget).classed('hover', !1)
                  })
            }, 'setupToolTips')
            this.direction = 'TB'
            this.setAccTitle = Ar
            this.getAccTitle = Dr
            this.setAccDescription = Lr
            this.getAccDescription = Rr
            this.setDiagramTitle = Or
            this.getDiagramTitle = Nr
            this.getConfig = o(() => me().class, 'getConfig')
            this.functions.push(this.setupToolTips.bind(this)),
              this.clear(),
              (this.addRelation = this.addRelation.bind(this)),
              (this.addClassesToNamespace = this.addClassesToNamespace.bind(this)),
              (this.addNamespace = this.addNamespace.bind(this)),
              (this.setCssClass = this.setCssClass.bind(this)),
              (this.addMembers = this.addMembers.bind(this)),
              (this.addClass = this.addClass.bind(this)),
              (this.setClassLabel = this.setClassLabel.bind(this)),
              (this.addAnnotation = this.addAnnotation.bind(this)),
              (this.addMember = this.addMember.bind(this)),
              (this.cleanupLabel = this.cleanupLabel.bind(this)),
              (this.addNote = this.addNote.bind(this)),
              (this.defineClass = this.defineClass.bind(this)),
              (this.setDirection = this.setDirection.bind(this)),
              (this.setLink = this.setLink.bind(this)),
              (this.bindFunctions = this.bindFunctions.bind(this)),
              (this.clear = this.clear.bind(this)),
              (this.setTooltip = this.setTooltip.bind(this)),
              (this.setClickEvent = this.setClickEvent.bind(this)),
              (this.setCssStyle = this.setCssStyle.bind(this))
          }
          static {
            o(this, 'ClassDB')
          }
          splitClassNameAndType(e) {
            let r = Ze.sanitizeText(e, me()),
              n = '',
              i = r
            if (r.indexOf('~') > 0) {
              let a = r.split('~')
              ;(i = zp(a[0])), (n = zp(a[1]))
            }
            return { className: i, type: n }
          }
          setClassLabel(e, r) {
            let n = Ze.sanitizeText(e, me())
            r && (r = zp(r))
            let { className: i } = this.splitClassNameAndType(n)
            ;(this.classes.get(i).label = r), (this.classes.get(i).text = `${r}${this.classes.get(i).type ? `<${this.classes.get(i).type}>` : ''}`)
          }
          addClass(e) {
            let r = Ze.sanitizeText(e, me()),
              { className: n, type: i } = this.splitClassNameAndType(r)
            if (this.classes.has(n)) return
            let a = Ze.sanitizeText(n, me())
            this.classes.set(a, {
              id: a,
              type: i,
              label: a,
              text: `${a}${i ? `&lt;${i}&gt;` : ''}`,
              shape: 'classBox',
              cssClasses: 'default',
              methods: [],
              members: [],
              annotations: [],
              styles: [],
              domId: KS + a + '-' + Qde
            }),
              Qde++
          }
          addInterface(e, r) {
            let n = { id: `interface${this.interfaces.length}`, label: e, classId: r }
            this.interfaces.push(n)
          }
          lookUpDomId(e) {
            let r = Ze.sanitizeText(e, me())
            if (this.classes.has(r)) return this.classes.get(r).domId
            throw new Error('Class not found: ' + r)
          }
          clear() {
            ;(this.relations = []),
              (this.classes = new Map()),
              (this.notes = []),
              (this.interfaces = []),
              (this.functions = []),
              this.functions.push(this.setupToolTips.bind(this)),
              (this.namespaces = new Map()),
              (this.namespaceCounter = 0),
              (this.direction = 'TB'),
              kr()
          }
          getClass(e) {
            return this.classes.get(e)
          }
          getClasses() {
            return this.classes
          }
          getRelations() {
            return this.relations
          }
          getNotes() {
            return this.notes
          }
          addRelation(e) {
            X.debug('Adding relation: ' + JSON.stringify(e))
            let r = [this.relationType.LOLLIPOP, this.relationType.AGGREGATION, this.relationType.COMPOSITION, this.relationType.DEPENDENCY, this.relationType.EXTENSION]
            e.relation.type1 === this.relationType.LOLLIPOP && !r.includes(e.relation.type2)
              ? (this.addClass(e.id2), this.addInterface(e.id1, e.id2), (e.id1 = `interface${this.interfaces.length - 1}`))
              : e.relation.type2 === this.relationType.LOLLIPOP && !r.includes(e.relation.type1)
                ? (this.addClass(e.id1), this.addInterface(e.id2, e.id1), (e.id2 = `interface${this.interfaces.length - 1}`))
                : (this.addClass(e.id1), this.addClass(e.id2)),
              (e.id1 = this.splitClassNameAndType(e.id1).className),
              (e.id2 = this.splitClassNameAndType(e.id2).className),
              (e.relationTitle1 = Ze.sanitizeText(e.relationTitle1.trim(), me())),
              (e.relationTitle2 = Ze.sanitizeText(e.relationTitle2.trim(), me())),
              this.relations.push(e)
          }
          addAnnotation(e, r) {
            let n = this.splitClassNameAndType(e).className
            this.classes.get(n).annotations.push(r)
          }
          addMember(e, r) {
            this.addClass(e)
            let n = this.splitClassNameAndType(e).className,
              i = this.classes.get(n)
            if (typeof r == 'string') {
              let a = r.trim()
              a.startsWith('<<') && a.endsWith('>>')
                ? i.annotations.push(zp(a.substring(2, a.length - 2)))
                : a.indexOf(')') > 0
                  ? i.methods.push(new Ib(a, 'method'))
                  : a && i.members.push(new Ib(a, 'attribute'))
            }
          }
          addMembers(e, r) {
            Array.isArray(r) && (r.reverse(), r.forEach(n => this.addMember(e, n)))
          }
          addNote(e, r) {
            let n = { id: `note${this.notes.length}`, class: r, text: e }
            this.notes.push(n)
          }
          cleanupLabel(e) {
            return e.startsWith(':') && (e = e.substring(1)), zp(e.trim())
          }
          setCssClass(e, r) {
            e.split(',').forEach(n => {
              let i = n
              ;/\d/.exec(n[0]) && (i = KS + i)
              let a = this.classes.get(i)
              a && (a.cssClasses += ' ' + r)
            })
          }
          defineClass(e, r) {
            for (let n of e) {
              let i = this.styleClasses.get(n)
              i === void 0 && ((i = { id: n, styles: [], textStyles: [] }), this.styleClasses.set(n, i)),
                r &&
                  r.forEach(a => {
                    if (/color/.exec(a)) {
                      let s = a.replace('fill', 'bgFill')
                      i.textStyles.push(s)
                    }
                    i.styles.push(a)
                  }),
                this.classes.forEach(a => {
                  a.cssClasses.includes(n) && a.styles.push(...r.flatMap(s => s.split(',')))
                })
            }
          }
          setTooltip(e, r) {
            e.split(',').forEach(n => {
              r !== void 0 && (this.classes.get(n).tooltip = zp(r))
            })
          }
          getTooltip(e, r) {
            return r && this.namespaces.has(r) ? this.namespaces.get(r).classes.get(e).tooltip : this.classes.get(e).tooltip
          }
          setLink(e, r, n) {
            let i = me()
            e.split(',').forEach(a => {
              let s = a
              ;/\d/.exec(a[0]) && (s = KS + s)
              let l = this.classes.get(s)
              l &&
                ((l.link = Vt.formatUrl(r, i)), i.securityLevel === 'sandbox' ? (l.linkTarget = '_top') : typeof n == 'string' ? (l.linkTarget = zp(n)) : (l.linkTarget = '_blank'))
            }),
              this.setCssClass(e, 'clickable')
          }
          setClickEvent(e, r, n) {
            e.split(',').forEach(i => {
              this.setClickFunc(i, r, n), (this.classes.get(i).haveCallback = !0)
            }),
              this.setCssClass(e, 'clickable')
          }
          setClickFunc(e, r, n) {
            let i = Ze.sanitizeText(e, me())
            if (me().securityLevel !== 'loose' || r === void 0) return
            let s = i
            if (this.classes.has(s)) {
              let l = this.lookUpDomId(s),
                u = []
              if (typeof n == 'string') {
                u = n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/)
                for (let h = 0; h < u.length; h++) {
                  let f = u[h].trim()
                  f.startsWith('"') && f.endsWith('"') && (f = f.substr(1, f.length - 2)), (u[h] = f)
                }
              }
              u.length === 0 && u.push(l),
                this.functions.push(() => {
                  let h = document.querySelector(`[id="${l}"]`)
                  h !== null &&
                    h.addEventListener(
                      'click',
                      () => {
                        Vt.runFunc(r, ...u)
                      },
                      !1
                    )
                })
            }
          }
          bindFunctions(e) {
            this.functions.forEach(r => {
              r(e)
            })
          }
          getDirection() {
            return this.direction
          }
          setDirection(e) {
            this.direction = e
          }
          addNamespace(e) {
            this.namespaces.has(e) || (this.namespaces.set(e, { id: e, classes: new Map(), children: {}, domId: KS + e + '-' + this.namespaceCounter }), this.namespaceCounter++)
          }
          getNamespace(e) {
            return this.namespaces.get(e)
          }
          getNamespaces() {
            return this.namespaces
          }
          addClassesToNamespace(e, r) {
            if (this.namespaces.has(e))
              for (let n of r) {
                let { className: i } = this.splitClassNameAndType(n)
                ;(this.classes.get(i).parent = e), this.namespaces.get(e).classes.set(i, this.classes.get(i))
              }
          }
          setCssStyle(e, r) {
            let n = this.classes.get(e)
            if (!(!r || !n)) for (let i of r) i.includes(',') ? n.styles.push(...i.split(',')) : n.styles.push(i)
          }
          getArrowMarker(e) {
            let r
            switch (e) {
              case 0:
                r = 'aggregation'
                break
              case 1:
                r = 'extension'
                break
              case 2:
                r = 'composition'
                break
              case 3:
                r = 'dependency'
                break
              case 4:
                r = 'lollipop'
                break
              default:
                r = 'none'
            }
            return r
          }
          getData() {
            let e = [],
              r = [],
              n = me()
            for (let a of this.namespaces.keys()) {
              let s = this.namespaces.get(a)
              if (s) {
                let l = { id: s.id, label: s.id, isGroup: !0, padding: n.class.padding ?? 16, shape: 'rect', cssStyles: ['fill: none', 'stroke: black'], look: n.look }
                e.push(l)
              }
            }
            for (let a of this.classes.keys()) {
              let s = this.classes.get(a)
              if (s) {
                let l = s
                ;(l.parentId = s.parent), (l.look = n.look), e.push(l)
              }
            }
            let i = 0
            for (let a of this.notes) {
              i++
              let s = {
                id: a.id,
                label: a.text,
                isGroup: !1,
                shape: 'note',
                padding: n.class.padding ?? 6,
                cssStyles: ['text-align: left', 'white-space: nowrap', `fill: ${n.themeVariables.noteBkgColor}`, `stroke: ${n.themeVariables.noteBorderColor}`],
                look: n.look
              }
              e.push(s)
              let l = this.classes.get(a.class)?.id ?? ''
              if (l) {
                let u = {
                  id: `edgeNote${i}`,
                  start: a.id,
                  end: l,
                  type: 'normal',
                  thickness: 'normal',
                  classes: 'relation',
                  arrowTypeStart: 'none',
                  arrowTypeEnd: 'none',
                  arrowheadStyle: '',
                  labelStyle: [''],
                  style: ['fill: none'],
                  pattern: 'dotted',
                  look: n.look
                }
                r.push(u)
              }
            }
            for (let a of this.interfaces) {
              let s = { id: a.id, label: a.label, isGroup: !1, shape: 'rect', cssStyles: ['opacity: 0;'], look: n.look }
              e.push(s)
            }
            i = 0
            for (let a of this.relations) {
              i++
              let s = {
                id: Wh(a.id1, a.id2, { prefix: 'id', counter: i }),
                start: a.id1,
                end: a.id2,
                type: 'normal',
                label: a.title,
                labelpos: 'c',
                thickness: 'normal',
                classes: 'relation',
                arrowTypeStart: this.getArrowMarker(a.relation.type1),
                arrowTypeEnd: this.getArrowMarker(a.relation.type2),
                startLabelRight: a.relationTitle1 === 'none' ? '' : a.relationTitle1,
                endLabelLeft: a.relationTitle2 === 'none' ? '' : a.relationTitle2,
                arrowheadStyle: '',
                labelStyle: ['display: inline-block'],
                style: a.style || '',
                pattern: a.relation.lineType == 1 ? 'dashed' : 'solid',
                look: n.look
              }
              r.push(s)
            }
            return { nodes: e, edges: r, other: {}, config: n, direction: this.getDirection() }
          }
        })
    })
  var kHe,
    QS,
    kP = N(() => {
      'use strict'
      Xm()
      ;(kHe = o(
        t => `g.classGroup text {
  fill: ${t.nodeBorder || t.classText};
  stroke: none;
  font-family: ${t.fontFamily};
  font-size: 10px;

  .title {
    font-weight: bolder;
  }

}

.nodeLabel, .edgeLabel {
  color: ${t.classText};
}
.edgeLabel .label rect {
  fill: ${t.mainBkg};
}
.label text {
  fill: ${t.classText};
}

.labelBkg {
  background: ${t.mainBkg};
}
.edgeLabel .label span {
  background: ${t.mainBkg};
}

.classTitle {
  font-weight: bolder;
}
.node rect,
  .node circle,
  .node ellipse,
  .node polygon,
  .node path {
    fill: ${t.mainBkg};
    stroke: ${t.nodeBorder};
    stroke-width: 1px;
  }


.divider {
  stroke: ${t.nodeBorder};
  stroke-width: 1;
}

g.clickable {
  cursor: pointer;
}

g.classGroup rect {
  fill: ${t.mainBkg};
  stroke: ${t.nodeBorder};
}

g.classGroup line {
  stroke: ${t.nodeBorder};
  stroke-width: 1;
}

.classLabel .box {
  stroke: none;
  stroke-width: 0;
  fill: ${t.mainBkg};
  opacity: 0.5;
}

.classLabel .label {
  fill: ${t.nodeBorder};
  font-size: 10px;
}

.relation {
  stroke: ${t.lineColor};
  stroke-width: 1;
  fill: none;
}

.dashed-line{
  stroke-dasharray: 3;
}

.dotted-line{
  stroke-dasharray: 1 2;
}

#compositionStart, .composition {
  fill: ${t.lineColor} !important;
  stroke: ${t.lineColor} !important;
  stroke-width: 1;
}

#compositionEnd, .composition {
  fill: ${t.lineColor} !important;
  stroke: ${t.lineColor} !important;
  stroke-width: 1;
}

#dependencyStart, .dependency {
  fill: ${t.lineColor} !important;
  stroke: ${t.lineColor} !important;
  stroke-width: 1;
}

#dependencyStart, .dependency {
  fill: ${t.lineColor} !important;
  stroke: ${t.lineColor} !important;
  stroke-width: 1;
}

#extensionStart, .extension {
  fill: transparent !important;
  stroke: ${t.lineColor} !important;
  stroke-width: 1;
}

#extensionEnd, .extension {
  fill: transparent !important;
  stroke: ${t.lineColor} !important;
  stroke-width: 1;
}

#aggregationStart, .aggregation {
  fill: transparent !important;
  stroke: ${t.lineColor} !important;
  stroke-width: 1;
}

#aggregationEnd, .aggregation {
  fill: transparent !important;
  stroke: ${t.lineColor} !important;
  stroke-width: 1;
}

#lollipopStart, .lollipop {
  fill: ${t.mainBkg} !important;
  stroke: ${t.lineColor} !important;
  stroke-width: 1;
}

#lollipopEnd, .lollipop {
  fill: ${t.mainBkg} !important;
  stroke: ${t.lineColor} !important;
  stroke-width: 1;
}

.edgeTerminals {
  font-size: 11px;
  line-height: initial;
}

.classTitleText {
  text-anchor: middle;
  font-size: 18px;
  fill: ${t.textColor};
}
  ${Nc()}
`,
        'getStyles'
      )),
        (QS = kHe)
    })
  var EHe,
    SHe,
    CHe,
    ZS,
    EP = N(() => {
      'use strict'
      Gt()
      yt()
      Sm()
      rp()
      np()
      er()
      ;(EHe = o((t, e = 'TB') => {
        if (!t.doc) return e
        let r = e
        for (let n of t.doc) n.stmt === 'dir' && (r = n.value)
        return r
      }, 'getDir')),
        (SHe = o(function (t, e) {
          return e.db.getClasses()
        }, 'getClasses')),
        (CHe = o(async function (t, e, r, n) {
          X.info('REF0:'), X.info('Drawing class diagram (v3)', e)
          let { securityLevel: i, state: a, layout: s } = me(),
            l = n.db.getData(),
            u = wc(e, i)
          ;(l.type = n.type),
            (l.layoutAlgorithm = uf(s)),
            (l.nodeSpacing = a?.nodeSpacing || 50),
            (l.rankSpacing = a?.rankSpacing || 50),
            (l.markers = ['aggregation', 'extension', 'composition', 'dependency', 'lollipop']),
            (l.diagramId = e),
            await Rc(l, u)
          let h = 8
          Vt.insertTitle(u, 'classDiagramTitleText', a?.titleTopMargin ?? 25, n.db.getDiagramTitle()), Yo(u, h, 'classDiagram', a?.useMaxWidth ?? !0)
        }, 'draw')),
        (ZS = { getClasses: SHe, draw: CHe, getDir: EHe })
    })
  var Zde = {}
  ur(Zde, { diagram: () => AHe })
  var AHe,
    Jde = N(() => {
      'use strict'
      TP()
      wP()
      kP()
      EP()
      AHe = {
        parser: jS,
        get db() {
          return new P1()
        },
        renderer: ZS,
        styles: QS,
        init: o(t => {
          t.class || (t.class = {}), (t.class.arrowMarkerAbsolute = t.arrowMarkerAbsolute)
        }, 'init')
      }
    })
  var rpe = {}
  ur(rpe, { diagram: () => RHe })
  var RHe,
    npe = N(() => {
      'use strict'
      TP()
      wP()
      kP()
      EP()
      RHe = {
        parser: jS,
        get db() {
          return new P1()
        },
        renderer: ZS,
        styles: QS,
        init: o(t => {
          t.class || (t.class = {}), (t.class.arrowMarkerAbsolute = t.arrowMarkerAbsolute)
        }, 'init')
      }
    })
  var SP,
    JS,
    CP = N(() => {
      'use strict'
      SP = (function () {
        var t = o(function (F, z, $, U) {
            for ($ = $ || {}, U = F.length; U--; $[F[U]] = z);
            return $
          }, 'o'),
          e = [1, 2],
          r = [1, 3],
          n = [1, 4],
          i = [2, 4],
          a = [1, 9],
          s = [1, 11],
          l = [1, 16],
          u = [1, 17],
          h = [1, 18],
          f = [1, 19],
          d = [1, 33],
          p = [1, 20],
          m = [1, 21],
          g = [1, 22],
          y = [1, 23],
          v = [1, 24],
          x = [1, 26],
          b = [1, 27],
          T = [1, 28],
          S = [1, 29],
          w = [1, 30],
          E = [1, 31],
          _ = [1, 32],
          C = [1, 35],
          D = [1, 36],
          O = [1, 37],
          R = [1, 38],
          k = [1, 34],
          L = [1, 4, 5, 16, 17, 19, 21, 22, 24, 25, 26, 27, 28, 29, 33, 35, 37, 38, 41, 45, 48, 51, 52, 53, 54, 57],
          A = [1, 4, 5, 14, 15, 16, 17, 19, 21, 22, 24, 25, 26, 27, 28, 29, 33, 35, 37, 38, 39, 40, 41, 45, 48, 51, 52, 53, 54, 57],
          I = [4, 5, 16, 17, 19, 21, 22, 24, 25, 26, 27, 28, 29, 33, 35, 37, 38, 41, 45, 48, 51, 52, 53, 54, 57],
          M = {
            trace: o(function () {}, 'trace'),
            yy: {},
            symbols_: {
              error: 2,
              start: 3,
              SPACE: 4,
              NL: 5,
              SD: 6,
              document: 7,
              line: 8,
              statement: 9,
              classDefStatement: 10,
              styleStatement: 11,
              cssClassStatement: 12,
              idStatement: 13,
              DESCR: 14,
              '-->': 15,
              HIDE_EMPTY: 16,
              scale: 17,
              WIDTH: 18,
              COMPOSIT_STATE: 19,
              STRUCT_START: 20,
              STRUCT_STOP: 21,
              STATE_DESCR: 22,
              AS: 23,
              ID: 24,
              FORK: 25,
              JOIN: 26,
              CHOICE: 27,
              CONCURRENT: 28,
              note: 29,
              notePosition: 30,
              NOTE_TEXT: 31,
              direction: 32,
              acc_title: 33,
              acc_title_value: 34,
              acc_descr: 35,
              acc_descr_value: 36,
              acc_descr_multiline_value: 37,
              CLICK: 38,
              STRING: 39,
              HREF: 40,
              classDef: 41,
              CLASSDEF_ID: 42,
              CLASSDEF_STYLEOPTS: 43,
              DEFAULT: 44,
              style: 45,
              STYLE_IDS: 46,
              STYLEDEF_STYLEOPTS: 47,
              class: 48,
              CLASSENTITY_IDS: 49,
              STYLECLASS: 50,
              direction_tb: 51,
              direction_bt: 52,
              direction_rl: 53,
              direction_lr: 54,
              eol: 55,
              ';': 56,
              EDGE_STATE: 57,
              STYLE_SEPARATOR: 58,
              left_of: 59,
              right_of: 60,
              $accept: 0,
              $end: 1
            },
            terminals_: {
              2: 'error',
              4: 'SPACE',
              5: 'NL',
              6: 'SD',
              14: 'DESCR',
              15: '-->',
              16: 'HIDE_EMPTY',
              17: 'scale',
              18: 'WIDTH',
              19: 'COMPOSIT_STATE',
              20: 'STRUCT_START',
              21: 'STRUCT_STOP',
              22: 'STATE_DESCR',
              23: 'AS',
              24: 'ID',
              25: 'FORK',
              26: 'JOIN',
              27: 'CHOICE',
              28: 'CONCURRENT',
              29: 'note',
              31: 'NOTE_TEXT',
              33: 'acc_title',
              34: 'acc_title_value',
              35: 'acc_descr',
              36: 'acc_descr_value',
              37: 'acc_descr_multiline_value',
              38: 'CLICK',
              39: 'STRING',
              40: 'HREF',
              41: 'classDef',
              42: 'CLASSDEF_ID',
              43: 'CLASSDEF_STYLEOPTS',
              44: 'DEFAULT',
              45: 'style',
              46: 'STYLE_IDS',
              47: 'STYLEDEF_STYLEOPTS',
              48: 'class',
              49: 'CLASSENTITY_IDS',
              50: 'STYLECLASS',
              51: 'direction_tb',
              52: 'direction_bt',
              53: 'direction_rl',
              54: 'direction_lr',
              56: ';',
              57: 'EDGE_STATE',
              58: 'STYLE_SEPARATOR',
              59: 'left_of',
              60: 'right_of'
            },
            productions_: [
              0,
              [3, 2],
              [3, 2],
              [3, 2],
              [7, 0],
              [7, 2],
              [8, 2],
              [8, 1],
              [8, 1],
              [9, 1],
              [9, 1],
              [9, 1],
              [9, 1],
              [9, 2],
              [9, 3],
              [9, 4],
              [9, 1],
              [9, 2],
              [9, 1],
              [9, 4],
              [9, 3],
              [9, 6],
              [9, 1],
              [9, 1],
              [9, 1],
              [9, 1],
              [9, 4],
              [9, 4],
              [9, 1],
              [9, 2],
              [9, 2],
              [9, 1],
              [9, 5],
              [9, 5],
              [10, 3],
              [10, 3],
              [11, 3],
              [12, 3],
              [32, 1],
              [32, 1],
              [32, 1],
              [32, 1],
              [55, 1],
              [55, 1],
              [13, 1],
              [13, 1],
              [13, 3],
              [13, 3],
              [30, 1],
              [30, 1]
            ],
            performAction: o(function (z, $, U, K, ee, Y, ce) {
              var Z = Y.length - 1
              switch (ee) {
                case 3:
                  return K.setRootDoc(Y[Z]), Y[Z]
                  break
                case 4:
                  this.$ = []
                  break
                case 5:
                  Y[Z] != 'nl' && (Y[Z - 1].push(Y[Z]), (this.$ = Y[Z - 1]))
                  break
                case 6:
                case 7:
                  this.$ = Y[Z]
                  break
                case 8:
                  this.$ = 'nl'
                  break
                case 12:
                  this.$ = Y[Z]
                  break
                case 13:
                  let ne = Y[Z - 1]
                  ;(ne.description = K.trimColon(Y[Z])), (this.$ = ne)
                  break
                case 14:
                  this.$ = { stmt: 'relation', state1: Y[Z - 2], state2: Y[Z] }
                  break
                case 15:
                  let te = K.trimColon(Y[Z])
                  this.$ = { stmt: 'relation', state1: Y[Z - 3], state2: Y[Z - 1], description: te }
                  break
                case 19:
                  this.$ = { stmt: 'state', id: Y[Z - 3], type: 'default', description: '', doc: Y[Z - 1] }
                  break
                case 20:
                  var ue = Y[Z],
                    Q = Y[Z - 2].trim()
                  if (Y[Z].match(':')) {
                    var j = Y[Z].split(':')
                    ;(ue = j[0]), (Q = [Q, j[1]])
                  }
                  this.$ = { stmt: 'state', id: ue, type: 'default', description: Q }
                  break
                case 21:
                  this.$ = { stmt: 'state', id: Y[Z - 3], type: 'default', description: Y[Z - 5], doc: Y[Z - 1] }
                  break
                case 22:
                  this.$ = { stmt: 'state', id: Y[Z], type: 'fork' }
                  break
                case 23:
                  this.$ = { stmt: 'state', id: Y[Z], type: 'join' }
                  break
                case 24:
                  this.$ = { stmt: 'state', id: Y[Z], type: 'choice' }
                  break
                case 25:
                  this.$ = { stmt: 'state', id: K.getDividerId(), type: 'divider' }
                  break
                case 26:
                  this.$ = { stmt: 'state', id: Y[Z - 1].trim(), note: { position: Y[Z - 2].trim(), text: Y[Z].trim() } }
                  break
                case 29:
                  ;(this.$ = Y[Z].trim()), K.setAccTitle(this.$)
                  break
                case 30:
                case 31:
                  ;(this.$ = Y[Z].trim()), K.setAccDescription(this.$)
                  break
                case 32:
                  this.$ = { stmt: 'click', id: Y[Z - 3], url: Y[Z - 2], tooltip: Y[Z - 1] }
                  break
                case 33:
                  this.$ = { stmt: 'click', id: Y[Z - 3], url: Y[Z - 1], tooltip: '' }
                  break
                case 34:
                case 35:
                  this.$ = { stmt: 'classDef', id: Y[Z - 1].trim(), classes: Y[Z].trim() }
                  break
                case 36:
                  this.$ = { stmt: 'style', id: Y[Z - 1].trim(), styleClass: Y[Z].trim() }
                  break
                case 37:
                  this.$ = { stmt: 'applyClass', id: Y[Z - 1].trim(), styleClass: Y[Z].trim() }
                  break
                case 38:
                  K.setDirection('TB'), (this.$ = { stmt: 'dir', value: 'TB' })
                  break
                case 39:
                  K.setDirection('BT'), (this.$ = { stmt: 'dir', value: 'BT' })
                  break
                case 40:
                  K.setDirection('RL'), (this.$ = { stmt: 'dir', value: 'RL' })
                  break
                case 41:
                  K.setDirection('LR'), (this.$ = { stmt: 'dir', value: 'LR' })
                  break
                case 44:
                case 45:
                  this.$ = { stmt: 'state', id: Y[Z].trim(), type: 'default', description: '' }
                  break
                case 46:
                  this.$ = { stmt: 'state', id: Y[Z - 2].trim(), classes: [Y[Z].trim()], type: 'default', description: '' }
                  break
                case 47:
                  this.$ = { stmt: 'state', id: Y[Z - 2].trim(), classes: [Y[Z].trim()], type: 'default', description: '' }
                  break
              }
            }, 'anonymous'),
            table: [
              { 3: 1, 4: e, 5: r, 6: n },
              { 1: [3] },
              { 3: 5, 4: e, 5: r, 6: n },
              { 3: 6, 4: e, 5: r, 6: n },
              t([1, 4, 5, 16, 17, 19, 22, 24, 25, 26, 27, 28, 29, 33, 35, 37, 38, 41, 45, 48, 51, 52, 53, 54, 57], i, { 7: 7 }),
              { 1: [2, 1] },
              { 1: [2, 2] },
              {
                1: [2, 3],
                4: a,
                5: s,
                8: 8,
                9: 10,
                10: 12,
                11: 13,
                12: 14,
                13: 15,
                16: l,
                17: u,
                19: h,
                22: f,
                24: d,
                25: p,
                26: m,
                27: g,
                28: y,
                29: v,
                32: 25,
                33: x,
                35: b,
                37: T,
                38: S,
                41: w,
                45: E,
                48: _,
                51: C,
                52: D,
                53: O,
                54: R,
                57: k
              },
              t(L, [2, 5]),
              {
                9: 39,
                10: 12,
                11: 13,
                12: 14,
                13: 15,
                16: l,
                17: u,
                19: h,
                22: f,
                24: d,
                25: p,
                26: m,
                27: g,
                28: y,
                29: v,
                32: 25,
                33: x,
                35: b,
                37: T,
                38: S,
                41: w,
                45: E,
                48: _,
                51: C,
                52: D,
                53: O,
                54: R,
                57: k
              },
              t(L, [2, 7]),
              t(L, [2, 8]),
              t(L, [2, 9]),
              t(L, [2, 10]),
              t(L, [2, 11]),
              t(L, [2, 12], { 14: [1, 40], 15: [1, 41] }),
              t(L, [2, 16]),
              { 18: [1, 42] },
              t(L, [2, 18], { 20: [1, 43] }),
              { 23: [1, 44] },
              t(L, [2, 22]),
              t(L, [2, 23]),
              t(L, [2, 24]),
              t(L, [2, 25]),
              { 30: 45, 31: [1, 46], 59: [1, 47], 60: [1, 48] },
              t(L, [2, 28]),
              { 34: [1, 49] },
              { 36: [1, 50] },
              t(L, [2, 31]),
              { 13: 51, 24: d, 57: k },
              { 42: [1, 52], 44: [1, 53] },
              { 46: [1, 54] },
              { 49: [1, 55] },
              t(A, [2, 44], { 58: [1, 56] }),
              t(A, [2, 45], { 58: [1, 57] }),
              t(L, [2, 38]),
              t(L, [2, 39]),
              t(L, [2, 40]),
              t(L, [2, 41]),
              t(L, [2, 6]),
              t(L, [2, 13]),
              { 13: 58, 24: d, 57: k },
              t(L, [2, 17]),
              t(I, i, { 7: 59 }),
              { 24: [1, 60] },
              { 24: [1, 61] },
              { 23: [1, 62] },
              { 24: [2, 48] },
              { 24: [2, 49] },
              t(L, [2, 29]),
              t(L, [2, 30]),
              { 39: [1, 63], 40: [1, 64] },
              { 43: [1, 65] },
              { 43: [1, 66] },
              { 47: [1, 67] },
              { 50: [1, 68] },
              { 24: [1, 69] },
              { 24: [1, 70] },
              t(L, [2, 14], { 14: [1, 71] }),
              {
                4: a,
                5: s,
                8: 8,
                9: 10,
                10: 12,
                11: 13,
                12: 14,
                13: 15,
                16: l,
                17: u,
                19: h,
                21: [1, 72],
                22: f,
                24: d,
                25: p,
                26: m,
                27: g,
                28: y,
                29: v,
                32: 25,
                33: x,
                35: b,
                37: T,
                38: S,
                41: w,
                45: E,
                48: _,
                51: C,
                52: D,
                53: O,
                54: R,
                57: k
              },
              t(L, [2, 20], { 20: [1, 73] }),
              { 31: [1, 74] },
              { 24: [1, 75] },
              { 39: [1, 76] },
              { 39: [1, 77] },
              t(L, [2, 34]),
              t(L, [2, 35]),
              t(L, [2, 36]),
              t(L, [2, 37]),
              t(A, [2, 46]),
              t(A, [2, 47]),
              t(L, [2, 15]),
              t(L, [2, 19]),
              t(I, i, { 7: 78 }),
              t(L, [2, 26]),
              t(L, [2, 27]),
              { 5: [1, 79] },
              { 5: [1, 80] },
              {
                4: a,
                5: s,
                8: 8,
                9: 10,
                10: 12,
                11: 13,
                12: 14,
                13: 15,
                16: l,
                17: u,
                19: h,
                21: [1, 81],
                22: f,
                24: d,
                25: p,
                26: m,
                27: g,
                28: y,
                29: v,
                32: 25,
                33: x,
                35: b,
                37: T,
                38: S,
                41: w,
                45: E,
                48: _,
                51: C,
                52: D,
                53: O,
                54: R,
                57: k
              },
              t(L, [2, 32]),
              t(L, [2, 33]),
              t(L, [2, 21])
            ],
            defaultActions: { 5: [2, 1], 6: [2, 2], 47: [2, 48], 48: [2, 49] },
            parseError: o(function (z, $) {
              if ($.recoverable) this.trace(z)
              else {
                var U = new Error(z)
                throw ((U.hash = $), U)
              }
            }, 'parseError'),
            parse: o(function (z) {
              var $ = this,
                U = [0],
                K = [],
                ee = [null],
                Y = [],
                ce = this.table,
                Z = '',
                ue = 0,
                Q = 0,
                j = 0,
                ne = 2,
                te = 1,
                he = Y.slice.call(arguments, 1),
                le = Object.create(this.lexer),
                J = { yy: {} }
              for (var Se in this.yy) Object.prototype.hasOwnProperty.call(this.yy, Se) && (J.yy[Se] = this.yy[Se])
              le.setInput(z, J.yy), (J.yy.lexer = le), (J.yy.parser = this), typeof le.yylloc > 'u' && (le.yylloc = {})
              var se = le.yylloc
              Y.push(se)
              var ae = le.options && le.options.ranges
              typeof J.yy.parseError == 'function' ? (this.parseError = J.yy.parseError) : (this.parseError = Object.getPrototypeOf(this).parseError)
              function Oe(W) {
                ;(U.length = U.length - 2 * W), (ee.length = ee.length - W), (Y.length = Y.length - W)
              }
              o(Oe, 'popStack')
              function ye() {
                var W
                return (W = K.pop() || le.lex() || te), typeof W != 'number' && (W instanceof Array && ((K = W), (W = K.pop())), (W = $.symbols_[W] || W)), W
              }
              o(ye, 'lex')
              for (var Be, He, ze, Le, Ie, xe, q = {}, de, ie, oe, V; ; ) {
                if (
                  ((ze = U[U.length - 1]),
                  this.defaultActions[ze] ? (Le = this.defaultActions[ze]) : ((Be === null || typeof Be > 'u') && (Be = ye()), (Le = ce[ze] && ce[ze][Be])),
                  typeof Le > 'u' || !Le.length || !Le[0])
                ) {
                  var Te = ''
                  V = []
                  for (de in ce[ze]) this.terminals_[de] && de > ne && V.push("'" + this.terminals_[de] + "'")
                  le.showPosition
                    ? (Te =
                        'Parse error on line ' +
                        (ue + 1) +
                        `:
` +
                        le.showPosition() +
                        `
Expecting ` +
                        V.join(', ') +
                        ", got '" +
                        (this.terminals_[Be] || Be) +
                        "'")
                    : (Te = 'Parse error on line ' + (ue + 1) + ': Unexpected ' + (Be == te ? 'end of input' : "'" + (this.terminals_[Be] || Be) + "'")),
                    this.parseError(Te, { text: le.match, token: this.terminals_[Be] || Be, line: le.yylineno, loc: se, expected: V })
                }
                if (Le[0] instanceof Array && Le.length > 1) throw new Error('Parse Error: multiple actions possible at state: ' + ze + ', token: ' + Be)
                switch (Le[0]) {
                  case 1:
                    U.push(Be),
                      ee.push(le.yytext),
                      Y.push(le.yylloc),
                      U.push(Le[1]),
                      (Be = null),
                      He ? ((Be = He), (He = null)) : ((Q = le.yyleng), (Z = le.yytext), (ue = le.yylineno), (se = le.yylloc), j > 0 && j--)
                    break
                  case 2:
                    if (
                      ((ie = this.productions_[Le[1]][1]),
                      (q.$ = ee[ee.length - ie]),
                      (q._$ = {
                        first_line: Y[Y.length - (ie || 1)].first_line,
                        last_line: Y[Y.length - 1].last_line,
                        first_column: Y[Y.length - (ie || 1)].first_column,
                        last_column: Y[Y.length - 1].last_column
                      }),
                      ae && (q._$.range = [Y[Y.length - (ie || 1)].range[0], Y[Y.length - 1].range[1]]),
                      (xe = this.performAction.apply(q, [Z, Q, ue, J.yy, Le[1], ee, Y].concat(he))),
                      typeof xe < 'u')
                    )
                      return xe
                    ie && ((U = U.slice(0, -1 * ie * 2)), (ee = ee.slice(0, -1 * ie)), (Y = Y.slice(0, -1 * ie))),
                      U.push(this.productions_[Le[1]][0]),
                      ee.push(q.$),
                      Y.push(q._$),
                      (oe = ce[U[U.length - 2]][U[U.length - 1]]),
                      U.push(oe)
                    break
                  case 3:
                    return !0
                }
              }
              return !0
            }, 'parse')
          },
          P = (function () {
            var F = {
              EOF: 1,
              parseError: o(function ($, U) {
                if (this.yy.parser) this.yy.parser.parseError($, U)
                else throw new Error($)
              }, 'parseError'),
              setInput: o(function (z, $) {
                return (
                  (this.yy = $ || this.yy || {}),
                  (this._input = z),
                  (this._more = this._backtrack = this.done = !1),
                  (this.yylineno = this.yyleng = 0),
                  (this.yytext = this.matched = this.match = ''),
                  (this.conditionStack = ['INITIAL']),
                  (this.yylloc = { first_line: 1, first_column: 0, last_line: 1, last_column: 0 }),
                  this.options.ranges && (this.yylloc.range = [0, 0]),
                  (this.offset = 0),
                  this
                )
              }, 'setInput'),
              input: o(function () {
                var z = this._input[0]
                ;(this.yytext += z), this.yyleng++, this.offset++, (this.match += z), (this.matched += z)
                var $ = z.match(/(?:\r\n?|\n).*/g)
                return (
                  $ ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++, this.options.ranges && this.yylloc.range[1]++, (this._input = this._input.slice(1)), z
                )
              }, 'input'),
              unput: o(function (z) {
                var $ = z.length,
                  U = z.split(/(?:\r\n?|\n)/g)
                ;(this._input = z + this._input), (this.yytext = this.yytext.substr(0, this.yytext.length - $)), (this.offset -= $)
                var K = this.match.split(/(?:\r\n?|\n)/g)
                ;(this.match = this.match.substr(0, this.match.length - 1)),
                  (this.matched = this.matched.substr(0, this.matched.length - 1)),
                  U.length - 1 && (this.yylineno -= U.length - 1)
                var ee = this.yylloc.range
                return (
                  (this.yylloc = {
                    first_line: this.yylloc.first_line,
                    last_line: this.yylineno + 1,
                    first_column: this.yylloc.first_column,
                    last_column: U ? (U.length === K.length ? this.yylloc.first_column : 0) + K[K.length - U.length].length - U[0].length : this.yylloc.first_column - $
                  }),
                  this.options.ranges && (this.yylloc.range = [ee[0], ee[0] + this.yyleng - $]),
                  (this.yyleng = this.yytext.length),
                  this
                )
              }, 'unput'),
              more: o(function () {
                return (this._more = !0), this
              }, 'more'),
              reject: o(function () {
                if (this.options.backtrack_lexer) this._backtrack = !0
                else
                  return this.parseError(
                    'Lexical error on line ' +
                      (this.yylineno + 1) +
                      `. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
` +
                      this.showPosition(),
                    { text: '', token: null, line: this.yylineno }
                  )
                return this
              }, 'reject'),
              less: o(function (z) {
                this.unput(this.match.slice(z))
              }, 'less'),
              pastInput: o(function () {
                var z = this.matched.substr(0, this.matched.length - this.match.length)
                return (z.length > 20 ? '...' : '') + z.substr(-20).replace(/\n/g, '')
              }, 'pastInput'),
              upcomingInput: o(function () {
                var z = this.match
                return z.length < 20 && (z += this._input.substr(0, 20 - z.length)), (z.substr(0, 20) + (z.length > 20 ? '...' : '')).replace(/\n/g, '')
              }, 'upcomingInput'),
              showPosition: o(function () {
                var z = this.pastInput(),
                  $ = new Array(z.length + 1).join('-')
                return (
                  z +
                  this.upcomingInput() +
                  `
` +
                  $ +
                  '^'
                )
              }, 'showPosition'),
              test_match: o(function (z, $) {
                var U, K, ee
                if (
                  (this.options.backtrack_lexer &&
                    ((ee = {
                      yylineno: this.yylineno,
                      yylloc: { first_line: this.yylloc.first_line, last_line: this.last_line, first_column: this.yylloc.first_column, last_column: this.yylloc.last_column },
                      yytext: this.yytext,
                      match: this.match,
                      matches: this.matches,
                      matched: this.matched,
                      yyleng: this.yyleng,
                      offset: this.offset,
                      _more: this._more,
                      _input: this._input,
                      yy: this.yy,
                      conditionStack: this.conditionStack.slice(0),
                      done: this.done
                    }),
                    this.options.ranges && (ee.yylloc.range = this.yylloc.range.slice(0))),
                  (K = z[0].match(/(?:\r\n?|\n).*/g)),
                  K && (this.yylineno += K.length),
                  (this.yylloc = {
                    first_line: this.yylloc.last_line,
                    last_line: this.yylineno + 1,
                    first_column: this.yylloc.last_column,
                    last_column: K ? K[K.length - 1].length - K[K.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + z[0].length
                  }),
                  (this.yytext += z[0]),
                  (this.match += z[0]),
                  (this.matches = z),
                  (this.yyleng = this.yytext.length),
                  this.options.ranges && (this.yylloc.range = [this.offset, (this.offset += this.yyleng)]),
                  (this._more = !1),
                  (this._backtrack = !1),
                  (this._input = this._input.slice(z[0].length)),
                  (this.matched += z[0]),
                  (U = this.performAction.call(this, this.yy, this, $, this.conditionStack[this.conditionStack.length - 1])),
                  this.done && this._input && (this.done = !1),
                  U)
                )
                  return U
                if (this._backtrack) {
                  for (var Y in ee) this[Y] = ee[Y]
                  return !1
                }
                return !1
              }, 'test_match'),
              next: o(function () {
                if (this.done) return this.EOF
                this._input || (this.done = !0)
                var z, $, U, K
                this._more || ((this.yytext = ''), (this.match = ''))
                for (var ee = this._currentRules(), Y = 0; Y < ee.length; Y++)
                  if (((U = this._input.match(this.rules[ee[Y]])), U && (!$ || U[0].length > $[0].length))) {
                    if ((($ = U), (K = Y), this.options.backtrack_lexer)) {
                      if (((z = this.test_match(U, ee[Y])), z !== !1)) return z
                      if (this._backtrack) {
                        $ = !1
                        continue
                      } else return !1
                    } else if (!this.options.flex) break
                  }
                return $
                  ? ((z = this.test_match($, ee[K])), z !== !1 ? z : !1)
                  : this._input === ''
                    ? this.EOF
                    : this.parseError(
                        'Lexical error on line ' +
                          (this.yylineno + 1) +
                          `. Unrecognized text.
` +
                          this.showPosition(),
                        { text: '', token: null, line: this.yylineno }
                      )
              }, 'next'),
              lex: o(function () {
                var $ = this.next()
                return $ || this.lex()
              }, 'lex'),
              begin: o(function ($) {
                this.conditionStack.push($)
              }, 'begin'),
              popState: o(function () {
                var $ = this.conditionStack.length - 1
                return $ > 0 ? this.conditionStack.pop() : this.conditionStack[0]
              }, 'popState'),
              _currentRules: o(function () {
                return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]
                  ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
                  : this.conditions.INITIAL.rules
              }, '_currentRules'),
              topState: o(function ($) {
                return ($ = this.conditionStack.length - 1 - Math.abs($ || 0)), $ >= 0 ? this.conditionStack[$] : 'INITIAL'
              }, 'topState'),
              pushState: o(function ($) {
                this.begin($)
              }, 'pushState'),
              stateStackSize: o(function () {
                return this.conditionStack.length
              }, 'stateStackSize'),
              options: { 'case-insensitive': !0 },
              performAction: o(function ($, U, K, ee) {
                var Y = ee
                switch (K) {
                  case 0:
                    return 38
                  case 1:
                    return 40
                  case 2:
                    return 39
                  case 3:
                    return 44
                  case 4:
                    return 51
                  case 5:
                    return 52
                  case 6:
                    return 53
                  case 7:
                    return 54
                  case 8:
                    break
                  case 9:
                    break
                  case 10:
                    return 5
                  case 11:
                    break
                  case 12:
                    break
                  case 13:
                    break
                  case 14:
                    break
                  case 15:
                    return this.pushState('SCALE'), 17
                    break
                  case 16:
                    return 18
                  case 17:
                    this.popState()
                    break
                  case 18:
                    return this.begin('acc_title'), 33
                    break
                  case 19:
                    return this.popState(), 'acc_title_value'
                    break
                  case 20:
                    return this.begin('acc_descr'), 35
                    break
                  case 21:
                    return this.popState(), 'acc_descr_value'
                    break
                  case 22:
                    this.begin('acc_descr_multiline')
                    break
                  case 23:
                    this.popState()
                    break
                  case 24:
                    return 'acc_descr_multiline_value'
                  case 25:
                    return this.pushState('CLASSDEF'), 41
                    break
                  case 26:
                    return this.popState(), this.pushState('CLASSDEFID'), 'DEFAULT_CLASSDEF_ID'
                    break
                  case 27:
                    return this.popState(), this.pushState('CLASSDEFID'), 42
                    break
                  case 28:
                    return this.popState(), 43
                    break
                  case 29:
                    return this.pushState('CLASS'), 48
                    break
                  case 30:
                    return this.popState(), this.pushState('CLASS_STYLE'), 49
                    break
                  case 31:
                    return this.popState(), 50
                    break
                  case 32:
                    return this.pushState('STYLE'), 45
                    break
                  case 33:
                    return this.popState(), this.pushState('STYLEDEF_STYLES'), 46
                    break
                  case 34:
                    return this.popState(), 47
                    break
                  case 35:
                    return this.pushState('SCALE'), 17
                    break
                  case 36:
                    return 18
                  case 37:
                    this.popState()
                    break
                  case 38:
                    this.pushState('STATE')
                    break
                  case 39:
                    return this.popState(), (U.yytext = U.yytext.slice(0, -8).trim()), 25
                    break
                  case 40:
                    return this.popState(), (U.yytext = U.yytext.slice(0, -8).trim()), 26
                    break
                  case 41:
                    return this.popState(), (U.yytext = U.yytext.slice(0, -10).trim()), 27
                    break
                  case 42:
                    return this.popState(), (U.yytext = U.yytext.slice(0, -8).trim()), 25
                    break
                  case 43:
                    return this.popState(), (U.yytext = U.yytext.slice(0, -8).trim()), 26
                    break
                  case 44:
                    return this.popState(), (U.yytext = U.yytext.slice(0, -10).trim()), 27
                    break
                  case 45:
                    return 51
                  case 46:
                    return 52
                  case 47:
                    return 53
                  case 48:
                    return 54
                  case 49:
                    this.pushState('STATE_STRING')
                    break
                  case 50:
                    return this.pushState('STATE_ID'), 'AS'
                    break
                  case 51:
                    return this.popState(), 'ID'
                    break
                  case 52:
                    this.popState()
                    break
                  case 53:
                    return 'STATE_DESCR'
                  case 54:
                    return 19
                  case 55:
                    this.popState()
                    break
                  case 56:
                    return this.popState(), this.pushState('struct'), 20
                    break
                  case 57:
                    break
                  case 58:
                    return this.popState(), 21
                    break
                  case 59:
                    break
                  case 60:
                    return this.begin('NOTE'), 29
                    break
                  case 61:
                    return this.popState(), this.pushState('NOTE_ID'), 59
                    break
                  case 62:
                    return this.popState(), this.pushState('NOTE_ID'), 60
                    break
                  case 63:
                    this.popState(), this.pushState('FLOATING_NOTE')
                    break
                  case 64:
                    return this.popState(), this.pushState('FLOATING_NOTE_ID'), 'AS'
                    break
                  case 65:
                    break
                  case 66:
                    return 'NOTE_TEXT'
                  case 67:
                    return this.popState(), 'ID'
                    break
                  case 68:
                    return this.popState(), this.pushState('NOTE_TEXT'), 24
                    break
                  case 69:
                    return this.popState(), (U.yytext = U.yytext.substr(2).trim()), 31
                    break
                  case 70:
                    return this.popState(), (U.yytext = U.yytext.slice(0, -8).trim()), 31
                    break
                  case 71:
                    return 6
                  case 72:
                    return 6
                  case 73:
                    return 16
                  case 74:
                    return 57
                  case 75:
                    return 24
                  case 76:
                    return (U.yytext = U.yytext.trim()), 14
                    break
                  case 77:
                    return 15
                  case 78:
                    return 28
                  case 79:
                    return 58
                  case 80:
                    return 5
                  case 81:
                    return 'INVALID'
                }
              }, 'anonymous'),
              rules: [
                /^(?:click\b)/i,
                /^(?:href\b)/i,
                /^(?:"[^"]*")/i,
                /^(?:default\b)/i,
                /^(?:.*direction\s+TB[^\n]*)/i,
                /^(?:.*direction\s+BT[^\n]*)/i,
                /^(?:.*direction\s+RL[^\n]*)/i,
                /^(?:.*direction\s+LR[^\n]*)/i,
                /^(?:%%(?!\{)[^\n]*)/i,
                /^(?:[^\}]%%[^\n]*)/i,
                /^(?:[\n]+)/i,
                /^(?:[\s]+)/i,
                /^(?:((?!\n)\s)+)/i,
                /^(?:#[^\n]*)/i,
                /^(?:%[^\n]*)/i,
                /^(?:scale\s+)/i,
                /^(?:\d+)/i,
                /^(?:\s+width\b)/i,
                /^(?:accTitle\s*:\s*)/i,
                /^(?:(?!\n||)*[^\n]*)/i,
                /^(?:accDescr\s*:\s*)/i,
                /^(?:(?!\n||)*[^\n]*)/i,
                /^(?:accDescr\s*\{\s*)/i,
                /^(?:[\}])/i,
                /^(?:[^\}]*)/i,
                /^(?:classDef\s+)/i,
                /^(?:DEFAULT\s+)/i,
                /^(?:\w+\s+)/i,
                /^(?:[^\n]*)/i,
                /^(?:class\s+)/i,
                /^(?:(\w+)+((,\s*\w+)*))/i,
                /^(?:[^\n]*)/i,
                /^(?:style\s+)/i,
                /^(?:[\w,]+\s+)/i,
                /^(?:[^\n]*)/i,
                /^(?:scale\s+)/i,
                /^(?:\d+)/i,
                /^(?:\s+width\b)/i,
                /^(?:state\s+)/i,
                /^(?:.*<<fork>>)/i,
                /^(?:.*<<join>>)/i,
                /^(?:.*<<choice>>)/i,
                /^(?:.*\[\[fork\]\])/i,
                /^(?:.*\[\[join\]\])/i,
                /^(?:.*\[\[choice\]\])/i,
                /^(?:.*direction\s+TB[^\n]*)/i,
                /^(?:.*direction\s+BT[^\n]*)/i,
                /^(?:.*direction\s+RL[^\n]*)/i,
                /^(?:.*direction\s+LR[^\n]*)/i,
                /^(?:["])/i,
                /^(?:\s*as\s+)/i,
                /^(?:[^\n\{]*)/i,
                /^(?:["])/i,
                /^(?:[^"]*)/i,
                /^(?:[^\n\s\{]+)/i,
                /^(?:\n)/i,
                /^(?:\{)/i,
                /^(?:%%(?!\{)[^\n]*)/i,
                /^(?:\})/i,
                /^(?:[\n])/i,
                /^(?:note\s+)/i,
                /^(?:left of\b)/i,
                /^(?:right of\b)/i,
                /^(?:")/i,
                /^(?:\s*as\s*)/i,
                /^(?:["])/i,
                /^(?:[^"]*)/i,
                /^(?:[^\n]*)/i,
                /^(?:\s*[^:\n\s\-]+)/i,
                /^(?:\s*:[^:\n;]+)/i,
                /^(?:[\s\S]*?end note\b)/i,
                /^(?:stateDiagram\s+)/i,
                /^(?:stateDiagram-v2\s+)/i,
                /^(?:hide empty description\b)/i,
                /^(?:\[\*\])/i,
                /^(?:[^:\n\s\-\{]+)/i,
                /^(?:\s*:[^:\n;]+)/i,
                /^(?:-->)/i,
                /^(?:--)/i,
                /^(?::::)/i,
                /^(?:$)/i,
                /^(?:.)/i
              ],
              conditions: {
                LINE: { rules: [12, 13], inclusive: !1 },
                struct: { rules: [12, 13, 25, 29, 32, 38, 45, 46, 47, 48, 57, 58, 59, 60, 74, 75, 76, 77, 78], inclusive: !1 },
                FLOATING_NOTE_ID: { rules: [67], inclusive: !1 },
                FLOATING_NOTE: { rules: [64, 65, 66], inclusive: !1 },
                NOTE_TEXT: { rules: [69, 70], inclusive: !1 },
                NOTE_ID: { rules: [68], inclusive: !1 },
                NOTE: { rules: [61, 62, 63], inclusive: !1 },
                STYLEDEF_STYLEOPTS: { rules: [], inclusive: !1 },
                STYLEDEF_STYLES: { rules: [34], inclusive: !1 },
                STYLE_IDS: { rules: [], inclusive: !1 },
                STYLE: { rules: [33], inclusive: !1 },
                CLASS_STYLE: { rules: [31], inclusive: !1 },
                CLASS: { rules: [30], inclusive: !1 },
                CLASSDEFID: { rules: [28], inclusive: !1 },
                CLASSDEF: { rules: [26, 27], inclusive: !1 },
                acc_descr_multiline: { rules: [23, 24], inclusive: !1 },
                acc_descr: { rules: [21], inclusive: !1 },
                acc_title: { rules: [19], inclusive: !1 },
                SCALE: { rules: [16, 17, 36, 37], inclusive: !1 },
                ALIAS: { rules: [], inclusive: !1 },
                STATE_ID: { rules: [51], inclusive: !1 },
                STATE_STRING: { rules: [52, 53], inclusive: !1 },
                FORK_STATE: { rules: [], inclusive: !1 },
                STATE: { rules: [12, 13, 39, 40, 41, 42, 43, 44, 49, 50, 54, 55, 56], inclusive: !1 },
                ID: { rules: [12, 13], inclusive: !1 },
                INITIAL: {
                  rules: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 18, 20, 22, 25, 29, 32, 35, 38, 56, 60, 71, 72, 73, 74, 75, 76, 77, 79, 80, 81],
                  inclusive: !0
                }
              }
            }
            return F
          })()
        M.lexer = P
        function B() {
          this.yy = {}
        }
        return o(B, 'Parser'), (B.prototype = M), (M.Parser = B), new B()
      })()
      SP.parser = SP
      JS = SP
    })
  var spe,
    e6,
    AP,
    Cf,
    Gp,
    Ob,
    ope,
    lpe,
    cpe,
    Vp,
    t6,
    _P,
    DP,
    LP,
    RP,
    NP,
    r6,
    n6,
    upe,
    hpe,
    MP,
    IP,
    fpe,
    dpe,
    B1,
    OHe,
    ppe,
    OP,
    PHe,
    BHe,
    mpe,
    gpe,
    FHe,
    ype,
    $He,
    vpe,
    PP,
    BP,
    xpe,
    i6,
    bpe,
    FP,
    a6 = N(() => {
      'use strict'
      ;(spe = 'TB'),
        (e6 = 'TB'),
        (AP = 'dir'),
        (Cf = 'state'),
        (Gp = 'root'),
        (Ob = 'relation'),
        (ope = 'classDef'),
        (lpe = 'style'),
        (cpe = 'applyClass'),
        (Vp = 'default'),
        (t6 = 'divider'),
        (_P = 'fill:none'),
        (DP = 'fill: #333'),
        (LP = 'c'),
        (RP = 'text'),
        (NP = 'normal'),
        (r6 = 'rect'),
        (n6 = 'rectWithTitle'),
        (upe = 'stateStart'),
        (hpe = 'stateEnd'),
        (MP = 'divider'),
        (IP = 'roundedWithTitle'),
        (fpe = 'note'),
        (dpe = 'noteGroup'),
        (B1 = 'statediagram'),
        (OHe = 'state'),
        (ppe = `${B1}-${OHe}`),
        (OP = 'transition'),
        (PHe = 'note'),
        (BHe = 'note-edge'),
        (mpe = `${OP} ${BHe}`),
        (gpe = `${B1}-${PHe}`),
        (FHe = 'cluster'),
        (ype = `${B1}-${FHe}`),
        ($He = 'cluster-alt'),
        (vpe = `${B1}-${$He}`),
        (PP = 'parent'),
        (BP = 'note'),
        (xpe = 'state'),
        (i6 = '----'),
        (bpe = `${i6}${BP}`),
        (FP = `${i6}${PP}`)
    })
  function $P(t = '', e = 0, r = '', n = i6) {
    let i = r !== null && r.length > 0 ? `${n}${r}` : ''
    return `${xpe}-${t}${i}-${e}`
  }
  function s6(t, e, r) {
    if (!e.id || e.id === '</join></fork>' || e.id === '</choice>') return
    e.cssClasses &&
      (Array.isArray(e.cssCompiledStyles) || (e.cssCompiledStyles = []),
      e.cssClasses.split(' ').forEach(i => {
        let a = r.get(i)
        a && (e.cssCompiledStyles = [...(e.cssCompiledStyles ?? []), ...a.styles])
      }))
    let n = t.find(i => i.id === e.id)
    n ? Object.assign(n, e) : t.push(e)
  }
  function GHe(t) {
    return t?.classes?.join(' ') ?? ''
  }
  function VHe(t) {
    return t?.styles ?? []
  }
  var o6,
    Af,
    zHe,
    Tpe,
    F1,
    wpe,
    kpe = N(() => {
      'use strict'
      Gt()
      yt()
      pr()
      a6()
      ;(o6 = new Map()), (Af = 0)
      o($P, 'stateDomId')
      ;(zHe = o((t, e, r, n, i, a, s, l) => {
        X.trace('items', e),
          e.forEach(u => {
            switch (u.stmt) {
              case Cf:
                F1(t, u, r, n, i, a, s, l)
                break
              case Vp:
                F1(t, u, r, n, i, a, s, l)
                break
              case Ob:
                {
                  F1(t, u.state1, r, n, i, a, s, l), F1(t, u.state2, r, n, i, a, s, l)
                  let h = {
                    id: 'edge' + Af,
                    start: u.state1.id,
                    end: u.state2.id,
                    arrowhead: 'normal',
                    arrowTypeEnd: 'arrow_barb',
                    style: _P,
                    labelStyle: '',
                    label: Ze.sanitizeText(u.description ?? '', me()),
                    arrowheadStyle: DP,
                    labelpos: LP,
                    labelType: RP,
                    thickness: NP,
                    classes: OP,
                    look: s
                  }
                  i.push(h), Af++
                }
                break
            }
          })
      }, 'setupDoc')),
        (Tpe = o((t, e = e6) => {
          let r = e
          if (t.doc) for (let n of t.doc) n.stmt === 'dir' && (r = n.value)
          return r
        }, 'getDir'))
      o(s6, 'insertOrUpdateNode')
      o(GHe, 'getClassesFromDbInfo')
      o(VHe, 'getStylesFromDbInfo')
      ;(F1 = o((t, e, r, n, i, a, s, l) => {
        let u = e.id,
          h = r.get(u),
          f = GHe(h),
          d = VHe(h),
          p = me()
        if ((X.info('dataFetcher parsedItem', e, h, d), u !== 'root')) {
          let m = r6
          e.start === !0 ? (m = upe) : e.start === !1 && (m = hpe),
            e.type !== Vp && (m = e.type),
            o6.get(u) || o6.set(u, { id: u, shape: m, description: Ze.sanitizeText(u, p), cssClasses: `${f} ${ppe}`, cssStyles: d })
          let g = o6.get(u)
          e.description &&
            (Array.isArray(g.description)
              ? ((g.shape = n6), g.description.push(e.description))
              : g.description?.length && g.description.length > 0
                ? ((g.shape = n6), g.description === u ? (g.description = [e.description]) : (g.description = [g.description, e.description]))
                : ((g.shape = r6), (g.description = e.description)),
            (g.description = Ze.sanitizeTextOrArray(g.description, p))),
            g.description?.length === 1 && g.shape === n6 && (g.type === 'group' ? (g.shape = IP) : (g.shape = r6)),
            !g.type &&
              e.doc &&
              (X.info('Setting cluster for XCX', u, Tpe(e)),
              (g.type = 'group'),
              (g.isGroup = !0),
              (g.dir = Tpe(e)),
              (g.shape = e.type === t6 ? MP : IP),
              (g.cssClasses = `${g.cssClasses} ${ype} ${a ? vpe : ''}`))
          let y = {
            labelStyle: '',
            shape: g.shape,
            label: g.description,
            cssClasses: g.cssClasses,
            cssCompiledStyles: [],
            cssStyles: g.cssStyles,
            id: u,
            dir: g.dir,
            domId: $P(u, Af),
            type: g.type,
            isGroup: g.type === 'group',
            padding: 8,
            rx: 10,
            ry: 10,
            look: s
          }
          if (
            (y.shape === MP && (y.label = ''),
            t && t.id !== 'root' && (X.trace('Setting node ', u, ' to be child of its parent ', t.id), (y.parentId = t.id)),
            (y.centerLabel = !0),
            e.note)
          ) {
            let v = {
                labelStyle: '',
                shape: fpe,
                label: e.note.text,
                cssClasses: gpe,
                cssStyles: [],
                cssCompiledStyles: [],
                id: u + bpe + '-' + Af,
                domId: $P(u, Af, BP),
                type: g.type,
                isGroup: g.type === 'group',
                padding: p.flowchart?.padding,
                look: s,
                position: e.note.position
              },
              x = u + FP,
              b = {
                labelStyle: '',
                shape: dpe,
                label: e.note.text,
                cssClasses: g.cssClasses,
                cssStyles: [],
                id: u + FP,
                domId: $P(u, Af, PP),
                type: 'group',
                isGroup: !0,
                padding: 16,
                look: s,
                position: e.note.position
              }
            Af++, (b.id = x), (v.parentId = x), s6(n, b, l), s6(n, v, l), s6(n, y, l)
            let T = u,
              S = v.id
            e.note.position === 'left of' && ((T = v.id), (S = u)),
              i.push({
                id: T + '-' + S,
                start: T,
                end: S,
                arrowhead: 'none',
                arrowTypeEnd: '',
                style: _P,
                labelStyle: '',
                classes: mpe,
                arrowheadStyle: DP,
                labelpos: LP,
                labelType: RP,
                thickness: NP,
                look: s
              })
          } else s6(n, y, l)
        }
        e.doc && (X.trace('Adding nodes children '), zHe(e, e.doc, r, n, i, !a, s, l))
      }, 'dataFetcher')),
        (wpe = o(() => {
          o6.clear(), (Af = 0)
        }, 'reset'))
    })
  var zP,
    UHe,
    HHe,
    Epe,
    GP = N(() => {
      'use strict'
      Gt()
      yt()
      Sm()
      rp()
      np()
      er()
      a6()
      ;(zP = o((t, e = e6) => {
        if (!t.doc) return e
        let r = e
        for (let n of t.doc) n.stmt === 'dir' && (r = n.value)
        return r
      }, 'getDir')),
        (UHe = o(function (t, e) {
          return e.db.getClasses()
        }, 'getClasses')),
        (HHe = o(async function (t, e, r, n) {
          X.info('REF0:'), X.info('Drawing state diagram (v2)', e)
          let { securityLevel: i, state: a, layout: s } = me()
          n.db.extract(n.db.getRootDocV2())
          let l = n.db.getData(),
            u = wc(e, i)
          ;(l.type = n.type),
            (l.layoutAlgorithm = s),
            (l.nodeSpacing = a?.nodeSpacing || 50),
            (l.rankSpacing = a?.rankSpacing || 50),
            (l.markers = ['barb']),
            (l.diagramId = e),
            await Rc(l, u)
          let h = 8
          try {
            ;(typeof n.db.getLinks == 'function' ? n.db.getLinks() : new Map()).forEach((d, p) => {
              let m = typeof p == 'string' ? p : typeof p?.id == 'string' ? p.id : ''
              if (!m) {
                X.warn('\u26A0\uFE0F Invalid or missing stateId from key:', JSON.stringify(p))
                return
              }
              let g = u.node()?.querySelectorAll('g'),
                y
              if (
                (g?.forEach(T => {
                  T.textContent?.trim() === m && (y = T)
                }),
                !y)
              ) {
                X.warn('\u26A0\uFE0F Could not find node matching text:', m)
                return
              }
              let v = y.parentNode
              if (!v) {
                X.warn('\u26A0\uFE0F Node has no parent, cannot wrap:', m)
                return
              }
              let x = document.createElementNS('http://www.w3.org/2000/svg', 'a'),
                b = d.url.replace(/^"+|"+$/g, '')
              if ((x.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', b), x.setAttribute('target', '_blank'), d.tooltip)) {
                let T = d.tooltip.replace(/^"+|"+$/g, '')
                x.setAttribute('title', T)
              }
              v.replaceChild(x, y), x.appendChild(y), X.info('\u{1F517} Wrapped node in <a> tag for:', m, d.url)
            })
          } catch (f) {
            X.error('\u274C Error injecting clickable links:', f)
          }
          Vt.insertTitle(u, 'statediagramTitleText', a?.titleTopMargin ?? 25, n.db.getDiagramTitle()), Yo(u, h, B1, a?.useMaxWidth ?? !0)
        }, 'draw')),
        (Epe = { getClasses: UHe, draw: HHe, getDir: zP })
    })
  var bs,
    Spe,
    Cpe,
    l6,
    tl,
    c6 = N(() => {
      'use strict'
      Gt()
      yt()
      er()
      pr()
      ci()
      kpe()
      GP()
      a6()
      ;(bs = { START_NODE: '[*]', START_TYPE: 'start', END_NODE: '[*]', END_TYPE: 'end', COLOR_KEYWORD: 'color', FILL_KEYWORD: 'fill', BG_FILL: 'bgFill', STYLECLASS_SEP: ',' }),
        (Spe = o(() => new Map(), 'newClassesList')),
        (Cpe = o(() => ({ relations: [], states: new Map(), documents: {} }), 'newDoc')),
        (l6 = o(t => JSON.parse(JSON.stringify(t)), 'clone')),
        (tl = class {
          constructor(e) {
            this.version = e
            this.nodes = []
            this.edges = []
            this.rootDoc = []
            this.classes = Spe()
            this.documents = { root: Cpe() }
            this.currentDocument = this.documents.root
            this.startEndCount = 0
            this.dividerCnt = 0
            this.links = new Map()
            this.getAccTitle = Dr
            this.setAccTitle = Ar
            this.getAccDescription = Rr
            this.setAccDescription = Lr
            this.setDiagramTitle = Or
            this.getDiagramTitle = Nr
            this.clear(),
              (this.setRootDoc = this.setRootDoc.bind(this)),
              (this.getDividerId = this.getDividerId.bind(this)),
              (this.setDirection = this.setDirection.bind(this)),
              (this.trimColon = this.trimColon.bind(this))
          }
          static {
            o(this, 'StateDB')
          }
          static {
            this.relationType = { AGGREGATION: 0, EXTENSION: 1, COMPOSITION: 2, DEPENDENCY: 3 }
          }
          extract(e) {
            this.clear(!0)
            for (let i of Array.isArray(e) ? e : e.doc)
              switch (i.stmt) {
                case Cf:
                  this.addState(i.id.trim(), i.type, i.doc, i.description, i.note)
                  break
                case Ob:
                  this.addRelation(i.state1, i.state2, i.description)
                  break
                case ope:
                  this.addStyleClass(i.id.trim(), i.classes)
                  break
                case lpe:
                  this.handleStyleDef(i)
                  break
                case cpe:
                  this.setCssClass(i.id.trim(), i.styleClass)
                  break
                case 'click':
                  this.addLink(i.id, i.url, i.tooltip)
                  break
              }
            let r = this.getStates(),
              n = me()
            wpe(), F1(void 0, this.getRootDocV2(), r, this.nodes, this.edges, !0, n.look, this.classes)
            for (let i of this.nodes)
              if (Array.isArray(i.label)) {
                if (((i.description = i.label.slice(1)), i.isGroup && i.description.length > 0))
                  throw new Error(`Group nodes can only have label. Remove the additional description for node [${i.id}]`)
                i.label = i.label[0]
              }
          }
          handleStyleDef(e) {
            let r = e.id.trim().split(','),
              n = e.styleClass.split(',')
            for (let i of r) {
              let a = this.getState(i)
              if (!a) {
                let s = i.trim()
                this.addState(s), (a = this.getState(s))
              }
              a && (a.styles = n.map(s => s.replace(/;/g, '')?.trim()))
            }
          }
          setRootDoc(e) {
            X.info('Setting root doc', e), (this.rootDoc = e), this.version === 1 ? this.extract(e) : this.extract(this.getRootDocV2())
          }
          docTranslator(e, r, n) {
            if (r.stmt === Ob) {
              this.docTranslator(e, r.state1, !0), this.docTranslator(e, r.state2, !1)
              return
            }
            if (
              (r.stmt === Cf && (r.id === bs.START_NODE ? ((r.id = e.id + (n ? '_start' : '_end')), (r.start = n)) : (r.id = r.id.trim())),
              (r.stmt !== Gp && r.stmt !== Cf) || !r.doc)
            )
              return
            let i = [],
              a = []
            for (let s of r.doc)
              if (s.type === t6) {
                let l = l6(s)
                ;(l.doc = l6(a)), i.push(l), (a = [])
              } else a.push(s)
            if (i.length > 0 && a.length > 0) {
              let s = { stmt: Cf, id: L9(), type: 'divider', doc: l6(a) }
              i.push(l6(s)), (r.doc = i)
            }
            r.doc.forEach(s => this.docTranslator(r, s, !0))
          }
          getRootDocV2() {
            return this.docTranslator({ id: Gp, stmt: Gp }, { id: Gp, stmt: Gp, doc: this.rootDoc }, !0), { id: Gp, doc: this.rootDoc }
          }
          addState(e, r = Vp, n = void 0, i = void 0, a = void 0, s = void 0, l = void 0, u = void 0) {
            let h = e?.trim()
            if (!this.currentDocument.states.has(h))
              X.info('Adding state ', h, i),
                this.currentDocument.states.set(h, { stmt: Cf, id: h, descriptions: [], type: r, doc: n, note: a, classes: [], styles: [], textStyles: [] })
            else {
              let f = this.currentDocument.states.get(h)
              if (!f) throw new Error(`State not found: ${h}`)
              f.doc || (f.doc = n), f.type || (f.type = r)
            }
            if ((i && (X.info('Setting state description', h, i), (Array.isArray(i) ? i : [i]).forEach(d => this.addDescription(h, d.trim()))), a)) {
              let f = this.currentDocument.states.get(h)
              if (!f) throw new Error(`State not found: ${h}`)
              ;(f.note = a), (f.note.text = Ze.sanitizeText(f.note.text, me()))
            }
            s && (X.info('Setting state classes', h, s), (Array.isArray(s) ? s : [s]).forEach(d => this.setCssClass(h, d.trim()))),
              l && (X.info('Setting state styles', h, l), (Array.isArray(l) ? l : [l]).forEach(d => this.setStyle(h, d.trim()))),
              u && (X.info('Setting state styles', h, l), (Array.isArray(u) ? u : [u]).forEach(d => this.setTextStyle(h, d.trim())))
          }
          clear(e) {
            ;(this.nodes = []),
              (this.edges = []),
              (this.documents = { root: Cpe() }),
              (this.currentDocument = this.documents.root),
              (this.startEndCount = 0),
              (this.classes = Spe()),
              e || ((this.links = new Map()), kr())
          }
          getState(e) {
            return this.currentDocument.states.get(e)
          }
          getStates() {
            return this.currentDocument.states
          }
          logDocuments() {
            X.info('Documents = ', this.documents)
          }
          getRelations() {
            return this.currentDocument.relations
          }
          addLink(e, r, n) {
            this.links.set(e, { url: r, tooltip: n }), X.warn('Adding link', e, r, n)
          }
          getLinks() {
            return this.links
          }
          startIdIfNeeded(e = '') {
            return e === bs.START_NODE ? (this.startEndCount++, `${bs.START_TYPE}${this.startEndCount}`) : e
          }
          startTypeIfNeeded(e = '', r = Vp) {
            return e === bs.START_NODE ? bs.START_TYPE : r
          }
          endIdIfNeeded(e = '') {
            return e === bs.END_NODE ? (this.startEndCount++, `${bs.END_TYPE}${this.startEndCount}`) : e
          }
          endTypeIfNeeded(e = '', r = Vp) {
            return e === bs.END_NODE ? bs.END_TYPE : r
          }
          addRelationObjs(e, r, n = '') {
            let i = this.startIdIfNeeded(e.id.trim()),
              a = this.startTypeIfNeeded(e.id.trim(), e.type),
              s = this.startIdIfNeeded(r.id.trim()),
              l = this.startTypeIfNeeded(r.id.trim(), r.type)
            this.addState(i, a, e.doc, e.description, e.note, e.classes, e.styles, e.textStyles),
              this.addState(s, l, r.doc, r.description, r.note, r.classes, r.styles, r.textStyles),
              this.currentDocument.relations.push({ id1: i, id2: s, relationTitle: Ze.sanitizeText(n, me()) })
          }
          addRelation(e, r, n) {
            if (typeof e == 'object' && typeof r == 'object') this.addRelationObjs(e, r, n)
            else if (typeof e == 'string' && typeof r == 'string') {
              let i = this.startIdIfNeeded(e.trim()),
                a = this.startTypeIfNeeded(e),
                s = this.endIdIfNeeded(r.trim()),
                l = this.endTypeIfNeeded(r)
              this.addState(i, a), this.addState(s, l), this.currentDocument.relations.push({ id1: i, id2: s, relationTitle: n ? Ze.sanitizeText(n, me()) : void 0 })
            }
          }
          addDescription(e, r) {
            let n = this.currentDocument.states.get(e),
              i = r.startsWith(':') ? r.replace(':', '').trim() : r
            n?.descriptions?.push(Ze.sanitizeText(i, me()))
          }
          cleanupLabel(e) {
            return e.startsWith(':') ? e.slice(2).trim() : e.trim()
          }
          getDividerId() {
            return this.dividerCnt++, `divider-id-${this.dividerCnt}`
          }
          addStyleClass(e, r = '') {
            this.classes.has(e) || this.classes.set(e, { id: e, styles: [], textStyles: [] })
            let n = this.classes.get(e)
            r &&
              n &&
              r.split(bs.STYLECLASS_SEP).forEach(i => {
                let a = i.replace(/([^;]*);/, '$1').trim()
                if (RegExp(bs.COLOR_KEYWORD).exec(i)) {
                  let l = a.replace(bs.FILL_KEYWORD, bs.BG_FILL).replace(bs.COLOR_KEYWORD, bs.FILL_KEYWORD)
                  n.textStyles.push(l)
                }
                n.styles.push(a)
              })
          }
          getClasses() {
            return this.classes
          }
          setCssClass(e, r) {
            e.split(',').forEach(n => {
              let i = this.getState(n)
              if (!i) {
                let a = n.trim()
                this.addState(a), (i = this.getState(a))
              }
              i?.classes?.push(r)
            })
          }
          setStyle(e, r) {
            this.getState(e)?.styles?.push(r)
          }
          setTextStyle(e, r) {
            this.getState(e)?.textStyles?.push(r)
          }
          getDirectionStatement() {
            return this.rootDoc.find(e => e.stmt === AP)
          }
          getDirection() {
            return this.getDirectionStatement()?.value ?? spe
          }
          setDirection(e) {
            let r = this.getDirectionStatement()
            r ? (r.value = e) : this.rootDoc.unshift({ stmt: AP, value: e })
          }
          trimColon(e) {
            return e.startsWith(':') ? e.slice(1).trim() : e.trim()
          }
          getData() {
            let e = me()
            return { nodes: this.nodes, edges: this.edges, other: {}, config: e, direction: zP(this.getRootDocV2()) }
          }
          getConfig() {
            return me().state
          }
        })
    })
  var WHe,
    u6,
    VP = N(() => {
      'use strict'
      ;(WHe = o(
        t => `
defs #statediagram-barbEnd {
    fill: ${t.transitionColor};
    stroke: ${t.transitionColor};
  }
g.stateGroup text {
  fill: ${t.nodeBorder};
  stroke: none;
  font-size: 10px;
}
g.stateGroup text {
  fill: ${t.textColor};
  stroke: none;
  font-size: 10px;

}
g.stateGroup .state-title {
  font-weight: bolder;
  fill: ${t.stateLabelColor};
}

g.stateGroup rect {
  fill: ${t.mainBkg};
  stroke: ${t.nodeBorder};
}

g.stateGroup line {
  stroke: ${t.lineColor};
  stroke-width: 1;
}

.transition {
  stroke: ${t.transitionColor};
  stroke-width: 1;
  fill: none;
}

.stateGroup .composit {
  fill: ${t.background};
  border-bottom: 1px
}

.stateGroup .alt-composit {
  fill: #e0e0e0;
  border-bottom: 1px
}

.state-note {
  stroke: ${t.noteBorderColor};
  fill: ${t.noteBkgColor};

  text {
    fill: ${t.noteTextColor};
    stroke: none;
    font-size: 10px;
  }
}

.stateLabel .box {
  stroke: none;
  stroke-width: 0;
  fill: ${t.mainBkg};
  opacity: 0.5;
}

.edgeLabel .label rect {
  fill: ${t.labelBackgroundColor};
  opacity: 0.5;
}
.edgeLabel {
  background-color: ${t.edgeLabelBackground};
  p {
    background-color: ${t.edgeLabelBackground};
  }
  rect {
    opacity: 0.5;
    background-color: ${t.edgeLabelBackground};
    fill: ${t.edgeLabelBackground};
  }
  text-align: center;
}
.edgeLabel .label text {
  fill: ${t.transitionLabelColor || t.tertiaryTextColor};
}
.label div .edgeLabel {
  color: ${t.transitionLabelColor || t.tertiaryTextColor};
}

.stateLabel text {
  fill: ${t.stateLabelColor};
  font-size: 10px;
  font-weight: bold;
}

.node circle.state-start {
  fill: ${t.specialStateColor};
  stroke: ${t.specialStateColor};
}

.node .fork-join {
  fill: ${t.specialStateColor};
  stroke: ${t.specialStateColor};
}

.node circle.state-end {
  fill: ${t.innerEndBackground};
  stroke: ${t.background};
  stroke-width: 1.5
}
.end-state-inner {
  fill: ${t.compositeBackground || t.background};
  // stroke: ${t.background};
  stroke-width: 1.5
}

.node rect {
  fill: ${t.stateBkg || t.mainBkg};
  stroke: ${t.stateBorder || t.nodeBorder};
  stroke-width: 1px;
}
.node polygon {
  fill: ${t.mainBkg};
  stroke: ${t.stateBorder || t.nodeBorder};;
  stroke-width: 1px;
}
#statediagram-barbEnd {
  fill: ${t.lineColor};
}

.statediagram-cluster rect {
  fill: ${t.compositeTitleBackground};
  stroke: ${t.stateBorder || t.nodeBorder};
  stroke-width: 1px;
}

.cluster-label, .nodeLabel {
  color: ${t.stateLabelColor};
  // line-height: 1;
}

.statediagram-cluster rect.outer {
  rx: 5px;
  ry: 5px;
}
.statediagram-state .divider {
  stroke: ${t.stateBorder || t.nodeBorder};
}

.statediagram-state .title-state {
  rx: 5px;
  ry: 5px;
}
.statediagram-cluster.statediagram-cluster .inner {
  fill: ${t.compositeBackground || t.background};
}
.statediagram-cluster.statediagram-cluster-alt .inner {
  fill: ${t.altBackground ? t.altBackground : '#efefef'};
}

.statediagram-cluster .inner {
  rx:0;
  ry:0;
}

.statediagram-state rect.basic {
  rx: 5px;
  ry: 5px;
}
.statediagram-state rect.divider {
  stroke-dasharray: 10,10;
  fill: ${t.altBackground ? t.altBackground : '#efefef'};
}

.note-edge {
  stroke-dasharray: 5;
}

.statediagram-note rect {
  fill: ${t.noteBkgColor};
  stroke: ${t.noteBorderColor};
  stroke-width: 1px;
  rx: 0;
  ry: 0;
}
.statediagram-note rect {
  fill: ${t.noteBkgColor};
  stroke: ${t.noteBorderColor};
  stroke-width: 1px;
  rx: 0;
  ry: 0;
}

.statediagram-note text {
  fill: ${t.noteTextColor};
}

.statediagram-note .nodeLabel {
  color: ${t.noteTextColor};
}
.statediagram .edgeLabel {
  color: red; // ${t.noteTextColor};
}

#dependencyStart, #dependencyEnd {
  fill: ${t.lineColor};
  stroke: ${t.lineColor};
  stroke-width: 1;
}

.statediagramTitleText {
  text-anchor: middle;
  font-size: 18px;
  fill: ${t.textColor};
}
`,
        'getStyles'
      )),
        (u6 = WHe)
    })
  var qHe,
    YHe,
    XHe,
    jHe,
    _pe,
    KHe,
    QHe,
    ZHe,
    JHe,
    UP,
    Ape,
    Dpe,
    Lpe = N(() => {
      'use strict'
      fr()
      c6()
      er()
      pr()
      Gt()
      yt()
      ;(qHe = o(
        t =>
          t
            .append('circle')
            .attr('class', 'start-state')
            .attr('r', me().state.sizeUnit)
            .attr('cx', me().state.padding + me().state.sizeUnit)
            .attr('cy', me().state.padding + me().state.sizeUnit),
        'drawStartState'
      )),
        (YHe = o(
          t =>
            t
              .append('line')
              .style('stroke', 'grey')
              .style('stroke-dasharray', '3')
              .attr('x1', me().state.textHeight)
              .attr('class', 'divider')
              .attr('x2', me().state.textHeight * 2)
              .attr('y1', 0)
              .attr('y2', 0),
          'drawDivider'
        )),
        (XHe = o((t, e) => {
          let r = t
              .append('text')
              .attr('x', 2 * me().state.padding)
              .attr('y', me().state.textHeight + 2 * me().state.padding)
              .attr('font-size', me().state.fontSize)
              .attr('class', 'state-title')
              .text(e.id),
            n = r.node().getBBox()
          return (
            t
              .insert('rect', ':first-child')
              .attr('x', me().state.padding)
              .attr('y', me().state.padding)
              .attr('width', n.width + 2 * me().state.padding)
              .attr('height', n.height + 2 * me().state.padding)
              .attr('rx', me().state.radius),
            r
          )
        }, 'drawSimpleState')),
        (jHe = o((t, e) => {
          let r = o(function (p, m, g) {
              let y = p
                .append('tspan')
                .attr('x', 2 * me().state.padding)
                .text(m)
              g || y.attr('dy', me().state.textHeight)
            }, 'addTspan'),
            i = t
              .append('text')
              .attr('x', 2 * me().state.padding)
              .attr('y', me().state.textHeight + 1.3 * me().state.padding)
              .attr('font-size', me().state.fontSize)
              .attr('class', 'state-title')
              .text(e.descriptions[0])
              .node()
              .getBBox(),
            a = i.height,
            s = t
              .append('text')
              .attr('x', me().state.padding)
              .attr('y', a + me().state.padding * 0.4 + me().state.dividerMargin + me().state.textHeight)
              .attr('class', 'state-description'),
            l = !0,
            u = !0
          e.descriptions.forEach(function (p) {
            l || (r(s, p, u), (u = !1)), (l = !1)
          })
          let h = t
              .append('line')
              .attr('x1', me().state.padding)
              .attr('y1', me().state.padding + a + me().state.dividerMargin / 2)
              .attr('y2', me().state.padding + a + me().state.dividerMargin / 2)
              .attr('class', 'descr-divider'),
            f = s.node().getBBox(),
            d = Math.max(f.width, i.width)
          return (
            h.attr('x2', d + 3 * me().state.padding),
            t
              .insert('rect', ':first-child')
              .attr('x', me().state.padding)
              .attr('y', me().state.padding)
              .attr('width', d + 2 * me().state.padding)
              .attr('height', f.height + a + 2 * me().state.padding)
              .attr('rx', me().state.radius),
            t
          )
        }, 'drawDescrState')),
        (_pe = o((t, e, r) => {
          let n = me().state.padding,
            i = 2 * me().state.padding,
            a = t.node().getBBox(),
            s = a.width,
            l = a.x,
            u = t.append('text').attr('x', 0).attr('y', me().state.titleShift).attr('font-size', me().state.fontSize).attr('class', 'state-title').text(e.id),
            f = u.node().getBBox().width + i,
            d = Math.max(f, s)
          d === s && (d = d + i)
          let p,
            m = t.node().getBBox()
          e.doc, (p = l - n), f > s && (p = (s - d) / 2 + n), Math.abs(l - m.x) < n && f > s && (p = l - (f - s) / 2)
          let g = 1 - me().state.textHeight
          return (
            t
              .insert('rect', ':first-child')
              .attr('x', p)
              .attr('y', g)
              .attr('class', r ? 'alt-composit' : 'composit')
              .attr('width', d)
              .attr('height', m.height + me().state.textHeight + me().state.titleShift + 1)
              .attr('rx', '0'),
            u.attr('x', p + n),
            f <= s && u.attr('x', l + (d - i) / 2 - f / 2 + n),
            t
              .insert('rect', ':first-child')
              .attr('x', p)
              .attr('y', me().state.titleShift - me().state.textHeight - me().state.padding)
              .attr('width', d)
              .attr('height', me().state.textHeight * 3)
              .attr('rx', me().state.radius),
            t
              .insert('rect', ':first-child')
              .attr('x', p)
              .attr('y', me().state.titleShift - me().state.textHeight - me().state.padding)
              .attr('width', d)
              .attr('height', m.height + 3 + 2 * me().state.textHeight)
              .attr('rx', me().state.radius),
            t
          )
        }, 'addTitleAndBox')),
        (KHe = o(
          t => (
            t
              .append('circle')
              .attr('class', 'end-state-outer')
              .attr('r', me().state.sizeUnit + me().state.miniPadding)
              .attr('cx', me().state.padding + me().state.sizeUnit + me().state.miniPadding)
              .attr('cy', me().state.padding + me().state.sizeUnit + me().state.miniPadding),
            t
              .append('circle')
              .attr('class', 'end-state-inner')
              .attr('r', me().state.sizeUnit)
              .attr('cx', me().state.padding + me().state.sizeUnit + 2)
              .attr('cy', me().state.padding + me().state.sizeUnit + 2)
          ),
          'drawEndState'
        )),
        (QHe = o((t, e) => {
          let r = me().state.forkWidth,
            n = me().state.forkHeight
          if (e.parentId) {
            let i = r
            ;(r = n), (n = i)
          }
          return t.append('rect').style('stroke', 'black').style('fill', 'black').attr('width', r).attr('height', n).attr('x', me().state.padding).attr('y', me().state.padding)
        }, 'drawForkJoinState')),
        (ZHe = o((t, e, r, n) => {
          let i = 0,
            a = n.append('text')
          a.style('text-anchor', 'start'), a.attr('class', 'noteText')
          let s = t.replace(/\r\n/g, '<br/>')
          s = s.replace(/\n/g, '<br/>')
          let l = s.split(Ze.lineBreakRegex),
            u = 1.25 * me().state.noteMargin
          for (let h of l) {
            let f = h.trim()
            if (f.length > 0) {
              let d = a.append('tspan')
              if ((d.text(f), u === 0)) {
                let p = d.node().getBBox()
                u += p.height
              }
              ;(i += u), d.attr('x', e + me().state.noteMargin), d.attr('y', r + i + 1.25 * me().state.noteMargin)
            }
          }
          return { textWidth: a.node().getBBox().width, textHeight: i }
        }, '_drawLongText')),
        (JHe = o((t, e) => {
          e.attr('class', 'state-note')
          let r = e.append('rect').attr('x', 0).attr('y', me().state.padding),
            n = e.append('g'),
            { textWidth: i, textHeight: a } = ZHe(t, 0, 0, n)
          return r.attr('height', a + 2 * me().state.noteMargin), r.attr('width', i + me().state.noteMargin * 2), r
        }, 'drawNote')),
        (UP = o(function (t, e) {
          let r = e.id,
            n = { id: r, label: e.id, width: 0, height: 0 },
            i = t.append('g').attr('id', r).attr('class', 'stateGroup')
          e.type === 'start' && qHe(i),
            e.type === 'end' && KHe(i),
            (e.type === 'fork' || e.type === 'join') && QHe(i, e),
            e.type === 'note' && JHe(e.note.text, i),
            e.type === 'divider' && YHe(i),
            e.type === 'default' && e.descriptions.length === 0 && XHe(i, e),
            e.type === 'default' && e.descriptions.length > 0 && jHe(i, e)
          let a = i.node().getBBox()
          return (n.width = a.width + 2 * me().state.padding), (n.height = a.height + 2 * me().state.padding), n
        }, 'drawState')),
        (Ape = 0),
        (Dpe = o(function (t, e, r) {
          let n = o(function (u) {
            switch (u) {
              case tl.relationType.AGGREGATION:
                return 'aggregation'
              case tl.relationType.EXTENSION:
                return 'extension'
              case tl.relationType.COMPOSITION:
                return 'composition'
              case tl.relationType.DEPENDENCY:
                return 'dependency'
            }
          }, 'getRelationType')
          e.points = e.points.filter(u => !Number.isNaN(u.y))
          let i = e.points,
            a = Cl()
              .x(function (u) {
                return u.x
              })
              .y(function (u) {
                return u.y
              })
              .curve(No),
            s = t
              .append('path')
              .attr('d', a(i))
              .attr('id', 'edge' + Ape)
              .attr('class', 'transition'),
            l = ''
          if ((me().state.arrowMarkerAbsolute && (l = mu(!0)), s.attr('marker-end', 'url(' + l + '#' + n(tl.relationType.DEPENDENCY) + 'End)'), r.title !== void 0)) {
            let u = t.append('g').attr('class', 'stateLabel'),
              { x: h, y: f } = Vt.calcLabelPosition(e.points),
              d = Ze.getRows(r.title),
              p = 0,
              m = [],
              g = 0,
              y = 0
            for (let b = 0; b <= d.length; b++) {
              let T = u
                  .append('text')
                  .attr('text-anchor', 'middle')
                  .text(d[b])
                  .attr('x', h)
                  .attr('y', f + p),
                S = T.node().getBBox()
              ;(g = Math.max(g, S.width)), (y = Math.min(y, S.x)), X.info(S.x, h, f + p), p === 0 && ((p = T.node().getBBox().height), X.info('Title height', p, f)), m.push(T)
            }
            let v = p * d.length
            if (d.length > 1) {
              let b = (d.length - 1) * p * 0.5
              m.forEach((T, S) => T.attr('y', f + S * p - b)), (v = p * d.length)
            }
            let x = u.node().getBBox()
            u
              .insert('rect', ':first-child')
              .attr('class', 'box')
              .attr('x', h - g / 2 - me().state.padding / 2)
              .attr('y', f - v / 2 - me().state.padding / 2 - 3.5)
              .attr('width', g + me().state.padding)
              .attr('height', v + me().state.padding),
              X.info(x)
          }
          Ape++
        }, 'drawEdge'))
    })
  var go,
    HP,
    eWe,
    tWe,
    rWe,
    nWe,
    Rpe,
    Npe,
    Mpe = N(() => {
      'use strict'
      fr()
      JR()
      Wo()
      yt()
      pr()
      Lpe()
      Gt()
      xi()
      ;(HP = {}),
        (eWe = o(function () {}, 'setConf')),
        (tWe = o(function (t) {
          t.append('defs')
            .append('marker')
            .attr('id', 'dependencyEnd')
            .attr('refX', 19)
            .attr('refY', 7)
            .attr('markerWidth', 20)
            .attr('markerHeight', 28)
            .attr('orient', 'auto')
            .append('path')
            .attr('d', 'M 19,7 L9,13 L14,7 L9,1 Z')
        }, 'insertMarkers')),
        (rWe = o(function (t, e, r, n) {
          go = me().state
          let i = me().securityLevel,
            a
          i === 'sandbox' && (a = Ge('#i' + e))
          let s = i === 'sandbox' ? Ge(a.nodes()[0].contentDocument.body) : Ge('body'),
            l = i === 'sandbox' ? a.nodes()[0].contentDocument : document
          X.debug('Rendering diagram ' + t)
          let u = s.select(`[id='${e}']`)
          tWe(u)
          let h = n.db.getRootDoc()
          Rpe(h, u, void 0, !1, s, l, n)
          let f = go.padding,
            d = u.node().getBBox(),
            p = d.width + f * 2,
            m = d.height + f * 2,
            g = p * 1.75
          fn(u, m, g, go.useMaxWidth), u.attr('viewBox', `${d.x - go.padding}  ${d.y - go.padding} ` + p + ' ' + m)
        }, 'draw')),
        (nWe = o(t => (t ? t.length * go.fontSizeFactor : 1), 'getLabelWidth')),
        (Rpe = o((t, e, r, n, i, a, s) => {
          let l = new sn({ compound: !0, multigraph: !0 }),
            u,
            h = !0
          for (u = 0; u < t.length; u++)
            if (t[u].stmt === 'relation') {
              h = !1
              break
            }
          r
            ? l.setGraph({ rankdir: 'LR', multigraph: !0, compound: !0, ranker: 'tight-tree', ranksep: h ? 1 : go.edgeLengthFactor, nodeSep: h ? 1 : 50, isMultiGraph: !0 })
            : l.setGraph({ rankdir: 'TB', multigraph: !0, compound: !0, ranksep: h ? 1 : go.edgeLengthFactor, nodeSep: h ? 1 : 50, ranker: 'tight-tree', isMultiGraph: !0 }),
            l.setDefaultEdgeLabel(function () {
              return {}
            })
          let f = s.db.getStates(),
            d = s.db.getRelations(),
            p = Object.keys(f),
            m = !0
          for (let b of p) {
            let T = f[b]
            r && (T.parentId = r)
            let S
            if (T.doc) {
              let w = e.append('g').attr('id', T.id).attr('class', 'stateGroup')
              if (((S = Rpe(T.doc, w, T.id, !n, i, a, s)), m)) {
                w = _pe(w, T, n)
                let E = w.node().getBBox()
                ;(S.width = E.width), (S.height = E.height + go.padding / 2), (HP[T.id] = { y: go.compositTitleSize })
              } else {
                let E = w.node().getBBox()
                ;(S.width = E.width), (S.height = E.height)
              }
            } else S = UP(e, T, l)
            if (T.note) {
              let w = { descriptions: [], id: T.id + '-note', note: T.note, type: 'note' },
                E = UP(e, w, l)
              T.note.position === 'left of' ? (l.setNode(S.id + '-note', E), l.setNode(S.id, S)) : (l.setNode(S.id, S), l.setNode(S.id + '-note', E)),
                l.setParent(S.id, S.id + '-group'),
                l.setParent(S.id + '-note', S.id + '-group')
            } else l.setNode(S.id, S)
          }
          X.debug('Count=', l.nodeCount(), l)
          let g = 0
          d.forEach(function (b) {
            g++,
              X.debug('Setting edge', b),
              l.setEdge(b.id1, b.id2, { relation: b, width: nWe(b.title), height: go.labelHeight * Ze.getRows(b.title).length, labelpos: 'c' }, 'id' + g)
          }),
            G2(l),
            X.debug('Graph after layout', l.nodes())
          let y = e.node()
          l.nodes().forEach(function (b) {
            b !== void 0 && l.node(b) !== void 0
              ? (X.warn('Node ' + b + ': ' + JSON.stringify(l.node(b))),
                i
                  .select('#' + y.id + ' #' + b)
                  .attr('transform', 'translate(' + (l.node(b).x - l.node(b).width / 2) + ',' + (l.node(b).y + (HP[b] ? HP[b].y : 0) - l.node(b).height / 2) + ' )'),
                i.select('#' + y.id + ' #' + b).attr('data-x-shift', l.node(b).x - l.node(b).width / 2),
                a.querySelectorAll('#' + y.id + ' #' + b + ' .divider').forEach(S => {
                  let w = S.parentElement,
                    E = 0,
                    _ = 0
                  w && (w.parentElement && (E = w.parentElement.getBBox().width), (_ = parseInt(w.getAttribute('data-x-shift'), 10)), Number.isNaN(_) && (_ = 0)),
                    S.setAttribute('x1', 0 - _ + 8),
                    S.setAttribute('x2', E - _ - 8)
                }))
              : X.debug('No Node ' + b + ': ' + JSON.stringify(l.node(b)))
          })
          let v = y.getBBox()
          l.edges().forEach(function (b) {
            b !== void 0 && l.edge(b) !== void 0 && (X.debug('Edge ' + b.v + ' -> ' + b.w + ': ' + JSON.stringify(l.edge(b))), Dpe(e, l.edge(b), l.edge(b).relation))
          }),
            (v = y.getBBox())
          let x = { id: r || 'root', label: r || 'root', width: 0, height: 0 }
          return (x.width = v.width + 2 * go.padding), (x.height = v.height + 2 * go.padding), X.debug('Doc rendered', x, l), x
        }, 'renderDoc')),
        (Npe = { setConf: eWe, draw: rWe })
    })
  var Ipe = {}
  ur(Ipe, { diagram: () => iWe })
  var iWe,
    Ope = N(() => {
      'use strict'
      CP()
      c6()
      VP()
      Mpe()
      iWe = {
        parser: JS,
        get db() {
          return new tl(1)
        },
        renderer: Npe,
        styles: u6,
        init: o(t => {
          t.state || (t.state = {}), (t.state.arrowMarkerAbsolute = t.arrowMarkerAbsolute)
        }, 'init')
      }
    })
  var Fpe = {}
  ur(Fpe, { diagram: () => lWe })
  var lWe,
    $pe = N(() => {
      'use strict'
      CP()
      c6()
      VP()
      GP()
      lWe = {
        parser: JS,
        get db() {
          return new tl(2)
        },
        renderer: Epe,
        styles: u6,
        init: o(t => {
          t.state || (t.state = {}), (t.state.arrowMarkerAbsolute = t.arrowMarkerAbsolute)
        }, 'init')
      }
    })
  var WP,
    Vpe,
    Upe = N(() => {
      'use strict'
      WP = (function () {
        var t = o(function (d, p, m, g) {
            for (m = m || {}, g = d.length; g--; m[d[g]] = p);
            return m
          }, 'o'),
          e = [6, 8, 10, 11, 12, 14, 16, 17, 18],
          r = [1, 9],
          n = [1, 10],
          i = [1, 11],
          a = [1, 12],
          s = [1, 13],
          l = [1, 14],
          u = {
            trace: o(function () {}, 'trace'),
            yy: {},
            symbols_: {
              error: 2,
              start: 3,
              journey: 4,
              document: 5,
              EOF: 6,
              line: 7,
              SPACE: 8,
              statement: 9,
              NEWLINE: 10,
              title: 11,
              acc_title: 12,
              acc_title_value: 13,
              acc_descr: 14,
              acc_descr_value: 15,
              acc_descr_multiline_value: 16,
              section: 17,
              taskName: 18,
              taskData: 19,
              $accept: 0,
              $end: 1
            },
            terminals_: {
              2: 'error',
              4: 'journey',
              6: 'EOF',
              8: 'SPACE',
              10: 'NEWLINE',
              11: 'title',
              12: 'acc_title',
              13: 'acc_title_value',
              14: 'acc_descr',
              15: 'acc_descr_value',
              16: 'acc_descr_multiline_value',
              17: 'section',
              18: 'taskName',
              19: 'taskData'
            },
            productions_: [0, [3, 3], [5, 0], [5, 2], [7, 2], [7, 1], [7, 1], [7, 1], [9, 1], [9, 2], [9, 2], [9, 1], [9, 1], [9, 2]],
            performAction: o(function (p, m, g, y, v, x, b) {
              var T = x.length - 1
              switch (v) {
                case 1:
                  return x[T - 1]
                case 2:
                  this.$ = []
                  break
                case 3:
                  x[T - 1].push(x[T]), (this.$ = x[T - 1])
                  break
                case 4:
                case 5:
                  this.$ = x[T]
                  break
                case 6:
                case 7:
                  this.$ = []
                  break
                case 8:
                  y.setDiagramTitle(x[T].substr(6)), (this.$ = x[T].substr(6))
                  break
                case 9:
                  ;(this.$ = x[T].trim()), y.setAccTitle(this.$)
                  break
                case 10:
                case 11:
                  ;(this.$ = x[T].trim()), y.setAccDescription(this.$)
                  break
                case 12:
                  y.addSection(x[T].substr(8)), (this.$ = x[T].substr(8))
                  break
                case 13:
                  y.addTask(x[T - 1], x[T]), (this.$ = 'task')
                  break
              }
            }, 'anonymous'),
            table: [
              { 3: 1, 4: [1, 2] },
              { 1: [3] },
              t(e, [2, 2], { 5: 3 }),
              { 6: [1, 4], 7: 5, 8: [1, 6], 9: 7, 10: [1, 8], 11: r, 12: n, 14: i, 16: a, 17: s, 18: l },
              t(e, [2, 7], { 1: [2, 1] }),
              t(e, [2, 3]),
              { 9: 15, 11: r, 12: n, 14: i, 16: a, 17: s, 18: l },
              t(e, [2, 5]),
              t(e, [2, 6]),
              t(e, [2, 8]),
              { 13: [1, 16] },
              { 15: [1, 17] },
              t(e, [2, 11]),
              t(e, [2, 12]),
              { 19: [1, 18] },
              t(e, [2, 4]),
              t(e, [2, 9]),
              t(e, [2, 10]),
              t(e, [2, 13])
            ],
            defaultActions: {},
            parseError: o(function (p, m) {
              if (m.recoverable) this.trace(p)
              else {
                var g = new Error(p)
                throw ((g.hash = m), g)
              }
            }, 'parseError'),
            parse: o(function (p) {
              var m = this,
                g = [0],
                y = [],
                v = [null],
                x = [],
                b = this.table,
                T = '',
                S = 0,
                w = 0,
                E = 0,
                _ = 2,
                C = 1,
                D = x.slice.call(arguments, 1),
                O = Object.create(this.lexer),
                R = { yy: {} }
              for (var k in this.yy) Object.prototype.hasOwnProperty.call(this.yy, k) && (R.yy[k] = this.yy[k])
              O.setInput(p, R.yy), (R.yy.lexer = O), (R.yy.parser = this), typeof O.yylloc > 'u' && (O.yylloc = {})
              var L = O.yylloc
              x.push(L)
              var A = O.options && O.options.ranges
              typeof R.yy.parseError == 'function' ? (this.parseError = R.yy.parseError) : (this.parseError = Object.getPrototypeOf(this).parseError)
              function I(Q) {
                ;(g.length = g.length - 2 * Q), (v.length = v.length - Q), (x.length = x.length - Q)
              }
              o(I, 'popStack')
              function M() {
                var Q
                return (Q = y.pop() || O.lex() || C), typeof Q != 'number' && (Q instanceof Array && ((y = Q), (Q = y.pop())), (Q = m.symbols_[Q] || Q)), Q
              }
              o(M, 'lex')
              for (var P, B, F, z, $, U, K = {}, ee, Y, ce, Z; ; ) {
                if (
                  ((F = g[g.length - 1]),
                  this.defaultActions[F] ? (z = this.defaultActions[F]) : ((P === null || typeof P > 'u') && (P = M()), (z = b[F] && b[F][P])),
                  typeof z > 'u' || !z.length || !z[0])
                ) {
                  var ue = ''
                  Z = []
                  for (ee in b[F]) this.terminals_[ee] && ee > _ && Z.push("'" + this.terminals_[ee] + "'")
                  O.showPosition
                    ? (ue =
                        'Parse error on line ' +
                        (S + 1) +
                        `:
` +
                        O.showPosition() +
                        `
Expecting ` +
                        Z.join(', ') +
                        ", got '" +
                        (this.terminals_[P] || P) +
                        "'")
                    : (ue = 'Parse error on line ' + (S + 1) + ': Unexpected ' + (P == C ? 'end of input' : "'" + (this.terminals_[P] || P) + "'")),
                    this.parseError(ue, { text: O.match, token: this.terminals_[P] || P, line: O.yylineno, loc: L, expected: Z })
                }
                if (z[0] instanceof Array && z.length > 1) throw new Error('Parse Error: multiple actions possible at state: ' + F + ', token: ' + P)
                switch (z[0]) {
                  case 1:
                    g.push(P),
                      v.push(O.yytext),
                      x.push(O.yylloc),
                      g.push(z[1]),
                      (P = null),
                      B ? ((P = B), (B = null)) : ((w = O.yyleng), (T = O.yytext), (S = O.yylineno), (L = O.yylloc), E > 0 && E--)
                    break
                  case 2:
                    if (
                      ((Y = this.productions_[z[1]][1]),
                      (K.$ = v[v.length - Y]),
                      (K._$ = {
                        first_line: x[x.length - (Y || 1)].first_line,
                        last_line: x[x.length - 1].last_line,
                        first_column: x[x.length - (Y || 1)].first_column,
                        last_column: x[x.length - 1].last_column
                      }),
                      A && (K._$.range = [x[x.length - (Y || 1)].range[0], x[x.length - 1].range[1]]),
                      (U = this.performAction.apply(K, [T, w, S, R.yy, z[1], v, x].concat(D))),
                      typeof U < 'u')
                    )
                      return U
                    Y && ((g = g.slice(0, -1 * Y * 2)), (v = v.slice(0, -1 * Y)), (x = x.slice(0, -1 * Y))),
                      g.push(this.productions_[z[1]][0]),
                      v.push(K.$),
                      x.push(K._$),
                      (ce = b[g[g.length - 2]][g[g.length - 1]]),
                      g.push(ce)
                    break
                  case 3:
                    return !0
                }
              }
              return !0
            }, 'parse')
          },
          h = (function () {
            var d = {
              EOF: 1,
              parseError: o(function (m, g) {
                if (this.yy.parser) this.yy.parser.parseError(m, g)
                else throw new Error(m)
              }, 'parseError'),
              setInput: o(function (p, m) {
                return (
                  (this.yy = m || this.yy || {}),
                  (this._input = p),
                  (this._more = this._backtrack = this.done = !1),
                  (this.yylineno = this.yyleng = 0),
                  (this.yytext = this.matched = this.match = ''),
                  (this.conditionStack = ['INITIAL']),
                  (this.yylloc = { first_line: 1, first_column: 0, last_line: 1, last_column: 0 }),
                  this.options.ranges && (this.yylloc.range = [0, 0]),
                  (this.offset = 0),
                  this
                )
              }, 'setInput'),
              input: o(function () {
                var p = this._input[0]
                ;(this.yytext += p), this.yyleng++, this.offset++, (this.match += p), (this.matched += p)
                var m = p.match(/(?:\r\n?|\n).*/g)
                return (
                  m ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++, this.options.ranges && this.yylloc.range[1]++, (this._input = this._input.slice(1)), p
                )
              }, 'input'),
              unput: o(function (p) {
                var m = p.length,
                  g = p.split(/(?:\r\n?|\n)/g)
                ;(this._input = p + this._input), (this.yytext = this.yytext.substr(0, this.yytext.length - m)), (this.offset -= m)
                var y = this.match.split(/(?:\r\n?|\n)/g)
                ;(this.match = this.match.substr(0, this.match.length - 1)),
                  (this.matched = this.matched.substr(0, this.matched.length - 1)),
                  g.length - 1 && (this.yylineno -= g.length - 1)
                var v = this.yylloc.range
                return (
                  (this.yylloc = {
                    first_line: this.yylloc.first_line,
                    last_line: this.yylineno + 1,
                    first_column: this.yylloc.first_column,
                    last_column: g ? (g.length === y.length ? this.yylloc.first_column : 0) + y[y.length - g.length].length - g[0].length : this.yylloc.first_column - m
                  }),
                  this.options.ranges && (this.yylloc.range = [v[0], v[0] + this.yyleng - m]),
                  (this.yyleng = this.yytext.length),
                  this
                )
              }, 'unput'),
              more: o(function () {
                return (this._more = !0), this
              }, 'more'),
              reject: o(function () {
                if (this.options.backtrack_lexer) this._backtrack = !0
                else
                  return this.parseError(
                    'Lexical error on line ' +
                      (this.yylineno + 1) +
                      `. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
` +
                      this.showPosition(),
                    { text: '', token: null, line: this.yylineno }
                  )
                return this
              }, 'reject'),
              less: o(function (p) {
                this.unput(this.match.slice(p))
              }, 'less'),
              pastInput: o(function () {
                var p = this.matched.substr(0, this.matched.length - this.match.length)
                return (p.length > 20 ? '...' : '') + p.substr(-20).replace(/\n/g, '')
              }, 'pastInput'),
              upcomingInput: o(function () {
                var p = this.match
                return p.length < 20 && (p += this._input.substr(0, 20 - p.length)), (p.substr(0, 20) + (p.length > 20 ? '...' : '')).replace(/\n/g, '')
              }, 'upcomingInput'),
              showPosition: o(function () {
                var p = this.pastInput(),
                  m = new Array(p.length + 1).join('-')
                return (
                  p +
                  this.upcomingInput() +
                  `
` +
                  m +
                  '^'
                )
              }, 'showPosition'),
              test_match: o(function (p, m) {
                var g, y, v
                if (
                  (this.options.backtrack_lexer &&
                    ((v = {
                      yylineno: this.yylineno,
                      yylloc: { first_line: this.yylloc.first_line, last_line: this.last_line, first_column: this.yylloc.first_column, last_column: this.yylloc.last_column },
                      yytext: this.yytext,
                      match: this.match,
                      matches: this.matches,
                      matched: this.matched,
                      yyleng: this.yyleng,
                      offset: this.offset,
                      _more: this._more,
                      _input: this._input,
                      yy: this.yy,
                      conditionStack: this.conditionStack.slice(0),
                      done: this.done
                    }),
                    this.options.ranges && (v.yylloc.range = this.yylloc.range.slice(0))),
                  (y = p[0].match(/(?:\r\n?|\n).*/g)),
                  y && (this.yylineno += y.length),
                  (this.yylloc = {
                    first_line: this.yylloc.last_line,
                    last_line: this.yylineno + 1,
                    first_column: this.yylloc.last_column,
                    last_column: y ? y[y.length - 1].length - y[y.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + p[0].length
                  }),
                  (this.yytext += p[0]),
                  (this.match += p[0]),
                  (this.matches = p),
                  (this.yyleng = this.yytext.length),
                  this.options.ranges && (this.yylloc.range = [this.offset, (this.offset += this.yyleng)]),
                  (this._more = !1),
                  (this._backtrack = !1),
                  (this._input = this._input.slice(p[0].length)),
                  (this.matched += p[0]),
                  (g = this.performAction.call(this, this.yy, this, m, this.conditionStack[this.conditionStack.length - 1])),
                  this.done && this._input && (this.done = !1),
                  g)
                )
                  return g
                if (this._backtrack) {
                  for (var x in v) this[x] = v[x]
                  return !1
                }
                return !1
              }, 'test_match'),
              next: o(function () {
                if (this.done) return this.EOF
                this._input || (this.done = !0)
                var p, m, g, y
                this._more || ((this.yytext = ''), (this.match = ''))
                for (var v = this._currentRules(), x = 0; x < v.length; x++)
                  if (((g = this._input.match(this.rules[v[x]])), g && (!m || g[0].length > m[0].length))) {
                    if (((m = g), (y = x), this.options.backtrack_lexer)) {
                      if (((p = this.test_match(g, v[x])), p !== !1)) return p
                      if (this._backtrack) {
                        m = !1
                        continue
                      } else return !1
                    } else if (!this.options.flex) break
                  }
                return m
                  ? ((p = this.test_match(m, v[y])), p !== !1 ? p : !1)
                  : this._input === ''
                    ? this.EOF
                    : this.parseError(
                        'Lexical error on line ' +
                          (this.yylineno + 1) +
                          `. Unrecognized text.
` +
                          this.showPosition(),
                        { text: '', token: null, line: this.yylineno }
                      )
              }, 'next'),
              lex: o(function () {
                var m = this.next()
                return m || this.lex()
              }, 'lex'),
              begin: o(function (m) {
                this.conditionStack.push(m)
              }, 'begin'),
              popState: o(function () {
                var m = this.conditionStack.length - 1
                return m > 0 ? this.conditionStack.pop() : this.conditionStack[0]
              }, 'popState'),
              _currentRules: o(function () {
                return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]
                  ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
                  : this.conditions.INITIAL.rules
              }, '_currentRules'),
              topState: o(function (m) {
                return (m = this.conditionStack.length - 1 - Math.abs(m || 0)), m >= 0 ? this.conditionStack[m] : 'INITIAL'
              }, 'topState'),
              pushState: o(function (m) {
                this.begin(m)
              }, 'pushState'),
              stateStackSize: o(function () {
                return this.conditionStack.length
              }, 'stateStackSize'),
              options: { 'case-insensitive': !0 },
              performAction: o(function (m, g, y, v) {
                var x = v
                switch (y) {
                  case 0:
                    break
                  case 1:
                    break
                  case 2:
                    return 10
                  case 3:
                    break
                  case 4:
                    break
                  case 5:
                    return 4
                  case 6:
                    return 11
                  case 7:
                    return this.begin('acc_title'), 12
                    break
                  case 8:
                    return this.popState(), 'acc_title_value'
                    break
                  case 9:
                    return this.begin('acc_descr'), 14
                    break
                  case 10:
                    return this.popState(), 'acc_descr_value'
                    break
                  case 11:
                    this.begin('acc_descr_multiline')
                    break
                  case 12:
                    this.popState()
                    break
                  case 13:
                    return 'acc_descr_multiline_value'
                  case 14:
                    return 17
                  case 15:
                    return 18
                  case 16:
                    return 19
                  case 17:
                    return ':'
                  case 18:
                    return 6
                  case 19:
                    return 'INVALID'
                }
              }, 'anonymous'),
              rules: [
                /^(?:%(?!\{)[^\n]*)/i,
                /^(?:[^\}]%%[^\n]*)/i,
                /^(?:[\n]+)/i,
                /^(?:\s+)/i,
                /^(?:#[^\n]*)/i,
                /^(?:journey\b)/i,
                /^(?:title\s[^#\n;]+)/i,
                /^(?:accTitle\s*:\s*)/i,
                /^(?:(?!\n||)*[^\n]*)/i,
                /^(?:accDescr\s*:\s*)/i,
                /^(?:(?!\n||)*[^\n]*)/i,
                /^(?:accDescr\s*\{\s*)/i,
                /^(?:[\}])/i,
                /^(?:[^\}]*)/i,
                /^(?:section\s[^#:\n;]+)/i,
                /^(?:[^#:\n;]+)/i,
                /^(?::[^#\n;]+)/i,
                /^(?::)/i,
                /^(?:$)/i,
                /^(?:.)/i
              ],
              conditions: {
                acc_descr_multiline: { rules: [12, 13], inclusive: !1 },
                acc_descr: { rules: [10], inclusive: !1 },
                acc_title: { rules: [8], inclusive: !1 },
                INITIAL: { rules: [0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 18, 19], inclusive: !0 }
              }
            }
            return d
          })()
        u.lexer = h
        function f() {
          this.yy = {}
        }
        return o(f, 'Parser'), (f.prototype = u), (u.Parser = f), new f()
      })()
      WP.parser = WP
      Vpe = WP
    })
  var $1,
    qP,
    Pb,
    Bb,
    fWe,
    dWe,
    pWe,
    mWe,
    gWe,
    yWe,
    vWe,
    Hpe,
    xWe,
    YP,
    Wpe = N(() => {
      'use strict'
      Gt()
      ci()
      ;($1 = ''),
        (qP = []),
        (Pb = []),
        (Bb = []),
        (fWe = o(function () {
          ;(qP.length = 0), (Pb.length = 0), ($1 = ''), (Bb.length = 0), kr()
        }, 'clear')),
        (dWe = o(function (t) {
          ;($1 = t), qP.push(t)
        }, 'addSection')),
        (pWe = o(function () {
          return qP
        }, 'getSections')),
        (mWe = o(function () {
          let t = Hpe(),
            e = 100,
            r = 0
          for (; !t && r < e; ) (t = Hpe()), r++
          return Pb.push(...Bb), Pb
        }, 'getTasks')),
        (gWe = o(function () {
          let t = []
          return (
            Pb.forEach(r => {
              r.people && t.push(...r.people)
            }),
            [...new Set(t)].sort()
          )
        }, 'updateActors')),
        (yWe = o(function (t, e) {
          let r = e.substr(1).split(':'),
            n = 0,
            i = []
          r.length === 1 ? ((n = Number(r[0])), (i = [])) : ((n = Number(r[0])), (i = r[1].split(',')))
          let a = i.map(l => l.trim()),
            s = { section: $1, type: $1, people: a, task: t, score: n }
          Bb.push(s)
        }, 'addTask')),
        (vWe = o(function (t) {
          let e = { section: $1, type: $1, description: t, task: t, classes: [] }
          Pb.push(e)
        }, 'addTaskOrg')),
        (Hpe = o(function () {
          let t = o(function (r) {
              return Bb[r].processed
            }, 'compileTask'),
            e = !0
          for (let [r, n] of Bb.entries()) t(r), (e = e && n.processed)
          return e
        }, 'compileTasks')),
        (xWe = o(function () {
          return gWe()
        }, 'getActors')),
        (YP = {
          getConfig: o(() => me().journey, 'getConfig'),
          clear: fWe,
          setDiagramTitle: Or,
          getDiagramTitle: Nr,
          setAccTitle: Ar,
          getAccTitle: Dr,
          setAccDescription: Lr,
          getAccDescription: Rr,
          addSection: dWe,
          getSections: pWe,
          getTasks: mWe,
          addTask: yWe,
          addTaskOrg: vWe,
          getActors: xWe
        })
    })
  var bWe,
    qpe,
    Ype = N(() => {
      'use strict'
      Xm()
      ;(bWe = o(
        t => `.label {
    font-family: ${t.fontFamily};
    color: ${t.textColor};
  }
  .mouth {
    stroke: #666;
  }

  line {
    stroke: ${t.textColor}
  }

  .legend {
    fill: ${t.textColor};
    font-family: ${t.fontFamily};
  }

  .label text {
    fill: #333;
  }
  .label {
    color: ${t.textColor}
  }

  .face {
    ${t.faceColor ? `fill: ${t.faceColor}` : 'fill: #FFF8DC'};
    stroke: #999;
  }

  .node rect,
  .node circle,
  .node ellipse,
  .node polygon,
  .node path {
    fill: ${t.mainBkg};
    stroke: ${t.nodeBorder};
    stroke-width: 1px;
  }

  .node .label {
    text-align: center;
  }
  .node.clickable {
    cursor: pointer;
  }

  .arrowheadPath {
    fill: ${t.arrowheadColor};
  }

  .edgePath .path {
    stroke: ${t.lineColor};
    stroke-width: 1.5px;
  }

  .flowchart-link {
    stroke: ${t.lineColor};
    fill: none;
  }

  .edgeLabel {
    background-color: ${t.edgeLabelBackground};
    rect {
      opacity: 0.5;
    }
    text-align: center;
  }

  .cluster rect {
  }

  .cluster text {
    fill: ${t.titleColor};
  }

  div.mermaidTooltip {
    position: absolute;
    text-align: center;
    max-width: 200px;
    padding: 2px;
    font-family: ${t.fontFamily};
    font-size: 12px;
    background: ${t.tertiaryColor};
    border: 1px solid ${t.border2};
    border-radius: 2px;
    pointer-events: none;
    z-index: 100;
  }

  .task-type-0, .section-type-0  {
    ${t.fillType0 ? `fill: ${t.fillType0}` : ''};
  }
  .task-type-1, .section-type-1  {
    ${t.fillType0 ? `fill: ${t.fillType1}` : ''};
  }
  .task-type-2, .section-type-2  {
    ${t.fillType0 ? `fill: ${t.fillType2}` : ''};
  }
  .task-type-3, .section-type-3  {
    ${t.fillType0 ? `fill: ${t.fillType3}` : ''};
  }
  .task-type-4, .section-type-4  {
    ${t.fillType0 ? `fill: ${t.fillType4}` : ''};
  }
  .task-type-5, .section-type-5  {
    ${t.fillType0 ? `fill: ${t.fillType5}` : ''};
  }
  .task-type-6, .section-type-6  {
    ${t.fillType0 ? `fill: ${t.fillType6}` : ''};
  }
  .task-type-7, .section-type-7  {
    ${t.fillType0 ? `fill: ${t.fillType7}` : ''};
  }

  .actor-0 {
    ${t.actor0 ? `fill: ${t.actor0}` : ''};
  }
  .actor-1 {
    ${t.actor1 ? `fill: ${t.actor1}` : ''};
  }
  .actor-2 {
    ${t.actor2 ? `fill: ${t.actor2}` : ''};
  }
  .actor-3 {
    ${t.actor3 ? `fill: ${t.actor3}` : ''};
  }
  .actor-4 {
    ${t.actor4 ? `fill: ${t.actor4}` : ''};
  }
  .actor-5 {
    ${t.actor5 ? `fill: ${t.actor5}` : ''};
  }
  ${Nc()}
`,
        'getStyles'
      )),
        (qpe = bWe)
    })
  var XP,
    TWe,
    jpe,
    Kpe,
    wWe,
    kWe,
    Xpe,
    EWe,
    SWe,
    Qpe,
    CWe,
    z1,
    Zpe = N(() => {
      'use strict'
      fr()
      t2()
      ;(XP = o(function (t, e) {
        return Nd(t, e)
      }, 'drawRect')),
        (TWe = o(function (t, e) {
          let n = t.append('circle').attr('cx', e.cx).attr('cy', e.cy).attr('class', 'face').attr('r', 15).attr('stroke-width', 2).attr('overflow', 'visible'),
            i = t.append('g')
          i
            .append('circle')
            .attr('cx', e.cx - 15 / 3)
            .attr('cy', e.cy - 15 / 3)
            .attr('r', 1.5)
            .attr('stroke-width', 2)
            .attr('fill', '#666')
            .attr('stroke', '#666'),
            i
              .append('circle')
              .attr('cx', e.cx + 15 / 3)
              .attr('cy', e.cy - 15 / 3)
              .attr('r', 1.5)
              .attr('stroke-width', 2)
              .attr('fill', '#666')
              .attr('stroke', '#666')
          function a(u) {
            let h = Sl()
              .startAngle(Math.PI / 2)
              .endAngle(3 * (Math.PI / 2))
              .innerRadius(7.5)
              .outerRadius(6.8181818181818175)
            u.append('path')
              .attr('class', 'mouth')
              .attr('d', h)
              .attr('transform', 'translate(' + e.cx + ',' + (e.cy + 2) + ')')
          }
          o(a, 'smile')
          function s(u) {
            let h = Sl()
              .startAngle((3 * Math.PI) / 2)
              .endAngle(5 * (Math.PI / 2))
              .innerRadius(7.5)
              .outerRadius(6.8181818181818175)
            u.append('path')
              .attr('class', 'mouth')
              .attr('d', h)
              .attr('transform', 'translate(' + e.cx + ',' + (e.cy + 7) + ')')
          }
          o(s, 'sad')
          function l(u) {
            u.append('line')
              .attr('class', 'mouth')
              .attr('stroke', 2)
              .attr('x1', e.cx - 5)
              .attr('y1', e.cy + 7)
              .attr('x2', e.cx + 5)
              .attr('y2', e.cy + 7)
              .attr('class', 'mouth')
              .attr('stroke-width', '1px')
              .attr('stroke', '#666')
          }
          return o(l, 'ambivalent'), e.score > 3 ? a(i) : e.score < 3 ? s(i) : l(i), n
        }, 'drawFace')),
        (jpe = o(function (t, e) {
          let r = t.append('circle')
          return (
            r.attr('cx', e.cx),
            r.attr('cy', e.cy),
            r.attr('class', 'actor-' + e.pos),
            r.attr('fill', e.fill),
            r.attr('stroke', e.stroke),
            r.attr('r', e.r),
            r.class !== void 0 && r.attr('class', r.class),
            e.title !== void 0 && r.append('title').text(e.title),
            r
          )
        }, 'drawCircle')),
        (Kpe = o(function (t, e) {
          return XY(t, e)
        }, 'drawText')),
        (wWe = o(function (t, e) {
          function r(i, a, s, l, u) {
            return i + ',' + a + ' ' + (i + s) + ',' + a + ' ' + (i + s) + ',' + (a + l - u) + ' ' + (i + s - u * 1.2) + ',' + (a + l) + ' ' + i + ',' + (a + l)
          }
          o(r, 'genPoints')
          let n = t.append('polygon')
          n.attr('points', r(e.x, e.y, 50, 20, 7)), n.attr('class', 'labelBox'), (e.y = e.y + e.labelMargin), (e.x = e.x + 0.5 * e.labelMargin), Kpe(t, e)
        }, 'drawLabel')),
        (kWe = o(function (t, e, r) {
          let n = t.append('g'),
            i = Al()
          ;(i.x = e.x),
            (i.y = e.y),
            (i.fill = e.fill),
            (i.width = r.width * e.taskCount + r.diagramMarginX * (e.taskCount - 1)),
            (i.height = r.height),
            (i.class = 'journey-section section-type-' + e.num),
            (i.rx = 3),
            (i.ry = 3),
            XP(n, i),
            Qpe(r)(e.text, n, i.x, i.y, i.width, i.height, { class: 'journey-section section-type-' + e.num }, r, e.colour)
        }, 'drawSection')),
        (Xpe = -1),
        (EWe = o(function (t, e, r) {
          let n = e.x + r.width / 2,
            i = t.append('g')
          Xpe++
          let a = 300 + 5 * 30
          i
            .append('line')
            .attr('id', 'task' + Xpe)
            .attr('x1', n)
            .attr('y1', e.y)
            .attr('x2', n)
            .attr('y2', a)
            .attr('class', 'task-line')
            .attr('stroke-width', '1px')
            .attr('stroke-dasharray', '4 2')
            .attr('stroke', '#666'),
            TWe(i, { cx: n, cy: 300 + (5 - e.score) * 30, score: e.score })
          let s = Al()
          ;(s.x = e.x), (s.y = e.y), (s.fill = e.fill), (s.width = r.width), (s.height = r.height), (s.class = 'task task-type-' + e.num), (s.rx = 3), (s.ry = 3), XP(i, s)
          let l = e.x + 14
          e.people.forEach(u => {
            let h = e.actors[u].color,
              f = { cx: l, cy: e.y, r: 7, fill: h, stroke: '#000', title: u, pos: e.actors[u].position }
            jpe(i, f), (l += 10)
          }),
            Qpe(r)(e.task, i, s.x, s.y, s.width, s.height, { class: 'task' }, r, e.colour)
        }, 'drawTask')),
        (SWe = o(function (t, e) {
          iT(t, e)
        }, 'drawBackgroundRect')),
        (Qpe = (function () {
          function t(i, a, s, l, u, h, f, d) {
            let p = a
              .append('text')
              .attr('x', s + u / 2)
              .attr('y', l + h / 2 + 5)
              .style('font-color', d)
              .style('text-anchor', 'middle')
              .text(i)
            n(p, f)
          }
          o(t, 'byText')
          function e(i, a, s, l, u, h, f, d, p) {
            let { taskFontSize: m, taskFontFamily: g } = d,
              y = i.split(/<br\s*\/?>/gi)
            for (let v = 0; v < y.length; v++) {
              let x = v * m - (m * (y.length - 1)) / 2,
                b = a
                  .append('text')
                  .attr('x', s + u / 2)
                  .attr('y', l)
                  .attr('fill', p)
                  .style('text-anchor', 'middle')
                  .style('font-size', m)
                  .style('font-family', g)
              b
                .append('tspan')
                .attr('x', s + u / 2)
                .attr('dy', x)
                .text(y[v]),
                b
                  .attr('y', l + h / 2)
                  .attr('dominant-baseline', 'central')
                  .attr('alignment-baseline', 'central'),
                n(b, f)
            }
          }
          o(e, 'byTspan')
          function r(i, a, s, l, u, h, f, d) {
            let p = a.append('switch'),
              g = p
                .append('foreignObject')
                .attr('x', s)
                .attr('y', l)
                .attr('width', u)
                .attr('height', h)
                .attr('position', 'fixed')
                .append('xhtml:div')
                .style('display', 'table')
                .style('height', '100%')
                .style('width', '100%')
            g.append('div').attr('class', 'label').style('display', 'table-cell').style('text-align', 'center').style('vertical-align', 'middle').text(i),
              e(i, p, s, l, u, h, f, d),
              n(g, f)
          }
          o(r, 'byFo')
          function n(i, a) {
            for (let s in a) s in a && i.attr(s, a[s])
          }
          return (
            o(n, '_setTextAttrs'),
            function (i) {
              return i.textPlacement === 'fo' ? r : i.textPlacement === 'old' ? t : e
            }
          )
        })()),
        (CWe = o(function (t) {
          t.append('defs')
            .append('marker')
            .attr('id', 'arrowhead')
            .attr('refX', 5)
            .attr('refY', 2)
            .attr('markerWidth', 6)
            .attr('markerHeight', 4)
            .attr('orient', 'auto')
            .append('path')
            .attr('d', 'M 0,0 V 4 L6,2 Z')
        }, 'initGraphics')),
        (z1 = { drawRect: XP, drawCircle: jpe, drawSection: kWe, drawText: Kpe, drawLabel: wWe, drawTask: EWe, drawBackgroundRect: SWe, initGraphics: CWe })
    })
  function _We(t) {
    let e = me().journey,
      r = e.maxLabelWidth
    h6 = 0
    let n = 60
    Object.keys(th).forEach(i => {
      let a = th[i].color,
        s = { cx: 20, cy: n, r: 7, fill: a, stroke: '#000', pos: th[i].position }
      z1.drawCircle(t, s)
      let l = t.append('text').attr('visibility', 'hidden').text(i),
        u = l.node().getBoundingClientRect().width
      l.remove()
      let h = []
      if (u <= r) h = [i]
      else {
        let f = i.split(' '),
          d = ''
        ;(l = t.append('text').attr('visibility', 'hidden')),
          f.forEach(p => {
            let m = d ? `${d} ${p}` : p
            if ((l.text(m), l.node().getBoundingClientRect().width > r)) {
              if ((d && h.push(d), (d = p), l.text(p), l.node().getBoundingClientRect().width > r)) {
                let y = ''
                for (let v of p) (y += v), l.text(y + '-'), l.node().getBoundingClientRect().width > r && (h.push(y.slice(0, -1) + '-'), (y = v))
                d = y
              }
            } else d = m
          }),
          d && h.push(d),
          l.remove()
      }
      h.forEach((f, d) => {
        let p = { x: 40, y: n + 7 + d * 20, fill: '#666', text: f, textMargin: e.boxTextMargin ?? 5 },
          g = z1.drawText(t, p).node().getBoundingClientRect().width
        g > h6 && g > e.leftMargin - g && (h6 = g)
      }),
        (n += Math.max(20, h.length * 20))
    })
  }
  var AWe,
    th,
    h6,
    Ul,
    _f,
    DWe,
    rl,
    jP,
    Jpe,
    LWe,
    KP,
    e0e = N(() => {
      'use strict'
      fr()
      Zpe()
      Gt()
      xi()
      ;(AWe = o(function (t) {
        Object.keys(t).forEach(function (r) {
          Ul[r] = t[r]
        })
      }, 'setConf')),
        (th = {}),
        (h6 = 0)
      o(_We, 'drawActorLegend')
      ;(Ul = me().journey),
        (_f = 0),
        (DWe = o(function (t, e, r, n) {
          let i = me(),
            a = i.journey.titleColor,
            s = i.journey.titleFontSize,
            l = i.journey.titleFontFamily,
            u = i.securityLevel,
            h
          u === 'sandbox' && (h = Ge('#i' + e))
          let f = u === 'sandbox' ? Ge(h.nodes()[0].contentDocument.body) : Ge('body')
          rl.init()
          let d = f.select('#' + e)
          z1.initGraphics(d)
          let p = n.db.getTasks(),
            m = n.db.getDiagramTitle(),
            g = n.db.getActors()
          for (let S in th) delete th[S]
          let y = 0
          g.forEach(S => {
            ;(th[S] = { color: Ul.actorColours[y % Ul.actorColours.length], position: y }), y++
          }),
            _We(d),
            (_f = Ul.leftMargin + h6),
            rl.insert(0, 0, _f, Object.keys(th).length * 50),
            LWe(d, p, 0)
          let v = rl.getBounds()
          m && d.append('text').text(m).attr('x', _f).attr('font-size', s).attr('font-weight', 'bold').attr('y', 25).attr('fill', a).attr('font-family', l)
          let x = v.stopy - v.starty + 2 * Ul.diagramMarginY,
            b = _f + v.stopx + 2 * Ul.diagramMarginX
          fn(d, x, b, Ul.useMaxWidth),
            d
              .append('line')
              .attr('x1', _f)
              .attr('y1', Ul.height * 4)
              .attr('x2', b - _f - 4)
              .attr('y2', Ul.height * 4)
              .attr('stroke-width', 4)
              .attr('stroke', 'black')
              .attr('marker-end', 'url(#arrowhead)')
          let T = m ? 70 : 0
          d.attr('viewBox', `${v.startx} -25 ${b} ${x + T}`), d.attr('preserveAspectRatio', 'xMinYMin meet'), d.attr('height', x + T + 25)
        }, 'draw')),
        (rl = {
          data: { startx: void 0, stopx: void 0, starty: void 0, stopy: void 0 },
          verticalPos: 0,
          sequenceItems: [],
          init: o(function () {
            ;(this.sequenceItems = []), (this.data = { startx: void 0, stopx: void 0, starty: void 0, stopy: void 0 }), (this.verticalPos = 0)
          }, 'init'),
          updateVal: o(function (t, e, r, n) {
            t[e] === void 0 ? (t[e] = r) : (t[e] = n(r, t[e]))
          }, 'updateVal'),
          updateBounds: o(function (t, e, r, n) {
            let i = me().journey,
              a = this,
              s = 0
            function l(u) {
              return o(function (f) {
                s++
                let d = a.sequenceItems.length - s + 1
                a.updateVal(f, 'starty', e - d * i.boxMargin, Math.min),
                  a.updateVal(f, 'stopy', n + d * i.boxMargin, Math.max),
                  a.updateVal(rl.data, 'startx', t - d * i.boxMargin, Math.min),
                  a.updateVal(rl.data, 'stopx', r + d * i.boxMargin, Math.max),
                  u !== 'activation' &&
                    (a.updateVal(f, 'startx', t - d * i.boxMargin, Math.min),
                    a.updateVal(f, 'stopx', r + d * i.boxMargin, Math.max),
                    a.updateVal(rl.data, 'starty', e - d * i.boxMargin, Math.min),
                    a.updateVal(rl.data, 'stopy', n + d * i.boxMargin, Math.max))
              }, 'updateItemBounds')
            }
            o(l, 'updateFn'), this.sequenceItems.forEach(l())
          }, 'updateBounds'),
          insert: o(function (t, e, r, n) {
            let i = Math.min(t, r),
              a = Math.max(t, r),
              s = Math.min(e, n),
              l = Math.max(e, n)
            this.updateVal(rl.data, 'startx', i, Math.min),
              this.updateVal(rl.data, 'starty', s, Math.min),
              this.updateVal(rl.data, 'stopx', a, Math.max),
              this.updateVal(rl.data, 'stopy', l, Math.max),
              this.updateBounds(i, s, a, l)
          }, 'insert'),
          bumpVerticalPos: o(function (t) {
            ;(this.verticalPos = this.verticalPos + t), (this.data.stopy = this.verticalPos)
          }, 'bumpVerticalPos'),
          getVerticalPos: o(function () {
            return this.verticalPos
          }, 'getVerticalPos'),
          getBounds: o(function () {
            return this.data
          }, 'getBounds')
        }),
        (jP = Ul.sectionFills),
        (Jpe = Ul.sectionColours),
        (LWe = o(function (t, e, r) {
          let n = me().journey,
            i = '',
            a = n.height * 2 + n.diagramMarginY,
            s = r + a,
            l = 0,
            u = '#CCC',
            h = 'black',
            f = 0
          for (let [d, p] of e.entries()) {
            if (i !== p.section) {
              ;(u = jP[l % jP.length]), (f = l % jP.length), (h = Jpe[l % Jpe.length])
              let g = 0,
                y = p.section
              for (let x = d; x < e.length && e[x].section == y; x++) g = g + 1
              let v = { x: d * n.taskMargin + d * n.width + _f, y: 50, text: p.section, fill: u, num: f, colour: h, taskCount: g }
              z1.drawSection(t, v, n), (i = p.section), l++
            }
            let m = p.people.reduce((g, y) => (th[y] && (g[y] = th[y]), g), {})
            ;(p.x = d * n.taskMargin + d * n.width + _f),
              (p.y = s),
              (p.width = n.diagramMarginX),
              (p.height = n.diagramMarginY),
              (p.colour = h),
              (p.fill = u),
              (p.num = f),
              (p.actors = m),
              z1.drawTask(t, p, n),
              rl.insert(p.x, p.y, p.x + p.width + n.taskMargin, 300 + 5 * 30)
          }
        }, 'drawTasks')),
        (KP = { setConf: AWe, draw: DWe })
    })
  var t0e = {}
  ur(t0e, { diagram: () => RWe })
  var RWe,
    r0e = N(() => {
      'use strict'
      Upe()
      Wpe()
      Ype()
      e0e()
      RWe = {
        parser: Vpe,
        db: YP,
        renderer: KP,
        styles: qpe,
        init: o(t => {
          KP.setConf(t.journey), YP.clear()
        }, 'init')
      }
    })
  var ZP,
    c0e,
    u0e = N(() => {
      'use strict'
      ZP = (function () {
        var t = o(function (p, m, g, y) {
            for (g = g || {}, y = p.length; y--; g[p[y]] = m);
            return g
          }, 'o'),
          e = [6, 8, 10, 11, 12, 14, 16, 17, 20, 21],
          r = [1, 9],
          n = [1, 10],
          i = [1, 11],
          a = [1, 12],
          s = [1, 13],
          l = [1, 16],
          u = [1, 17],
          h = {
            trace: o(function () {}, 'trace'),
            yy: {},
            symbols_: {
              error: 2,
              start: 3,
              timeline: 4,
              document: 5,
              EOF: 6,
              line: 7,
              SPACE: 8,
              statement: 9,
              NEWLINE: 10,
              title: 11,
              acc_title: 12,
              acc_title_value: 13,
              acc_descr: 14,
              acc_descr_value: 15,
              acc_descr_multiline_value: 16,
              section: 17,
              period_statement: 18,
              event_statement: 19,
              period: 20,
              event: 21,
              $accept: 0,
              $end: 1
            },
            terminals_: {
              2: 'error',
              4: 'timeline',
              6: 'EOF',
              8: 'SPACE',
              10: 'NEWLINE',
              11: 'title',
              12: 'acc_title',
              13: 'acc_title_value',
              14: 'acc_descr',
              15: 'acc_descr_value',
              16: 'acc_descr_multiline_value',
              17: 'section',
              20: 'period',
              21: 'event'
            },
            productions_: [0, [3, 3], [5, 0], [5, 2], [7, 2], [7, 1], [7, 1], [7, 1], [9, 1], [9, 2], [9, 2], [9, 1], [9, 1], [9, 1], [9, 1], [18, 1], [19, 1]],
            performAction: o(function (m, g, y, v, x, b, T) {
              var S = b.length - 1
              switch (x) {
                case 1:
                  return b[S - 1]
                case 2:
                  this.$ = []
                  break
                case 3:
                  b[S - 1].push(b[S]), (this.$ = b[S - 1])
                  break
                case 4:
                case 5:
                  this.$ = b[S]
                  break
                case 6:
                case 7:
                  this.$ = []
                  break
                case 8:
                  v.getCommonDb().setDiagramTitle(b[S].substr(6)), (this.$ = b[S].substr(6))
                  break
                case 9:
                  ;(this.$ = b[S].trim()), v.getCommonDb().setAccTitle(this.$)
                  break
                case 10:
                case 11:
                  ;(this.$ = b[S].trim()), v.getCommonDb().setAccDescription(this.$)
                  break
                case 12:
                  v.addSection(b[S].substr(8)), (this.$ = b[S].substr(8))
                  break
                case 15:
                  v.addTask(b[S], 0, ''), (this.$ = b[S])
                  break
                case 16:
                  v.addEvent(b[S].substr(2)), (this.$ = b[S])
                  break
              }
            }, 'anonymous'),
            table: [
              { 3: 1, 4: [1, 2] },
              { 1: [3] },
              t(e, [2, 2], { 5: 3 }),
              { 6: [1, 4], 7: 5, 8: [1, 6], 9: 7, 10: [1, 8], 11: r, 12: n, 14: i, 16: a, 17: s, 18: 14, 19: 15, 20: l, 21: u },
              t(e, [2, 7], { 1: [2, 1] }),
              t(e, [2, 3]),
              { 9: 18, 11: r, 12: n, 14: i, 16: a, 17: s, 18: 14, 19: 15, 20: l, 21: u },
              t(e, [2, 5]),
              t(e, [2, 6]),
              t(e, [2, 8]),
              { 13: [1, 19] },
              { 15: [1, 20] },
              t(e, [2, 11]),
              t(e, [2, 12]),
              t(e, [2, 13]),
              t(e, [2, 14]),
              t(e, [2, 15]),
              t(e, [2, 16]),
              t(e, [2, 4]),
              t(e, [2, 9]),
              t(e, [2, 10])
            ],
            defaultActions: {},
            parseError: o(function (m, g) {
              if (g.recoverable) this.trace(m)
              else {
                var y = new Error(m)
                throw ((y.hash = g), y)
              }
            }, 'parseError'),
            parse: o(function (m) {
              var g = this,
                y = [0],
                v = [],
                x = [null],
                b = [],
                T = this.table,
                S = '',
                w = 0,
                E = 0,
                _ = 0,
                C = 2,
                D = 1,
                O = b.slice.call(arguments, 1),
                R = Object.create(this.lexer),
                k = { yy: {} }
              for (var L in this.yy) Object.prototype.hasOwnProperty.call(this.yy, L) && (k.yy[L] = this.yy[L])
              R.setInput(m, k.yy), (k.yy.lexer = R), (k.yy.parser = this), typeof R.yylloc > 'u' && (R.yylloc = {})
              var A = R.yylloc
              b.push(A)
              var I = R.options && R.options.ranges
              typeof k.yy.parseError == 'function' ? (this.parseError = k.yy.parseError) : (this.parseError = Object.getPrototypeOf(this).parseError)
              function M(j) {
                ;(y.length = y.length - 2 * j), (x.length = x.length - j), (b.length = b.length - j)
              }
              o(M, 'popStack')
              function P() {
                var j
                return (j = v.pop() || R.lex() || D), typeof j != 'number' && (j instanceof Array && ((v = j), (j = v.pop())), (j = g.symbols_[j] || j)), j
              }
              o(P, 'lex')
              for (var B, F, z, $, U, K, ee = {}, Y, ce, Z, ue; ; ) {
                if (
                  ((z = y[y.length - 1]),
                  this.defaultActions[z] ? ($ = this.defaultActions[z]) : ((B === null || typeof B > 'u') && (B = P()), ($ = T[z] && T[z][B])),
                  typeof $ > 'u' || !$.length || !$[0])
                ) {
                  var Q = ''
                  ue = []
                  for (Y in T[z]) this.terminals_[Y] && Y > C && ue.push("'" + this.terminals_[Y] + "'")
                  R.showPosition
                    ? (Q =
                        'Parse error on line ' +
                        (w + 1) +
                        `:
` +
                        R.showPosition() +
                        `
Expecting ` +
                        ue.join(', ') +
                        ", got '" +
                        (this.terminals_[B] || B) +
                        "'")
                    : (Q = 'Parse error on line ' + (w + 1) + ': Unexpected ' + (B == D ? 'end of input' : "'" + (this.terminals_[B] || B) + "'")),
                    this.parseError(Q, { text: R.match, token: this.terminals_[B] || B, line: R.yylineno, loc: A, expected: ue })
                }
                if ($[0] instanceof Array && $.length > 1) throw new Error('Parse Error: multiple actions possible at state: ' + z + ', token: ' + B)
                switch ($[0]) {
                  case 1:
                    y.push(B),
                      x.push(R.yytext),
                      b.push(R.yylloc),
                      y.push($[1]),
                      (B = null),
                      F ? ((B = F), (F = null)) : ((E = R.yyleng), (S = R.yytext), (w = R.yylineno), (A = R.yylloc), _ > 0 && _--)
                    break
                  case 2:
                    if (
                      ((ce = this.productions_[$[1]][1]),
                      (ee.$ = x[x.length - ce]),
                      (ee._$ = {
                        first_line: b[b.length - (ce || 1)].first_line,
                        last_line: b[b.length - 1].last_line,
                        first_column: b[b.length - (ce || 1)].first_column,
                        last_column: b[b.length - 1].last_column
                      }),
                      I && (ee._$.range = [b[b.length - (ce || 1)].range[0], b[b.length - 1].range[1]]),
                      (K = this.performAction.apply(ee, [S, E, w, k.yy, $[1], x, b].concat(O))),
                      typeof K < 'u')
                    )
                      return K
                    ce && ((y = y.slice(0, -1 * ce * 2)), (x = x.slice(0, -1 * ce)), (b = b.slice(0, -1 * ce))),
                      y.push(this.productions_[$[1]][0]),
                      x.push(ee.$),
                      b.push(ee._$),
                      (Z = T[y[y.length - 2]][y[y.length - 1]]),
                      y.push(Z)
                    break
                  case 3:
                    return !0
                }
              }
              return !0
            }, 'parse')
          },
          f = (function () {
            var p = {
              EOF: 1,
              parseError: o(function (g, y) {
                if (this.yy.parser) this.yy.parser.parseError(g, y)
                else throw new Error(g)
              }, 'parseError'),
              setInput: o(function (m, g) {
                return (
                  (this.yy = g || this.yy || {}),
                  (this._input = m),
                  (this._more = this._backtrack = this.done = !1),
                  (this.yylineno = this.yyleng = 0),
                  (this.yytext = this.matched = this.match = ''),
                  (this.conditionStack = ['INITIAL']),
                  (this.yylloc = { first_line: 1, first_column: 0, last_line: 1, last_column: 0 }),
                  this.options.ranges && (this.yylloc.range = [0, 0]),
                  (this.offset = 0),
                  this
                )
              }, 'setInput'),
              input: o(function () {
                var m = this._input[0]
                ;(this.yytext += m), this.yyleng++, this.offset++, (this.match += m), (this.matched += m)
                var g = m.match(/(?:\r\n?|\n).*/g)
                return (
                  g ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++, this.options.ranges && this.yylloc.range[1]++, (this._input = this._input.slice(1)), m
                )
              }, 'input'),
              unput: o(function (m) {
                var g = m.length,
                  y = m.split(/(?:\r\n?|\n)/g)
                ;(this._input = m + this._input), (this.yytext = this.yytext.substr(0, this.yytext.length - g)), (this.offset -= g)
                var v = this.match.split(/(?:\r\n?|\n)/g)
                ;(this.match = this.match.substr(0, this.match.length - 1)),
                  (this.matched = this.matched.substr(0, this.matched.length - 1)),
                  y.length - 1 && (this.yylineno -= y.length - 1)
                var x = this.yylloc.range
                return (
                  (this.yylloc = {
                    first_line: this.yylloc.first_line,
                    last_line: this.yylineno + 1,
                    first_column: this.yylloc.first_column,
                    last_column: y ? (y.length === v.length ? this.yylloc.first_column : 0) + v[v.length - y.length].length - y[0].length : this.yylloc.first_column - g
                  }),
                  this.options.ranges && (this.yylloc.range = [x[0], x[0] + this.yyleng - g]),
                  (this.yyleng = this.yytext.length),
                  this
                )
              }, 'unput'),
              more: o(function () {
                return (this._more = !0), this
              }, 'more'),
              reject: o(function () {
                if (this.options.backtrack_lexer) this._backtrack = !0
                else
                  return this.parseError(
                    'Lexical error on line ' +
                      (this.yylineno + 1) +
                      `. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
` +
                      this.showPosition(),
                    { text: '', token: null, line: this.yylineno }
                  )
                return this
              }, 'reject'),
              less: o(function (m) {
                this.unput(this.match.slice(m))
              }, 'less'),
              pastInput: o(function () {
                var m = this.matched.substr(0, this.matched.length - this.match.length)
                return (m.length > 20 ? '...' : '') + m.substr(-20).replace(/\n/g, '')
              }, 'pastInput'),
              upcomingInput: o(function () {
                var m = this.match
                return m.length < 20 && (m += this._input.substr(0, 20 - m.length)), (m.substr(0, 20) + (m.length > 20 ? '...' : '')).replace(/\n/g, '')
              }, 'upcomingInput'),
              showPosition: o(function () {
                var m = this.pastInput(),
                  g = new Array(m.length + 1).join('-')
                return (
                  m +
                  this.upcomingInput() +
                  `
` +
                  g +
                  '^'
                )
              }, 'showPosition'),
              test_match: o(function (m, g) {
                var y, v, x
                if (
                  (this.options.backtrack_lexer &&
                    ((x = {
                      yylineno: this.yylineno,
                      yylloc: { first_line: this.yylloc.first_line, last_line: this.last_line, first_column: this.yylloc.first_column, last_column: this.yylloc.last_column },
                      yytext: this.yytext,
                      match: this.match,
                      matches: this.matches,
                      matched: this.matched,
                      yyleng: this.yyleng,
                      offset: this.offset,
                      _more: this._more,
                      _input: this._input,
                      yy: this.yy,
                      conditionStack: this.conditionStack.slice(0),
                      done: this.done
                    }),
                    this.options.ranges && (x.yylloc.range = this.yylloc.range.slice(0))),
                  (v = m[0].match(/(?:\r\n?|\n).*/g)),
                  v && (this.yylineno += v.length),
                  (this.yylloc = {
                    first_line: this.yylloc.last_line,
                    last_line: this.yylineno + 1,
                    first_column: this.yylloc.last_column,
                    last_column: v ? v[v.length - 1].length - v[v.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + m[0].length
                  }),
                  (this.yytext += m[0]),
                  (this.match += m[0]),
                  (this.matches = m),
                  (this.yyleng = this.yytext.length),
                  this.options.ranges && (this.yylloc.range = [this.offset, (this.offset += this.yyleng)]),
                  (this._more = !1),
                  (this._backtrack = !1),
                  (this._input = this._input.slice(m[0].length)),
                  (this.matched += m[0]),
                  (y = this.performAction.call(this, this.yy, this, g, this.conditionStack[this.conditionStack.length - 1])),
                  this.done && this._input && (this.done = !1),
                  y)
                )
                  return y
                if (this._backtrack) {
                  for (var b in x) this[b] = x[b]
                  return !1
                }
                return !1
              }, 'test_match'),
              next: o(function () {
                if (this.done) return this.EOF
                this._input || (this.done = !0)
                var m, g, y, v
                this._more || ((this.yytext = ''), (this.match = ''))
                for (var x = this._currentRules(), b = 0; b < x.length; b++)
                  if (((y = this._input.match(this.rules[x[b]])), y && (!g || y[0].length > g[0].length))) {
                    if (((g = y), (v = b), this.options.backtrack_lexer)) {
                      if (((m = this.test_match(y, x[b])), m !== !1)) return m
                      if (this._backtrack) {
                        g = !1
                        continue
                      } else return !1
                    } else if (!this.options.flex) break
                  }
                return g
                  ? ((m = this.test_match(g, x[v])), m !== !1 ? m : !1)
                  : this._input === ''
                    ? this.EOF
                    : this.parseError(
                        'Lexical error on line ' +
                          (this.yylineno + 1) +
                          `. Unrecognized text.
` +
                          this.showPosition(),
                        { text: '', token: null, line: this.yylineno }
                      )
              }, 'next'),
              lex: o(function () {
                var g = this.next()
                return g || this.lex()
              }, 'lex'),
              begin: o(function (g) {
                this.conditionStack.push(g)
              }, 'begin'),
              popState: o(function () {
                var g = this.conditionStack.length - 1
                return g > 0 ? this.conditionStack.pop() : this.conditionStack[0]
              }, 'popState'),
              _currentRules: o(function () {
                return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]
                  ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
                  : this.conditions.INITIAL.rules
              }, '_currentRules'),
              topState: o(function (g) {
                return (g = this.conditionStack.length - 1 - Math.abs(g || 0)), g >= 0 ? this.conditionStack[g] : 'INITIAL'
              }, 'topState'),
              pushState: o(function (g) {
                this.begin(g)
              }, 'pushState'),
              stateStackSize: o(function () {
                return this.conditionStack.length
              }, 'stateStackSize'),
              options: { 'case-insensitive': !0 },
              performAction: o(function (g, y, v, x) {
                var b = x
                switch (v) {
                  case 0:
                    break
                  case 1:
                    break
                  case 2:
                    return 10
                  case 3:
                    break
                  case 4:
                    break
                  case 5:
                    return 4
                  case 6:
                    return 11
                  case 7:
                    return this.begin('acc_title'), 12
                    break
                  case 8:
                    return this.popState(), 'acc_title_value'
                    break
                  case 9:
                    return this.begin('acc_descr'), 14
                    break
                  case 10:
                    return this.popState(), 'acc_descr_value'
                    break
                  case 11:
                    this.begin('acc_descr_multiline')
                    break
                  case 12:
                    this.popState()
                    break
                  case 13:
                    return 'acc_descr_multiline_value'
                  case 14:
                    return 17
                  case 15:
                    return 21
                  case 16:
                    return 20
                  case 17:
                    return 6
                  case 18:
                    return 'INVALID'
                }
              }, 'anonymous'),
              rules: [
                /^(?:%(?!\{)[^\n]*)/i,
                /^(?:[^\}]%%[^\n]*)/i,
                /^(?:[\n]+)/i,
                /^(?:\s+)/i,
                /^(?:#[^\n]*)/i,
                /^(?:timeline\b)/i,
                /^(?:title\s[^\n]+)/i,
                /^(?:accTitle\s*:\s*)/i,
                /^(?:(?!\n||)*[^\n]*)/i,
                /^(?:accDescr\s*:\s*)/i,
                /^(?:(?!\n||)*[^\n]*)/i,
                /^(?:accDescr\s*\{\s*)/i,
                /^(?:[\}])/i,
                /^(?:[^\}]*)/i,
                /^(?:section\s[^:\n]+)/i,
                /^(?::\s(?:[^:\n]|:(?!\s))+)/i,
                /^(?:[^#:\n]+)/i,
                /^(?:$)/i,
                /^(?:.)/i
              ],
              conditions: {
                acc_descr_multiline: { rules: [12, 13], inclusive: !1 },
                acc_descr: { rules: [10], inclusive: !1 },
                acc_title: { rules: [8], inclusive: !1 },
                INITIAL: { rules: [0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 18], inclusive: !0 }
              }
            }
            return p
          })()
        h.lexer = f
        function d() {
          this.yy = {}
        }
        return o(d, 'Parser'), (d.prototype = h), (h.Parser = d), new d()
      })()
      ZP.parser = ZP
      c0e = ZP
    })
  var eB = {}
  ur(eB, {
    addEvent: () => x0e,
    addSection: () => m0e,
    addTask: () => v0e,
    addTaskOrg: () => b0e,
    clear: () => p0e,
    default: () => zWe,
    getCommonDb: () => d0e,
    getSections: () => g0e,
    getTasks: () => y0e
  })
  var G1,
    f0e,
    JP,
    f6,
    V1,
    d0e,
    p0e,
    m0e,
    g0e,
    y0e,
    v0e,
    x0e,
    b0e,
    h0e,
    zWe,
    T0e = N(() => {
      'use strict'
      ci()
      ;(G1 = ''),
        (f0e = 0),
        (JP = []),
        (f6 = []),
        (V1 = []),
        (d0e = o(() => rv, 'getCommonDb')),
        (p0e = o(function () {
          ;(JP.length = 0), (f6.length = 0), (G1 = ''), (V1.length = 0), kr()
        }, 'clear')),
        (m0e = o(function (t) {
          ;(G1 = t), JP.push(t)
        }, 'addSection')),
        (g0e = o(function () {
          return JP
        }, 'getSections')),
        (y0e = o(function () {
          let t = h0e(),
            e = 100,
            r = 0
          for (; !t && r < e; ) (t = h0e()), r++
          return f6.push(...V1), f6
        }, 'getTasks')),
        (v0e = o(function (t, e, r) {
          let n = { id: f0e++, section: G1, type: G1, task: t, score: e || 0, events: r ? [r] : [] }
          V1.push(n)
        }, 'addTask')),
        (x0e = o(function (t) {
          V1.find(r => r.id === f0e - 1).events.push(t)
        }, 'addEvent')),
        (b0e = o(function (t) {
          let e = { section: G1, type: G1, description: t, task: t, classes: [] }
          f6.push(e)
        }, 'addTaskOrg')),
        (h0e = o(function () {
          let t = o(function (r) {
              return V1[r].processed
            }, 'compileTask'),
            e = !0
          for (let [r, n] of V1.entries()) t(r), (e = e && n.processed)
          return e
        }, 'compileTasks')),
        (zWe = { clear: p0e, getCommonDb: d0e, addSection: m0e, getSections: g0e, getTasks: y0e, addTask: v0e, addTaskOrg: b0e, addEvent: x0e })
    })
  function S0e(t, e) {
    t.each(function () {
      var r = Ge(this),
        n = r
          .text()
          .split(/(\s+|<br>)/)
          .reverse(),
        i,
        a = [],
        s = 1.1,
        l = r.attr('y'),
        u = parseFloat(r.attr('dy')),
        h = r
          .text(null)
          .append('tspan')
          .attr('x', 0)
          .attr('y', l)
          .attr('dy', u + 'em')
      for (let f = 0; f < n.length; f++)
        (i = n[n.length - 1 - f]),
          a.push(i),
          h.text(a.join(' ').trim()),
          (h.node().getComputedTextLength() > e || i === '<br>') &&
            (a.pop(),
            h.text(a.join(' ').trim()),
            i === '<br>' ? (a = ['']) : (a = [i]),
            (h = r
              .append('tspan')
              .attr('x', 0)
              .attr('y', l)
              .attr('dy', s + 'em')
              .text(i)))
    })
  }
  var GWe,
    d6,
    VWe,
    UWe,
    k0e,
    HWe,
    WWe,
    w0e,
    qWe,
    YWe,
    XWe,
    tB,
    E0e,
    jWe,
    KWe,
    QWe,
    ZWe,
    Df,
    C0e = N(() => {
      'use strict'
      fr()
      ;(GWe = 12),
        (d6 = o(function (t, e) {
          let r = t.append('rect')
          return (
            r.attr('x', e.x),
            r.attr('y', e.y),
            r.attr('fill', e.fill),
            r.attr('stroke', e.stroke),
            r.attr('width', e.width),
            r.attr('height', e.height),
            r.attr('rx', e.rx),
            r.attr('ry', e.ry),
            e.class !== void 0 && r.attr('class', e.class),
            r
          )
        }, 'drawRect')),
        (VWe = o(function (t, e) {
          let n = t.append('circle').attr('cx', e.cx).attr('cy', e.cy).attr('class', 'face').attr('r', 15).attr('stroke-width', 2).attr('overflow', 'visible'),
            i = t.append('g')
          i
            .append('circle')
            .attr('cx', e.cx - 15 / 3)
            .attr('cy', e.cy - 15 / 3)
            .attr('r', 1.5)
            .attr('stroke-width', 2)
            .attr('fill', '#666')
            .attr('stroke', '#666'),
            i
              .append('circle')
              .attr('cx', e.cx + 15 / 3)
              .attr('cy', e.cy - 15 / 3)
              .attr('r', 1.5)
              .attr('stroke-width', 2)
              .attr('fill', '#666')
              .attr('stroke', '#666')
          function a(u) {
            let h = Sl()
              .startAngle(Math.PI / 2)
              .endAngle(3 * (Math.PI / 2))
              .innerRadius(7.5)
              .outerRadius(6.8181818181818175)
            u.append('path')
              .attr('class', 'mouth')
              .attr('d', h)
              .attr('transform', 'translate(' + e.cx + ',' + (e.cy + 2) + ')')
          }
          o(a, 'smile')
          function s(u) {
            let h = Sl()
              .startAngle((3 * Math.PI) / 2)
              .endAngle(5 * (Math.PI / 2))
              .innerRadius(7.5)
              .outerRadius(6.8181818181818175)
            u.append('path')
              .attr('class', 'mouth')
              .attr('d', h)
              .attr('transform', 'translate(' + e.cx + ',' + (e.cy + 7) + ')')
          }
          o(s, 'sad')
          function l(u) {
            u.append('line')
              .attr('class', 'mouth')
              .attr('stroke', 2)
              .attr('x1', e.cx - 5)
              .attr('y1', e.cy + 7)
              .attr('x2', e.cx + 5)
              .attr('y2', e.cy + 7)
              .attr('class', 'mouth')
              .attr('stroke-width', '1px')
              .attr('stroke', '#666')
          }
          return o(l, 'ambivalent'), e.score > 3 ? a(i) : e.score < 3 ? s(i) : l(i), n
        }, 'drawFace')),
        (UWe = o(function (t, e) {
          let r = t.append('circle')
          return (
            r.attr('cx', e.cx),
            r.attr('cy', e.cy),
            r.attr('class', 'actor-' + e.pos),
            r.attr('fill', e.fill),
            r.attr('stroke', e.stroke),
            r.attr('r', e.r),
            r.class !== void 0 && r.attr('class', r.class),
            e.title !== void 0 && r.append('title').text(e.title),
            r
          )
        }, 'drawCircle')),
        (k0e = o(function (t, e) {
          let r = e.text.replace(/<br\s*\/?>/gi, ' '),
            n = t.append('text')
          n.attr('x', e.x), n.attr('y', e.y), n.attr('class', 'legend'), n.style('text-anchor', e.anchor), e.class !== void 0 && n.attr('class', e.class)
          let i = n.append('tspan')
          return i.attr('x', e.x + e.textMargin * 2), i.text(r), n
        }, 'drawText')),
        (HWe = o(function (t, e) {
          function r(i, a, s, l, u) {
            return i + ',' + a + ' ' + (i + s) + ',' + a + ' ' + (i + s) + ',' + (a + l - u) + ' ' + (i + s - u * 1.2) + ',' + (a + l) + ' ' + i + ',' + (a + l)
          }
          o(r, 'genPoints')
          let n = t.append('polygon')
          n.attr('points', r(e.x, e.y, 50, 20, 7)), n.attr('class', 'labelBox'), (e.y = e.y + e.labelMargin), (e.x = e.x + 0.5 * e.labelMargin), k0e(t, e)
        }, 'drawLabel')),
        (WWe = o(function (t, e, r) {
          let n = t.append('g'),
            i = tB()
          ;(i.x = e.x),
            (i.y = e.y),
            (i.fill = e.fill),
            (i.width = r.width),
            (i.height = r.height),
            (i.class = 'journey-section section-type-' + e.num),
            (i.rx = 3),
            (i.ry = 3),
            d6(n, i),
            E0e(r)(e.text, n, i.x, i.y, i.width, i.height, { class: 'journey-section section-type-' + e.num }, r, e.colour)
        }, 'drawSection')),
        (w0e = -1),
        (qWe = o(function (t, e, r) {
          let n = e.x + r.width / 2,
            i = t.append('g')
          w0e++
          let a = 300 + 5 * 30
          i
            .append('line')
            .attr('id', 'task' + w0e)
            .attr('x1', n)
            .attr('y1', e.y)
            .attr('x2', n)
            .attr('y2', a)
            .attr('class', 'task-line')
            .attr('stroke-width', '1px')
            .attr('stroke-dasharray', '4 2')
            .attr('stroke', '#666'),
            VWe(i, { cx: n, cy: 300 + (5 - e.score) * 30, score: e.score })
          let s = tB()
          ;(s.x = e.x),
            (s.y = e.y),
            (s.fill = e.fill),
            (s.width = r.width),
            (s.height = r.height),
            (s.class = 'task task-type-' + e.num),
            (s.rx = 3),
            (s.ry = 3),
            d6(i, s),
            E0e(r)(e.task, i, s.x, s.y, s.width, s.height, { class: 'task' }, r, e.colour)
        }, 'drawTask')),
        (YWe = o(function (t, e) {
          d6(t, { x: e.startx, y: e.starty, width: e.stopx - e.startx, height: e.stopy - e.starty, fill: e.fill, class: 'rect' }).lower()
        }, 'drawBackgroundRect')),
        (XWe = o(function () {
          return { x: 0, y: 0, fill: void 0, 'text-anchor': 'start', width: 100, height: 100, textMargin: 0, rx: 0, ry: 0 }
        }, 'getTextObj')),
        (tB = o(function () {
          return { x: 0, y: 0, width: 100, anchor: 'start', height: 100, rx: 0, ry: 0 }
        }, 'getNoteRect')),
        (E0e = (function () {
          function t(i, a, s, l, u, h, f, d) {
            let p = a
              .append('text')
              .attr('x', s + u / 2)
              .attr('y', l + h / 2 + 5)
              .style('font-color', d)
              .style('text-anchor', 'middle')
              .text(i)
            n(p, f)
          }
          o(t, 'byText')
          function e(i, a, s, l, u, h, f, d, p) {
            let { taskFontSize: m, taskFontFamily: g } = d,
              y = i.split(/<br\s*\/?>/gi)
            for (let v = 0; v < y.length; v++) {
              let x = v * m - (m * (y.length - 1)) / 2,
                b = a
                  .append('text')
                  .attr('x', s + u / 2)
                  .attr('y', l)
                  .attr('fill', p)
                  .style('text-anchor', 'middle')
                  .style('font-size', m)
                  .style('font-family', g)
              b
                .append('tspan')
                .attr('x', s + u / 2)
                .attr('dy', x)
                .text(y[v]),
                b
                  .attr('y', l + h / 2)
                  .attr('dominant-baseline', 'central')
                  .attr('alignment-baseline', 'central'),
                n(b, f)
            }
          }
          o(e, 'byTspan')
          function r(i, a, s, l, u, h, f, d) {
            let p = a.append('switch'),
              g = p
                .append('foreignObject')
                .attr('x', s)
                .attr('y', l)
                .attr('width', u)
                .attr('height', h)
                .attr('position', 'fixed')
                .append('xhtml:div')
                .style('display', 'table')
                .style('height', '100%')
                .style('width', '100%')
            g.append('div').attr('class', 'label').style('display', 'table-cell').style('text-align', 'center').style('vertical-align', 'middle').text(i),
              e(i, p, s, l, u, h, f, d),
              n(g, f)
          }
          o(r, 'byFo')
          function n(i, a) {
            for (let s in a) s in a && i.attr(s, a[s])
          }
          return (
            o(n, '_setTextAttrs'),
            function (i) {
              return i.textPlacement === 'fo' ? r : i.textPlacement === 'old' ? t : e
            }
          )
        })()),
        (jWe = o(function (t) {
          t.append('defs')
            .append('marker')
            .attr('id', 'arrowhead')
            .attr('refX', 5)
            .attr('refY', 2)
            .attr('markerWidth', 6)
            .attr('markerHeight', 4)
            .attr('orient', 'auto')
            .append('path')
            .attr('d', 'M 0,0 V 4 L6,2 Z')
        }, 'initGraphics'))
      o(S0e, 'wrap')
      ;(KWe = o(function (t, e, r, n) {
        let i = (r % GWe) - 1,
          a = t.append('g')
        ;(e.section = i), a.attr('class', (e.class ? e.class + ' ' : '') + 'timeline-node ' + ('section-' + i))
        let s = a.append('g'),
          l = a.append('g'),
          h = l
            .append('text')
            .text(e.descr)
            .attr('dy', '1em')
            .attr('alignment-baseline', 'middle')
            .attr('dominant-baseline', 'middle')
            .attr('text-anchor', 'middle')
            .call(S0e, e.width)
            .node()
            .getBBox(),
          f = n.fontSize?.replace ? n.fontSize.replace('px', '') : n.fontSize
        return (
          (e.height = h.height + f * 1.1 * 0.5 + e.padding),
          (e.height = Math.max(e.height, e.maxHeight)),
          (e.width = e.width + 2 * e.padding),
          l.attr('transform', 'translate(' + e.width / 2 + ', ' + e.padding / 2 + ')'),
          ZWe(s, e, i, n),
          e
        )
      }, 'drawNode')),
        (QWe = o(function (t, e, r) {
          let n = t.append('g'),
            a = n
              .append('text')
              .text(e.descr)
              .attr('dy', '1em')
              .attr('alignment-baseline', 'middle')
              .attr('dominant-baseline', 'middle')
              .attr('text-anchor', 'middle')
              .call(S0e, e.width)
              .node()
              .getBBox(),
            s = r.fontSize?.replace ? r.fontSize.replace('px', '') : r.fontSize
          return n.remove(), a.height + s * 1.1 * 0.5 + e.padding
        }, 'getVirtualNodeHeight')),
        (ZWe = o(function (t, e, r) {
          t
            .append('path')
            .attr('id', 'node-' + e.id)
            .attr('class', 'node-bkg node-' + e.type)
            .attr('d', `M0 ${e.height - 5} v${-e.height + 2 * 5} q0,-5 5,-5 h${e.width - 2 * 5} q5,0 5,5 v${e.height - 5} H0 Z`),
            t
              .append('line')
              .attr('class', 'node-line-' + r)
              .attr('x1', 0)
              .attr('y1', e.height)
              .attr('x2', e.width)
              .attr('y2', e.height)
        }, 'defaultBkg')),
        (Df = {
          drawRect: d6,
          drawCircle: UWe,
          drawSection: WWe,
          drawText: k0e,
          drawLabel: HWe,
          drawTask: qWe,
          drawBackgroundRect: YWe,
          getTextObj: XWe,
          getNoteRect: tB,
          initGraphics: jWe,
          drawNode: KWe,
          getVirtualNodeHeight: QWe
        })
    })
  var JWe,
    A0e,
    eqe,
    _0e,
    D0e = N(() => {
      'use strict'
      fr()
      C0e()
      yt()
      Gt()
      xi()
      ;(JWe = o(function (t, e, r, n) {
        let i = me(),
          a = i.timeline?.leftMargin ?? 50
        X.debug('timeline', n.db)
        let s = i.securityLevel,
          l
        s === 'sandbox' && (l = Ge('#i' + e))
        let h = (s === 'sandbox' ? Ge(l.nodes()[0].contentDocument.body) : Ge('body')).select('#' + e)
        h.append('g')
        let f = n.db.getTasks(),
          d = n.db.getCommonDb().getDiagramTitle()
        X.debug('task', f), Df.initGraphics(h)
        let p = n.db.getSections()
        X.debug('sections', p)
        let m = 0,
          g = 0,
          y = 0,
          v = 0,
          x = 50 + a,
          b = 50
        v = 50
        let T = 0,
          S = !0
        p.forEach(function (D) {
          let O = { number: T, descr: D, section: T, width: 150, padding: 20, maxHeight: m },
            R = Df.getVirtualNodeHeight(h, O, i)
          X.debug('sectionHeight before draw', R), (m = Math.max(m, R + 20))
        })
        let w = 0,
          E = 0
        X.debug('tasks.length', f.length)
        for (let [D, O] of f.entries()) {
          let R = { number: D, descr: O, section: O.section, width: 150, padding: 20, maxHeight: g },
            k = Df.getVirtualNodeHeight(h, R, i)
          X.debug('taskHeight before draw', k), (g = Math.max(g, k + 20)), (w = Math.max(w, O.events.length))
          let L = 0
          for (let A of O.events) {
            let I = { descr: A, section: O.section, number: O.section, width: 150, padding: 20, maxHeight: 50 }
            L += Df.getVirtualNodeHeight(h, I, i)
          }
          O.events.length > 0 && (L += (O.events.length - 1) * 10), (E = Math.max(E, L))
        }
        X.debug('maxSectionHeight before draw', m),
          X.debug('maxTaskHeight before draw', g),
          p && p.length > 0
            ? p.forEach(D => {
                let O = f.filter(A => A.section === D),
                  R = { number: T, descr: D, section: T, width: 200 * Math.max(O.length, 1) - 50, padding: 20, maxHeight: m }
                X.debug('sectionNode', R)
                let k = h.append('g'),
                  L = Df.drawNode(k, R, T, i)
                X.debug('sectionNode output', L),
                  k.attr('transform', `translate(${x}, ${v})`),
                  (b += m + 50),
                  O.length > 0 && A0e(h, O, T, x, b, g, i, w, E, m, !1),
                  (x += 200 * Math.max(O.length, 1)),
                  (b = v),
                  T++
              })
            : ((S = !1), A0e(h, f, T, x, b, g, i, w, E, m, !0))
        let _ = h.node().getBBox()
        X.debug('bounds', _),
          d &&
            h
              .append('text')
              .text(d)
              .attr('x', _.width / 2 - a)
              .attr('font-size', '4ex')
              .attr('font-weight', 'bold')
              .attr('y', 20),
          (y = S ? m + g + 150 : g + 100),
          h
            .append('g')
            .attr('class', 'lineWrapper')
            .append('line')
            .attr('x1', a)
            .attr('y1', y)
            .attr('x2', _.width + 3 * a)
            .attr('y2', y)
            .attr('stroke-width', 4)
            .attr('stroke', 'black')
            .attr('marker-end', 'url(#arrowhead)'),
          Lo(void 0, h, i.timeline?.padding ?? 50, i.timeline?.useMaxWidth ?? !1)
      }, 'draw')),
        (A0e = o(function (t, e, r, n, i, a, s, l, u, h, f) {
          for (let d of e) {
            let p = { descr: d.task, section: r, number: r, width: 150, padding: 20, maxHeight: a }
            X.debug('taskNode', p)
            let m = t.append('g').attr('class', 'taskWrapper'),
              y = Df.drawNode(m, p, r, s).height
            if ((X.debug('taskHeight after draw', y), m.attr('transform', `translate(${n}, ${i})`), (a = Math.max(a, y)), d.events)) {
              let v = t.append('g').attr('class', 'lineWrapper'),
                x = a
              ;(i += 100),
                (x = x + eqe(t, d.events, r, n, i, s)),
                (i -= 100),
                v
                  .append('line')
                  .attr('x1', n + 190 / 2)
                  .attr('y1', i + a)
                  .attr('x2', n + 190 / 2)
                  .attr('y2', i + a + 100 + u + 100)
                  .attr('stroke-width', 2)
                  .attr('stroke', 'black')
                  .attr('marker-end', 'url(#arrowhead)')
                  .attr('stroke-dasharray', '5,5')
            }
            ;(n = n + 200), f && !s.timeline?.disableMulticolor && r++
          }
          i = i - 10
        }, 'drawTasks')),
        (eqe = o(function (t, e, r, n, i, a) {
          let s = 0,
            l = i
          i = i + 100
          for (let u of e) {
            let h = { descr: u, section: r, number: r, width: 150, padding: 20, maxHeight: 50 }
            X.debug('eventNode', h)
            let f = t.append('g').attr('class', 'eventWrapper'),
              p = Df.drawNode(f, h, r, a).height
            ;(s = s + p), f.attr('transform', `translate(${n}, ${i})`), (i = i + 10 + p)
          }
          return (i = l), s
        }, 'drawEvents')),
        (_0e = { setConf: o(() => {}, 'setConf'), draw: JWe })
    })
  var tqe,
    rqe,
    L0e,
    R0e = N(() => {
      'use strict'
      Ks()
      ;(tqe = o(t => {
        let e = ''
        for (let r = 0; r < t.THEME_COLOR_LIMIT; r++)
          (t['lineColor' + r] = t['lineColor' + r] || t['cScaleInv' + r]),
            la(t['lineColor' + r]) ? (t['lineColor' + r] = Lt(t['lineColor' + r], 20)) : (t['lineColor' + r] = Ot(t['lineColor' + r], 20))
        for (let r = 0; r < t.THEME_COLOR_LIMIT; r++) {
          let n = '' + (17 - 3 * r)
          e += `
    .section-${r - 1} rect, .section-${r - 1} path, .section-${r - 1} circle, .section-${r - 1} path  {
      fill: ${t['cScale' + r]};
    }
    .section-${r - 1} text {
     fill: ${t['cScaleLabel' + r]};
    }
    .node-icon-${r - 1} {
      font-size: 40px;
      color: ${t['cScaleLabel' + r]};
    }
    .section-edge-${r - 1}{
      stroke: ${t['cScale' + r]};
    }
    .edge-depth-${r - 1}{
      stroke-width: ${n};
    }
    .section-${r - 1} line {
      stroke: ${t['cScaleInv' + r]} ;
      stroke-width: 3;
    }

    .lineWrapper line{
      stroke: ${t['cScaleLabel' + r]} ;
    }

    .disabled, .disabled circle, .disabled text {
      fill: lightgray;
    }
    .disabled text {
      fill: #efefef;
    }
    `
        }
        return e
      }, 'genSections')),
        (rqe = o(
          t => `
  .edge {
    stroke-width: 3;
  }
  ${tqe(t)}
  .section-root rect, .section-root path, .section-root circle  {
    fill: ${t.git0};
  }
  .section-root text {
    fill: ${t.gitBranchLabel0};
  }
  .icon-container {
    height:100%;
    display: flex;
    justify-content: center;
    align-items: center;
  }
  .edge {
    fill: none;
  }
  .eventWrapper  {
   filter: brightness(120%);
  }
`,
          'getStyles'
        )),
        (L0e = rqe)
    })
  var N0e = {}
  ur(N0e, { diagram: () => nqe })
  var nqe,
    M0e = N(() => {
      'use strict'
      u0e()
      T0e()
      D0e()
      R0e()
      nqe = { db: eB, renderer: _0e, parser: c0e, styles: L0e }
    })
  var rB,
    P0e,
    B0e = N(() => {
      'use strict'
      rB = (function () {
        var t = o(function (S, w, E, _) {
            for (E = E || {}, _ = S.length; _--; E[S[_]] = w);
            return E
          }, 'o'),
          e = [1, 4],
          r = [1, 13],
          n = [1, 12],
          i = [1, 15],
          a = [1, 16],
          s = [1, 20],
          l = [1, 19],
          u = [6, 7, 8],
          h = [1, 26],
          f = [1, 24],
          d = [1, 25],
          p = [6, 7, 11],
          m = [1, 6, 13, 15, 16, 19, 22],
          g = [1, 33],
          y = [1, 34],
          v = [1, 6, 7, 11, 13, 15, 16, 19, 22],
          x = {
            trace: o(function () {}, 'trace'),
            yy: {},
            symbols_: {
              error: 2,
              start: 3,
              mindMap: 4,
              spaceLines: 5,
              SPACELINE: 6,
              NL: 7,
              MINDMAP: 8,
              document: 9,
              stop: 10,
              EOF: 11,
              statement: 12,
              SPACELIST: 13,
              node: 14,
              ICON: 15,
              CLASS: 16,
              nodeWithId: 17,
              nodeWithoutId: 18,
              NODE_DSTART: 19,
              NODE_DESCR: 20,
              NODE_DEND: 21,
              NODE_ID: 22,
              $accept: 0,
              $end: 1
            },
            terminals_: {
              2: 'error',
              6: 'SPACELINE',
              7: 'NL',
              8: 'MINDMAP',
              11: 'EOF',
              13: 'SPACELIST',
              15: 'ICON',
              16: 'CLASS',
              19: 'NODE_DSTART',
              20: 'NODE_DESCR',
              21: 'NODE_DEND',
              22: 'NODE_ID'
            },
            productions_: [
              0,
              [3, 1],
              [3, 2],
              [5, 1],
              [5, 2],
              [5, 2],
              [4, 2],
              [4, 3],
              [10, 1],
              [10, 1],
              [10, 1],
              [10, 2],
              [10, 2],
              [9, 3],
              [9, 2],
              [12, 2],
              [12, 2],
              [12, 2],
              [12, 1],
              [12, 1],
              [12, 1],
              [12, 1],
              [12, 1],
              [14, 1],
              [14, 1],
              [18, 3],
              [17, 1],
              [17, 4]
            ],
            performAction: o(function (w, E, _, C, D, O, R) {
              var k = O.length - 1
              switch (D) {
                case 6:
                case 7:
                  return C
                case 8:
                  C.getLogger().trace('Stop NL ')
                  break
                case 9:
                  C.getLogger().trace('Stop EOF ')
                  break
                case 11:
                  C.getLogger().trace('Stop NL2 ')
                  break
                case 12:
                  C.getLogger().trace('Stop EOF2 ')
                  break
                case 15:
                  C.getLogger().info('Node: ', O[k].id), C.addNode(O[k - 1].length, O[k].id, O[k].descr, O[k].type)
                  break
                case 16:
                  C.getLogger().trace('Icon: ', O[k]), C.decorateNode({ icon: O[k] })
                  break
                case 17:
                case 21:
                  C.decorateNode({ class: O[k] })
                  break
                case 18:
                  C.getLogger().trace('SPACELIST')
                  break
                case 19:
                  C.getLogger().trace('Node: ', O[k].id), C.addNode(0, O[k].id, O[k].descr, O[k].type)
                  break
                case 20:
                  C.decorateNode({ icon: O[k] })
                  break
                case 25:
                  C.getLogger().trace('node found ..', O[k - 2]), (this.$ = { id: O[k - 1], descr: O[k - 1], type: C.getType(O[k - 2], O[k]) })
                  break
                case 26:
                  this.$ = { id: O[k], descr: O[k], type: C.nodeType.DEFAULT }
                  break
                case 27:
                  C.getLogger().trace('node found ..', O[k - 3]), (this.$ = { id: O[k - 3], descr: O[k - 1], type: C.getType(O[k - 2], O[k]) })
                  break
              }
            }, 'anonymous'),
            table: [
              { 3: 1, 4: 2, 5: 3, 6: [1, 5], 8: e },
              { 1: [3] },
              { 1: [2, 1] },
              { 4: 6, 6: [1, 7], 7: [1, 8], 8: e },
              { 6: r, 7: [1, 10], 9: 9, 12: 11, 13: n, 14: 14, 15: i, 16: a, 17: 17, 18: 18, 19: s, 22: l },
              t(u, [2, 3]),
              { 1: [2, 2] },
              t(u, [2, 4]),
              t(u, [2, 5]),
              { 1: [2, 6], 6: r, 12: 21, 13: n, 14: 14, 15: i, 16: a, 17: 17, 18: 18, 19: s, 22: l },
              { 6: r, 9: 22, 12: 11, 13: n, 14: 14, 15: i, 16: a, 17: 17, 18: 18, 19: s, 22: l },
              { 6: h, 7: f, 10: 23, 11: d },
              t(p, [2, 22], { 17: 17, 18: 18, 14: 27, 15: [1, 28], 16: [1, 29], 19: s, 22: l }),
              t(p, [2, 18]),
              t(p, [2, 19]),
              t(p, [2, 20]),
              t(p, [2, 21]),
              t(p, [2, 23]),
              t(p, [2, 24]),
              t(p, [2, 26], { 19: [1, 30] }),
              { 20: [1, 31] },
              { 6: h, 7: f, 10: 32, 11: d },
              { 1: [2, 7], 6: r, 12: 21, 13: n, 14: 14, 15: i, 16: a, 17: 17, 18: 18, 19: s, 22: l },
              t(m, [2, 14], { 7: g, 11: y }),
              t(v, [2, 8]),
              t(v, [2, 9]),
              t(v, [2, 10]),
              t(p, [2, 15]),
              t(p, [2, 16]),
              t(p, [2, 17]),
              { 20: [1, 35] },
              { 21: [1, 36] },
              t(m, [2, 13], { 7: g, 11: y }),
              t(v, [2, 11]),
              t(v, [2, 12]),
              { 21: [1, 37] },
              t(p, [2, 25]),
              t(p, [2, 27])
            ],
            defaultActions: { 2: [2, 1], 6: [2, 2] },
            parseError: o(function (w, E) {
              if (E.recoverable) this.trace(w)
              else {
                var _ = new Error(w)
                throw ((_.hash = E), _)
              }
            }, 'parseError'),
            parse: o(function (w) {
              var E = this,
                _ = [0],
                C = [],
                D = [null],
                O = [],
                R = this.table,
                k = '',
                L = 0,
                A = 0,
                I = 0,
                M = 2,
                P = 1,
                B = O.slice.call(arguments, 1),
                F = Object.create(this.lexer),
                z = { yy: {} }
              for (var $ in this.yy) Object.prototype.hasOwnProperty.call(this.yy, $) && (z.yy[$] = this.yy[$])
              F.setInput(w, z.yy), (z.yy.lexer = F), (z.yy.parser = this), typeof F.yylloc > 'u' && (F.yylloc = {})
              var U = F.yylloc
              O.push(U)
              var K = F.options && F.options.ranges
              typeof z.yy.parseError == 'function' ? (this.parseError = z.yy.parseError) : (this.parseError = Object.getPrototypeOf(this).parseError)
              function ee(ae) {
                ;(_.length = _.length - 2 * ae), (D.length = D.length - ae), (O.length = O.length - ae)
              }
              o(ee, 'popStack')
              function Y() {
                var ae
                return (ae = C.pop() || F.lex() || P), typeof ae != 'number' && (ae instanceof Array && ((C = ae), (ae = C.pop())), (ae = E.symbols_[ae] || ae)), ae
              }
              o(Y, 'lex')
              for (var ce, Z, ue, Q, j, ne, te = {}, he, le, J, Se; ; ) {
                if (
                  ((ue = _[_.length - 1]),
                  this.defaultActions[ue] ? (Q = this.defaultActions[ue]) : ((ce === null || typeof ce > 'u') && (ce = Y()), (Q = R[ue] && R[ue][ce])),
                  typeof Q > 'u' || !Q.length || !Q[0])
                ) {
                  var se = ''
                  Se = []
                  for (he in R[ue]) this.terminals_[he] && he > M && Se.push("'" + this.terminals_[he] + "'")
                  F.showPosition
                    ? (se =
                        'Parse error on line ' +
                        (L + 1) +
                        `:
` +
                        F.showPosition() +
                        `
Expecting ` +
                        Se.join(', ') +
                        ", got '" +
                        (this.terminals_[ce] || ce) +
                        "'")
                    : (se = 'Parse error on line ' + (L + 1) + ': Unexpected ' + (ce == P ? 'end of input' : "'" + (this.terminals_[ce] || ce) + "'")),
                    this.parseError(se, { text: F.match, token: this.terminals_[ce] || ce, line: F.yylineno, loc: U, expected: Se })
                }
                if (Q[0] instanceof Array && Q.length > 1) throw new Error('Parse Error: multiple actions possible at state: ' + ue + ', token: ' + ce)
                switch (Q[0]) {
                  case 1:
                    _.push(ce),
                      D.push(F.yytext),
                      O.push(F.yylloc),
                      _.push(Q[1]),
                      (ce = null),
                      Z ? ((ce = Z), (Z = null)) : ((A = F.yyleng), (k = F.yytext), (L = F.yylineno), (U = F.yylloc), I > 0 && I--)
                    break
                  case 2:
                    if (
                      ((le = this.productions_[Q[1]][1]),
                      (te.$ = D[D.length - le]),
                      (te._$ = {
                        first_line: O[O.length - (le || 1)].first_line,
                        last_line: O[O.length - 1].last_line,
                        first_column: O[O.length - (le || 1)].first_column,
                        last_column: O[O.length - 1].last_column
                      }),
                      K && (te._$.range = [O[O.length - (le || 1)].range[0], O[O.length - 1].range[1]]),
                      (ne = this.performAction.apply(te, [k, A, L, z.yy, Q[1], D, O].concat(B))),
                      typeof ne < 'u')
                    )
                      return ne
                    le && ((_ = _.slice(0, -1 * le * 2)), (D = D.slice(0, -1 * le)), (O = O.slice(0, -1 * le))),
                      _.push(this.productions_[Q[1]][0]),
                      D.push(te.$),
                      O.push(te._$),
                      (J = R[_[_.length - 2]][_[_.length - 1]]),
                      _.push(J)
                    break
                  case 3:
                    return !0
                }
              }
              return !0
            }, 'parse')
          },
          b = (function () {
            var S = {
              EOF: 1,
              parseError: o(function (E, _) {
                if (this.yy.parser) this.yy.parser.parseError(E, _)
                else throw new Error(E)
              }, 'parseError'),
              setInput: o(function (w, E) {
                return (
                  (this.yy = E || this.yy || {}),
                  (this._input = w),
                  (this._more = this._backtrack = this.done = !1),
                  (this.yylineno = this.yyleng = 0),
                  (this.yytext = this.matched = this.match = ''),
                  (this.conditionStack = ['INITIAL']),
                  (this.yylloc = { first_line: 1, first_column: 0, last_line: 1, last_column: 0 }),
                  this.options.ranges && (this.yylloc.range = [0, 0]),
                  (this.offset = 0),
                  this
                )
              }, 'setInput'),
              input: o(function () {
                var w = this._input[0]
                ;(this.yytext += w), this.yyleng++, this.offset++, (this.match += w), (this.matched += w)
                var E = w.match(/(?:\r\n?|\n).*/g)
                return (
                  E ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++, this.options.ranges && this.yylloc.range[1]++, (this._input = this._input.slice(1)), w
                )
              }, 'input'),
              unput: o(function (w) {
                var E = w.length,
                  _ = w.split(/(?:\r\n?|\n)/g)
                ;(this._input = w + this._input), (this.yytext = this.yytext.substr(0, this.yytext.length - E)), (this.offset -= E)
                var C = this.match.split(/(?:\r\n?|\n)/g)
                ;(this.match = this.match.substr(0, this.match.length - 1)),
                  (this.matched = this.matched.substr(0, this.matched.length - 1)),
                  _.length - 1 && (this.yylineno -= _.length - 1)
                var D = this.yylloc.range
                return (
                  (this.yylloc = {
                    first_line: this.yylloc.first_line,
                    last_line: this.yylineno + 1,
                    first_column: this.yylloc.first_column,
                    last_column: _ ? (_.length === C.length ? this.yylloc.first_column : 0) + C[C.length - _.length].length - _[0].length : this.yylloc.first_column - E
                  }),
                  this.options.ranges && (this.yylloc.range = [D[0], D[0] + this.yyleng - E]),
                  (this.yyleng = this.yytext.length),
                  this
                )
              }, 'unput'),
              more: o(function () {
                return (this._more = !0), this
              }, 'more'),
              reject: o(function () {
                if (this.options.backtrack_lexer) this._backtrack = !0
                else
                  return this.parseError(
                    'Lexical error on line ' +
                      (this.yylineno + 1) +
                      `. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
` +
                      this.showPosition(),
                    { text: '', token: null, line: this.yylineno }
                  )
                return this
              }, 'reject'),
              less: o(function (w) {
                this.unput(this.match.slice(w))
              }, 'less'),
              pastInput: o(function () {
                var w = this.matched.substr(0, this.matched.length - this.match.length)
                return (w.length > 20 ? '...' : '') + w.substr(-20).replace(/\n/g, '')
              }, 'pastInput'),
              upcomingInput: o(function () {
                var w = this.match
                return w.length < 20 && (w += this._input.substr(0, 20 - w.length)), (w.substr(0, 20) + (w.length > 20 ? '...' : '')).replace(/\n/g, '')
              }, 'upcomingInput'),
              showPosition: o(function () {
                var w = this.pastInput(),
                  E = new Array(w.length + 1).join('-')
                return (
                  w +
                  this.upcomingInput() +
                  `
` +
                  E +
                  '^'
                )
              }, 'showPosition'),
              test_match: o(function (w, E) {
                var _, C, D
                if (
                  (this.options.backtrack_lexer &&
                    ((D = {
                      yylineno: this.yylineno,
                      yylloc: { first_line: this.yylloc.first_line, last_line: this.last_line, first_column: this.yylloc.first_column, last_column: this.yylloc.last_column },
                      yytext: this.yytext,
                      match: this.match,
                      matches: this.matches,
                      matched: this.matched,
                      yyleng: this.yyleng,
                      offset: this.offset,
                      _more: this._more,
                      _input: this._input,
                      yy: this.yy,
                      conditionStack: this.conditionStack.slice(0),
                      done: this.done
                    }),
                    this.options.ranges && (D.yylloc.range = this.yylloc.range.slice(0))),
                  (C = w[0].match(/(?:\r\n?|\n).*/g)),
                  C && (this.yylineno += C.length),
                  (this.yylloc = {
                    first_line: this.yylloc.last_line,
                    last_line: this.yylineno + 1,
                    first_column: this.yylloc.last_column,
                    last_column: C ? C[C.length - 1].length - C[C.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + w[0].length
                  }),
                  (this.yytext += w[0]),
                  (this.match += w[0]),
                  (this.matches = w),
                  (this.yyleng = this.yytext.length),
                  this.options.ranges && (this.yylloc.range = [this.offset, (this.offset += this.yyleng)]),
                  (this._more = !1),
                  (this._backtrack = !1),
                  (this._input = this._input.slice(w[0].length)),
                  (this.matched += w[0]),
                  (_ = this.performAction.call(this, this.yy, this, E, this.conditionStack[this.conditionStack.length - 1])),
                  this.done && this._input && (this.done = !1),
                  _)
                )
                  return _
                if (this._backtrack) {
                  for (var O in D) this[O] = D[O]
                  return !1
                }
                return !1
              }, 'test_match'),
              next: o(function () {
                if (this.done) return this.EOF
                this._input || (this.done = !0)
                var w, E, _, C
                this._more || ((this.yytext = ''), (this.match = ''))
                for (var D = this._currentRules(), O = 0; O < D.length; O++)
                  if (((_ = this._input.match(this.rules[D[O]])), _ && (!E || _[0].length > E[0].length))) {
                    if (((E = _), (C = O), this.options.backtrack_lexer)) {
                      if (((w = this.test_match(_, D[O])), w !== !1)) return w
                      if (this._backtrack) {
                        E = !1
                        continue
                      } else return !1
                    } else if (!this.options.flex) break
                  }
                return E
                  ? ((w = this.test_match(E, D[C])), w !== !1 ? w : !1)
                  : this._input === ''
                    ? this.EOF
                    : this.parseError(
                        'Lexical error on line ' +
                          (this.yylineno + 1) +
                          `. Unrecognized text.
` +
                          this.showPosition(),
                        { text: '', token: null, line: this.yylineno }
                      )
              }, 'next'),
              lex: o(function () {
                var E = this.next()
                return E || this.lex()
              }, 'lex'),
              begin: o(function (E) {
                this.conditionStack.push(E)
              }, 'begin'),
              popState: o(function () {
                var E = this.conditionStack.length - 1
                return E > 0 ? this.conditionStack.pop() : this.conditionStack[0]
              }, 'popState'),
              _currentRules: o(function () {
                return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]
                  ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
                  : this.conditions.INITIAL.rules
              }, '_currentRules'),
              topState: o(function (E) {
                return (E = this.conditionStack.length - 1 - Math.abs(E || 0)), E >= 0 ? this.conditionStack[E] : 'INITIAL'
              }, 'topState'),
              pushState: o(function (E) {
                this.begin(E)
              }, 'pushState'),
              stateStackSize: o(function () {
                return this.conditionStack.length
              }, 'stateStackSize'),
              options: { 'case-insensitive': !0 },
              performAction: o(function (E, _, C, D) {
                var O = D
                switch (C) {
                  case 0:
                    return E.getLogger().trace('Found comment', _.yytext), 6
                    break
                  case 1:
                    return 8
                  case 2:
                    this.begin('CLASS')
                    break
                  case 3:
                    return this.popState(), 16
                    break
                  case 4:
                    this.popState()
                    break
                  case 5:
                    E.getLogger().trace('Begin icon'), this.begin('ICON')
                    break
                  case 6:
                    return E.getLogger().trace('SPACELINE'), 6
                    break
                  case 7:
                    return 7
                  case 8:
                    return 15
                  case 9:
                    E.getLogger().trace('end icon'), this.popState()
                    break
                  case 10:
                    return E.getLogger().trace('Exploding node'), this.begin('NODE'), 19
                    break
                  case 11:
                    return E.getLogger().trace('Cloud'), this.begin('NODE'), 19
                    break
                  case 12:
                    return E.getLogger().trace('Explosion Bang'), this.begin('NODE'), 19
                    break
                  case 13:
                    return E.getLogger().trace('Cloud Bang'), this.begin('NODE'), 19
                    break
                  case 14:
                    return this.begin('NODE'), 19
                    break
                  case 15:
                    return this.begin('NODE'), 19
                    break
                  case 16:
                    return this.begin('NODE'), 19
                    break
                  case 17:
                    return this.begin('NODE'), 19
                    break
                  case 18:
                    return 13
                  case 19:
                    return 22
                  case 20:
                    return 11
                  case 21:
                    this.begin('NSTR2')
                    break
                  case 22:
                    return 'NODE_DESCR'
                  case 23:
                    this.popState()
                    break
                  case 24:
                    E.getLogger().trace('Starting NSTR'), this.begin('NSTR')
                    break
                  case 25:
                    return E.getLogger().trace('description:', _.yytext), 'NODE_DESCR'
                    break
                  case 26:
                    this.popState()
                    break
                  case 27:
                    return this.popState(), E.getLogger().trace('node end ))'), 'NODE_DEND'
                    break
                  case 28:
                    return this.popState(), E.getLogger().trace('node end )'), 'NODE_DEND'
                    break
                  case 29:
                    return this.popState(), E.getLogger().trace('node end ...', _.yytext), 'NODE_DEND'
                    break
                  case 30:
                    return this.popState(), E.getLogger().trace('node end (('), 'NODE_DEND'
                    break
                  case 31:
                    return this.popState(), E.getLogger().trace('node end (-'), 'NODE_DEND'
                    break
                  case 32:
                    return this.popState(), E.getLogger().trace('node end (-'), 'NODE_DEND'
                    break
                  case 33:
                    return this.popState(), E.getLogger().trace('node end (('), 'NODE_DEND'
                    break
                  case 34:
                    return this.popState(), E.getLogger().trace('node end (('), 'NODE_DEND'
                    break
                  case 35:
                    return E.getLogger().trace('Long description:', _.yytext), 20
                    break
                  case 36:
                    return E.getLogger().trace('Long description:', _.yytext), 20
                    break
                }
              }, 'anonymous'),
              rules: [
                /^(?:\s*%%.*)/i,
                /^(?:mindmap\b)/i,
                /^(?::::)/i,
                /^(?:.+)/i,
                /^(?:\n)/i,
                /^(?:::icon\()/i,
                /^(?:[\s]+[\n])/i,
                /^(?:[\n]+)/i,
                /^(?:[^\)]+)/i,
                /^(?:\))/i,
                /^(?:-\))/i,
                /^(?:\(-)/i,
                /^(?:\)\))/i,
                /^(?:\))/i,
                /^(?:\(\()/i,
                /^(?:\{\{)/i,
                /^(?:\()/i,
                /^(?:\[)/i,
                /^(?:[\s]+)/i,
                /^(?:[^\(\[\n\)\{\}]+)/i,
                /^(?:$)/i,
                /^(?:["][`])/i,
                /^(?:[^`"]+)/i,
                /^(?:[`]["])/i,
                /^(?:["])/i,
                /^(?:[^"]+)/i,
                /^(?:["])/i,
                /^(?:[\)]\))/i,
                /^(?:[\)])/i,
                /^(?:[\]])/i,
                /^(?:\}\})/i,
                /^(?:\(-)/i,
                /^(?:-\))/i,
                /^(?:\(\()/i,
                /^(?:\()/i,
                /^(?:[^\)\]\(\}]+)/i,
                /^(?:.+(?!\(\())/i
              ],
              conditions: {
                CLASS: { rules: [3, 4], inclusive: !1 },
                ICON: { rules: [8, 9], inclusive: !1 },
                NSTR2: { rules: [22, 23], inclusive: !1 },
                NSTR: { rules: [25, 26], inclusive: !1 },
                NODE: { rules: [21, 24, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36], inclusive: !1 },
                INITIAL: { rules: [0, 1, 2, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], inclusive: !0 }
              }
            }
            return S
          })()
        x.lexer = b
        function T() {
          this.yy = {}
        }
        return o(T, 'Parser'), (T.prototype = x), (x.Parser = T), new T()
      })()
      rB.parser = rB
      P0e = rB
    })
  var oqe,
    p6,
    F0e = N(() => {
      'use strict'
      Gt()
      pr()
      yt()
      _a()
      ;(oqe = { DEFAULT: 0, NO_BORDER: 0, ROUNDED_RECT: 1, RECT: 2, CIRCLE: 3, CLOUD: 4, BANG: 5, HEXAGON: 6 }),
        (p6 = class {
          constructor() {
            this.nodes = []
            this.count = 0
            this.elements = {}
            ;(this.getLogger = this.getLogger.bind(this)),
              (this.nodeType = oqe),
              this.clear(),
              (this.getType = this.getType.bind(this)),
              (this.getMindmap = this.getMindmap.bind(this)),
              (this.getElementById = this.getElementById.bind(this)),
              (this.getParent = this.getParent.bind(this)),
              (this.getMindmap = this.getMindmap.bind(this)),
              (this.addNode = this.addNode.bind(this)),
              (this.decorateNode = this.decorateNode.bind(this))
          }
          static {
            o(this, 'MindmapDB')
          }
          clear() {
            ;(this.nodes = []), (this.count = 0), (this.elements = {})
          }
          getParent(e) {
            for (let r = this.nodes.length - 1; r >= 0; r--) if (this.nodes[r].level < e) return this.nodes[r]
            return null
          }
          getMindmap() {
            return this.nodes.length > 0 ? this.nodes[0] : null
          }
          addNode(e, r, n, i) {
            X.info('addNode', e, r, n, i)
            let a = me(),
              s = a.mindmap?.padding ?? or.mindmap.padding
            switch (i) {
              case this.nodeType.ROUNDED_RECT:
              case this.nodeType.RECT:
              case this.nodeType.HEXAGON:
                s *= 2
                break
            }
            let l = { id: this.count++, nodeId: wr(r, a), level: e, descr: wr(n, a), type: i, children: [], width: a.mindmap?.maxNodeWidth ?? or.mindmap.maxNodeWidth, padding: s },
              u = this.getParent(e)
            if (u) u.children.push(l), this.nodes.push(l)
            else if (this.nodes.length === 0) this.nodes.push(l)
            else throw new Error(`There can be only one root. No parent could be found for ("${l.descr}")`)
          }
          getType(e, r) {
            switch ((X.debug('In get type', e, r), e)) {
              case '[':
                return this.nodeType.RECT
              case '(':
                return r === ')' ? this.nodeType.ROUNDED_RECT : this.nodeType.CLOUD
              case '((':
                return this.nodeType.CIRCLE
              case ')':
                return this.nodeType.CLOUD
              case '))':
                return this.nodeType.BANG
              case '{{':
                return this.nodeType.HEXAGON
              default:
                return this.nodeType.DEFAULT
            }
          }
          setElementForId(e, r) {
            this.elements[e] = r
          }
          getElementById(e) {
            return this.elements[e]
          }
          decorateNode(e) {
            if (!e) return
            let r = me(),
              n = this.nodes[this.nodes.length - 1]
            e.icon && (n.icon = wr(e.icon, r)), e.class && (n.class = wr(e.class, r))
          }
          type2Str(e) {
            switch (e) {
              case this.nodeType.DEFAULT:
                return 'no-border'
              case this.nodeType.RECT:
                return 'rect'
              case this.nodeType.ROUNDED_RECT:
                return 'rounded-rect'
              case this.nodeType.CIRCLE:
                return 'circle'
              case this.nodeType.CLOUD:
                return 'cloud'
              case this.nodeType.BANG:
                return 'bang'
              case this.nodeType.HEXAGON:
                return 'hexgon'
              default:
                return 'no-border'
            }
          }
          getLogger() {
            return X
          }
        })
    })
  function qi(t) {
    '@babel/helpers - typeof'
    return (
      (qi =
        typeof Symbol == 'function' && typeof Symbol.iterator == 'symbol'
          ? function (e) {
              return typeof e
            }
          : function (e) {
              return e && typeof Symbol == 'function' && e.constructor === Symbol && e !== Symbol.prototype ? 'symbol' : typeof e
            }),
      qi(t)
    )
  }
  function Vf(t, e) {
    if (!(t instanceof e)) throw new TypeError('Cannot call a class as a function')
  }
  function $0e(t, e) {
    for (var r = 0; r < e.length; r++) {
      var n = e[r]
      ;(n.enumerable = n.enumerable || !1), (n.configurable = !0), 'value' in n && (n.writable = !0), Object.defineProperty(t, n.key, n)
    }
  }
  function Uf(t, e, r) {
    return e && $0e(t.prototype, e), r && $0e(t, r), Object.defineProperty(t, 'prototype', { writable: !1 }), t
  }
  function ige(t, e, r) {
    return e in t ? Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }) : (t[e] = r), t
  }
  function Ri(t, e) {
    return cqe(t) || hqe(t, e) || PB(t, e) || dqe()
  }
  function age(t) {
    return lqe(t) || uqe(t) || PB(t) || fqe()
  }
  function lqe(t) {
    if (Array.isArray(t)) return xB(t)
  }
  function cqe(t) {
    if (Array.isArray(t)) return t
  }
  function uqe(t) {
    if ((typeof Symbol < 'u' && t[Symbol.iterator] != null) || t['@@iterator'] != null) return Array.from(t)
  }
  function hqe(t, e) {
    var r = t == null ? null : (typeof Symbol < 'u' && t[Symbol.iterator]) || t['@@iterator']
    if (r != null) {
      var n = [],
        i = !0,
        a = !1,
        s,
        l
      try {
        for (r = r.call(t); !(i = (s = r.next()).done) && (n.push(s.value), !(e && n.length === e)); i = !0);
      } catch (u) {
        ;(a = !0), (l = u)
      } finally {
        try {
          !i && r.return != null && r.return()
        } finally {
          if (a) throw l
        }
      }
      return n
    }
  }
  function PB(t, e) {
    if (t) {
      if (typeof t == 'string') return xB(t, e)
      var r = Object.prototype.toString.call(t).slice(8, -1)
      if ((r === 'Object' && t.constructor && (r = t.constructor.name), r === 'Map' || r === 'Set')) return Array.from(t)
      if (r === 'Arguments' || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)) return xB(t, e)
    }
  }
  function xB(t, e) {
    ;(e == null || e > t.length) && (e = t.length)
    for (var r = 0, n = new Array(e); r < e; r++) n[r] = t[r]
    return n
  }
  function fqe() {
    throw new TypeError(`Invalid attempt to spread non-iterable instance.
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)
  }
  function dqe() {
    throw new TypeError(`Invalid attempt to destructure non-iterable instance.
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)
  }
  function vo(t, e) {
    var r = (typeof Symbol < 'u' && t[Symbol.iterator]) || t['@@iterator']
    if (!r) {
      if (Array.isArray(t) || (r = PB(t)) || (e && t && typeof t.length == 'number')) {
        r && (t = r)
        var n = 0,
          i = o(function () {}, 'F')
        return {
          s: i,
          n: o(function () {
            return n >= t.length ? { done: !0 } : { done: !1, value: t[n++] }
          }, 'n'),
          e: o(function (u) {
            throw u
          }, 'e'),
          f: i
        }
      }
      throw new TypeError(`Invalid attempt to iterate non-iterable instance.
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)
    }
    var a = !0,
      s = !1,
      l
    return {
      s: o(function () {
        r = r.call(t)
      }, 's'),
      n: o(function () {
        var u = r.next()
        return (a = u.done), u
      }, 'n'),
      e: o(function (u) {
        ;(s = !0), (l = u)
      }, 'e'),
      f: o(function () {
        try {
          !a && r.return != null && r.return()
        } finally {
          if (s) throw l
        }
      }, 'f')
    }
  }
  function Pqe(t) {
    var e = typeof t
    return t != null && (e == 'object' || e == 'function')
  }
  function Bqe(t, e) {
    return (e = { exports: {} }), t(e, e.exports), e.exports
  }
  function Hqe(t) {
    for (var e = t.length; e-- && Uqe.test(t.charAt(e)); );
    return e
  }
  function Yqe(t) {
    return t && t.slice(0, Wqe(t) + 1).replace(qqe, '')
  }
  function Zqe(t) {
    var e = Kqe.call(t, Fb),
      r = t[Fb]
    try {
      t[Fb] = void 0
      var n = !0
    } catch {}
    var i = Qqe.call(t)
    return n && (e ? (t[Fb] = r) : delete t[Fb]), i
  }
  function rYe(t) {
    return tYe.call(t)
  }
  function sYe(t) {
    return t == null ? (t === void 0 ? aYe : iYe) : V0e && V0e in Object(t) ? Jqe(t) : nYe(t)
  }
  function oYe(t) {
    return t != null && typeof t == 'object'
  }
  function uYe(t) {
    return typeof t == 'symbol' || (lYe(t) && mge(t) == cYe)
  }
  function mYe(t) {
    if (typeof t == 'number') return t
    if (d4(t)) return U0e
    if (Kp(t)) {
      var e = typeof t.valueOf == 'function' ? t.valueOf() : t
      t = Kp(e) ? e + '' : e
    }
    if (typeof t != 'string') return t === 0 ? t : +t
    t = Xqe(t)
    var r = fYe.test(t)
    return r || dYe.test(t) ? pYe(t.slice(2), r ? 2 : 8) : hYe.test(t) ? U0e : +t
  }
  function xYe(t, e, r) {
    var n,
      i,
      a,
      s,
      l,
      u,
      h = 0,
      f = !1,
      d = !1,
      p = !0
    if (typeof t != 'function') throw new TypeError(gYe)
    ;(e = H0e(e) || 0), Kp(r) && ((f = !!r.leading), (d = 'maxWait' in r), (a = d ? yYe(H0e(r.maxWait) || 0, e) : a), (p = 'trailing' in r ? !!r.trailing : p))
    function m(E) {
      var _ = n,
        C = i
      return (n = i = void 0), (h = E), (s = t.apply(C, _)), s
    }
    o(m, 'invokeFunc')
    function g(E) {
      return (h = E), (l = setTimeout(x, e)), f ? m(E) : s
    }
    o(g, 'leadingEdge')
    function y(E) {
      var _ = E - u,
        C = E - h,
        D = e - _
      return d ? vYe(D, a - C) : D
    }
    o(y, 'remainingWait')
    function v(E) {
      var _ = E - u,
        C = E - h
      return u === void 0 || _ >= e || _ < 0 || (d && C >= a)
    }
    o(v, 'shouldInvoke')
    function x() {
      var E = nB()
      if (v(E)) return b(E)
      l = setTimeout(x, y(E))
    }
    o(x, 'timerExpired')
    function b(E) {
      return (l = void 0), p && n ? m(E) : ((n = i = void 0), s)
    }
    o(b, 'trailingEdge')
    function T() {
      l !== void 0 && clearTimeout(l), (h = 0), (n = u = i = l = void 0)
    }
    o(T, 'cancel')
    function S() {
      return l === void 0 ? s : b(nB())
    }
    o(S, 'flush')
    function w() {
      var E = nB(),
        _ = v(E)
      if (((n = arguments), (i = this), (u = E), _)) {
        if (l === void 0) return g(u)
        if (d) return clearTimeout(l), (l = setTimeout(x, e)), m(u)
      }
      return l === void 0 && (l = setTimeout(x, e)), s
    }
    return o(w, 'debounced'), (w.cancel = T), (w.flush = S), w
  }
  function eC(t, e, r, n, i, a) {
    var s
    return li(t) ? (s = t) : (s = ny[t] || ny.euclidean), e === 0 && li(t) ? s(i, a) : s(e, r, n, i, a)
  }
  function hje(t, e) {
    if (tC(t)) return !1
    var r = typeof t
    return r == 'number' || r == 'symbol' || r == 'boolean' || t == null || d4(t) ? !0 : uje.test(t) || !cje.test(t) || (e != null && t in Object(e))
  }
  function yje(t) {
    if (!Kp(t)) return !1
    var e = mge(t)
    return e == pje || e == mje || e == dje || e == gje
  }
  function bje(t) {
    return !!ume && ume in t
  }
  function Eje(t) {
    if (t != null) {
      try {
        return kje.call(t)
      } catch {}
      try {
        return t + ''
      } catch {}
    }
    return ''
  }
  function Mje(t) {
    if (!Kp(t) || Tje(t)) return !1
    var e = vje(t) ? Nje : Aje
    return e.test(Sje(t))
  }
  function Oje(t, e) {
    return t?.[e]
  }
  function Bje(t, e) {
    var r = Pje(t, e)
    return Ije(r) ? r : void 0
  }
  function $je() {
    ;(this.__data__ = s4 ? s4(null) : {}), (this.size = 0)
  }
  function Gje(t) {
    var e = this.has(t) && delete this.__data__[t]
    return (this.size -= e ? 1 : 0), e
  }
  function qje(t) {
    var e = this.__data__
    if (s4) {
      var r = e[t]
      return r === Uje ? void 0 : r
    }
    return Wje.call(e, t) ? e[t] : void 0
  }
  function Kje(t) {
    var e = this.__data__
    return s4 ? e[t] !== void 0 : jje.call(e, t)
  }
  function Jje(t, e) {
    var r = this.__data__
    return (this.size += this.has(t) ? 0 : 1), (r[t] = s4 && e === void 0 ? Zje : e), this
  }
  function oy(t) {
    var e = -1,
      r = t == null ? 0 : t.length
    for (this.clear(); ++e < r; ) {
      var n = t[e]
      this.set(n[0], n[1])
    }
  }
  function tKe() {
    ;(this.__data__ = []), (this.size = 0)
  }
  function nKe(t, e) {
    return t === e || (t !== t && e !== e)
  }
  function iKe(t, e) {
    for (var r = t.length; r--; ) if (zge(t[r][0], e)) return r
    return -1
  }
  function oKe(t) {
    var e = this.__data__,
      r = rC(e, t)
    if (r < 0) return !1
    var n = e.length - 1
    return r == n ? e.pop() : sKe.call(e, r, 1), --this.size, !0
  }
  function cKe(t) {
    var e = this.__data__,
      r = rC(e, t)
    return r < 0 ? void 0 : e[r][1]
  }
  function hKe(t) {
    return rC(this.__data__, t) > -1
  }
  function dKe(t, e) {
    var r = this.__data__,
      n = rC(r, t)
    return n < 0 ? (++this.size, r.push([t, e])) : (r[n][1] = e), this
  }
  function ly(t) {
    var e = -1,
      r = t == null ? 0 : t.length
    for (this.clear(); ++e < r; ) {
      var n = t[e]
      this.set(n[0], n[1])
    }
  }
  function vKe() {
    ;(this.size = 0), (this.__data__ = { hash: new hme(), map: new (yKe || mKe)(), string: new hme() })
  }
  function bKe(t) {
    var e = typeof t
    return e == 'string' || e == 'number' || e == 'symbol' || e == 'boolean' ? t !== '__proto__' : t === null
  }
  function wKe(t, e) {
    var r = t.__data__
    return TKe(e) ? r[typeof e == 'string' ? 'string' : 'hash'] : r.map
  }
  function kKe(t) {
    var e = nC(this, t).delete(t)
    return (this.size -= e ? 1 : 0), e
  }
  function SKe(t) {
    return nC(this, t).get(t)
  }
  function AKe(t) {
    return nC(this, t).has(t)
  }
  function DKe(t, e) {
    var r = nC(this, t),
      n = r.size
    return r.set(t, e), (this.size += r.size == n ? 0 : 1), this
  }
  function cy(t) {
    var e = -1,
      r = t == null ? 0 : t.length
    for (this.clear(); ++e < r; ) {
      var n = t[e]
      this.set(n[0], n[1])
    }
  }
  function YB(t, e) {
    if (typeof t != 'function' || (e != null && typeof e != 'function')) throw new TypeError(RKe)
    var r = o(function () {
      var n = arguments,
        i = e ? e.apply(this, n) : n[0],
        a = r.cache
      if (a.has(i)) return a.get(i)
      var s = t.apply(this, n)
      return (r.cache = a.set(i, s) || a), s
    }, 'memoized')
    return (r.cache = new (YB.Cache || Gge)()), r
  }
  function IKe(t) {
    var e = NKe(t, function (n) {
        return r.size === MKe && r.clear(), n
      }),
      r = e.cache
    return e
  }
  function $Ke(t, e) {
    for (var r = -1, n = t == null ? 0 : t.length, i = Array(n); ++r < n; ) i[r] = e(t[r], r, t)
    return i
  }
  function Hge(t) {
    if (typeof t == 'string') return t
    if (tC(t)) return Uge(t, Hge) + ''
    if (d4(t)) return dme ? dme.call(t) : ''
    var e = t + ''
    return e == '0' && 1 / t == -zKe ? '-0' : e
  }
  function VKe(t) {
    return t == null ? '' : GKe(t)
  }
  function UKe(t, e) {
    return tC(t) ? t : fje(t, e) ? [t] : Vge(Wge(t))
  }
  function WKe(t) {
    if (typeof t == 'string' || d4(t)) return t
    var e = t + ''
    return e == '0' && 1 / t == -HKe ? '-0' : e
  }
  function qKe(t, e) {
    e = qge(e, t)
    for (var r = 0, n = e.length; t != null && r < n; ) t = t[XB(e[r++])]
    return r && r == n ? t : void 0
  }
  function XKe(t, e, r) {
    var n = t == null ? void 0 : YKe(t, e)
    return n === void 0 ? r : n
  }
  function QKe(t, e, r) {
    e == '__proto__' && pme ? pme(t, e, { configurable: !0, enumerable: !0, value: r, writable: !0 }) : (t[e] = r)
  }
  function tQe(t, e, r) {
    var n = t[e]
    ;(!(eQe.call(t, e) && zge(n, r)) || (r === void 0 && !(e in t))) && ZKe(t, e, r)
  }
  function aQe(t, e) {
    var r = typeof t
    return (e = e ?? nQe), !!e && (r == 'number' || (r != 'symbol' && iQe.test(t))) && t > -1 && t % 1 == 0 && t < e
  }
  function oQe(t, e, r, n) {
    if (!Kp(t)) return t
    e = qge(e, t)
    for (var i = -1, a = e.length, s = a - 1, l = t; l != null && ++i < a; ) {
      var u = XB(e[i]),
        h = r
      if (u === '__proto__' || u === 'constructor' || u === 'prototype') return t
      if (i != s) {
        var f = l[u]
        ;(h = n ? n(f, u, l) : void 0), h === void 0 && (h = Kp(f) ? f : sQe(e[i + 1]) ? [] : {})
      }
      rQe(l, u, h), (l = l[u])
    }
    return t
  }
  function cQe(t, e, r) {
    return t == null ? t : lQe(t, e, r)
  }
  function hQe(t, e) {
    var r = -1,
      n = t.length
    for (e || (e = Array(n)); ++r < n; ) e[r] = t[r]
    return e
  }
  function dQe(t) {
    return tC(t) ? Uge(t, XB) : d4(t) ? [t] : fQe(Vge(Wge(t)))
  }
  function KB(t, e, r, n) {
    for (var i = [], a = new ay(), s = t.cy(), l = s.hasCompoundNodes(), u = 0; u < t.length; u++) {
      var h = t[u]
      r ? i.push(h) : l && n(i, a, h)
    }
    for (; i.length > 0; ) {
      var f = i.shift()
      e(f), a.add(f.id()), l && n(i, a, f)
    }
    return t
  }
  function Xge(t, e, r) {
    if (r.isParent())
      for (var n = r._private.children, i = 0; i < n.length; i++) {
        var a = n[i]
        e.has(a.id()) || t.push(a)
      }
  }
  function jge(t, e, r) {
    if (r.isChild()) {
      var n = r._private.parent
      e.has(n.id()) || t.push(n)
    }
  }
  function NQe(t, e, r) {
    jge(t, e, r), Xge(t, e, r)
  }
  function cB(t) {
    return function (e) {
      var r = this
      if ((e === void 0 && (e = !0), r.length !== 0))
        if (r.isNode() && !r.removed()) {
          for (var n = 0, i = r[0], a = i._private.edges, s = 0; s < a.length; s++) {
            var l = a[s]
            ;(!e && l.isLoop()) || (n += t(i, l))
          }
          return n
        } else return
    }
  }
  function H1(t, e) {
    return function (r) {
      for (var n, i = this.nodes(), a = 0; a < i.length; a++) {
        var s = i[a],
          l = s[t](r)
        l !== void 0 && (n === void 0 || e(l, n)) && (n = l)
      }
      return n
    }
  }
  function Gb() {
    return !1
  }
  function w6() {
    return !0
  }
  function aC() {
    for (var t = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : QQe, e = arguments.length > 1 ? arguments[1] : void 0, r = 0; r < bme.length; r++) {
      var n = bme[r]
      this[n] = t[n] || i1e[n]
    }
    ;(this.context = e || this.context), (this.listeners = []), (this.emitting = 0)
  }
  function c1e(t, e, r) {
    var n = r._private,
      i = (n.styleCache = n.styleCache || []),
      a
    return (a = i[t]) != null || (a = i[t] = e(r)), a
  }
  function sC(t, e) {
    return (
      (t = Bf(t)),
      o(function (n) {
        return c1e(t, e, n)
      }, 'cachedStyleFunction')
    )
  }
  function oC(t, e) {
    t = Bf(t)
    var r = o(function (i) {
      return e.call(i)
    }, 'selfFn')
    return o(function () {
      var i = this[0]
      if (i) return c1e(t, r, i)
    }, 'cachedPrototypeStyleFunction')
  }
  function hB(t, e) {
    var r = t._private,
      n = r.data.parent ? t.parents() : null
    if (n)
      for (var i = 0; i < n.length; i++) {
        var a = n[i]
        if (!e(a)) return !1
      }
    return !0
  }
  function QB(t) {
    var e = t.ok,
      r = t.edgeOkViaNode || t.ok,
      n = t.parentOk || t.ok
    return function () {
      var i = this.cy()
      if (!i.styleEnabled()) return !0
      var a = this[0],
        s = i.hasCompoundNodes()
      if (a) {
        var l = a._private
        if (!e(a)) return !1
        if (a.isNode()) return !s || hB(a, n)
        var u = l.source,
          h = l.target
        return r(u) && (!s || hB(u, r)) && (u === h || (r(h) && (!s || hB(h, r))))
      }
    }
  }
  function wme(t) {
    return function () {
      var e = arguments,
        r = []
      if (e.length === 2) {
        var n = e[0],
          i = e[1]
        this.on(t.event, n, i)
      } else if (e.length === 1 && li(e[0])) {
        var a = e[0]
        this.on(t.event, a)
      } else if (e.length === 0 || (e.length === 1 && En(e[0]))) {
        for (var s = e.length === 1 ? e[0] : null, l = 0; l < this.length; l++) {
          var u = this[l],
            h = !t.ableField || u._private[t.ableField],
            f = u._private[t.field] != t.value
          if (t.overrideAble) {
            var d = t.overrideAble(u)
            if (d !== void 0 && ((h = d), !d)) return this
          }
          h && ((u._private[t.field] = t.value), f && r.push(u))
        }
        var p = this.spawn(r)
        p.updateStyle(), p.emit(t.event), s && p.emit(s)
      }
      return this
    }
  }
  function hy(t) {
    ;(Of[t.field] = function () {
      var e = this[0]
      if (e) {
        if (t.overrideField) {
          var r = t.overrideField(e)
          if (r !== void 0) return r
        }
        return e._private[t.field]
      }
    }),
      (Of[t.on] = wme({ event: t.on, field: t.field, ableField: t.ableField, overrideAble: t.overrideAble, value: !0 })),
      (Of[t.off] = wme({ event: t.off, field: t.field, ableField: t.ableField, overrideAble: t.overrideAble, value: !1 }))
  }
  function Cme(t) {
    return o(function (r) {
      for (var n = [], i = 0; i < this.length; i++) {
        var a = this[i],
          s = a._private[t.attr]
        s && n.push(s)
      }
      return this.spawn(n, !0).filter(r)
    }, 'sourceImpl')
  }
  function Ame(t) {
    return o(function (r) {
      var n = [],
        i = this._private.cy,
        a = t || {}
      Zt(r) && (r = i.$(r))
      for (var s = 0; s < r.length; s++)
        for (var l = r[s]._private.edges, u = 0; u < l.length; u++) {
          var h = l[u],
            f = h._private.data,
            d = this.hasElementWithId(f.source) && r.hasElementWithId(f.target),
            p = r.hasElementWithId(f.source) && this.hasElementWithId(f.target),
            m = d || p
          m && (((a.thisIsSrc || a.thisIsTgt) && ((a.thisIsSrc && !d) || (a.thisIsTgt && !p))) || n.push(h))
        }
      return this.spawn(n, !0)
    }, 'edgesWithImpl')
  }
  function _me(t) {
    var e = { codirected: !1 }
    return (
      (t = ir({}, e, t)),
      o(function (n) {
        for (var i = [], a = this.edges(), s = t, l = 0; l < a.length; l++)
          for (var u = a[l], h = u._private, f = h.source, d = f._private.data.id, p = h.data.target, m = f._private.edges, g = 0; g < m.length; g++) {
            var y = m[g],
              v = y._private.data,
              x = v.target,
              b = v.source,
              T = x === p && b === d,
              S = d === x && p === b
            ;((s.codirected && T) || (!s.codirected && (T || S))) && i.push(y)
          }
        return this.spawn(i, !0).filter(n)
      }, 'parallelEdgesImpl')
    )
  }
  function lZe(t, e, r, n) {
    var i = 4,
      a = 0.001,
      s = 1e-7,
      l = 10,
      u = 11,
      h = 1 / (u - 1),
      f = typeof Float32Array < 'u'
    if (arguments.length !== 4) return !1
    for (var d = 0; d < 4; ++d) if (typeof arguments[d] != 'number' || isNaN(arguments[d]) || !isFinite(arguments[d])) return !1
    ;(t = Math.min(t, 1)), (r = Math.min(r, 1)), (t = Math.max(t, 0)), (r = Math.max(r, 0))
    var p = f ? new Float32Array(u) : new Array(u)
    function m(O, R) {
      return 1 - 3 * R + 3 * O
    }
    o(m, 'A')
    function g(O, R) {
      return 3 * R - 6 * O
    }
    o(g, 'B')
    function y(O) {
      return 3 * O
    }
    o(y, 'C')
    function v(O, R, k) {
      return ((m(R, k) * O + g(R, k)) * O + y(R)) * O
    }
    o(v, 'calcBezier')
    function x(O, R, k) {
      return 3 * m(R, k) * O * O + 2 * g(R, k) * O + y(R)
    }
    o(x, 'getSlope')
    function b(O, R) {
      for (var k = 0; k < i; ++k) {
        var L = x(R, t, r)
        if (L === 0) return R
        var A = v(R, t, r) - O
        R -= A / L
      }
      return R
    }
    o(b, 'newtonRaphsonIterate')
    function T() {
      for (var O = 0; O < u; ++O) p[O] = v(O * h, t, r)
    }
    o(T, 'calcSampleValues')
    function S(O, R, k) {
      var L,
        A,
        I = 0
      do (A = R + (k - R) / 2), (L = v(A, t, r) - O), L > 0 ? (k = A) : (R = A)
      while (Math.abs(L) > s && ++I < l)
      return A
    }
    o(S, 'binarySubdivide')
    function w(O) {
      for (var R = 0, k = 1, L = u - 1; k !== L && p[k] <= O; ++k) R += h
      --k
      var A = (O - p[k]) / (p[k + 1] - p[k]),
        I = R + A * h,
        M = x(I, t, r)
      return M >= a ? b(O, I) : M === 0 ? I : S(O, R, R + h)
    }
    o(w, 'getTForX')
    var E = !1
    function _() {
      ;(E = !0), (t !== e || r !== n) && T()
    }
    o(_, 'precompute')
    var C = o(function (R) {
      return E || _(), t === e && r === n ? R : R === 0 ? 0 : R === 1 ? 1 : v(w(R), e, n)
    }, 'f')
    C.getControlPoints = function () {
      return [
        { x: t, y: e },
        { x: r, y: n }
      ]
    }
    var D = 'generateBezier(' + [t, e, r, n] + ')'
    return (
      (C.toString = function () {
        return D
      }),
      C
    )
  }
  function Dme(t, e, r, n, i) {
    if (n === 1 || e === r) return r
    var a = i(e, r, n)
    return t == null || ((t.roundValue || t.color) && (a = Math.round(a)), t.min !== void 0 && (a = Math.max(a, t.min)), t.max !== void 0 && (a = Math.min(a, t.max))), a
  }
  function Lme(t, e) {
    return t.pfValue != null || t.value != null ? (t.pfValue != null && (e == null || e.type.units !== '%') ? t.pfValue : t.value) : t
  }
  function W1(t, e, r, n, i) {
    var a = i != null ? i.type : null
    r < 0 ? (r = 0) : r > 1 && (r = 1)
    var s = Lme(t, i),
      l = Lme(e, i)
    if (_t(s) && _t(l)) return Dme(a, s, l, r, n)
    if (En(s) && En(l)) {
      for (var u = [], h = 0; h < l.length; h++) {
        var f = s[h],
          d = l[h]
        if (f != null && d != null) {
          var p = Dme(a, f, d, r, n)
          u.push(p)
        } else u.push(d)
      }
      return u
    }
  }
  function uZe(t, e, r, n) {
    var i = !n,
      a = t._private,
      s = e._private,
      l = s.easing,
      u = s.startTime,
      h = n ? t : t.cy(),
      f = h.style()
    if (!s.easingImpl)
      if (l == null) s.easingImpl = M6.linear
      else {
        var d
        if (Zt(l)) {
          var p = f.parse('transition-timing-function', l)
          d = p.value
        } else d = l
        var m, g
        Zt(d)
          ? ((m = d), (g = []))
          : ((m = d[1]),
            (g = d.slice(2).map(function (F) {
              return +F
            }))),
          g.length > 0 ? (m === 'spring' && g.push(s.duration), (s.easingImpl = M6[m].apply(null, g))) : (s.easingImpl = M6[m])
      }
    var y = s.easingImpl,
      v
    if ((s.duration === 0 ? (v = 1) : (v = (r - u) / s.duration), s.applying && (v = s.progress), v < 0 ? (v = 0) : v > 1 && (v = 1), s.delay == null)) {
      var x = s.startPosition,
        b = s.position
      if (b && i && !t.locked()) {
        var T = {}
        Vb(x.x, b.x) && (T.x = W1(x.x, b.x, v, y)), Vb(x.y, b.y) && (T.y = W1(x.y, b.y, v, y)), t.position(T)
      }
      var S = s.startPan,
        w = s.pan,
        E = a.pan,
        _ = w != null && n
      _ && (Vb(S.x, w.x) && (E.x = W1(S.x, w.x, v, y)), Vb(S.y, w.y) && (E.y = W1(S.y, w.y, v, y)), t.emit('pan'))
      var C = s.startZoom,
        D = s.zoom,
        O = D != null && n
      O && (Vb(C, D) && (a.zoom = i4(a.minZoom, W1(C, D, v, y), a.maxZoom)), t.emit('zoom')), (_ || O) && t.emit('viewport')
      var R = s.style
      if (R && R.length > 0 && i) {
        for (var k = 0; k < R.length; k++) {
          var L = R[k],
            A = L.name,
            I = L,
            M = s.startStyle[A],
            P = f.properties[M.name],
            B = W1(M, I, v, y, P)
          f.overrideBypass(t, A, B)
        }
        t.emit('style')
      }
    }
    return (s.progress = v), v
  }
  function Vb(t, e) {
    return t == null || e == null ? !1 : _t(t) && _t(e) ? !0 : !!(t && e)
  }
  function hZe(t, e, r, n) {
    var i = e._private
    ;(i.started = !0), (i.startTime = r - i.progress * i.duration)
  }
  function Rme(t, e) {
    var r = e._private.aniEles,
      n = []
    function i(f, d) {
      var p = f._private,
        m = p.animation.current,
        g = p.animation.queue,
        y = !1
      if (m.length === 0) {
        var v = g.shift()
        v && m.push(v)
      }
      for (
        var x = o(function (E) {
            for (var _ = E.length - 1; _ >= 0; _--) {
              var C = E[_]
              C()
            }
            E.splice(0, E.length)
          }, 'callbacks'),
          b = m.length - 1;
        b >= 0;
        b--
      ) {
        var T = m[b],
          S = T._private
        if (S.stopped) {
          m.splice(b, 1), (S.hooked = !1), (S.playing = !1), (S.started = !1), x(S.frames)
          continue
        }
        ;(!S.playing && !S.applying) ||
          (S.playing && S.applying && (S.applying = !1),
          S.started || hZe(f, T, t),
          uZe(f, T, t, d),
          S.applying && (S.applying = !1),
          x(S.frames),
          S.step != null && S.step(t),
          T.completed() && (m.splice(b, 1), (S.hooked = !1), (S.playing = !1), (S.started = !1), x(S.completes)),
          (y = !0))
      }
      return !d && m.length === 0 && g.length === 0 && n.push(f), y
    }
    o(i, 'stepOne')
    for (var a = !1, s = 0; s < r.length; s++) {
      var l = r[s],
        u = i(l)
      a = a || u
    }
    var h = i(e, !0)
    ;(a || h) && (r.length > 0 ? e.notify('draw', r) : e.notify('draw')), r.unmerge(n), e.emit('step')
  }
  function h1e(t) {
    this.options = ir({}, xZe, bZe, t)
  }
  function f1e(t) {
    this.options = ir({}, TZe, t)
  }
  function d1e(t) {
    this.options = ir({}, wZe, t)
  }
  function uC(t) {
    ;(this.options = ir({}, kZe, t)), (this.options.layout = this)
    var e = this.options.eles.nodes(),
      r = this.options.eles.edges(),
      n = r.filter(function (i) {
        var a = i.source().data('id'),
          s = i.target().data('id'),
          l = e.some(function (h) {
            return h.data('id') === a
          }),
          u = e.some(function (h) {
            return h.data('id') === s
          })
        return !l || !u
      })
    this.options.eles = this.options.eles.not(n)
  }
  function m1e(t) {
    this.options = ir({}, zZe, t)
  }
  function eF(t) {
    this.options = ir({}, GZe, t)
  }
  function g1e(t) {
    this.options = ir({}, VZe, t)
  }
  function y1e(t) {
    this.options = ir({}, UZe, t)
  }
  function v1e(t) {
    ;(this.options = t), (this.notifications = 0)
  }
  function T1e(t, e) {
    e.radius === 0 ? t.lineTo(e.cx, e.cy) : t.arc(e.cx, e.cy, e.radius, e.startAngle, e.endAngle, e.counterClockwise)
  }
  function rF(t, e, r, n) {
    var i = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : !0
    return n === 0 || e.radius === 0
      ? { cx: e.x, cy: e.y, radius: 0, startX: e.x, startY: e.y, stopX: e.x, stopY: e.y, startAngle: void 0, endAngle: void 0, counterClockwise: void 0 }
      : (qZe(t, e, r, n, i),
        {
          cx: _B,
          cy: DB,
          radius: Yp,
          startX: x1e,
          startY: b1e,
          stopX: LB,
          stopY: RB,
          startAngle: Kc.ang + (Math.PI / 2) * Xp,
          endAngle: nl.ang - (Math.PI / 2) * Xp,
          counterClockwise: P6
        })
  }
  function w1e(t) {
    var e = []
    if (t != null) {
      for (var r = 0; r < t.length; r += 2) {
        var n = t[r],
          i = t[r + 1]
        e.push({ x: n, y: i })
      }
      return e
    }
  }
  function YZe(t, e, r) {
    for (
      var n = o(function (h, f, d, p) {
          return sa(h, f, d, p)
        }, 'qbezierAt$1'),
        i = e._private,
        a = i.rstyle.bezierPts,
        s = 0;
      s < t.bezierProjPcts.length;
      s++
    ) {
      var l = t.bezierProjPcts[s]
      a.push({ x: n(r[0], r[2], r[4], l), y: n(r[1], r[3], r[5], l) })
    }
  }
  function kJe(t, e) {
    for (var r = 0; r < e.length; r++) {
      var n = e[r]
      t.lineTo(n.x, n.y)
    }
  }
  function EJe(t, e, r) {
    for (var n, i = 0; i < e.length; i++) {
      var a = e[i]
      i === 0 && (n = a), t.lineTo(a.x, a.y)
    }
    t.quadraticCurveTo(r.x, r.y, n.x, n.y)
  }
  function jme(t, e, r) {
    t.beginPath && t.beginPath()
    for (var n = e, i = 0; i < n.length; i++) {
      var a = n[i]
      t.lineTo(a.x, a.y)
    }
    var s = r,
      l = r[0]
    t.moveTo(l.x, l.y)
    for (var i = 1; i < s.length; i++) {
      var a = s[i]
      t.lineTo(a.x, a.y)
    }
    t.closePath && t.closePath()
  }
  function SJe(t, e, r, n, i) {
    t.beginPath && t.beginPath(), t.arc(r, n, i, 0, Math.PI * 2, !1)
    var a = e,
      s = a[0]
    t.moveTo(s.x, s.y)
    for (var l = 0; l < a.length; l++) {
      var u = a[l]
      t.lineTo(u.x, u.y)
    }
    t.closePath && t.closePath()
  }
  function CJe(t, e, r, n) {
    t.arc(e, r, n, 0, Math.PI * 2, !1)
  }
  function mB(t, e, r, n, i) {
    var a = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : 5,
      s = arguments.length > 6 ? arguments[6] : void 0
    t.beginPath(),
      t.moveTo(e + a, r),
      t.lineTo(e + n - a, r),
      t.quadraticCurveTo(e + n, r, e + n, r + a),
      t.lineTo(e + n, r + i - a),
      t.quadraticCurveTo(e + n, r + i, e + n - a, r + i),
      t.lineTo(e + a, r + i),
      t.quadraticCurveTo(e, r + i, e, r + i - a),
      t.lineTo(e, r + a),
      t.quadraticCurveTo(e, r, e + a, r),
      t.closePath(),
      s ? t.stroke() : t.fill()
  }
  function Kme(t, e, r) {
    var n = t.createShader(e)
    if ((t.shaderSource(n, r), t.compileShader(n), !t.getShaderParameter(n, t.COMPILE_STATUS))) throw new Error(t.getShaderInfoLog(n))
    return n
  }
  function MJe(t, e, r) {
    var n = Kme(t, t.VERTEX_SHADER, e),
      i = Kme(t, t.FRAGMENT_SHADER, r),
      a = t.createProgram()
    if ((t.attachShader(a, n), t.attachShader(a, i), t.linkProgram(a), !t.getProgramParameter(a, t.LINK_STATUS))) throw new Error('Could not initialize shaders')
    return a
  }
  function IJe(t, e, r) {
    r === void 0 && (r = e)
    var n = t.makeOffscreenCanvas(e, r),
      i = (n.context = n.getContext('2d'))
    return (
      (n.clear = function () {
        return i.clearRect(0, 0, n.width, n.height)
      }),
      n.clear(),
      n
    )
  }
  function aF(t) {
    var e = t.pixelRatio,
      r = t.cy.zoom(),
      n = t.cy.pan()
    return { zoom: r * e, pan: { x: n.x * e, y: n.y * e } }
  }
  function gB(t, e, r, n, i) {
    var a = n * r + e.x,
      s = i * r + e.y
    return (s = Math.round(t.canvasHeight - s)), [a, s]
  }
  function A6(t, e, r) {
    var n = t[0] / 255,
      i = t[1] / 255,
      a = t[2] / 255,
      s = e,
      l = r || new Array(4)
    return (l[0] = n * s), (l[1] = i * s), (l[2] = a * s), (l[3] = s), l
  }
  function _6(t, e) {
    var r = e || new Array(4)
    return (r[0] = ((t >> 0) & 255) / 255), (r[1] = ((t >> 8) & 255) / 255), (r[2] = ((t >> 16) & 255) / 255), (r[3] = ((t >> 24) & 255) / 255), r
  }
  function OJe(t) {
    return t[0] + (t[1] << 8) + (t[2] << 16) + (t[3] << 24)
  }
  function PJe(t, e) {
    var r = t.createTexture()
    return (
      (r.buffer = function (n) {
        t.bindTexture(t.TEXTURE_2D, r),
          t.texParameteri(t.TEXTURE_2D, t.TEXTURE_WRAP_S, t.CLAMP_TO_EDGE),
          t.texParameteri(t.TEXTURE_2D, t.TEXTURE_WRAP_T, t.CLAMP_TO_EDGE),
          t.texParameteri(t.TEXTURE_2D, t.TEXTURE_MAG_FILTER, t.LINEAR),
          t.texParameteri(t.TEXTURE_2D, t.TEXTURE_MIN_FILTER, t.LINEAR_MIPMAP_NEAREST),
          t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL, !0),
          t.texImage2D(t.TEXTURE_2D, 0, t.RGBA, t.RGBA, t.UNSIGNED_BYTE, n),
          t.generateMipmap(t.TEXTURE_2D),
          t.bindTexture(t.TEXTURE_2D, null)
      }),
      (r.deleteTexture = function () {
        t.deleteTexture(r)
      }),
      r
    )
  }
  function O1e(t, e) {
    switch (e) {
      case 'float':
        return [1, t.FLOAT, 4]
      case 'vec2':
        return [2, t.FLOAT, 4]
      case 'vec3':
        return [3, t.FLOAT, 4]
      case 'vec4':
        return [4, t.FLOAT, 4]
      case 'int':
        return [1, t.INT, 4]
      case 'ivec2':
        return [2, t.INT, 4]
    }
  }
  function P1e(t, e, r) {
    switch (e) {
      case t.FLOAT:
        return new Float32Array(r)
      case t.INT:
        return new Int32Array(r)
    }
  }
  function BJe(t, e, r, n, i, a) {
    switch (e) {
      case t.FLOAT:
        return new Float32Array(r.buffer, a * n, i)
      case t.INT:
        return new Int32Array(r.buffer, a * n, i)
    }
  }
  function FJe(t, e, r, n) {
    var i = O1e(t, e),
      a = Ri(i, 2),
      s = a[0],
      l = a[1],
      u = P1e(t, l, n),
      h = t.createBuffer()
    return (
      t.bindBuffer(t.ARRAY_BUFFER, h),
      t.bufferData(t.ARRAY_BUFFER, u, t.STATIC_DRAW),
      l === t.FLOAT ? t.vertexAttribPointer(r, s, l, !1, 0, 0) : l === t.INT && t.vertexAttribIPointer(r, s, l, 0, 0),
      t.enableVertexAttribArray(r),
      t.bindBuffer(t.ARRAY_BUFFER, null),
      h
    )
  }
  function yo(t, e, r, n) {
    var i = O1e(t, r),
      a = Ri(i, 3),
      s = a[0],
      l = a[1],
      u = a[2],
      h = P1e(t, l, e * s),
      f = s * u,
      d = t.createBuffer()
    t.bindBuffer(t.ARRAY_BUFFER, d),
      t.bufferData(t.ARRAY_BUFFER, e * f, t.DYNAMIC_DRAW),
      t.enableVertexAttribArray(n),
      l === t.FLOAT ? t.vertexAttribPointer(n, s, l, !1, f, 0) : l === t.INT && t.vertexAttribIPointer(n, s, l, f, 0),
      t.vertexAttribDivisor(n, 1),
      t.bindBuffer(t.ARRAY_BUFFER, null)
    for (var p = new Array(e), m = 0; m < e; m++) p[m] = BJe(t, l, h, f, s, m)
    return (
      (d.dataArray = h),
      (d.stride = f),
      (d.size = s),
      (d.getView = function (g) {
        return p[g]
      }),
      (d.setPoint = function (g, y, v) {
        var x = p[g]
        ;(x[0] = y), (x[1] = v)
      }),
      (d.bufferSubData = function (g) {
        t.bindBuffer(t.ARRAY_BUFFER, d), g ? t.bufferSubData(t.ARRAY_BUFFER, 0, h, 0, g * s) : t.bufferSubData(t.ARRAY_BUFFER, 0, h)
      }),
      d
    )
  }
  function $Je(t) {
    var e = t.createFramebuffer()
    t.bindFramebuffer(t.FRAMEBUFFER, e)
    var r = t.createTexture()
    return (
      t.bindTexture(t.TEXTURE_2D, r),
      t.texParameteri(t.TEXTURE_2D, t.TEXTURE_MIN_FILTER, t.LINEAR),
      t.texParameteri(t.TEXTURE_2D, t.TEXTURE_WRAP_S, t.CLAMP_TO_EDGE),
      t.texParameteri(t.TEXTURE_2D, t.TEXTURE_WRAP_T, t.CLAMP_TO_EDGE),
      t.framebufferTexture2D(t.FRAMEBUFFER, t.COLOR_ATTACHMENT0, t.TEXTURE_2D, r, 0),
      t.bindFramebuffer(t.FRAMEBUFFER, null),
      (e.setFramebufferAttachmentSizes = function (n, i) {
        t.bindTexture(t.TEXTURE_2D, r), t.texImage2D(t.TEXTURE_2D, 0, t.RGBA, n, i, 0, t.RGBA, t.UNSIGNED_BYTE, null)
      }),
      e
    )
  }
  function Zb() {
    var t = new Qme(9)
    return Qme != Float32Array && ((t[1] = 0), (t[2] = 0), (t[3] = 0), (t[5] = 0), (t[6] = 0), (t[7] = 0)), (t[0] = 1), (t[4] = 1), (t[8] = 1), t
  }
  function B1e(t) {
    return (t[0] = 1), (t[1] = 0), (t[2] = 0), (t[3] = 0), (t[4] = 1), (t[5] = 0), (t[6] = 0), (t[7] = 0), (t[8] = 1), t
  }
  function zJe(t, e, r) {
    var n = e[0],
      i = e[1],
      a = e[2],
      s = e[3],
      l = e[4],
      u = e[5],
      h = e[6],
      f = e[7],
      d = e[8],
      p = r[0],
      m = r[1],
      g = r[2],
      y = r[3],
      v = r[4],
      x = r[5],
      b = r[6],
      T = r[7],
      S = r[8]
    return (
      (t[0] = p * n + m * s + g * h),
      (t[1] = p * i + m * l + g * f),
      (t[2] = p * a + m * u + g * d),
      (t[3] = y * n + v * s + x * h),
      (t[4] = y * i + v * l + x * f),
      (t[5] = y * a + v * u + x * d),
      (t[6] = b * n + T * s + S * h),
      (t[7] = b * i + T * l + S * f),
      (t[8] = b * a + T * u + S * d),
      t
    )
  }
  function j6(t, e, r) {
    var n = e[0],
      i = e[1],
      a = e[2],
      s = e[3],
      l = e[4],
      u = e[5],
      h = e[6],
      f = e[7],
      d = e[8],
      p = r[0],
      m = r[1]
    return (t[0] = n), (t[1] = i), (t[2] = a), (t[3] = s), (t[4] = l), (t[5] = u), (t[6] = p * n + m * s + h), (t[7] = p * i + m * l + f), (t[8] = p * a + m * u + d), t
  }
  function F1e(t, e, r) {
    var n = e[0],
      i = e[1],
      a = e[2],
      s = e[3],
      l = e[4],
      u = e[5],
      h = e[6],
      f = e[7],
      d = e[8],
      p = Math.sin(r),
      m = Math.cos(r)
    return (
      (t[0] = m * n + p * s),
      (t[1] = m * i + p * l),
      (t[2] = m * a + p * u),
      (t[3] = m * s - p * n),
      (t[4] = m * l - p * i),
      (t[5] = m * u - p * a),
      (t[6] = h),
      (t[7] = f),
      (t[8] = d),
      t
    )
  }
  function sF(t, e, r) {
    var n = r[0],
      i = r[1]
    return (t[0] = n * e[0]), (t[1] = n * e[1]), (t[2] = n * e[2]), (t[3] = i * e[3]), (t[4] = i * e[4]), (t[5] = i * e[5]), (t[6] = e[6]), (t[7] = e[7]), (t[8] = e[8]), t
  }
  function GJe(t, e, r) {
    return (t[0] = 2 / e), (t[1] = 0), (t[2] = 0), (t[3] = 0), (t[4] = -2 / r), (t[5] = 0), (t[6] = -1), (t[7] = 1), (t[8] = 1), t
  }
  function HJe(t, e) {
    return t.intersection
      ? t.intersection(e)
      : new Set(
          age(t).filter(function (r) {
            return e.has(r)
          })
        )
  }
  function ege(t, e) {
    return 'rgba('.concat(t[0], ', ').concat(t[1], ', ').concat(t[2], ', ').concat(e, ')')
  }
  function XJe(t) {
    var e = (t && t.style && t.style.backgroundColor) || 'white'
    return hge(e)
  }
  function jJe(t) {
    {
      var e = t.render
      t.render = function (a) {
        a = a || {}
        var s = t.cy
        t.webgl && (s.zoom() > L1e ? (KJe(t), e.call(t, a)) : (QJe(t), G1e(t, a, Jb.SCREEN)))
      }
    }
    {
      var r = t.matchCanvasSize
      t.matchCanvasSize = function (a) {
        r.call(t, a), t.pickingFrameBuffer.setFramebufferAttachmentSizes(t.canvasWidth, t.canvasHeight), (t.pickingFrameBuffer.needsDraw = !0)
      }
    }
    t.findNearestElements = function (a, s, l, u) {
      return net(t, a, s)
    }
    {
      var n = t.invalidateCachedZSortedEles
      t.invalidateCachedZSortedEles = function () {
        n.call(t), (t.pickingFrameBuffer.needsDraw = !0)
      }
    }
    {
      var i = t.notify
      t.notify = function (a, s) {
        i.call(t, a, s), a === 'viewport' || a === 'bounds' ? (t.pickingFrameBuffer.needsDraw = !0) : a === 'background' && t.eleDrawing.invalidate(s, { type: 'node-body' })
      }
    }
  }
  function KJe(t) {
    var e = t.data.contexts[t.WEBGL]
    e.clear(e.COLOR_BUFFER_BIT | e.DEPTH_BUFFER_BIT)
  }
  function QJe(t) {
    var e = o(function (n) {
      n.save(), n.setTransform(1, 0, 0, 1, 0, 0), n.clearRect(0, 0, t.canvasWidth, t.canvasHeight), n.restore()
    }, 'clear')
    e(t.data.contexts[t.NODE]), e(t.data.contexts[t.DRAG])
  }
  function ZJe(t) {
    var e = t.canvasWidth,
      r = t.canvasHeight,
      n = aF(t),
      i = n.pan,
      a = n.zoom,
      s = Zb()
    j6(s, s, [i.x, i.y]), sF(s, s, [a, a])
    var l = Zb()
    GJe(l, e, r)
    var u = Zb()
    return zJe(u, l, s), u
  }
  function z1e(t, e) {
    var r = t.canvasWidth,
      n = t.canvasHeight,
      i = aF(t),
      a = i.pan,
      s = i.zoom
    e.setTransform(1, 0, 0, 1, 0, 0), e.clearRect(0, 0, r, n), e.translate(a.x, a.y), e.scale(s, s)
  }
  function JJe(t, e) {
    t.drawSelectionRectangle(e, function (r) {
      return z1e(t, r)
    })
  }
  function eet(t) {
    var e = t.data.contexts[t.NODE]
    e.save(),
      z1e(t, e),
      (e.strokeStyle = 'rgba(0, 0, 0, 0.3)'),
      e.beginPath(),
      e.moveTo(-1e3, 0),
      e.lineTo(1e3, 0),
      e.stroke(),
      e.beginPath(),
      e.moveTo(0, -1e3),
      e.lineTo(0, 1e3),
      e.stroke(),
      e.restore()
  }
  function tet(t) {
    var e = o(function (i, a, s) {
        for (var l = i.atlasManager.getRenderTypeOpts(a), u = t.data.contexts[t.NODE], h = 0.125, f = l.atlasCollection.atlases, d = 0; d < f.length; d++) {
          var p = f[d],
            m = p.canvas,
            g = m.width,
            y = m.height,
            v = g * d,
            x = m.height * s
          u.save(), u.scale(h, h), u.drawImage(m, v, x), (u.strokeStyle = 'black'), u.rect(v, x, g, y), u.stroke(), u.restore()
        }
      }, 'draw'),
      r = 0
    e(t.eleDrawing, 'node-body', r++), e(t.eleDrawing, 'node-label', r++)
  }
  function ret(t, e, r, n, i) {
    var a,
      s,
      l,
      u,
      h = aF(t),
      f = h.pan,
      d = h.zoom
    if (n === void 0 || i === void 0) {
      var p = gB(t, f, d, e, r),
        m = Ri(p, 2),
        g = m[0],
        y = m[1],
        v = 6
      ;(a = g - v / 2), (s = y - v / 2), (l = v), (u = v)
    } else {
      var x = gB(t, f, d, e, r),
        b = Ri(x, 2),
        T = b[0],
        S = b[1],
        w = gB(t, f, d, n, i),
        E = Ri(w, 2),
        _ = E[0],
        C = E[1]
      ;(a = T), (s = C), (l = Math.abs(_ - T)), (u = Math.abs(C - S))
    }
    if (l === 0 || u === 0) return []
    var D = t.data.contexts[t.WEBGL]
    D.bindFramebuffer(D.FRAMEBUFFER, t.pickingFrameBuffer),
      t.pickingFrameBuffer.needsDraw && (D.viewport(0, 0, D.canvas.width, D.canvas.height), G1e(t, null, Jb.PICKING), (t.pickingFrameBuffer.needsDraw = !1))
    var O = l * u,
      R = new Uint8Array(O * 4)
    D.readPixels(a, s, l, u, D.RGBA, D.UNSIGNED_BYTE, R), D.bindFramebuffer(D.FRAMEBUFFER, null)
    for (var k = new Set(), L = 0; L < O; L++) {
      var A = R.slice(L * 4, L * 4 + 4),
        I = OJe(A) - 1
      I >= 0 && k.add(I)
    }
    return k
  }
  function net(t, e, r) {
    var n = ret(t, e, r),
      i = t.getCachedZSortedEles(),
      a,
      s,
      l = vo(n),
      u
    try {
      for (l.s(); !(u = l.n()).done; ) {
        var h = u.value,
          f = i[h]
        if ((!a && f.isNode() && (a = f), !s && f.isEdge() && (s = f), a && s)) break
      }
    } catch (d) {
      l.e(d)
    } finally {
      l.f()
    }
    return [a, s].filter(Boolean)
  }
  function G1e(t, e, r) {
    var n, i
    t.webglDebug && ((i = []), (n = performance.now()))
    var a = t.eleDrawing,
      s = 0
    if ((r.screen && t.data.canvasNeedsRedraw[t.SELECT_BOX] && JJe(t, e), t.data.canvasNeedsRedraw[t.NODE] || r.picking)) {
      var l = o(function (k, L) {
          ;(L += 1),
            k.isNode()
              ? (a.drawTexture(k, L, 'node-underlay'), a.drawTexture(k, L, 'node-body'), a.drawTexture(k, L, 'node-label'), a.drawTexture(k, L, 'node-overlay'))
              : (a.drawEdgeLine(k, L), a.drawEdgeArrow(k, L, 'source'), a.drawEdgeArrow(k, L, 'target'), a.drawTexture(k, L, 'edge-label'))
        }, 'draw'),
        u = t.data.contexts[t.WEBGL]
      r.screen ? (u.clearColor(0, 0, 0, 0), u.enable(u.BLEND), u.blendFunc(u.ONE, u.ONE_MINUS_SRC_ALPHA)) : u.disable(u.BLEND),
        u.clear(u.COLOR_BUFFER_BIT | u.DEPTH_BUFFER_BIT),
        u.viewport(0, 0, u.canvas.width, u.canvas.height)
      var h = ZJe(t),
        f = t.getCachedZSortedEles()
      if (((s = f.length), a.startFrame(h, i, r), r.screen)) {
        for (var d = 0; d < f.nondrag.length; d++) l(f.nondrag[d], d)
        for (var p = 0; p < f.drag.length; p++) l(f.drag[p], -1)
      } else if (r.picking) for (var m = 0; m < f.length; m++) l(f[m], m)
      a.endFrame(),
        t.data.gc && (console.log('Garbage Collect!'), (t.data.gc = !1), a.gc()),
        r.screen && t.webglDebugShowAtlases && (eet(t), tet(t)),
        (t.data.canvasNeedsRedraw[t.NODE] = !1),
        (t.data.canvasNeedsRedraw[t.DRAG] = !1)
    }
    if (t.webglDebug) {
      var g = performance.now(),
        y = !0,
        v = 0,
        x = 0,
        b = vo(i),
        T
      try {
        for (b.s(); !(T = b.n()).done; ) {
          var S = T.value
          v++, (x += S.count)
        }
      } catch (R) {
        b.e(R)
      } finally {
        b.f()
      }
      var w = Math.ceil(g - n),
        E = ''.concat(s, ' elements, ').concat(x, ' rectangles, ').concat(v, ' batches')
      if (y) console.log('WebGL ('.concat(r.name, ') - ').concat(E))
      else {
        console.log('WebGL render ('.concat(r.name, ') - frame time ').concat(w, 'ms')), console.log('  '.concat(E)), console.log('Texture Atlases Used:')
        var _ = a.getAtlasDebugInfo(),
          C = vo(_),
          D
        try {
          for (C.s(); !(D = C.n()).done; ) {
            var O = D.value
            console.log('  '.concat(O.type, ': ').concat(O.keyCount, ' keys, ').concat(O.atlasCount, ' atlases'))
          }
        } catch (R) {
          C.e(R)
        } finally {
          C.f()
        }
        console.log('')
      }
    }
  }
  function iet(t, e) {
    for (var r = atob(t), n = new ArrayBuffer(r.length), i = new Uint8Array(n), a = 0; a < r.length; a++) i[a] = r.charCodeAt(a)
    return new Blob([n], { type: e })
  }
  function nge(t) {
    var e = t.indexOf(',')
    return t.substr(e + 1)
  }
  function U1e(t, e, r) {
    var n = o(function () {
      return e.toDataURL(r, t.quality)
    }, 'getB64Uri')
    switch (t.output) {
      case 'blob-promise':
        return new sy(function (i, a) {
          try {
            e.toBlob(
              function (s) {
                s != null ? i(s) : a(new Error('`canvas.toBlob()` sent a null value in its callback'))
              },
              r,
              t.quality
            )
          } catch (s) {
            a(s)
          }
        })
      case 'blob':
        return iet(nge(n()), r)
      case 'base64':
        return nge(n())
      case 'base64uri':
      default:
        return n()
    }
  }
  function W1e(t) {
    var e = this,
      r = e.cy.window(),
      n = r.document
    t.webgl && ((Sr.CANVAS_LAYERS = e.CANVAS_LAYERS = 4), console.log('webgl rendering enabled')),
      (e.data = {
        canvases: new Array(Sr.CANVAS_LAYERS),
        contexts: new Array(Sr.CANVAS_LAYERS),
        canvasNeedsRedraw: new Array(Sr.CANVAS_LAYERS),
        bufferCanvases: new Array(Sr.BUFFER_COUNT),
        bufferContexts: new Array(Sr.CANVAS_LAYERS)
      })
    var i = '-webkit-tap-highlight-color',
      a = 'rgba(0,0,0,0)'
    e.data.canvasContainer = n.createElement('div')
    var s = e.data.canvasContainer.style
    ;(e.data.canvasContainer.style[i] = a), (s.position = 'relative'), (s.zIndex = '0'), (s.overflow = 'hidden')
    var l = t.cy.container()
    l.appendChild(e.data.canvasContainer), (l.style[i] = a)
    var u = { '-webkit-user-select': 'none', '-moz-user-select': '-moz-none', 'user-select': 'none', '-webkit-tap-highlight-color': 'rgba(0,0,0,0)', 'outline-style': 'none' }
    kqe() && ((u['-ms-touch-action'] = 'none'), (u['touch-action'] = 'none'))
    for (var h = 0; h < Sr.CANVAS_LAYERS; h++) {
      var f = (e.data.canvases[h] = n.createElement('canvas')),
        d = Sr.CANVAS_TYPES[h]
      ;(e.data.contexts[h] = f.getContext(d)),
        e.data.contexts[h] || oi('Could not create canvas of type ' + d),
        Object.keys(u).forEach(function (Q) {
          f.style[Q] = u[Q]
        }),
        (f.style.position = 'absolute'),
        f.setAttribute('data-id', 'layer' + h),
        (f.style.zIndex = String(Sr.CANVAS_LAYERS - h)),
        e.data.canvasContainer.appendChild(f),
        (e.data.canvasNeedsRedraw[h] = !1)
    }
    ;(e.data.topCanvas = e.data.canvases[0]),
      e.data.canvases[Sr.NODE].setAttribute('data-id', 'layer' + Sr.NODE + '-node'),
      e.data.canvases[Sr.SELECT_BOX].setAttribute('data-id', 'layer' + Sr.SELECT_BOX + '-selectbox'),
      e.data.canvases[Sr.DRAG].setAttribute('data-id', 'layer' + Sr.DRAG + '-drag'),
      e.data.canvases[Sr.WEBGL] && e.data.canvases[Sr.WEBGL].setAttribute('data-id', 'layer' + Sr.WEBGL + '-webgl')
    for (var h = 0; h < Sr.BUFFER_COUNT; h++)
      (e.data.bufferCanvases[h] = n.createElement('canvas')),
        (e.data.bufferContexts[h] = e.data.bufferCanvases[h].getContext('2d')),
        (e.data.bufferCanvases[h].style.position = 'absolute'),
        e.data.bufferCanvases[h].setAttribute('data-id', 'buffer' + h),
        (e.data.bufferCanvases[h].style.zIndex = String(-h - 1)),
        (e.data.bufferCanvases[h].style.visibility = 'hidden')
    e.pathsEnabled = !0
    var p = Ys(),
      m = o(function (j) {
        return { x: (j.x1 + j.x2) / 2, y: (j.y1 + j.y2) / 2 }
      }, 'getBoxCenter'),
      g = o(function (j) {
        return { x: -j.w / 2, y: -j.h / 2 }
      }, 'getCenterOffset'),
      y = o(function (j) {
        var ne = j[0]._private,
          te = ne.oldBackgroundTimestamp === ne.backgroundTimestamp
        return !te
      }, 'backgroundTimestampHasChanged'),
      v = o(function (j) {
        return j[0]._private.nodeKey
      }, 'getStyleKey'),
      x = o(function (j) {
        return j[0]._private.labelStyleKey
      }, 'getLabelKey'),
      b = o(function (j) {
        return j[0]._private.sourceLabelStyleKey
      }, 'getSourceLabelKey'),
      T = o(function (j) {
        return j[0]._private.targetLabelStyleKey
      }, 'getTargetLabelKey'),
      S = o(function (j, ne, te, he, le) {
        return e.drawElement(j, ne, te, !1, !1, le)
      }, 'drawElement'),
      w = o(function (j, ne, te, he, le) {
        return e.drawElementText(j, ne, te, he, 'main', le)
      }, 'drawLabel'),
      E = o(function (j, ne, te, he, le) {
        return e.drawElementText(j, ne, te, he, 'source', le)
      }, 'drawSourceLabel'),
      _ = o(function (j, ne, te, he, le) {
        return e.drawElementText(j, ne, te, he, 'target', le)
      }, 'drawTargetLabel'),
      C = o(function (j) {
        return j.boundingBox(), j[0]._private.bodyBounds
      }, 'getElementBox'),
      D = o(function (j) {
        return j.boundingBox(), j[0]._private.labelBounds.main || p
      }, 'getLabelBox'),
      O = o(function (j) {
        return j.boundingBox(), j[0]._private.labelBounds.source || p
      }, 'getSourceLabelBox'),
      R = o(function (j) {
        return j.boundingBox(), j[0]._private.labelBounds.target || p
      }, 'getTargetLabelBox'),
      k = o(function (j, ne) {
        return ne
      }, 'isLabelVisibleAtScale'),
      L = o(function (j) {
        return m(C(j))
      }, 'getElementRotationPoint'),
      A = o(function (j, ne, te) {
        var he = j ? j + '-' : ''
        return { x: ne.x + te.pstyle(he + 'text-margin-x').pfValue, y: ne.y + te.pstyle(he + 'text-margin-y').pfValue }
      }, 'addTextMargin'),
      I = o(function (j, ne, te) {
        var he = j[0]._private.rscratch
        return { x: he[ne], y: he[te] }
      }, 'getRsPt'),
      M = o(function (j) {
        return A('', I(j, 'labelX', 'labelY'), j)
      }, 'getLabelRotationPoint'),
      P = o(function (j) {
        return A('source', I(j, 'sourceLabelX', 'sourceLabelY'), j)
      }, 'getSourceLabelRotationPoint'),
      B = o(function (j) {
        return A('target', I(j, 'targetLabelX', 'targetLabelY'), j)
      }, 'getTargetLabelRotationPoint'),
      F = o(function (j) {
        return g(C(j))
      }, 'getElementRotationOffset'),
      z = o(function (j) {
        return g(O(j))
      }, 'getSourceLabelRotationOffset'),
      $ = o(function (j) {
        return g(R(j))
      }, 'getTargetLabelRotationOffset'),
      U = o(function (j) {
        var ne = D(j),
          te = g(D(j))
        if (j.isNode()) {
          switch (j.pstyle('text-halign').value) {
            case 'left':
              te.x = -ne.w - (ne.leftPad || 0)
              break
            case 'right':
              te.x = -(ne.rightPad || 0)
              break
          }
          switch (j.pstyle('text-valign').value) {
            case 'top':
              te.y = -ne.h - (ne.topPad || 0)
              break
            case 'bottom':
              te.y = -(ne.botPad || 0)
              break
          }
        }
        return te
      }, 'getLabelRotationOffset'),
      K = (e.data.eleTxrCache = new jb(e, {
        getKey: v,
        doesEleInvalidateKey: y,
        drawElement: S,
        getBoundingBox: C,
        getRotationPoint: L,
        getRotationOffset: F,
        allowEdgeTxrCaching: !1,
        allowParentTxrCaching: !1
      })),
      ee = (e.data.lblTxrCache = new jb(e, { getKey: x, drawElement: w, getBoundingBox: D, getRotationPoint: M, getRotationOffset: U, isVisible: k })),
      Y = (e.data.slbTxrCache = new jb(e, { getKey: b, drawElement: E, getBoundingBox: O, getRotationPoint: P, getRotationOffset: z, isVisible: k })),
      ce = (e.data.tlbTxrCache = new jb(e, { getKey: T, drawElement: _, getBoundingBox: R, getRotationPoint: B, getRotationOffset: $, isVisible: k })),
      Z = (e.data.lyrTxrCache = new R1e(e))
    e.onUpdateEleCalcs(
      o(function (j, ne) {
        K.invalidateElements(ne), ee.invalidateElements(ne), Y.invalidateElements(ne), ce.invalidateElements(ne), Z.invalidateElements(ne)
        for (var te = 0; te < ne.length; te++) {
          var he = ne[te]._private
          he.oldBackgroundTimestamp = he.backgroundTimestamp
        }
      }, 'invalidateTextureCaches')
    )
    var ue = o(function (j) {
      for (var ne = 0; ne < j.length; ne++) Z.enqueueElementRefinement(j[ne].ele)
    }, 'refineInLayers')
    K.onDequeue(ue),
      ee.onDequeue(ue),
      Y.onDequeue(ue),
      ce.onDequeue(ue),
      t.webgl &&
        e.initWebgl(t, {
          getStyleKey: v,
          getLabelKey: x,
          drawElement: S,
          drawLabel: w,
          getElementBox: C,
          getLabelBox: D,
          getElementRotationPoint: L,
          getElementRotationOffset: F,
          getLabelRotationPoint: M,
          getLabelRotationOffset: U
        })
  }
  function X1e(t, e, r) {
    var n = r,
      i = o(function (C) {
        hn('Can not register `' + e + '` for `' + t + '` since `' + C + '` already exists in the prototype and can not be overridden')
      }, 'overrideErr')
    if (t === 'core') {
      if (u4.prototype[e]) return i(e)
      u4.prototype[e] = r
    } else if (t === 'collection') {
      if (Sa.prototype[e]) return i(e)
      Sa.prototype[e] = r
    } else if (t === 'layout') {
      for (
        var a = o(function (C) {
            ;(this.options = C), r.call(this, C), Ur(this._private) || (this._private = {}), (this._private.cy = C.cy), (this._private.listeners = []), this.createEmitter()
          }, 'Layout'),
          s = (a.prototype = Object.create(r.prototype)),
          l = [],
          u = 0;
        u < l.length;
        u++
      ) {
        var h = l[u]
        s[h] =
          s[h] ||
          function () {
            return this
          }
      }
      s.start && !s.run
        ? (s.run = function () {
            return this.start(), this
          })
        : !s.start &&
          s.run &&
          (s.start = function () {
            return this.run(), this
          })
      var f = r.prototype.stop
      ;(s.stop = function () {
        var _ = this.options
        if (_ && _.animate) {
          var C = this.animations
          if (C) for (var D = 0; D < C.length; D++) C[D].stop()
        }
        return f ? f.call(this) : this.emit('layoutstop'), this
      }),
        s.destroy ||
          (s.destroy = function () {
            return this
          }),
        (s.cy = function () {
          return this._private.cy
        })
      var d = o(function (C) {
          return C._private.cy
        }, 'getCy'),
        p = {
          addEventFields: o(function (C, D) {
            ;(D.layout = C), (D.cy = d(C)), (D.target = C)
          }, 'addEventFields'),
          bubble: o(function () {
            return !0
          }, 'bubble'),
          parent: o(function (C) {
            return d(C)
          }, 'parent')
        }
      ir(s, {
        createEmitter: o(function () {
          return (this._private.emitter = new aC(p, this)), this
        }, 'createEmitter'),
        emitter: o(function () {
          return this._private.emitter
        }, 'emitter'),
        on: o(function (C, D) {
          return this.emitter().on(C, D), this
        }, 'on'),
        one: o(function (C, D) {
          return this.emitter().one(C, D), this
        }, 'one'),
        once: o(function (C, D) {
          return this.emitter().one(C, D), this
        }, 'once'),
        removeListener: o(function (C, D) {
          return this.emitter().removeListener(C, D), this
        }, 'removeListener'),
        removeAllListeners: o(function () {
          return this.emitter().removeAllListeners(), this
        }, 'removeAllListeners'),
        emit: o(function (C, D) {
          return this.emitter().emit(C, D), this
        }, 'emit')
      }),
        un.eventAliasesOn(s),
        (n = a)
    } else if (t === 'renderer' && e !== 'null' && e !== 'base') {
      var m = j1e('renderer', 'base'),
        g = m.prototype,
        y = r,
        v = r.prototype,
        x = o(function () {
          m.apply(this, arguments), y.apply(this, arguments)
        }, 'Renderer'),
        b = x.prototype
      for (var T in g) {
        var S = g[T],
          w = v[T] != null
        if (w) return i(T)
        b[T] = S
      }
      for (var E in v) b[E] = v[E]
      g.clientFunctions.forEach(function (_) {
        b[_] =
          b[_] ||
          function () {
            oi('Renderer does not implement `renderer.' + _ + '()` on its prototype')
          }
      }),
        (n = x)
    } else if (t === '__proto__' || t === 'constructor' || t === 'prototype') return oi(t + ' is an illegal type to be registered, possibly lead to prototype pollutions')
    return fge({ map: q1e, keys: [t, e], value: n })
  }
  function j1e(t, e) {
    return dge({ map: q1e, keys: [t, e] })
  }
  function uet(t, e, r, n, i) {
    return fge({ map: Y1e, keys: [t, e, r, n], value: i })
  }
  function het(t, e, r, n) {
    return dge({ map: Y1e, keys: [t, e, r, n] })
  }
  var Hi,
    z0e,
    pqe,
    sge,
    mqe,
    gqe,
    h4,
    Zt,
    li,
    En,
    Ur,
    yqe,
    _t,
    vqe,
    F6,
    xo,
    f4,
    oge,
    BB,
    lge,
    xqe,
    Pf,
    bqe,
    Tqe,
    wqe,
    kqe,
    e4,
    FB,
    K6,
    cge,
    G0e,
    Wi,
    Eqe,
    Sqe,
    Cqe,
    Aqe,
    _qe,
    Dqe,
    uge,
    Lqe,
    ir,
    Rqe,
    Nqe,
    Mqe,
    Iqe,
    hge,
    Oqe,
    fge,
    dge,
    Kp,
    Wb,
    Fqe,
    $qe,
    zqe,
    Gqe,
    Q6,
    Vqe,
    nB,
    Uqe,
    Wqe,
    qqe,
    Xqe,
    jqe,
    ty,
    pge,
    Kqe,
    Qqe,
    Fb,
    Jqe,
    eYe,
    tYe,
    nYe,
    iYe,
    aYe,
    V0e,
    mge,
    lYe,
    cYe,
    d4,
    U0e,
    hYe,
    fYe,
    dYe,
    pYe,
    H0e,
    gYe,
    yYe,
    vYe,
    p4,
    iB,
    gge,
    bYe,
    $6,
    nh,
    X1,
    yge,
    qb,
    vge,
    t4,
    r4,
    TYe,
    Lf,
    m6,
    wYe,
    Bf,
    xge,
    kYe,
    W0e,
    EYe,
    SYe,
    $B,
    bge,
    z6,
    q0e,
    zB,
    oi,
    Tge,
    hn,
    CYe,
    Qc,
    AYe,
    wge,
    _Ye,
    kge,
    oa,
    Ff,
    GB,
    DYe,
    Wl,
    Nf,
    LYe,
    Zc,
    RYe,
    NYe,
    ay,
    Z6,
    Y0e,
    n4,
    MYe,
    m4,
    IYe,
    OYe,
    PYe,
    BYe,
    FYe,
    $Ye,
    zYe,
    GYe,
    VYe,
    UYe,
    HYe,
    aB,
    WYe,
    qYe,
    J6,
    Ege,
    j1,
    YYe,
    XYe,
    jYe,
    KYe,
    QYe,
    g6,
    VB,
    Sge,
    Qp,
    Wp,
    ZYe,
    sa,
    Q1,
    JYe,
    i4,
    Ys,
    eXe,
    tXe,
    rXe,
    Cge,
    nXe,
    D6,
    L6,
    X0e,
    UB,
    ry,
    iXe,
    Age,
    _ge,
    aXe,
    sXe,
    oXe,
    lXe,
    cXe,
    uXe,
    qs,
    ih,
    hXe,
    G6,
    V6,
    fXe,
    jp,
    Yb,
    sB,
    Mf,
    a4,
    dXe,
    y6,
    Ts,
    Dge,
    bB,
    Zp,
    Lge,
    HB,
    pXe,
    TB,
    mXe,
    gXe,
    j0e,
    Z1,
    K0e,
    J1,
    yXe,
    wB,
    vXe,
    xXe,
    bXe,
    TXe,
    Rge,
    wXe,
    kXe,
    EXe,
    SXe,
    CXe,
    AXe,
    _Xe,
    Q0e,
    DXe,
    LXe,
    Nge,
    Z0e,
    J0e,
    RXe,
    NXe,
    $b,
    ny,
    MXe,
    WB,
    U6,
    oB,
    Mge,
    Ige,
    IXe,
    OXe,
    PXe,
    eme,
    tme,
    BXe,
    FXe,
    $Xe,
    zXe,
    GXe,
    rme,
    VXe,
    UXe,
    HXe,
    WXe,
    nme,
    v6,
    qXe,
    YXe,
    ime,
    XXe,
    jXe,
    KXe,
    QXe,
    ZXe,
    JXe,
    ame,
    eje,
    sme,
    tje,
    rje,
    nje,
    x6,
    ije,
    b6,
    aje,
    Oge,
    Pge,
    Bge,
    Fge,
    ah,
    ome,
    $ge,
    lme,
    cme,
    sje,
    sy,
    kB,
    Jp,
    oje,
    lje,
    tC,
    cje,
    uje,
    fje,
    dje,
    pje,
    mje,
    gje,
    vje,
    xje,
    lB,
    ume,
    Tje,
    wje,
    kje,
    Sje,
    Cje,
    Aje,
    _je,
    Dje,
    Lje,
    Rje,
    Nje,
    Ije,
    Pje,
    qB,
    Fje,
    s4,
    zje,
    Vje,
    Uje,
    Hje,
    Wje,
    Yje,
    Xje,
    jje,
    Qje,
    Zje,
    eKe,
    hme,
    rKe,
    zge,
    rC,
    aKe,
    sKe,
    lKe,
    uKe,
    fKe,
    pKe,
    mKe,
    gKe,
    yKe,
    xKe,
    TKe,
    nC,
    EKe,
    CKe,
    _Ke,
    LKe,
    Gge,
    RKe,
    NKe,
    MKe,
    OKe,
    PKe,
    BKe,
    FKe,
    Vge,
    Uge,
    zKe,
    fme,
    dme,
    GKe,
    Wge,
    qge,
    HKe,
    XB,
    YKe,
    jKe,
    KKe,
    pme,
    ZKe,
    JKe,
    eQe,
    rQe,
    nQe,
    iQe,
    sQe,
    lQe,
    uQe,
    fQe,
    pQe,
    mQe,
    gQe,
    un,
    yQe,
    R6,
    Vr,
    gn,
    $t,
    EB,
    vQe,
    xQe,
    bQe,
    U1,
    Rf,
    SB,
    TQe,
    wQe,
    kQe,
    EQe,
    SQe,
    Yge,
    CQe,
    AQe,
    jB,
    _Qe,
    pi,
    Vn,
    DQe,
    LQe,
    RQe,
    $f,
    zf,
    If,
    al,
    iy,
    o4,
    Kge,
    MQe,
    iC,
    ql,
    Qge,
    Zge,
    mme,
    IQe,
    ey,
    Hf,
    il,
    Hl,
    qp,
    zb,
    T6,
    uB,
    OQe,
    PQe,
    Jge,
    e1e,
    gme,
    l4,
    yme,
    vme,
    BQe,
    Xb,
    g4,
    t1e,
    FQe,
    $Qe,
    zQe,
    GQe,
    VQe,
    UQe,
    HQe,
    WQe,
    qQe,
    xme,
    YQe,
    XQe,
    jQe,
    r1e,
    n1e,
    KQe,
    i1e,
    bme,
    QQe,
    Gf,
    a1e,
    Tme,
    ZQe,
    JQe,
    k6,
    s1e,
    o1e,
    Qr,
    eZe,
    l1e,
    H6,
    tZe,
    rZe,
    N6,
    Ea,
    uy,
    nZe,
    iZe,
    aZe,
    sZe,
    Of,
    Ha,
    kme,
    Eme,
    Sme,
    Sa,
    Mn,
    oZe,
    cZe,
    Nn,
    M6,
    fZe,
    dZe,
    E6,
    u1e,
    CB,
    I6,
    pZe,
    mZe,
    AB,
    O6,
    qa,
    Kb,
    gZe,
    y4,
    ZB,
    Jc,
    lC,
    JB,
    ka,
    cC,
    Ua,
    Wa,
    yZe,
    vZe,
    e0,
    c4,
    u4,
    W6,
    xZe,
    bZe,
    q1,
    Nme,
    TZe,
    wZe,
    fB,
    kZe,
    EZe,
    SZe,
    CZe,
    AZe,
    _Ze,
    p1e,
    DZe,
    LZe,
    RZe,
    Mme,
    NZe,
    MZe,
    q6,
    IZe,
    OZe,
    PZe,
    BZe,
    FZe,
    $Ze,
    Ime,
    zZe,
    GZe,
    VZe,
    UZe,
    HZe,
    Ome,
    Pme,
    tF,
    r0,
    Y6,
    _B,
    DB,
    Kc,
    nl,
    Bme,
    Fme,
    Xp,
    P6,
    rh,
    Up,
    Yp,
    jc,
    Y1,
    S6,
    x1e,
    b1e,
    LB,
    RB,
    $me,
    zme,
    WZe,
    qZe,
    Ya,
    v4,
    nF,
    eu,
    k1e,
    E1e,
    XZe,
    S1e,
    Gme,
    Vme,
    hC,
    fC,
    C1e,
    A1e,
    fy,
    sh,
    x4,
    Ume,
    jZe,
    _1e,
    dy,
    dB,
    D1e,
    KZe,
    Hme,
    C6,
    B6,
    NB,
    L1e,
    QZe,
    ZZe,
    JZe,
    eJe,
    tJe,
    rJe,
    nJe,
    iJe,
    aJe,
    sJe,
    oJe,
    lJe,
    cJe,
    K1,
    uJe,
    jb,
    Yi,
    hJe,
    Qb,
    X6,
    fJe,
    dJe,
    pJe,
    mJe,
    gJe,
    yJe,
    vJe,
    xJe,
    Wme,
    bJe,
    qme,
    TJe,
    R1e,
    Ca,
    Yme,
    wJe,
    N1e,
    Xme,
    tu,
    AJe,
    _Je,
    DJe,
    LJe,
    RJe,
    pB,
    oh,
    M1e,
    iF,
    n0,
    py,
    I1e,
    ws,
    NJe,
    Ub,
    Qme,
    Jb,
    Hb,
    VJe,
    UJe,
    WJe,
    yB,
    Zme,
    Jme,
    vB,
    qJe,
    YJe,
    $1e,
    Wf,
    tge,
    rge,
    MB,
    IB,
    V1e,
    Hp,
    b4,
    H1e,
    aet,
    Sr,
    set,
    oet,
    cet,
    q1e,
    Y1e,
    OB,
    K1e,
    t0,
    fet,
    sl,
    oF = N(() => {
      'use strict'
      o(qi, '_typeof')
      o(Vf, '_classCallCheck')
      o($0e, '_defineProperties')
      o(Uf, '_createClass')
      o(ige, '_defineProperty$1')
      o(Ri, '_slicedToArray')
      o(age, '_toConsumableArray')
      o(lqe, '_arrayWithoutHoles')
      o(cqe, '_arrayWithHoles')
      o(uqe, '_iterableToArray')
      o(hqe, '_iterableToArrayLimit')
      o(PB, '_unsupportedIterableToArray')
      o(xB, '_arrayLikeToArray')
      o(fqe, '_nonIterableSpread')
      o(dqe, '_nonIterableRest')
      o(vo, '_createForOfIteratorHelper')
      ;(Hi = typeof window > 'u' ? null : window), (z0e = Hi ? Hi.navigator : null)
      Hi && Hi.document
      ;(pqe = qi('')),
        (sge = qi({})),
        (mqe = qi(function () {})),
        (gqe = typeof HTMLElement > 'u' ? 'undefined' : qi(HTMLElement)),
        (h4 = o(function (e) {
          return e && e.instanceString && li(e.instanceString) ? e.instanceString() : null
        }, 'instanceStr')),
        (Zt = o(function (e) {
          return e != null && qi(e) == pqe
        }, 'string')),
        (li = o(function (e) {
          return e != null && qi(e) === mqe
        }, 'fn')),
        (En = o(function (e) {
          return !xo(e) && (Array.isArray ? Array.isArray(e) : e != null && e instanceof Array)
        }, 'array')),
        (Ur = o(function (e) {
          return e != null && qi(e) === sge && !En(e) && e.constructor === Object
        }, 'plainObject')),
        (yqe = o(function (e) {
          return e != null && qi(e) === sge
        }, 'object')),
        (_t = o(function (e) {
          return e != null && qi(e) === qi(1) && !isNaN(e)
        }, 'number')),
        (vqe = o(function (e) {
          return _t(e) && Math.floor(e) === e
        }, 'integer')),
        (F6 = o(function (e) {
          if (gqe !== 'undefined') return e != null && e instanceof HTMLElement
        }, 'htmlElement')),
        (xo = o(function (e) {
          return f4(e) || oge(e)
        }, 'elementOrCollection')),
        (f4 = o(function (e) {
          return h4(e) === 'collection' && e._private.single
        }, 'element')),
        (oge = o(function (e) {
          return h4(e) === 'collection' && !e._private.single
        }, 'collection')),
        (BB = o(function (e) {
          return h4(e) === 'core'
        }, 'core')),
        (lge = o(function (e) {
          return h4(e) === 'stylesheet'
        }, 'stylesheet')),
        (xqe = o(function (e) {
          return h4(e) === 'event'
        }, 'event')),
        (Pf = o(function (e) {
          return e == null ? !0 : !!(e === '' || e.match(/^\s+$/))
        }, 'emptyString')),
        (bqe = o(function (e) {
          return typeof HTMLElement > 'u' ? !1 : e instanceof HTMLElement
        }, 'domElement')),
        (Tqe = o(function (e) {
          return Ur(e) && _t(e.x1) && _t(e.x2) && _t(e.y1) && _t(e.y2)
        }, 'boundingBox')),
        (wqe = o(function (e) {
          return yqe(e) && li(e.then)
        }, 'promise')),
        (kqe = o(function () {
          return z0e && z0e.userAgent.match(/msie|trident|edge/i)
        }, 'ms')),
        (e4 = o(function (e, r) {
          r ||
            (r = o(function () {
              if (arguments.length === 1) return arguments[0]
              if (arguments.length === 0) return 'undefined'
              for (var a = [], s = 0; s < arguments.length; s++) a.push(arguments[s])
              return a.join('$')
            }, 'keyFn'))
          var n = o(function i() {
            var a = this,
              s = arguments,
              l,
              u = r.apply(a, s),
              h = i.cache
            return (l = h[u]) || (l = h[u] = e.apply(a, s)), l
          }, 'memoizedFn')
          return (n.cache = {}), n
        }, 'memoize')),
        (FB = e4(function (t) {
          return t.replace(/([A-Z])/g, function (e) {
            return '-' + e.toLowerCase()
          })
        })),
        (K6 = e4(function (t) {
          return t.replace(/(-\w)/g, function (e) {
            return e[1].toUpperCase()
          })
        })),
        (cge = e4(
          function (t, e) {
            return t + e[0].toUpperCase() + e.substring(1)
          },
          function (t, e) {
            return t + '$' + e
          }
        )),
        (G0e = o(function (e) {
          return Pf(e) ? e : e.charAt(0).toUpperCase() + e.substring(1)
        }, 'capitalize')),
        (Wi = '(?:[-+]?(?:(?:\\d+|\\d*\\.\\d+)(?:[Ee][+-]?\\d+)?))'),
        (Eqe = 'rgb[a]?\\((' + Wi + '[%]?)\\s*,\\s*(' + Wi + '[%]?)\\s*,\\s*(' + Wi + '[%]?)(?:\\s*,\\s*(' + Wi + '))?\\)'),
        (Sqe = 'rgb[a]?\\((?:' + Wi + '[%]?)\\s*,\\s*(?:' + Wi + '[%]?)\\s*,\\s*(?:' + Wi + '[%]?)(?:\\s*,\\s*(?:' + Wi + '))?\\)'),
        (Cqe = 'hsl[a]?\\((' + Wi + ')\\s*,\\s*(' + Wi + '[%])\\s*,\\s*(' + Wi + '[%])(?:\\s*,\\s*(' + Wi + '))?\\)'),
        (Aqe = 'hsl[a]?\\((?:' + Wi + ')\\s*,\\s*(?:' + Wi + '[%])\\s*,\\s*(?:' + Wi + '[%])(?:\\s*,\\s*(?:' + Wi + '))?\\)'),
        (_qe = '\\#[0-9a-fA-F]{3}'),
        (Dqe = '\\#[0-9a-fA-F]{6}'),
        (uge = o(function (e, r) {
          return e < r ? -1 : e > r ? 1 : 0
        }, 'ascending')),
        (Lqe = o(function (e, r) {
          return -1 * uge(e, r)
        }, 'descending')),
        (ir =
          Object.assign != null
            ? Object.assign.bind(Object)
            : function (t) {
                for (var e = arguments, r = 1; r < e.length; r++) {
                  var n = e[r]
                  if (n != null)
                    for (var i = Object.keys(n), a = 0; a < i.length; a++) {
                      var s = i[a]
                      t[s] = n[s]
                    }
                }
                return t
              }),
        (Rqe = o(function (e) {
          if (!(!(e.length === 4 || e.length === 7) || e[0] !== '#')) {
            var r = e.length === 4,
              n,
              i,
              a,
              s = 16
            return (
              r
                ? ((n = parseInt(e[1] + e[1], s)), (i = parseInt(e[2] + e[2], s)), (a = parseInt(e[3] + e[3], s)))
                : ((n = parseInt(e[1] + e[2], s)), (i = parseInt(e[3] + e[4], s)), (a = parseInt(e[5] + e[6], s))),
              [n, i, a]
            )
          }
        }, 'hex2tuple')),
        (Nqe = o(function (e) {
          var r, n, i, a, s, l, u, h
          function f(g, y, v) {
            return v < 0 && (v += 1), v > 1 && (v -= 1), v < 1 / 6 ? g + (y - g) * 6 * v : v < 1 / 2 ? y : v < 2 / 3 ? g + (y - g) * (2 / 3 - v) * 6 : g
          }
          o(f, 'hue2rgb')
          var d = new RegExp('^' + Cqe + '$').exec(e)
          if (d) {
            if (
              ((n = parseInt(d[1])),
              n < 0 ? (n = (360 - ((-1 * n) % 360)) % 360) : n > 360 && (n = n % 360),
              (n /= 360),
              (i = parseFloat(d[2])),
              i < 0 || i > 100 || ((i = i / 100), (a = parseFloat(d[3])), a < 0 || a > 100) || ((a = a / 100), (s = d[4]), s !== void 0 && ((s = parseFloat(s)), s < 0 || s > 1)))
            )
              return
            if (i === 0) l = u = h = Math.round(a * 255)
            else {
              var p = a < 0.5 ? a * (1 + i) : a + i - a * i,
                m = 2 * a - p
              ;(l = Math.round(255 * f(m, p, n + 1 / 3))), (u = Math.round(255 * f(m, p, n))), (h = Math.round(255 * f(m, p, n - 1 / 3)))
            }
            r = [l, u, h, s]
          }
          return r
        }, 'hsl2tuple')),
        (Mqe = o(function (e) {
          var r,
            n = new RegExp('^' + Eqe + '$').exec(e)
          if (n) {
            r = []
            for (var i = [], a = 1; a <= 3; a++) {
              var s = n[a]
              if ((s[s.length - 1] === '%' && (i[a] = !0), (s = parseFloat(s)), i[a] && (s = (s / 100) * 255), s < 0 || s > 255)) return
              r.push(Math.floor(s))
            }
            var l = i[1] || i[2] || i[3],
              u = i[1] && i[2] && i[3]
            if (l && !u) return
            var h = n[4]
            if (h !== void 0) {
              if (((h = parseFloat(h)), h < 0 || h > 1)) return
              r.push(h)
            }
          }
          return r
        }, 'rgb2tuple')),
        (Iqe = o(function (e) {
          return Oqe[e.toLowerCase()]
        }, 'colorname2tuple')),
        (hge = o(function (e) {
          return (En(e) ? e : null) || Iqe(e) || Rqe(e) || Mqe(e) || Nqe(e)
        }, 'color2tuple')),
        (Oqe = {
          transparent: [0, 0, 0, 0],
          aliceblue: [240, 248, 255],
          antiquewhite: [250, 235, 215],
          aqua: [0, 255, 255],
          aquamarine: [127, 255, 212],
          azure: [240, 255, 255],
          beige: [245, 245, 220],
          bisque: [255, 228, 196],
          black: [0, 0, 0],
          blanchedalmond: [255, 235, 205],
          blue: [0, 0, 255],
          blueviolet: [138, 43, 226],
          brown: [165, 42, 42],
          burlywood: [222, 184, 135],
          cadetblue: [95, 158, 160],
          chartreuse: [127, 255, 0],
          chocolate: [210, 105, 30],
          coral: [255, 127, 80],
          cornflowerblue: [100, 149, 237],
          cornsilk: [255, 248, 220],
          crimson: [220, 20, 60],
          cyan: [0, 255, 255],
          darkblue: [0, 0, 139],
          darkcyan: [0, 139, 139],
          darkgoldenrod: [184, 134, 11],
          darkgray: [169, 169, 169],
          darkgreen: [0, 100, 0],
          darkgrey: [169, 169, 169],
          darkkhaki: [189, 183, 107],
          darkmagenta: [139, 0, 139],
          darkolivegreen: [85, 107, 47],
          darkorange: [255, 140, 0],
          darkorchid: [153, 50, 204],
          darkred: [139, 0, 0],
          darksalmon: [233, 150, 122],
          darkseagreen: [143, 188, 143],
          darkslateblue: [72, 61, 139],
          darkslategray: [47, 79, 79],
          darkslategrey: [47, 79, 79],
          darkturquoise: [0, 206, 209],
          darkviolet: [148, 0, 211],
          deeppink: [255, 20, 147],
          deepskyblue: [0, 191, 255],
          dimgray: [105, 105, 105],
          dimgrey: [105, 105, 105],
          dodgerblue: [30, 144, 255],
          firebrick: [178, 34, 34],
          floralwhite: [255, 250, 240],
          forestgreen: [34, 139, 34],
          fuchsia: [255, 0, 255],
          gainsboro: [220, 220, 220],
          ghostwhite: [248, 248, 255],
          gold: [255, 215, 0],
          goldenrod: [218, 165, 32],
          gray: [128, 128, 128],
          grey: [128, 128, 128],
          green: [0, 128, 0],
          greenyellow: [173, 255, 47],
          honeydew: [240, 255, 240],
          hotpink: [255, 105, 180],
          indianred: [205, 92, 92],
          indigo: [75, 0, 130],
          ivory: [255, 255, 240],
          khaki: [240, 230, 140],
          lavender: [230, 230, 250],
          lavenderblush: [255, 240, 245],
          lawngreen: [124, 252, 0],
          lemonchiffon: [255, 250, 205],
          lightblue: [173, 216, 230],
          lightcoral: [240, 128, 128],
          lightcyan: [224, 255, 255],
          lightgoldenrodyellow: [250, 250, 210],
          lightgray: [211, 211, 211],
          lightgreen: [144, 238, 144],
          lightgrey: [211, 211, 211],
          lightpink: [255, 182, 193],
          lightsalmon: [255, 160, 122],
          lightseagreen: [32, 178, 170],
          lightskyblue: [135, 206, 250],
          lightslategray: [119, 136, 153],
          lightslategrey: [119, 136, 153],
          lightsteelblue: [176, 196, 222],
          lightyellow: [255, 255, 224],
          lime: [0, 255, 0],
          limegreen: [50, 205, 50],
          linen: [250, 240, 230],
          magenta: [255, 0, 255],
          maroon: [128, 0, 0],
          mediumaquamarine: [102, 205, 170],
          mediumblue: [0, 0, 205],
          mediumorchid: [186, 85, 211],
          mediumpurple: [147, 112, 219],
          mediumseagreen: [60, 179, 113],
          mediumslateblue: [123, 104, 238],
          mediumspringgreen: [0, 250, 154],
          mediumturquoise: [72, 209, 204],
          mediumvioletred: [199, 21, 133],
          midnightblue: [25, 25, 112],
          mintcream: [245, 255, 250],
          mistyrose: [255, 228, 225],
          moccasin: [255, 228, 181],
          navajowhite: [255, 222, 173],
          navy: [0, 0, 128],
          oldlace: [253, 245, 230],
          olive: [128, 128, 0],
          olivedrab: [107, 142, 35],
          orange: [255, 165, 0],
          orangered: [255, 69, 0],
          orchid: [218, 112, 214],
          palegoldenrod: [238, 232, 170],
          palegreen: [152, 251, 152],
          paleturquoise: [175, 238, 238],
          palevioletred: [219, 112, 147],
          papayawhip: [255, 239, 213],
          peachpuff: [255, 218, 185],
          peru: [205, 133, 63],
          pink: [255, 192, 203],
          plum: [221, 160, 221],
          powderblue: [176, 224, 230],
          purple: [128, 0, 128],
          red: [255, 0, 0],
          rosybrown: [188, 143, 143],
          royalblue: [65, 105, 225],
          saddlebrown: [139, 69, 19],
          salmon: [250, 128, 114],
          sandybrown: [244, 164, 96],
          seagreen: [46, 139, 87],
          seashell: [255, 245, 238],
          sienna: [160, 82, 45],
          silver: [192, 192, 192],
          skyblue: [135, 206, 235],
          slateblue: [106, 90, 205],
          slategray: [112, 128, 144],
          slategrey: [112, 128, 144],
          snow: [255, 250, 250],
          springgreen: [0, 255, 127],
          steelblue: [70, 130, 180],
          tan: [210, 180, 140],
          teal: [0, 128, 128],
          thistle: [216, 191, 216],
          tomato: [255, 99, 71],
          turquoise: [64, 224, 208],
          violet: [238, 130, 238],
          wheat: [245, 222, 179],
          white: [255, 255, 255],
          whitesmoke: [245, 245, 245],
          yellow: [255, 255, 0],
          yellowgreen: [154, 205, 50]
        }),
        (fge = o(function (e) {
          for (var r = e.map, n = e.keys, i = n.length, a = 0; a < i; a++) {
            var s = n[a]
            if (Ur(s)) throw Error('Tried to set map with object key')
            a < n.length - 1 ? (r[s] == null && (r[s] = {}), (r = r[s])) : (r[s] = e.value)
          }
        }, 'setMap')),
        (dge = o(function (e) {
          for (var r = e.map, n = e.keys, i = n.length, a = 0; a < i; a++) {
            var s = n[a]
            if (Ur(s)) throw Error('Tried to get map with object key')
            if (((r = r[s]), r == null)) return r
          }
          return r
        }, 'getMap'))
      o(Pqe, 'isObject')
      ;(Kp = Pqe), (Wb = typeof globalThis < 'u' ? globalThis : typeof window < 'u' ? window : typeof global < 'u' ? global : typeof self < 'u' ? self : {})
      o(Bqe, 'createCommonjsModule')
      ;(Fqe = typeof Wb == 'object' && Wb && Wb.Object === Object && Wb),
        ($qe = Fqe),
        (zqe = typeof self == 'object' && self && self.Object === Object && self),
        (Gqe = $qe || zqe || Function('return this')()),
        (Q6 = Gqe),
        (Vqe = o(function () {
          return Q6.Date.now()
        }, 'now')),
        (nB = Vqe),
        (Uqe = /\s/)
      o(Hqe, 'trimmedEndIndex')
      ;(Wqe = Hqe), (qqe = /^\s+/)
      o(Yqe, 'baseTrim')
      ;(Xqe = Yqe), (jqe = Q6.Symbol), (ty = jqe), (pge = Object.prototype), (Kqe = pge.hasOwnProperty), (Qqe = pge.toString), (Fb = ty ? ty.toStringTag : void 0)
      o(Zqe, 'getRawTag')
      ;(Jqe = Zqe), (eYe = Object.prototype), (tYe = eYe.toString)
      o(rYe, 'objectToString')
      ;(nYe = rYe), (iYe = '[object Null]'), (aYe = '[object Undefined]'), (V0e = ty ? ty.toStringTag : void 0)
      o(sYe, 'baseGetTag')
      mge = sYe
      o(oYe, 'isObjectLike')
      ;(lYe = oYe), (cYe = '[object Symbol]')
      o(uYe, 'isSymbol')
      ;(d4 = uYe), (U0e = NaN), (hYe = /^[-+]0x[0-9a-f]+$/i), (fYe = /^0b[01]+$/i), (dYe = /^0o[0-7]+$/i), (pYe = parseInt)
      o(mYe, 'toNumber')
      ;(H0e = mYe), (gYe = 'Expected a function'), (yYe = Math.max), (vYe = Math.min)
      o(xYe, 'debounce')
      ;(p4 = xYe),
        (iB = Hi ? Hi.performance : null),
        (gge =
          iB && iB.now
            ? function () {
                return iB.now()
              }
            : function () {
                return Date.now()
              }),
        (bYe = (function () {
          if (Hi) {
            if (Hi.requestAnimationFrame)
              return function (t) {
                Hi.requestAnimationFrame(t)
              }
            if (Hi.mozRequestAnimationFrame)
              return function (t) {
                Hi.mozRequestAnimationFrame(t)
              }
            if (Hi.webkitRequestAnimationFrame)
              return function (t) {
                Hi.webkitRequestAnimationFrame(t)
              }
            if (Hi.msRequestAnimationFrame)
              return function (t) {
                Hi.msRequestAnimationFrame(t)
              }
          }
          return function (t) {
            t &&
              setTimeout(function () {
                t(gge())
              }, 1e3 / 60)
          }
        })()),
        ($6 = o(function (e) {
          return bYe(e)
        }, 'requestAnimationFrame')),
        (nh = gge),
        (X1 = 9261),
        (yge = 65599),
        (qb = 5381),
        (vge = o(function (e) {
          for (var r = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : X1, n = r, i; (i = e.next()), !i.done; ) n = (n * yge + i.value) | 0
          return n
        }, 'hashIterableInts')),
        (t4 = o(function (e) {
          var r = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : X1
          return (r * yge + e) | 0
        }, 'hashInt')),
        (r4 = o(function (e) {
          var r = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : qb
          return ((r << 5) + r + e) | 0
        }, 'hashIntAlt')),
        (TYe = o(function (e, r) {
          return e * 2097152 + r
        }, 'combineHashes')),
        (Lf = o(function (e) {
          return e[0] * 2097152 + e[1]
        }, 'combineHashesArray')),
        (m6 = o(function (e, r) {
          return [t4(e[0], r[0]), r4(e[1], r[1])]
        }, 'hashArrays')),
        (wYe = o(function (e, r) {
          var n = { value: 0, done: !1 },
            i = 0,
            a = e.length,
            s = {
              next: o(function () {
                return i < a ? (n.value = e[i++]) : (n.done = !0), n
              }, 'next')
            }
          return vge(s, r)
        }, 'hashIntsArray')),
        (Bf = o(function (e, r) {
          var n = { value: 0, done: !1 },
            i = 0,
            a = e.length,
            s = {
              next: o(function () {
                return i < a ? (n.value = e.charCodeAt(i++)) : (n.done = !0), n
              }, 'next')
            }
          return vge(s, r)
        }, 'hashString')),
        (xge = o(function () {
          return kYe(arguments)
        }, 'hashStrings')),
        (kYe = o(function (e) {
          for (var r, n = 0; n < e.length; n++) {
            var i = e[n]
            n === 0 ? (r = Bf(i)) : (r = Bf(i, r))
          }
          return r
        }, 'hashStringsArray')),
        (W0e = !0),
        (EYe = console.warn != null),
        (SYe = console.trace != null),
        ($B = Number.MAX_SAFE_INTEGER || 9007199254740991),
        (bge = o(function () {
          return !0
        }, 'trueify')),
        (z6 = o(function () {
          return !1
        }, 'falsify')),
        (q0e = o(function () {
          return 0
        }, 'zeroify')),
        (zB = o(function () {}, 'noop')),
        (oi = o(function (e) {
          throw new Error(e)
        }, 'error')),
        (Tge = o(function (e) {
          if (e !== void 0) W0e = !!e
          else return W0e
        }, 'warnings')),
        (hn = o(function (e) {
          Tge() && (EYe ? console.warn(e) : (console.log(e), SYe && console.trace()))
        }, 'warn')),
        (CYe = o(function (e) {
          return ir({}, e)
        }, 'clone')),
        (Qc = o(function (e) {
          return e == null ? e : En(e) ? e.slice() : Ur(e) ? CYe(e) : e
        }, 'copy')),
        (AYe = o(function (e) {
          return e.slice()
        }, 'copyArray')),
        (wge = o(function (e, r) {
          for (r = e = ''; e++ < 36; r += (e * 51) & 52 ? (e ^ 15 ? 8 ^ (Math.random() * (e ^ 20 ? 16 : 4)) : 4).toString(16) : '-');
          return r
        }, 'uuid')),
        (_Ye = {}),
        (kge = o(function () {
          return _Ye
        }, 'staticEmptyObject')),
        (oa = o(function (e) {
          var r = Object.keys(e)
          return function (n) {
            for (var i = {}, a = 0; a < r.length; a++) {
              var s = r[a],
                l = n?.[s]
              i[s] = l === void 0 ? e[s] : l
            }
            return i
          }
        }, 'defaults')),
        (Ff = o(function (e, r, n) {
          for (var i = e.length - 1; i >= 0 && !(e[i] === r && (e.splice(i, 1), n)); i--);
        }, 'removeFromArray')),
        (GB = o(function (e) {
          e.splice(0, e.length)
        }, 'clearArray')),
        (DYe = o(function (e, r) {
          for (var n = 0; n < r.length; n++) {
            var i = r[n]
            e.push(i)
          }
        }, 'push')),
        (Wl = o(function (e, r, n) {
          return n && (r = cge(n, r)), e[r]
        }, 'getPrefixedProperty')),
        (Nf = o(function (e, r, n, i) {
          n && (r = cge(n, r)), (e[r] = i)
        }, 'setPrefixedProperty')),
        (LYe = (function () {
          function t() {
            Vf(this, t), (this._obj = {})
          }
          return (
            o(t, 'ObjectMap'),
            Uf(t, [
              {
                key: 'set',
                value: o(function (r, n) {
                  return (this._obj[r] = n), this
                }, 'set')
              },
              {
                key: 'delete',
                value: o(function (r) {
                  return (this._obj[r] = void 0), this
                }, '_delete')
              },
              {
                key: 'clear',
                value: o(function () {
                  this._obj = {}
                }, 'clear')
              },
              {
                key: 'has',
                value: o(function (r) {
                  return this._obj[r] !== void 0
                }, 'has')
              },
              {
                key: 'get',
                value: o(function (r) {
                  return this._obj[r]
                }, 'get')
              }
            ]),
            t
          )
        })()),
        (Zc = typeof Map < 'u' ? Map : LYe),
        (RYe = 'undefined'),
        (NYe = (function () {
          function t(e) {
            if ((Vf(this, t), (this._obj = Object.create(null)), (this.size = 0), e != null)) {
              var r
              e.instanceString != null && e.instanceString() === this.instanceString() ? (r = e.toArray()) : (r = e)
              for (var n = 0; n < r.length; n++) this.add(r[n])
            }
          }
          return (
            o(t, 'ObjectSet'),
            Uf(t, [
              {
                key: 'instanceString',
                value: o(function () {
                  return 'set'
                }, 'instanceString')
              },
              {
                key: 'add',
                value: o(function (r) {
                  var n = this._obj
                  n[r] !== 1 && ((n[r] = 1), this.size++)
                }, 'add')
              },
              {
                key: 'delete',
                value: o(function (r) {
                  var n = this._obj
                  n[r] === 1 && ((n[r] = 0), this.size--)
                }, '_delete')
              },
              {
                key: 'clear',
                value: o(function () {
                  this._obj = Object.create(null)
                }, 'clear')
              },
              {
                key: 'has',
                value: o(function (r) {
                  return this._obj[r] === 1
                }, 'has')
              },
              {
                key: 'toArray',
                value: o(function () {
                  var r = this
                  return Object.keys(this._obj).filter(function (n) {
                    return r.has(n)
                  })
                }, 'toArray')
              },
              {
                key: 'forEach',
                value: o(function (r, n) {
                  return this.toArray().forEach(r, n)
                }, 'forEach')
              }
            ]),
            t
          )
        })()),
        (ay = (typeof Set > 'u' ? 'undefined' : qi(Set)) !== RYe ? Set : NYe),
        (Z6 = o(function (e, r) {
          var n = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : !0
          if (e === void 0 || r === void 0 || !BB(e)) {
            oi('An element must have a core reference and parameters set')
            return
          }
          var i = r.group
          if ((i == null && (r.data && r.data.source != null && r.data.target != null ? (i = 'edges') : (i = 'nodes')), i !== 'nodes' && i !== 'edges')) {
            oi('An element must be of type `nodes` or `edges`; you specified `' + i + '`')
            return
          }
          ;(this.length = 1), (this[0] = this)
          var a = (this._private = {
            cy: e,
            single: !0,
            data: r.data || {},
            position: r.position || { x: 0, y: 0 },
            autoWidth: void 0,
            autoHeight: void 0,
            autoPadding: void 0,
            compoundBoundsClean: !1,
            listeners: [],
            group: i,
            style: {},
            rstyle: {},
            styleCxts: [],
            styleKeys: {},
            removed: !0,
            selected: !!r.selected,
            selectable: r.selectable === void 0 ? !0 : !!r.selectable,
            locked: !!r.locked,
            grabbed: !1,
            grabbable: r.grabbable === void 0 ? !0 : !!r.grabbable,
            pannable: r.pannable === void 0 ? i === 'edges' : !!r.pannable,
            active: !1,
            classes: new ay(),
            animation: { current: [], queue: [] },
            rscratch: {},
            scratch: r.scratch || {},
            edges: [],
            children: [],
            parent: r.parent && r.parent.isNode() ? r.parent : null,
            traversalCache: {},
            backgrounding: !1,
            bbCache: null,
            bbCacheShift: { x: 0, y: 0 },
            bodyBounds: null,
            overlayBounds: null,
            labelBounds: { all: null, source: null, target: null, main: null },
            arrowBounds: { source: null, target: null, 'mid-source': null, 'mid-target': null }
          })
          if ((a.position.x == null && (a.position.x = 0), a.position.y == null && (a.position.y = 0), r.renderedPosition)) {
            var s = r.renderedPosition,
              l = e.pan(),
              u = e.zoom()
            a.position = { x: (s.x - l.x) / u, y: (s.y - l.y) / u }
          }
          var h = []
          En(r.classes) ? (h = r.classes) : Zt(r.classes) && (h = r.classes.split(/\s+/))
          for (var f = 0, d = h.length; f < d; f++) {
            var p = h[f]
            !p || p === '' || a.classes.add(p)
          }
          this.createEmitter()
          var m = r.style || r.css
          m && (hn('Setting a `style` bypass at element creation should be done only when absolutely necessary.  Try to use the stylesheet instead.'), this.style(m)),
            (n === void 0 || n) && this.restore()
        }, 'Element')),
        (Y0e = o(function (e) {
          return (
            (e = { bfs: e.bfs || !e.dfs, dfs: e.dfs || !e.bfs }),
            o(function (n, i, a) {
              var s
              Ur(n) && !xo(n) && ((s = n), (n = s.roots || s.root), (i = s.visit), (a = s.directed)),
                (a = arguments.length === 2 && !li(i) ? i : a),
                (i = li(i) ? i : function () {})
              for (
                var l = this._private.cy,
                  u = (n = Zt(n) ? this.filter(n) : n),
                  h = [],
                  f = [],
                  d = {},
                  p = {},
                  m = {},
                  g = 0,
                  y,
                  v = this.byGroup(),
                  x = v.nodes,
                  b = v.edges,
                  T = 0;
                T < u.length;
                T++
              ) {
                var S = u[T],
                  w = S.id()
                S.isNode() && (h.unshift(S), e.bfs && ((m[w] = !0), f.push(S)), (p[w] = 0))
              }
              for (
                var E = o(function () {
                  var L = e.bfs ? h.shift() : h.pop(),
                    A = L.id()
                  if (e.dfs) {
                    if (m[A]) return 'continue'
                    ;(m[A] = !0), f.push(L)
                  }
                  var I = p[A],
                    M = d[A],
                    P = M != null ? M.source() : null,
                    B = M != null ? M.target() : null,
                    F = M == null ? void 0 : L.same(P) ? B[0] : P[0],
                    z = void 0
                  if (((z = i(L, M, F, g++, I)), z === !0)) return (y = L), 'break'
                  if (z === !1) return 'break'
                  for (
                    var $ = L.connectedEdges().filter(function (ce) {
                        return (!a || ce.source().same(L)) && b.has(ce)
                      }),
                      U = 0;
                    U < $.length;
                    U++
                  ) {
                    var K = $[U],
                      ee = K.connectedNodes().filter(function (ce) {
                        return !ce.same(L) && x.has(ce)
                      }),
                      Y = ee.id()
                    ee.length !== 0 && !m[Y] && ((ee = ee[0]), h.push(ee), e.bfs && ((m[Y] = !0), f.push(ee)), (d[Y] = K), (p[Y] = p[A] + 1))
                  }
                }, '_loop');
                h.length !== 0;

              ) {
                var _ = E()
                if (_ !== 'continue' && _ === 'break') break
              }
              for (var C = l.collection(), D = 0; D < f.length; D++) {
                var O = f[D],
                  R = d[O.id()]
                R != null && C.push(R), C.push(O)
              }
              return { path: l.collection(C), found: l.collection(y) }
            }, 'searchFn')
          )
        }, 'defineSearch')),
        (n4 = { breadthFirstSearch: Y0e({ bfs: !0 }), depthFirstSearch: Y0e({ dfs: !0 }) })
      n4.bfs = n4.breadthFirstSearch
      n4.dfs = n4.depthFirstSearch
      ;(MYe = Bqe(function (t, e) {
        ;(function () {
          var r, n, i, a, s, l, u, h, f, d, p, m, g, y, v
          ;(i = Math.floor),
            (d = Math.min),
            (n = o(function (x, b) {
              return x < b ? -1 : x > b ? 1 : 0
            }, 'defaultCmp')),
            (f = o(function (x, b, T, S, w) {
              var E
              if ((T == null && (T = 0), w == null && (w = n), T < 0)) throw new Error('lo must be non-negative')
              for (S == null && (S = x.length); T < S; ) (E = i((T + S) / 2)), w(b, x[E]) < 0 ? (S = E) : (T = E + 1)
              return [].splice.apply(x, [T, T - T].concat(b)), b
            }, 'insort')),
            (l = o(function (x, b, T) {
              return T == null && (T = n), x.push(b), y(x, 0, x.length - 1, T)
            }, 'heappush')),
            (s = o(function (x, b) {
              var T, S
              return b == null && (b = n), (T = x.pop()), x.length ? ((S = x[0]), (x[0] = T), v(x, 0, b)) : (S = T), S
            }, 'heappop')),
            (h = o(function (x, b, T) {
              var S
              return T == null && (T = n), (S = x[0]), (x[0] = b), v(x, 0, T), S
            }, 'heapreplace')),
            (u = o(function (x, b, T) {
              var S
              return T == null && (T = n), x.length && T(x[0], b) < 0 && ((S = [x[0], b]), (b = S[0]), (x[0] = S[1]), v(x, 0, T)), b
            }, 'heappushpop')),
            (a = o(function (x, b) {
              var T, S, w, E, _, C
              for (
                b == null && (b = n),
                  E = function () {
                    C = []
                    for (var D = 0, O = i(x.length / 2); 0 <= O ? D < O : D > O; 0 <= O ? D++ : D--) C.push(D)
                    return C
                  }
                    .apply(this)
                    .reverse(),
                  _ = [],
                  S = 0,
                  w = E.length;
                S < w;
                S++
              )
                (T = E[S]), _.push(v(x, T, b))
              return _
            }, 'heapify')),
            (g = o(function (x, b, T) {
              var S
              if ((T == null && (T = n), (S = x.indexOf(b)), S !== -1)) return y(x, 0, S, T), v(x, S, T)
            }, 'updateItem')),
            (p = o(function (x, b, T) {
              var S, w, E, _, C
              if ((T == null && (T = n), (w = x.slice(0, b)), !w.length)) return w
              for (a(w, T), C = x.slice(b), E = 0, _ = C.length; E < _; E++) (S = C[E]), u(w, S, T)
              return w.sort(T).reverse()
            }, 'nlargest')),
            (m = o(function (x, b, T) {
              var S, w, E, _, C, D, O, R, k
              if ((T == null && (T = n), b * 10 <= x.length)) {
                if (((E = x.slice(0, b).sort(T)), !E.length)) return E
                for (w = E[E.length - 1], O = x.slice(b), _ = 0, D = O.length; _ < D; _++) (S = O[_]), T(S, w) < 0 && (f(E, S, 0, null, T), E.pop(), (w = E[E.length - 1]))
                return E
              }
              for (a(x, T), k = [], C = 0, R = d(b, x.length); 0 <= R ? C < R : C > R; 0 <= R ? ++C : --C) k.push(s(x, T))
              return k
            }, 'nsmallest')),
            (y = o(function (x, b, T, S) {
              var w, E, _
              for (S == null && (S = n), w = x[T]; T > b; ) {
                if (((_ = (T - 1) >> 1), (E = x[_]), S(w, E) < 0)) {
                  ;(x[T] = E), (T = _)
                  continue
                }
                break
              }
              return (x[T] = w)
            }, '_siftdown')),
            (v = o(function (x, b, T) {
              var S, w, E, _, C
              for (T == null && (T = n), w = x.length, C = b, E = x[b], S = 2 * b + 1; S < w; )
                (_ = S + 1), _ < w && !(T(x[S], x[_]) < 0) && (S = _), (x[b] = x[S]), (b = S), (S = 2 * b + 1)
              return (x[b] = E), y(x, C, b, T)
            }, '_siftup')),
            (r = (function () {
              ;(x.push = l), (x.pop = s), (x.replace = h), (x.pushpop = u), (x.heapify = a), (x.updateItem = g), (x.nlargest = p), (x.nsmallest = m)
              function x(b) {
                ;(this.cmp = b ?? n), (this.nodes = [])
              }
              return (
                o(x, 'Heap'),
                (x.prototype.push = function (b) {
                  return l(this.nodes, b, this.cmp)
                }),
                (x.prototype.pop = function () {
                  return s(this.nodes, this.cmp)
                }),
                (x.prototype.peek = function () {
                  return this.nodes[0]
                }),
                (x.prototype.contains = function (b) {
                  return this.nodes.indexOf(b) !== -1
                }),
                (x.prototype.replace = function (b) {
                  return h(this.nodes, b, this.cmp)
                }),
                (x.prototype.pushpop = function (b) {
                  return u(this.nodes, b, this.cmp)
                }),
                (x.prototype.heapify = function () {
                  return a(this.nodes, this.cmp)
                }),
                (x.prototype.updateItem = function (b) {
                  return g(this.nodes, b, this.cmp)
                }),
                (x.prototype.clear = function () {
                  return (this.nodes = [])
                }),
                (x.prototype.empty = function () {
                  return this.nodes.length === 0
                }),
                (x.prototype.size = function () {
                  return this.nodes.length
                }),
                (x.prototype.clone = function () {
                  var b
                  return (b = new x()), (b.nodes = this.nodes.slice(0)), b
                }),
                (x.prototype.toArray = function () {
                  return this.nodes.slice(0)
                }),
                (x.prototype.insert = x.prototype.push),
                (x.prototype.top = x.prototype.peek),
                (x.prototype.front = x.prototype.peek),
                (x.prototype.has = x.prototype.contains),
                (x.prototype.copy = x.prototype.clone),
                x
              )
            })()),
            (function (x, b) {
              return (t.exports = b())
            })(this, function () {
              return r
            })
        }).call(Wb)
      })),
        (m4 = MYe),
        (IYe = oa({
          root: null,
          weight: o(function (e) {
            return 1
          }, 'weight'),
          directed: !1
        })),
        (OYe = {
          dijkstra: o(function (e) {
            if (!Ur(e)) {
              var r = arguments
              e = { root: r[0], weight: r[1], directed: r[2] }
            }
            var n = IYe(e),
              i = n.root,
              a = n.weight,
              s = n.directed,
              l = this,
              u = a,
              h = Zt(i) ? this.filter(i)[0] : i[0],
              f = {},
              d = {},
              p = {},
              m = this.byGroup(),
              g = m.nodes,
              y = m.edges
            y.unmergeBy(function (I) {
              return I.isLoop()
            })
            for (
              var v = o(function (M) {
                  return f[M.id()]
                }, 'getDist'),
                x = o(function (M, P) {
                  ;(f[M.id()] = P), b.updateItem(M)
                }, 'setDist'),
                b = new m4(function (I, M) {
                  return v(I) - v(M)
                }),
                T = 0;
              T < g.length;
              T++
            ) {
              var S = g[T]
              ;(f[S.id()] = S.same(h) ? 0 : 1 / 0), b.push(S)
            }
            for (
              var w = o(function (M, P) {
                for (var B = (s ? M.edgesTo(P) : M.edgesWith(P)).intersect(y), F = 1 / 0, z, $ = 0; $ < B.length; $++) {
                  var U = B[$],
                    K = u(U)
                  ;(K < F || !z) && ((F = K), (z = U))
                }
                return { edge: z, dist: F }
              }, 'distBetween');
              b.size() > 0;

            ) {
              var E = b.pop(),
                _ = v(E),
                C = E.id()
              if (((p[C] = _), _ !== 1 / 0))
                for (var D = E.neighborhood().intersect(g), O = 0; O < D.length; O++) {
                  var R = D[O],
                    k = R.id(),
                    L = w(E, R),
                    A = _ + L.dist
                  A < v(R) && (x(R, A), (d[k] = { node: E, edge: L.edge }))
                }
            }
            return {
              distanceTo: o(function (M) {
                var P = Zt(M) ? g.filter(M)[0] : M[0]
                return p[P.id()]
              }, 'distanceTo'),
              pathTo: o(function (M) {
                var P = Zt(M) ? g.filter(M)[0] : M[0],
                  B = [],
                  F = P,
                  z = F.id()
                if (P.length > 0)
                  for (B.unshift(P); d[z]; ) {
                    var $ = d[z]
                    B.unshift($.edge), B.unshift($.node), (F = $.node), (z = F.id())
                  }
                return l.spawn(B)
              }, 'pathTo')
            }
          }, 'dijkstra')
        }),
        (PYe = {
          kruskal: o(function (e) {
            e =
              e ||
              function (T) {
                return 1
              }
            for (
              var r = this.byGroup(),
                n = r.nodes,
                i = r.edges,
                a = n.length,
                s = new Array(a),
                l = n,
                u = o(function (S) {
                  for (var w = 0; w < s.length; w++) {
                    var E = s[w]
                    if (E.has(S)) return w
                  }
                }, 'findSetIndex'),
                h = 0;
              h < a;
              h++
            )
              s[h] = this.spawn(n[h])
            for (
              var f = i.sort(function (T, S) {
                  return e(T) - e(S)
                }),
                d = 0;
              d < f.length;
              d++
            ) {
              var p = f[d],
                m = p.source()[0],
                g = p.target()[0],
                y = u(m),
                v = u(g),
                x = s[y],
                b = s[v]
              y !== v && (l.merge(p), x.merge(b), s.splice(v, 1))
            }
            return l
          }, 'kruskal')
        }),
        (BYe = oa({
          root: null,
          goal: null,
          weight: o(function (e) {
            return 1
          }, 'weight'),
          heuristic: o(function (e) {
            return 0
          }, 'heuristic'),
          directed: !1
        })),
        (FYe = {
          aStar: o(function (e) {
            var r = this.cy(),
              n = BYe(e),
              i = n.root,
              a = n.goal,
              s = n.heuristic,
              l = n.directed,
              u = n.weight
            ;(i = r.collection(i)[0]), (a = r.collection(a)[0])
            var h = i.id(),
              f = a.id(),
              d = {},
              p = {},
              m = {},
              g = new m4(function (z, $) {
                return p[z.id()] - p[$.id()]
              }),
              y = new ay(),
              v = {},
              x = {},
              b = o(function ($, U) {
                g.push($), y.add(U)
              }, 'addToOpenSet'),
              T,
              S,
              w = o(function () {
                ;(T = g.pop()), (S = T.id()), y.delete(S)
              }, 'popFromOpenSet'),
              E = o(function ($) {
                return y.has($)
              }, 'isInOpenSet')
            b(i, h), (d[h] = 0), (p[h] = s(i))
            for (var _ = 0; g.size() > 0; ) {
              if ((w(), _++, S === f)) {
                for (var C = [], D = a, O = f, R = x[O]; C.unshift(D), R != null && C.unshift(R), (D = v[O]), D != null; ) (O = D.id()), (R = x[O])
                return { found: !0, distance: d[S], path: this.spawn(C), steps: _ }
              }
              m[S] = !0
              for (var k = T._private.edges, L = 0; L < k.length; L++) {
                var A = k[L]
                if (this.hasElementWithId(A.id()) && !(l && A.data('source') !== S)) {
                  var I = A.source(),
                    M = A.target(),
                    P = I.id() !== S ? I : M,
                    B = P.id()
                  if (this.hasElementWithId(B) && !m[B]) {
                    var F = d[S] + u(A)
                    if (!E(B)) {
                      ;(d[B] = F), (p[B] = F + s(P)), b(P, B), (v[B] = T), (x[B] = A)
                      continue
                    }
                    F < d[B] && ((d[B] = F), (p[B] = F + s(P)), (v[B] = T), (x[B] = A))
                  }
                }
              }
            }
            return { found: !1, distance: void 0, path: void 0, steps: _ }
          }, 'aStar')
        }),
        ($Ye = oa({
          weight: o(function (e) {
            return 1
          }, 'weight'),
          directed: !1
        })),
        (zYe = {
          floydWarshall: o(function (e) {
            for (
              var r = this.cy(),
                n = $Ye(e),
                i = n.weight,
                a = n.directed,
                s = i,
                l = this.byGroup(),
                u = l.nodes,
                h = l.edges,
                f = u.length,
                d = f * f,
                p = o(function (K) {
                  return u.indexOf(K)
                }, 'indexOf'),
                m = o(function (K) {
                  return u[K]
                }, 'atIndex'),
                g = new Array(d),
                y = 0;
              y < d;
              y++
            ) {
              var v = y % f,
                x = (y - v) / f
              x === v ? (g[y] = 0) : (g[y] = 1 / 0)
            }
            for (var b = new Array(d), T = new Array(d), S = 0; S < h.length; S++) {
              var w = h[S],
                E = w.source()[0],
                _ = w.target()[0]
              if (E !== _) {
                var C = p(E),
                  D = p(_),
                  O = C * f + D,
                  R = s(w)
                if ((g[O] > R && ((g[O] = R), (b[O] = D), (T[O] = w)), !a)) {
                  var k = D * f + C
                  !a && g[k] > R && ((g[k] = R), (b[k] = C), (T[k] = w))
                }
              }
            }
            for (var L = 0; L < f; L++)
              for (var A = 0; A < f; A++)
                for (var I = A * f + L, M = 0; M < f; M++) {
                  var P = A * f + M,
                    B = L * f + M
                  g[I] + g[B] < g[P] && ((g[P] = g[I] + g[B]), (b[P] = b[I]))
                }
            var F = o(function (K) {
                return (Zt(K) ? r.filter(K) : K)[0]
              }, 'getArgEle'),
              z = o(function (K) {
                return p(F(K))
              }, 'indexOfArgEle'),
              $ = {
                distance: o(function (K, ee) {
                  var Y = z(K),
                    ce = z(ee)
                  return g[Y * f + ce]
                }, 'distance'),
                path: o(function (K, ee) {
                  var Y = z(K),
                    ce = z(ee),
                    Z = m(Y)
                  if (Y === ce) return Z.collection()
                  if (b[Y * f + ce] == null) return r.collection()
                  var ue = r.collection(),
                    Q = Y,
                    j
                  for (ue.merge(Z); Y !== ce; ) (Q = Y), (Y = b[Y * f + ce]), (j = T[Q * f + Y]), ue.merge(j), ue.merge(m(Y))
                  return ue
                }, 'path')
              }
            return $
          }, 'floydWarshall')
        }),
        (GYe = oa({
          weight: o(function (e) {
            return 1
          }, 'weight'),
          directed: !1,
          root: null
        })),
        (VYe = {
          bellmanFord: o(function (e) {
            var r = this,
              n = GYe(e),
              i = n.weight,
              a = n.directed,
              s = n.root,
              l = i,
              u = this,
              h = this.cy(),
              f = this.byGroup(),
              d = f.edges,
              p = f.nodes,
              m = p.length,
              g = new Zc(),
              y = !1,
              v = []
            ;(s = h.collection(s)[0]),
              d.unmergeBy(function (se) {
                return se.isLoop()
              })
            for (
              var x = d.length,
                b = o(function (ae) {
                  var Oe = g.get(ae.id())
                  return Oe || ((Oe = {}), g.set(ae.id(), Oe)), Oe
                }, 'getInfo'),
                T = o(function (ae) {
                  return (Zt(ae) ? h.$(ae) : ae)[0]
                }, 'getNodeFromTo'),
                S = o(function (ae) {
                  return b(T(ae)).dist
                }, 'distanceTo'),
                w = o(function (ae) {
                  for (var Oe = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : s, ye = T(ae), Be = [], He = ye; ; ) {
                    if (He == null) return r.spawn()
                    var ze = b(He),
                      Le = ze.edge,
                      Ie = ze.pred
                    if ((Be.unshift(He[0]), He.same(Oe) && Be.length > 0)) break
                    Le != null && Be.unshift(Le), (He = Ie)
                  }
                  return u.spawn(Be)
                }, 'pathTo'),
                E = 0;
              E < m;
              E++
            ) {
              var _ = p[E],
                C = b(_)
              _.same(s) ? (C.dist = 0) : (C.dist = 1 / 0), (C.pred = null), (C.edge = null)
            }
            for (
              var D = !1,
                O = o(function (ae, Oe, ye, Be, He, ze) {
                  var Le = Be.dist + ze
                  Le < He.dist && !ye.same(Be.edge) && ((He.dist = Le), (He.pred = ae), (He.edge = ye), (D = !0))
                }, 'checkForEdgeReplacement'),
                R = 1;
              R < m;
              R++
            ) {
              D = !1
              for (var k = 0; k < x; k++) {
                var L = d[k],
                  A = L.source(),
                  I = L.target(),
                  M = l(L),
                  P = b(A),
                  B = b(I)
                O(A, I, L, P, B, M), a || O(I, A, L, B, P, M)
              }
              if (!D) break
            }
            if (D)
              for (var F = [], z = 0; z < x; z++) {
                var $ = d[z],
                  U = $.source(),
                  K = $.target(),
                  ee = l($),
                  Y = b(U).dist,
                  ce = b(K).dist
                if (Y + ee < ce || (!a && ce + ee < Y))
                  if ((y || (hn('Graph contains a negative weight cycle for Bellman-Ford'), (y = !0)), e.findNegativeWeightCycles !== !1)) {
                    var Z = []
                    Y + ee < ce && Z.push(U), !a && ce + ee < Y && Z.push(K)
                    for (var ue = Z.length, Q = 0; Q < ue; Q++) {
                      var j = Z[Q],
                        ne = [j]
                      ne.push(b(j).edge)
                      for (var te = b(j).pred; ne.indexOf(te) === -1; ) ne.push(te), ne.push(b(te).edge), (te = b(te).pred)
                      ne = ne.slice(ne.indexOf(te))
                      for (var he = ne[0].id(), le = 0, J = 2; J < ne.length; J += 2) ne[J].id() < he && ((he = ne[J].id()), (le = J))
                      ;(ne = ne.slice(le).concat(ne.slice(0, le))), ne.push(ne[0])
                      var Se = ne
                        .map(function (se) {
                          return se.id()
                        })
                        .join(',')
                      F.indexOf(Se) === -1 && (v.push(u.spawn(ne)), F.push(Se))
                    }
                  } else break
              }
            return { distanceTo: S, pathTo: w, hasNegativeWeightCycle: y, negativeWeightCycles: v }
          }, 'bellmanFord')
        }),
        (UYe = Math.sqrt(2)),
        (HYe = o(function (e, r, n) {
          n.length === 0 && oi('Karger-Stein must be run on a connected (sub)graph')
          for (var i = n[e], a = i[1], s = i[2], l = r[a], u = r[s], h = n, f = h.length - 1; f >= 0; f--) {
            var d = h[f],
              p = d[1],
              m = d[2]
            ;((r[p] === l && r[m] === u) || (r[p] === u && r[m] === l)) && h.splice(f, 1)
          }
          for (var g = 0; g < h.length; g++) {
            var y = h[g]
            y[1] === u ? ((h[g] = y.slice()), (h[g][1] = l)) : y[2] === u && ((h[g] = y.slice()), (h[g][2] = l))
          }
          for (var v = 0; v < r.length; v++) r[v] === u && (r[v] = l)
          return h
        }, 'collapse')),
        (aB = o(function (e, r, n, i) {
          for (; n > i; ) {
            var a = Math.floor(Math.random() * r.length)
            ;(r = HYe(a, e, r)), n--
          }
          return r
        }, 'contractUntil')),
        (WYe = {
          kargerStein: o(function () {
            var e = this,
              r = this.byGroup(),
              n = r.nodes,
              i = r.edges
            i.unmergeBy(function (B) {
              return B.isLoop()
            })
            var a = n.length,
              s = i.length,
              l = Math.ceil(Math.pow(Math.log(a) / Math.LN2, 2)),
              u = Math.floor(a / UYe)
            if (a < 2) {
              oi('At least 2 nodes are required for Karger-Stein algorithm')
              return
            }
            for (var h = [], f = 0; f < s; f++) {
              var d = i[f]
              h.push([f, n.indexOf(d.source()), n.indexOf(d.target())])
            }
            for (
              var p = 1 / 0,
                m = [],
                g = new Array(a),
                y = new Array(a),
                v = new Array(a),
                x = o(function (F, z) {
                  for (var $ = 0; $ < a; $++) z[$] = F[$]
                }, 'copyNodesMap'),
                b = 0;
              b <= l;
              b++
            ) {
              for (var T = 0; T < a; T++) y[T] = T
              var S = aB(y, h.slice(), a, u),
                w = S.slice()
              x(y, v)
              var E = aB(y, S, u, 2),
                _ = aB(v, w, u, 2)
              E.length <= _.length && E.length < p ? ((p = E.length), (m = E), x(y, g)) : _.length <= E.length && _.length < p && ((p = _.length), (m = _), x(v, g))
            }
            for (
              var C = this.spawn(
                  m.map(function (B) {
                    return i[B[0]]
                  })
                ),
                D = this.spawn(),
                O = this.spawn(),
                R = g[0],
                k = 0;
              k < g.length;
              k++
            ) {
              var L = g[k],
                A = n[k]
              L === R ? D.merge(A) : O.merge(A)
            }
            var I = o(function (F) {
                var z = e.spawn()
                return (
                  F.forEach(function ($) {
                    z.merge($),
                      $.connectedEdges().forEach(function (U) {
                        e.contains(U) && !C.contains(U) && z.merge(U)
                      })
                  }),
                  z
                )
              }, 'constructComponent'),
              M = [I(D), I(O)],
              P = { cut: C, components: M, partition1: D, partition2: O }
            return P
          }, 'kargerStein')
        }),
        (qYe = o(function (e) {
          return { x: e.x, y: e.y }
        }, 'copyPosition')),
        (J6 = o(function (e, r, n) {
          return { x: e.x * r + n.x, y: e.y * r + n.y }
        }, 'modelToRenderedPosition')),
        (Ege = o(function (e, r, n) {
          return { x: (e.x - n.x) / r, y: (e.y - n.y) / r }
        }, 'renderedToModelPosition')),
        (j1 = o(function (e) {
          return { x: e[0], y: e[1] }
        }, 'array2point')),
        (YYe = o(function (e) {
          for (
            var r = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0,
              n = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : e.length,
              i = 1 / 0,
              a = r;
            a < n;
            a++
          ) {
            var s = e[a]
            isFinite(s) && (i = Math.min(s, i))
          }
          return i
        }, 'min')),
        (XYe = o(function (e) {
          for (
            var r = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0,
              n = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : e.length,
              i = -1 / 0,
              a = r;
            a < n;
            a++
          ) {
            var s = e[a]
            isFinite(s) && (i = Math.max(s, i))
          }
          return i
        }, 'max')),
        (jYe = o(function (e) {
          for (
            var r = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0,
              n = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : e.length,
              i = 0,
              a = 0,
              s = r;
            s < n;
            s++
          ) {
            var l = e[s]
            isFinite(l) && ((i += l), a++)
          }
          return i / a
        }, 'mean')),
        (KYe = o(function (e) {
          var r = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0,
            n = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : e.length,
            i = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : !0,
            a = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : !0,
            s = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : !0
          i ? (e = e.slice(r, n)) : (n < e.length && e.splice(n, e.length - n), r > 0 && e.splice(0, r))
          for (var l = 0, u = e.length - 1; u >= 0; u--) {
            var h = e[u]
            s ? isFinite(h) || ((e[u] = -1 / 0), l++) : e.splice(u, 1)
          }
          a &&
            e.sort(function (p, m) {
              return p - m
            })
          var f = e.length,
            d = Math.floor(f / 2)
          return f % 2 !== 0 ? e[d + 1 + l] : (e[d - 1 + l] + e[d + l]) / 2
        }, 'median')),
        (QYe = o(function (e) {
          return (Math.PI * e) / 180
        }, 'deg2rad')),
        (g6 = o(function (e, r) {
          return Math.atan2(r, e) - Math.PI / 2
        }, 'getAngleFromDisp')),
        (VB =
          Math.log2 ||
          function (t) {
            return Math.log(t) / Math.log(2)
          }),
        (Sge = o(function (e) {
          return e > 0 ? 1 : e < 0 ? -1 : 0
        }, 'signum')),
        (Qp = o(function (e, r) {
          return Math.sqrt(Wp(e, r))
        }, 'dist')),
        (Wp = o(function (e, r) {
          var n = r.x - e.x,
            i = r.y - e.y
          return n * n + i * i
        }, 'sqdist')),
        (ZYe = o(function (e) {
          for (var r = e.length, n = 0, i = 0; i < r; i++) n += e[i]
          for (var a = 0; a < r; a++) e[a] = e[a] / n
          return e
        }, 'inPlaceSumNormalize')),
        (sa = o(function (e, r, n, i) {
          return (1 - i) * (1 - i) * e + 2 * (1 - i) * i * r + i * i * n
        }, 'qbezierAt')),
        (Q1 = o(function (e, r, n, i) {
          return { x: sa(e.x, r.x, n.x, i), y: sa(e.y, r.y, n.y, i) }
        }, 'qbezierPtAt')),
        (JYe = o(function (e, r, n, i) {
          var a = { x: r.x - e.x, y: r.y - e.y },
            s = Qp(e, r),
            l = { x: a.x / s, y: a.y / s }
          return (n = n ?? 0), (i = i ?? n * s), { x: e.x + l.x * i, y: e.y + l.y * i }
        }, 'lineAt')),
        (i4 = o(function (e, r, n) {
          return Math.max(e, Math.min(n, r))
        }, 'bound')),
        (Ys = o(function (e) {
          if (e == null) return { x1: 1 / 0, y1: 1 / 0, x2: -1 / 0, y2: -1 / 0, w: 0, h: 0 }
          if (e.x1 != null && e.y1 != null) {
            if (e.x2 != null && e.y2 != null && e.x2 >= e.x1 && e.y2 >= e.y1) return { x1: e.x1, y1: e.y1, x2: e.x2, y2: e.y2, w: e.x2 - e.x1, h: e.y2 - e.y1 }
            if (e.w != null && e.h != null && e.w >= 0 && e.h >= 0) return { x1: e.x1, y1: e.y1, x2: e.x1 + e.w, y2: e.y1 + e.h, w: e.w, h: e.h }
          }
        }, 'makeBoundingBox')),
        (eXe = o(function (e) {
          return { x1: e.x1, x2: e.x2, w: e.w, y1: e.y1, y2: e.y2, h: e.h }
        }, 'copyBoundingBox')),
        (tXe = o(function (e) {
          ;(e.x1 = 1 / 0), (e.y1 = 1 / 0), (e.x2 = -1 / 0), (e.y2 = -1 / 0), (e.w = 0), (e.h = 0)
        }, 'clearBoundingBox')),
        (rXe = o(function (e, r, n) {
          return { x1: e.x1 + r, x2: e.x2 + r, y1: e.y1 + n, y2: e.y2 + n, w: e.w, h: e.h }
        }, 'shiftBoundingBox')),
        (Cge = o(function (e, r) {
          ;(e.x1 = Math.min(e.x1, r.x1)), (e.x2 = Math.max(e.x2, r.x2)), (e.w = e.x2 - e.x1), (e.y1 = Math.min(e.y1, r.y1)), (e.y2 = Math.max(e.y2, r.y2)), (e.h = e.y2 - e.y1)
        }, 'updateBoundingBox')),
        (nXe = o(function (e, r, n) {
          ;(e.x1 = Math.min(e.x1, r)), (e.x2 = Math.max(e.x2, r)), (e.w = e.x2 - e.x1), (e.y1 = Math.min(e.y1, n)), (e.y2 = Math.max(e.y2, n)), (e.h = e.y2 - e.y1)
        }, 'expandBoundingBoxByPoint')),
        (D6 = o(function (e) {
          var r = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0
          return (e.x1 -= r), (e.x2 += r), (e.y1 -= r), (e.y2 += r), (e.w = e.x2 - e.x1), (e.h = e.y2 - e.y1), e
        }, 'expandBoundingBox')),
        (L6 = o(function (e) {
          var r = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [0],
            n,
            i,
            a,
            s
          if (r.length === 1) n = i = a = s = r[0]
          else if (r.length === 2) (n = a = r[0]), (s = i = r[1])
          else if (r.length === 4) {
            var l = Ri(r, 4)
            ;(n = l[0]), (i = l[1]), (a = l[2]), (s = l[3])
          }
          return (e.x1 -= s), (e.x2 += i), (e.y1 -= n), (e.y2 += a), (e.w = e.x2 - e.x1), (e.h = e.y2 - e.y1), e
        }, 'expandBoundingBoxSides')),
        (X0e = o(function (e, r) {
          ;(e.x1 = r.x1), (e.y1 = r.y1), (e.x2 = r.x2), (e.y2 = r.y2), (e.w = e.x2 - e.x1), (e.h = e.y2 - e.y1)
        }, 'assignBoundingBox')),
        (UB = o(function (e, r) {
          return !(e.x1 > r.x2 || r.x1 > e.x2 || e.x2 < r.x1 || r.x2 < e.x1 || e.y2 < r.y1 || r.y2 < e.y1 || e.y1 > r.y2 || r.y1 > e.y2)
        }, 'boundingBoxesIntersect')),
        (ry = o(function (e, r, n) {
          return e.x1 <= r && r <= e.x2 && e.y1 <= n && n <= e.y2
        }, 'inBoundingBox')),
        (iXe = o(function (e, r) {
          return ry(e, r.x, r.y)
        }, 'pointInBoundingBox')),
        (Age = o(function (e, r) {
          return ry(e, r.x1, r.y1) && ry(e, r.x2, r.y2)
        }, 'boundingBoxInBoundingBox')),
        (_ge = o(function (e, r, n, i, a, s, l) {
          var u = arguments.length > 7 && arguments[7] !== void 0 ? arguments[7] : 'auto',
            h = u === 'auto' ? Zp(a, s) : u,
            f = a / 2,
            d = s / 2
          h = Math.min(h, f, d)
          var p = h !== f,
            m = h !== d,
            g
          if (p) {
            var y = n - f + h - l,
              v = i - d - l,
              x = n + f - h + l,
              b = v
            if (((g = Mf(e, r, n, i, y, v, x, b, !1)), g.length > 0)) return g
          }
          if (m) {
            var T = n + f + l,
              S = i - d + h - l,
              w = T,
              E = i + d - h + l
            if (((g = Mf(e, r, n, i, T, S, w, E, !1)), g.length > 0)) return g
          }
          if (p) {
            var _ = n - f + h - l,
              C = i + d + l,
              D = n + f - h + l,
              O = C
            if (((g = Mf(e, r, n, i, _, C, D, O, !1)), g.length > 0)) return g
          }
          if (m) {
            var R = n - f - l,
              k = i - d + h - l,
              L = R,
              A = i + d - h + l
            if (((g = Mf(e, r, n, i, R, k, L, A, !1)), g.length > 0)) return g
          }
          var I
          {
            var M = n - f + h,
              P = i - d + h
            if (((I = Yb(e, r, n, i, M, P, h + l)), I.length > 0 && I[0] <= M && I[1] <= P)) return [I[0], I[1]]
          }
          {
            var B = n + f - h,
              F = i - d + h
            if (((I = Yb(e, r, n, i, B, F, h + l)), I.length > 0 && I[0] >= B && I[1] <= F)) return [I[0], I[1]]
          }
          {
            var z = n + f - h,
              $ = i + d - h
            if (((I = Yb(e, r, n, i, z, $, h + l)), I.length > 0 && I[0] >= z && I[1] >= $)) return [I[0], I[1]]
          }
          {
            var U = n - f + h,
              K = i + d - h
            if (((I = Yb(e, r, n, i, U, K, h + l)), I.length > 0 && I[0] <= U && I[1] >= K)) return [I[0], I[1]]
          }
          return []
        }, 'roundRectangleIntersectLine')),
        (aXe = o(function (e, r, n, i, a, s, l) {
          var u = l,
            h = Math.min(n, a),
            f = Math.max(n, a),
            d = Math.min(i, s),
            p = Math.max(i, s)
          return h - u <= e && e <= f + u && d - u <= r && r <= p + u
        }, 'inLineVicinity')),
        (sXe = o(function (e, r, n, i, a, s, l, u, h) {
          var f = { x1: Math.min(n, l, a) - h, x2: Math.max(n, l, a) + h, y1: Math.min(i, u, s) - h, y2: Math.max(i, u, s) + h }
          return !(e < f.x1 || e > f.x2 || r < f.y1 || r > f.y2)
        }, 'inBezierVicinity')),
        (oXe = o(function (e, r, n, i) {
          n -= i
          var a = r * r - 4 * e * n
          if (a < 0) return []
          var s = Math.sqrt(a),
            l = 2 * e,
            u = (-r + s) / l,
            h = (-r - s) / l
          return [u, h]
        }, 'solveQuadratic')),
        (lXe = o(function (e, r, n, i, a) {
          var s = 1e-5
          e === 0 && (e = s), (r /= e), (n /= e), (i /= e)
          var l, u, h, f, d, p, m, g
          if (((u = (3 * n - r * r) / 9), (h = -(27 * i) + r * (9 * n - 2 * (r * r))), (h /= 54), (l = u * u * u + h * h), (a[1] = 0), (m = r / 3), l > 0)) {
            ;(d = h + Math.sqrt(l)),
              (d = d < 0 ? -Math.pow(-d, 1 / 3) : Math.pow(d, 1 / 3)),
              (p = h - Math.sqrt(l)),
              (p = p < 0 ? -Math.pow(-p, 1 / 3) : Math.pow(p, 1 / 3)),
              (a[0] = -m + d + p),
              (m += (d + p) / 2),
              (a[4] = a[2] = -m),
              (m = (Math.sqrt(3) * (-p + d)) / 2),
              (a[3] = m),
              (a[5] = -m)
            return
          }
          if (((a[5] = a[3] = 0), l === 0)) {
            ;(g = h < 0 ? -Math.pow(-h, 1 / 3) : Math.pow(h, 1 / 3)), (a[0] = -m + 2 * g), (a[4] = a[2] = -(g + m))
            return
          }
          ;(u = -u),
            (f = u * u * u),
            (f = Math.acos(h / Math.sqrt(f))),
            (g = 2 * Math.sqrt(u)),
            (a[0] = -m + g * Math.cos(f / 3)),
            (a[2] = -m + g * Math.cos((f + 2 * Math.PI) / 3)),
            (a[4] = -m + g * Math.cos((f + 4 * Math.PI) / 3))
        }, 'solveCubic')),
        (cXe = o(function (e, r, n, i, a, s, l, u) {
          var h = 1 * n * n - 4 * n * a + 2 * n * l + 4 * a * a - 4 * a * l + l * l + i * i - 4 * i * s + 2 * i * u + 4 * s * s - 4 * s * u + u * u,
            f = 1 * 9 * n * a - 3 * n * n - 3 * n * l - 6 * a * a + 3 * a * l + 9 * i * s - 3 * i * i - 3 * i * u - 6 * s * s + 3 * s * u,
            d = 1 * 3 * n * n - 6 * n * a + n * l - n * e + 2 * a * a + 2 * a * e - l * e + 3 * i * i - 6 * i * s + i * u - i * r + 2 * s * s + 2 * s * r - u * r,
            p = 1 * n * a - n * n + n * e - a * e + i * s - i * i + i * r - s * r,
            m = []
          lXe(h, f, d, p, m)
          for (var g = 1e-7, y = [], v = 0; v < 6; v += 2) Math.abs(m[v + 1]) < g && m[v] >= 0 && m[v] <= 1 && y.push(m[v])
          y.push(1), y.push(0)
          for (var x = -1, b, T, S, w = 0; w < y.length; w++)
            (b = Math.pow(1 - y[w], 2) * n + 2 * (1 - y[w]) * y[w] * a + y[w] * y[w] * l),
              (T = Math.pow(1 - y[w], 2) * i + 2 * (1 - y[w]) * y[w] * s + y[w] * y[w] * u),
              (S = Math.pow(b - e, 2) + Math.pow(T - r, 2)),
              x >= 0 ? S < x && (x = S) : (x = S)
          return x
        }, 'sqdistToQuadraticBezier')),
        (uXe = o(function (e, r, n, i, a, s) {
          var l = [e - n, r - i],
            u = [a - n, s - i],
            h = u[0] * u[0] + u[1] * u[1],
            f = l[0] * l[0] + l[1] * l[1],
            d = l[0] * u[0] + l[1] * u[1],
            p = (d * d) / h
          return d < 0 ? f : p > h ? (e - a) * (e - a) + (r - s) * (r - s) : f - p
        }, 'sqdistToFiniteLine')),
        (qs = o(function (e, r, n) {
          for (var i, a, s, l, u, h = 0, f = 0; f < n.length / 2; f++)
            if (
              ((i = n[f * 2]),
              (a = n[f * 2 + 1]),
              f + 1 < n.length / 2 ? ((s = n[(f + 1) * 2]), (l = n[(f + 1) * 2 + 1])) : ((s = n[(f + 1 - n.length / 2) * 2]), (l = n[(f + 1 - n.length / 2) * 2 + 1])),
              !(i == e && s == e))
            )
              if ((i >= e && e >= s) || (i <= e && e <= s)) (u = ((e - i) / (s - i)) * (l - a) + a), u > r && h++
              else continue
          return h % 2 !== 0
        }, 'pointInsidePolygonPoints')),
        (ih = o(function (e, r, n, i, a, s, l, u, h) {
          var f = new Array(n.length),
            d
          u[0] != null ? ((d = Math.atan(u[1] / u[0])), u[0] < 0 ? (d = d + Math.PI / 2) : (d = -d - Math.PI / 2)) : (d = u)
          for (var p = Math.cos(-d), m = Math.sin(-d), g = 0; g < f.length / 2; g++)
            (f[g * 2] = (s / 2) * (n[g * 2] * p - n[g * 2 + 1] * m)), (f[g * 2 + 1] = (l / 2) * (n[g * 2 + 1] * p + n[g * 2] * m)), (f[g * 2] += i), (f[g * 2 + 1] += a)
          var y
          if (h > 0) {
            var v = V6(f, -h)
            y = G6(v)
          } else y = f
          return qs(e, r, y)
        }, 'pointInsidePolygon')),
        (hXe = o(function (e, r, n, i, a, s, l, u) {
          for (var h = new Array(n.length * 2), f = 0; f < u.length; f++) {
            var d = u[f]
            ;(h[f * 4 + 0] = d.startX), (h[f * 4 + 1] = d.startY), (h[f * 4 + 2] = d.stopX), (h[f * 4 + 3] = d.stopY)
            var p = Math.pow(d.cx - e, 2) + Math.pow(d.cy - r, 2)
            if (p <= Math.pow(d.radius, 2)) return !0
          }
          return qs(e, r, h)
        }, 'pointInsideRoundPolygon')),
        (G6 = o(function (e) {
          for (var r = new Array(e.length / 2), n, i, a, s, l, u, h, f, d = 0; d < e.length / 4; d++) {
            ;(n = e[d * 4]),
              (i = e[d * 4 + 1]),
              (a = e[d * 4 + 2]),
              (s = e[d * 4 + 3]),
              d < e.length / 4 - 1
                ? ((l = e[(d + 1) * 4]), (u = e[(d + 1) * 4 + 1]), (h = e[(d + 1) * 4 + 2]), (f = e[(d + 1) * 4 + 3]))
                : ((l = e[0]), (u = e[1]), (h = e[2]), (f = e[3]))
            var p = Mf(n, i, a, s, l, u, h, f, !0)
            ;(r[d * 2] = p[0]), (r[d * 2 + 1] = p[1])
          }
          return r
        }, 'joinLines')),
        (V6 = o(function (e, r) {
          for (var n = new Array(e.length * 2), i, a, s, l, u = 0; u < e.length / 2; u++) {
            ;(i = e[u * 2]), (a = e[u * 2 + 1]), u < e.length / 2 - 1 ? ((s = e[(u + 1) * 2]), (l = e[(u + 1) * 2 + 1])) : ((s = e[0]), (l = e[1]))
            var h = l - a,
              f = -(s - i),
              d = Math.sqrt(h * h + f * f),
              p = h / d,
              m = f / d
            ;(n[u * 4] = i + p * r), (n[u * 4 + 1] = a + m * r), (n[u * 4 + 2] = s + p * r), (n[u * 4 + 3] = l + m * r)
          }
          return n
        }, 'expandPolygon')),
        (fXe = o(function (e, r, n, i, a, s) {
          var l = n - e,
            u = i - r
          ;(l /= a), (u /= s)
          var h = Math.sqrt(l * l + u * u),
            f = h - 1
          if (f < 0) return []
          var d = f / h
          return [(n - e) * d + e, (i - r) * d + r]
        }, 'intersectLineEllipse')),
        (jp = o(function (e, r, n, i, a, s, l) {
          return (e -= a), (r -= s), (e /= n / 2 + l), (r /= i / 2 + l), e * e + r * r <= 1
        }, 'checkInEllipse')),
        (Yb = o(function (e, r, n, i, a, s, l) {
          var u = [n - e, i - r],
            h = [e - a, r - s],
            f = u[0] * u[0] + u[1] * u[1],
            d = 2 * (h[0] * u[0] + h[1] * u[1]),
            p = h[0] * h[0] + h[1] * h[1] - l * l,
            m = d * d - 4 * f * p
          if (m < 0) return []
          var g = (-d + Math.sqrt(m)) / (2 * f),
            y = (-d - Math.sqrt(m)) / (2 * f),
            v = Math.min(g, y),
            x = Math.max(g, y),
            b = []
          if ((v >= 0 && v <= 1 && b.push(v), x >= 0 && x <= 1 && b.push(x), b.length === 0)) return []
          var T = b[0] * u[0] + e,
            S = b[0] * u[1] + r
          if (b.length > 1) {
            if (b[0] == b[1]) return [T, S]
            var w = b[1] * u[0] + e,
              E = b[1] * u[1] + r
            return [T, S, w, E]
          } else return [T, S]
        }, 'intersectLineCircle')),
        (sB = o(function (e, r, n) {
          return (r <= e && e <= n) || (n <= e && e <= r) ? e : (e <= r && r <= n) || (n <= r && r <= e) ? r : n
        }, 'midOfThree')),
        (Mf = o(function (e, r, n, i, a, s, l, u, h) {
          var f = e - a,
            d = n - e,
            p = l - a,
            m = r - s,
            g = i - r,
            y = u - s,
            v = p * m - y * f,
            x = d * m - g * f,
            b = y * d - p * g
          if (b !== 0) {
            var T = v / b,
              S = x / b,
              w = 0.001,
              E = 0 - w,
              _ = 1 + w
            return E <= T && T <= _ && E <= S && S <= _ ? [e + T * d, r + T * g] : h ? [e + T * d, r + T * g] : []
          } else return v === 0 || x === 0 ? (sB(e, n, l) === l ? [l, u] : sB(e, n, a) === a ? [a, s] : sB(a, l, n) === n ? [n, i] : []) : []
        }, 'finiteLinesIntersect')),
        (a4 = o(function (e, r, n, i, a, s, l, u) {
          var h = [],
            f,
            d = new Array(n.length),
            p = !0
          s == null && (p = !1)
          var m
          if (p) {
            for (var g = 0; g < d.length / 2; g++) (d[g * 2] = n[g * 2] * s + i), (d[g * 2 + 1] = n[g * 2 + 1] * l + a)
            if (u > 0) {
              var y = V6(d, -u)
              m = G6(y)
            } else m = d
          } else m = n
          for (var v, x, b, T, S = 0; S < m.length / 2; S++)
            (v = m[S * 2]),
              (x = m[S * 2 + 1]),
              S < m.length / 2 - 1 ? ((b = m[(S + 1) * 2]), (T = m[(S + 1) * 2 + 1])) : ((b = m[0]), (T = m[1])),
              (f = Mf(e, r, i, a, v, x, b, T)),
              f.length !== 0 && h.push(f[0], f[1])
          return h
        }, 'polygonIntersectLine')),
        (dXe = o(function (e, r, n, i, a, s, l, u, h) {
          var f = [],
            d,
            p = new Array(n.length * 2)
          h.forEach(function (b, T) {
            T === 0 ? ((p[p.length - 2] = b.startX), (p[p.length - 1] = b.startY)) : ((p[T * 4 - 2] = b.startX), (p[T * 4 - 1] = b.startY)),
              (p[T * 4] = b.stopX),
              (p[T * 4 + 1] = b.stopY),
              (d = Yb(e, r, i, a, b.cx, b.cy, b.radius)),
              d.length !== 0 && f.push(d[0], d[1])
          })
          for (var m = 0; m < p.length / 4; m++) (d = Mf(e, r, i, a, p[m * 4], p[m * 4 + 1], p[m * 4 + 2], p[m * 4 + 3], !1)), d.length !== 0 && f.push(d[0], d[1])
          if (f.length > 2) {
            for (var g = [f[0], f[1]], y = Math.pow(g[0] - e, 2) + Math.pow(g[1] - r, 2), v = 1; v < f.length / 2; v++) {
              var x = Math.pow(f[v * 2] - e, 2) + Math.pow(f[v * 2 + 1] - r, 2)
              x <= y && ((g[0] = f[v * 2]), (g[1] = f[v * 2 + 1]), (y = x))
            }
            return g
          }
          return f
        }, 'roundPolygonIntersectLine')),
        (y6 = o(function (e, r, n) {
          var i = [e[0] - r[0], e[1] - r[1]],
            a = Math.sqrt(i[0] * i[0] + i[1] * i[1]),
            s = (a - n) / a
          return s < 0 && (s = 1e-5), [r[0] + s * i[0], r[1] + s * i[1]]
        }, 'shortenIntersection')),
        (Ts = o(function (e, r) {
          var n = bB(e, r)
          return (n = Dge(n)), n
        }, 'generateUnitNgonPointsFitToSquare')),
        (Dge = o(function (e) {
          for (var r, n, i = e.length / 2, a = 1 / 0, s = 1 / 0, l = -1 / 0, u = -1 / 0, h = 0; h < i; h++)
            (r = e[2 * h]), (n = e[2 * h + 1]), (a = Math.min(a, r)), (l = Math.max(l, r)), (s = Math.min(s, n)), (u = Math.max(u, n))
          for (var f = 2 / (l - a), d = 2 / (u - s), p = 0; p < i; p++)
            (r = e[2 * p] = e[2 * p] * f), (n = e[2 * p + 1] = e[2 * p + 1] * d), (a = Math.min(a, r)), (l = Math.max(l, r)), (s = Math.min(s, n)), (u = Math.max(u, n))
          if (s < -1) for (var m = 0; m < i; m++) n = e[2 * m + 1] = e[2 * m + 1] + (-1 - s)
          return e
        }, 'fitPolygonToSquare')),
        (bB = o(function (e, r) {
          var n = (1 / e) * 2 * Math.PI,
            i = e % 2 === 0 ? Math.PI / 2 + n / 2 : Math.PI / 2
          i += r
          for (var a = new Array(e * 2), s, l = 0; l < e; l++) (s = l * n + i), (a[2 * l] = Math.cos(s)), (a[2 * l + 1] = Math.sin(-s))
          return a
        }, 'generateUnitNgonPoints')),
        (Zp = o(function (e, r) {
          return Math.min(e / 4, r / 4, 8)
        }, 'getRoundRectangleRadius')),
        (Lge = o(function (e, r) {
          return Math.min(e / 10, r / 10, 8)
        }, 'getRoundPolygonRadius')),
        (HB = o(function () {
          return 8
        }, 'getCutRectangleCornerLength')),
        (pXe = o(function (e, r, n) {
          return [e - 2 * r + n, 2 * (r - e), e]
        }, 'bezierPtsToQuadCoeff')),
        (TB = o(function (e, r) {
          return { heightOffset: Math.min(15, 0.05 * r), widthOffset: Math.min(100, 0.25 * e), ctrlPtOffsetPct: 0.05 }
        }, 'getBarrelCurveConstants')),
        (mXe = oa({
          dampingFactor: 0.8,
          precision: 1e-6,
          iterations: 200,
          weight: o(function (e) {
            return 1
          }, 'weight')
        })),
        (gXe = {
          pageRank: o(function (e) {
            for (
              var r = mXe(e),
                n = r.dampingFactor,
                i = r.precision,
                a = r.iterations,
                s = r.weight,
                l = this._private.cy,
                u = this.byGroup(),
                h = u.nodes,
                f = u.edges,
                d = h.length,
                p = d * d,
                m = f.length,
                g = new Array(p),
                y = new Array(d),
                v = (1 - n) / d,
                x = 0;
              x < d;
              x++
            ) {
              for (var b = 0; b < d; b++) {
                var T = x * d + b
                g[T] = 0
              }
              y[x] = 0
            }
            for (var S = 0; S < m; S++) {
              var w = f[S],
                E = w.data('source'),
                _ = w.data('target')
              if (E !== _) {
                var C = h.indexOfId(E),
                  D = h.indexOfId(_),
                  O = s(w),
                  R = D * d + C
                ;(g[R] += O), (y[C] += O)
              }
            }
            for (var k = 1 / d + v, L = 0; L < d; L++)
              if (y[L] === 0)
                for (var A = 0; A < d; A++) {
                  var I = A * d + L
                  g[I] = k
                }
              else
                for (var M = 0; M < d; M++) {
                  var P = M * d + L
                  g[P] = g[P] / y[L] + v
                }
            for (var B = new Array(d), F = new Array(d), z, $ = 0; $ < d; $++) B[$] = 1
            for (var U = 0; U < a; U++) {
              for (var K = 0; K < d; K++) F[K] = 0
              for (var ee = 0; ee < d; ee++)
                for (var Y = 0; Y < d; Y++) {
                  var ce = ee * d + Y
                  F[ee] += g[ce] * B[Y]
                }
              ZYe(F), (z = B), (B = F), (F = z)
              for (var Z = 0, ue = 0; ue < d; ue++) {
                var Q = z[ue] - B[ue]
                Z += Q * Q
              }
              if (Z < i) break
            }
            var j = {
              rank: o(function (te) {
                return (te = l.collection(te)[0]), B[h.indexOf(te)]
              }, 'rank')
            }
            return j
          }, 'pageRank')
        }),
        (j0e = oa({
          root: null,
          weight: o(function (e) {
            return 1
          }, 'weight'),
          directed: !1,
          alpha: 0
        })),
        (Z1 = {
          degreeCentralityNormalized: o(function (e) {
            e = j0e(e)
            var r = this.cy(),
              n = this.nodes(),
              i = n.length
            if (e.directed) {
              for (var f = {}, d = {}, p = 0, m = 0, g = 0; g < i; g++) {
                var y = n[g],
                  v = y.id()
                e.root = y
                var x = this.degreeCentrality(e)
                p < x.indegree && (p = x.indegree), m < x.outdegree && (m = x.outdegree), (f[v] = x.indegree), (d[v] = x.outdegree)
              }
              return {
                indegree: o(function (T) {
                  return p == 0 ? 0 : (Zt(T) && (T = r.filter(T)), f[T.id()] / p)
                }, 'indegree'),
                outdegree: o(function (T) {
                  return m === 0 ? 0 : (Zt(T) && (T = r.filter(T)), d[T.id()] / m)
                }, 'outdegree')
              }
            } else {
              for (var a = {}, s = 0, l = 0; l < i; l++) {
                var u = n[l]
                e.root = u
                var h = this.degreeCentrality(e)
                s < h.degree && (s = h.degree), (a[u.id()] = h.degree)
              }
              return {
                degree: o(function (T) {
                  return s === 0 ? 0 : (Zt(T) && (T = r.filter(T)), a[T.id()] / s)
                }, 'degree')
              }
            }
          }, 'degreeCentralityNormalized'),
          degreeCentrality: o(function (e) {
            e = j0e(e)
            var r = this.cy(),
              n = this,
              i = e,
              a = i.root,
              s = i.weight,
              l = i.directed,
              u = i.alpha
            if (((a = r.collection(a)[0]), l)) {
              for (
                var m = a.connectedEdges(),
                  g = m.filter(function (E) {
                    return E.target().same(a) && n.has(E)
                  }),
                  y = m.filter(function (E) {
                    return E.source().same(a) && n.has(E)
                  }),
                  v = g.length,
                  x = y.length,
                  b = 0,
                  T = 0,
                  S = 0;
                S < g.length;
                S++
              )
                b += s(g[S])
              for (var w = 0; w < y.length; w++) T += s(y[w])
              return { indegree: Math.pow(v, 1 - u) * Math.pow(b, u), outdegree: Math.pow(x, 1 - u) * Math.pow(T, u) }
            } else {
              for (var h = a.connectedEdges().intersection(n), f = h.length, d = 0, p = 0; p < h.length; p++) d += s(h[p])
              return { degree: Math.pow(f, 1 - u) * Math.pow(d, u) }
            }
          }, 'degreeCentrality')
        })
      Z1.dc = Z1.degreeCentrality
      Z1.dcn = Z1.degreeCentralityNormalised = Z1.degreeCentralityNormalized
      ;(K0e = oa({
        harmonic: !0,
        weight: o(function () {
          return 1
        }, 'weight'),
        directed: !1,
        root: null
      })),
        (J1 = {
          closenessCentralityNormalized: o(function (e) {
            for (
              var r = K0e(e),
                n = r.harmonic,
                i = r.weight,
                a = r.directed,
                s = this.cy(),
                l = {},
                u = 0,
                h = this.nodes(),
                f = this.floydWarshall({ weight: i, directed: a }),
                d = 0;
              d < h.length;
              d++
            ) {
              for (var p = 0, m = h[d], g = 0; g < h.length; g++)
                if (d !== g) {
                  var y = f.distance(m, h[g])
                  n ? (p += 1 / y) : (p += y)
                }
              n || (p = 1 / p), u < p && (u = p), (l[m.id()] = p)
            }
            return {
              closeness: o(function (x) {
                return u == 0 ? 0 : (Zt(x) ? (x = s.filter(x)[0].id()) : (x = x.id()), l[x] / u)
              }, 'closeness')
            }
          }, 'closenessCentralityNormalized'),
          closenessCentrality: o(function (e) {
            var r = K0e(e),
              n = r.root,
              i = r.weight,
              a = r.directed,
              s = r.harmonic
            n = this.filter(n)[0]
            for (var l = this.dijkstra({ root: n, weight: i, directed: a }), u = 0, h = this.nodes(), f = 0; f < h.length; f++) {
              var d = h[f]
              if (!d.same(n)) {
                var p = l.distanceTo(d)
                s ? (u += 1 / p) : (u += p)
              }
            }
            return s ? u : 1 / u
          }, 'closenessCentrality')
        })
      J1.cc = J1.closenessCentrality
      J1.ccn = J1.closenessCentralityNormalised = J1.closenessCentralityNormalized
      ;(yXe = oa({ weight: null, directed: !1 })),
        (wB = {
          betweennessCentrality: o(function (e) {
            for (
              var r = yXe(e),
                n = r.directed,
                i = r.weight,
                a = i != null,
                s = this.cy(),
                l = this.nodes(),
                u = {},
                h = {},
                f = 0,
                d = {
                  set: o(function (T, S) {
                    ;(h[T] = S), S > f && (f = S)
                  }, 'set'),
                  get: o(function (T) {
                    return h[T]
                  }, 'get')
                },
                p = 0;
              p < l.length;
              p++
            ) {
              var m = l[p],
                g = m.id()
              n ? (u[g] = m.outgoers().nodes()) : (u[g] = m.openNeighborhood().nodes()), d.set(g, 0)
            }
            for (
              var y = o(function (T) {
                  for (
                    var S = l[T].id(),
                      w = [],
                      E = {},
                      _ = {},
                      C = {},
                      D = new m4(function (Y, ce) {
                        return C[Y] - C[ce]
                      }),
                      O = 0;
                    O < l.length;
                    O++
                  ) {
                    var R = l[O].id()
                    ;(E[R] = []), (_[R] = 0), (C[R] = 1 / 0)
                  }
                  for (_[S] = 1, C[S] = 0, D.push(S); !D.empty(); ) {
                    var k = D.pop()
                    if ((w.push(k), a))
                      for (var L = 0; L < u[k].length; L++) {
                        var A = u[k][L],
                          I = s.getElementById(k),
                          M = void 0
                        I.edgesTo(A).length > 0 ? (M = I.edgesTo(A)[0]) : (M = A.edgesTo(I)[0])
                        var P = i(M)
                        ;(A = A.id()),
                          C[A] > C[k] + P && ((C[A] = C[k] + P), D.nodes.indexOf(A) < 0 ? D.push(A) : D.updateItem(A), (_[A] = 0), (E[A] = [])),
                          C[A] == C[k] + P && ((_[A] = _[A] + _[k]), E[A].push(k))
                      }
                    else
                      for (var B = 0; B < u[k].length; B++) {
                        var F = u[k][B].id()
                        C[F] == 1 / 0 && (D.push(F), (C[F] = C[k] + 1)), C[F] == C[k] + 1 && ((_[F] = _[F] + _[k]), E[F].push(k))
                      }
                  }
                  for (var z = {}, $ = 0; $ < l.length; $++) z[l[$].id()] = 0
                  for (; w.length > 0; ) {
                    for (var U = w.pop(), K = 0; K < E[U].length; K++) {
                      var ee = E[U][K]
                      z[ee] = z[ee] + (_[ee] / _[U]) * (1 + z[U])
                    }
                    U != l[T].id() && d.set(U, d.get(U) + z[U])
                  }
                }, '_loop'),
                v = 0;
              v < l.length;
              v++
            )
              y(v)
            var x = {
              betweenness: o(function (T) {
                var S = s.collection(T).id()
                return d.get(S)
              }, 'betweenness'),
              betweennessNormalized: o(function (T) {
                if (f == 0) return 0
                var S = s.collection(T).id()
                return d.get(S) / f
              }, 'betweennessNormalized')
            }
            return (x.betweennessNormalised = x.betweennessNormalized), x
          }, 'betweennessCentrality')
        })
      wB.bc = wB.betweennessCentrality
      ;(vXe = oa({
        expandFactor: 2,
        inflateFactor: 2,
        multFactor: 1,
        maxIterations: 20,
        attributes: [
          function (t) {
            return 1
          }
        ]
      })),
        (xXe = o(function (e) {
          return vXe(e)
        }, 'setOptions')),
        (bXe = o(function (e, r) {
          for (var n = 0, i = 0; i < r.length; i++) n += r[i](e)
          return n
        }, 'getSimilarity')),
        (TXe = o(function (e, r, n) {
          for (var i = 0; i < r; i++) e[i * r + i] = n
        }, 'addLoops')),
        (Rge = o(function (e, r) {
          for (var n, i = 0; i < r; i++) {
            n = 0
            for (var a = 0; a < r; a++) n += e[a * r + i]
            for (var s = 0; s < r; s++) e[s * r + i] = e[s * r + i] / n
          }
        }, 'normalize')),
        (wXe = o(function (e, r, n) {
          for (var i = new Array(n * n), a = 0; a < n; a++) {
            for (var s = 0; s < n; s++) i[a * n + s] = 0
            for (var l = 0; l < n; l++) for (var u = 0; u < n; u++) i[a * n + u] += e[a * n + l] * r[l * n + u]
          }
          return i
        }, 'mmult')),
        (kXe = o(function (e, r, n) {
          for (var i = e.slice(0), a = 1; a < n; a++) e = wXe(e, i, r)
          return e
        }, 'expand')),
        (EXe = o(function (e, r, n) {
          for (var i = new Array(r * r), a = 0; a < r * r; a++) i[a] = Math.pow(e[a], n)
          return Rge(i, r), i
        }, 'inflate')),
        (SXe = o(function (e, r, n, i) {
          for (var a = 0; a < n; a++) {
            var s = Math.round(e[a] * Math.pow(10, i)) / Math.pow(10, i),
              l = Math.round(r[a] * Math.pow(10, i)) / Math.pow(10, i)
            if (s !== l) return !1
          }
          return !0
        }, 'hasConverged')),
        (CXe = o(function (e, r, n, i) {
          for (var a = [], s = 0; s < r; s++) {
            for (var l = [], u = 0; u < r; u++) Math.round(e[s * r + u] * 1e3) / 1e3 > 0 && l.push(n[u])
            l.length !== 0 && a.push(i.collection(l))
          }
          return a
        }, 'assign')),
        (AXe = o(function (e, r) {
          for (var n = 0; n < e.length; n++) if (!r[n] || e[n].id() !== r[n].id()) return !1
          return !0
        }, 'isDuplicate')),
        (_Xe = o(function (e) {
          for (var r = 0; r < e.length; r++) for (var n = 0; n < e.length; n++) r != n && AXe(e[r], e[n]) && e.splice(n, 1)
          return e
        }, 'removeDuplicates')),
        (Q0e = o(function (e) {
          for (var r = this.nodes(), n = this.edges(), i = this.cy(), a = xXe(e), s = {}, l = 0; l < r.length; l++) s[r[l].id()] = l
          for (var u = r.length, h = u * u, f = new Array(h), d, p = 0; p < h; p++) f[p] = 0
          for (var m = 0; m < n.length; m++) {
            var g = n[m],
              y = s[g.source().id()],
              v = s[g.target().id()],
              x = bXe(g, a.attributes)
            ;(f[y * u + v] += x), (f[v * u + y] += x)
          }
          TXe(f, u, a.multFactor), Rge(f, u)
          for (var b = !0, T = 0; b && T < a.maxIterations; ) (b = !1), (d = kXe(f, u, a.expandFactor)), (f = EXe(d, u, a.inflateFactor)), SXe(f, d, h, 4) || (b = !0), T++
          var S = CXe(f, u, r, i)
          return (S = _Xe(S)), S
        }, 'markovClustering')),
        (DXe = { markovClustering: Q0e, mcl: Q0e }),
        (LXe = o(function (e) {
          return e
        }, 'identity')),
        (Nge = o(function (e, r) {
          return Math.abs(r - e)
        }, 'absDiff')),
        (Z0e = o(function (e, r, n) {
          return e + Nge(r, n)
        }, 'addAbsDiff')),
        (J0e = o(function (e, r, n) {
          return e + Math.pow(n - r, 2)
        }, 'addSquaredDiff')),
        (RXe = o(function (e) {
          return Math.sqrt(e)
        }, 'sqrt')),
        (NXe = o(function (e, r, n) {
          return Math.max(e, Nge(r, n))
        }, 'maxAbsDiff')),
        ($b = o(function (e, r, n, i, a) {
          for (var s = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : LXe, l = i, u, h, f = 0; f < e; f++) (u = r(f)), (h = n(f)), (l = a(l, u, h))
          return s(l)
        }, 'getDistance')),
        (ny = {
          euclidean: o(function (e, r, n) {
            return e >= 2 ? $b(e, r, n, 0, J0e, RXe) : $b(e, r, n, 0, Z0e)
          }, 'euclidean'),
          squaredEuclidean: o(function (e, r, n) {
            return $b(e, r, n, 0, J0e)
          }, 'squaredEuclidean'),
          manhattan: o(function (e, r, n) {
            return $b(e, r, n, 0, Z0e)
          }, 'manhattan'),
          max: o(function (e, r, n) {
            return $b(e, r, n, -1 / 0, NXe)
          }, 'max')
        })
      ny['squared-euclidean'] = ny.squaredEuclidean
      ny.squaredeuclidean = ny.squaredEuclidean
      o(eC, 'clusteringDistance')
      ;(MXe = oa({ k: 2, m: 2, sensitivityThreshold: 1e-4, distance: 'euclidean', maxIterations: 10, attributes: [], testMode: !1, testCentroids: null })),
        (WB = o(function (e) {
          return MXe(e)
        }, 'setOptions')),
        (U6 = o(function (e, r, n, i, a) {
          var s = a !== 'kMedoids',
            l = s
              ? function (d) {
                  return n[d]
                }
              : function (d) {
                  return i[d](n)
                },
            u = o(function (p) {
              return i[p](r)
            }, 'getQ'),
            h = n,
            f = r
          return eC(e, i.length, l, u, h, f)
        }, 'getDist')),
        (oB = o(function (e, r, n) {
          for (var i = n.length, a = new Array(i), s = new Array(i), l = new Array(r), u = null, h = 0; h < i; h++) (a[h] = e.min(n[h]).value), (s[h] = e.max(n[h]).value)
          for (var f = 0; f < r; f++) {
            u = []
            for (var d = 0; d < i; d++) u[d] = Math.random() * (s[d] - a[d]) + a[d]
            l[f] = u
          }
          return l
        }, 'randomCentroids')),
        (Mge = o(function (e, r, n, i, a) {
          for (var s = 1 / 0, l = 0, u = 0; u < r.length; u++) {
            var h = U6(n, e, r[u], i, a)
            h < s && ((s = h), (l = u))
          }
          return l
        }, 'classify')),
        (Ige = o(function (e, r, n) {
          for (var i = [], a = null, s = 0; s < r.length; s++) (a = r[s]), n[a.id()] === e && i.push(a)
          return i
        }, 'buildCluster')),
        (IXe = o(function (e, r, n) {
          return Math.abs(r - e) <= n
        }, 'haveValuesConverged')),
        (OXe = o(function (e, r, n) {
          for (var i = 0; i < e.length; i++)
            for (var a = 0; a < e[i].length; a++) {
              var s = Math.abs(e[i][a] - r[i][a])
              if (s > n) return !1
            }
          return !0
        }, 'haveMatricesConverged')),
        (PXe = o(function (e, r, n) {
          for (var i = 0; i < n; i++) if (e === r[i]) return !0
          return !1
        }, 'seenBefore')),
        (eme = o(function (e, r) {
          var n = new Array(r)
          if (e.length < 50)
            for (var i = 0; i < r; i++) {
              for (var a = e[Math.floor(Math.random() * e.length)]; PXe(a, n, i); ) a = e[Math.floor(Math.random() * e.length)]
              n[i] = a
            }
          else for (var s = 0; s < r; s++) n[s] = e[Math.floor(Math.random() * e.length)]
          return n
        }, 'randomMedoids')),
        (tme = o(function (e, r, n) {
          for (var i = 0, a = 0; a < r.length; a++) i += U6('manhattan', r[a], e, n, 'kMedoids')
          return i
        }, 'findCost')),
        (BXe = o(function (e) {
          var r = this.cy(),
            n = this.nodes(),
            i = null,
            a = WB(e),
            s = new Array(a.k),
            l = {},
            u
          a.testMode
            ? typeof a.testCentroids == 'number'
              ? (a.testCentroids, (u = oB(n, a.k, a.attributes)))
              : qi(a.testCentroids) === 'object'
                ? (u = a.testCentroids)
                : (u = oB(n, a.k, a.attributes))
            : (u = oB(n, a.k, a.attributes))
          for (var h = !0, f = 0; h && f < a.maxIterations; ) {
            for (var d = 0; d < n.length; d++) (i = n[d]), (l[i.id()] = Mge(i, u, a.distance, a.attributes, 'kMeans'))
            h = !1
            for (var p = 0; p < a.k; p++) {
              var m = Ige(p, n, l)
              if (m.length !== 0) {
                for (var g = a.attributes.length, y = u[p], v = new Array(g), x = new Array(g), b = 0; b < g; b++) {
                  x[b] = 0
                  for (var T = 0; T < m.length; T++) (i = m[T]), (x[b] += a.attributes[b](i))
                  ;(v[b] = x[b] / m.length), IXe(v[b], y[b], a.sensitivityThreshold) || (h = !0)
                }
                ;(u[p] = v), (s[p] = r.collection(m))
              }
            }
            f++
          }
          return s
        }, 'kMeans')),
        (FXe = o(function (e) {
          var r = this.cy(),
            n = this.nodes(),
            i = null,
            a = WB(e),
            s = new Array(a.k),
            l,
            u = {},
            h,
            f = new Array(a.k)
          a.testMode ? typeof a.testCentroids == 'number' || (qi(a.testCentroids) === 'object' ? (l = a.testCentroids) : (l = eme(n, a.k))) : (l = eme(n, a.k))
          for (var d = !0, p = 0; d && p < a.maxIterations; ) {
            for (var m = 0; m < n.length; m++) (i = n[m]), (u[i.id()] = Mge(i, l, a.distance, a.attributes, 'kMedoids'))
            d = !1
            for (var g = 0; g < l.length; g++) {
              var y = Ige(g, n, u)
              if (y.length !== 0) {
                f[g] = tme(l[g], y, a.attributes)
                for (var v = 0; v < y.length; v++) (h = tme(y[v], y, a.attributes)), h < f[g] && ((f[g] = h), (l[g] = y[v]), (d = !0))
                s[g] = r.collection(y)
              }
            }
            p++
          }
          return s
        }, 'kMedoids')),
        ($Xe = o(function (e, r, n, i, a) {
          for (var s, l, u = 0; u < r.length; u++) for (var h = 0; h < e.length; h++) i[u][h] = Math.pow(n[u][h], a.m)
          for (var f = 0; f < e.length; f++)
            for (var d = 0; d < a.attributes.length; d++) {
              ;(s = 0), (l = 0)
              for (var p = 0; p < r.length; p++) (s += i[p][f] * a.attributes[d](r[p])), (l += i[p][f])
              e[f][d] = s / l
            }
        }, 'updateCentroids')),
        (zXe = o(function (e, r, n, i, a) {
          for (var s = 0; s < e.length; s++) r[s] = e[s].slice()
          for (var l, u, h, f = 2 / (a.m - 1), d = 0; d < n.length; d++)
            for (var p = 0; p < i.length; p++) {
              l = 0
              for (var m = 0; m < n.length; m++)
                (u = U6(a.distance, i[p], n[d], a.attributes, 'cmeans')), (h = U6(a.distance, i[p], n[m], a.attributes, 'cmeans')), (l += Math.pow(u / h, f))
              e[p][d] = 1 / l
            }
        }, 'updateMembership')),
        (GXe = o(function (e, r, n, i) {
          for (var a = new Array(n.k), s = 0; s < a.length; s++) a[s] = []
          for (var l, u, h = 0; h < r.length; h++) {
            ;(l = -1 / 0), (u = -1)
            for (var f = 0; f < r[0].length; f++) r[h][f] > l && ((l = r[h][f]), (u = f))
            a[u].push(e[h])
          }
          for (var d = 0; d < a.length; d++) a[d] = i.collection(a[d])
          return a
        }, 'assign')),
        (rme = o(function (e) {
          var r = this.cy(),
            n = this.nodes(),
            i = WB(e),
            a,
            s,
            l,
            u,
            h
          u = new Array(n.length)
          for (var f = 0; f < n.length; f++) u[f] = new Array(i.k)
          l = new Array(n.length)
          for (var d = 0; d < n.length; d++) l[d] = new Array(i.k)
          for (var p = 0; p < n.length; p++) {
            for (var m = 0, g = 0; g < i.k; g++) (l[p][g] = Math.random()), (m += l[p][g])
            for (var y = 0; y < i.k; y++) l[p][y] = l[p][y] / m
          }
          s = new Array(i.k)
          for (var v = 0; v < i.k; v++) s[v] = new Array(i.attributes.length)
          h = new Array(n.length)
          for (var x = 0; x < n.length; x++) h[x] = new Array(i.k)
          for (var b = !0, T = 0; b && T < i.maxIterations; ) (b = !1), $Xe(s, n, l, h, i), zXe(l, u, s, n, i), OXe(l, u, i.sensitivityThreshold) || (b = !0), T++
          return (a = GXe(n, l, i, r)), { clusters: a, degreeOfMembership: l }
        }, 'fuzzyCMeans')),
        (VXe = { kMeans: BXe, kMedoids: FXe, fuzzyCMeans: rme, fcm: rme }),
        (UXe = oa({ distance: 'euclidean', linkage: 'min', mode: 'threshold', threshold: 1 / 0, addDendrogram: !1, dendrogramDepth: 0, attributes: [] })),
        (HXe = { single: 'min', complete: 'max' }),
        (WXe = o(function (e) {
          var r = UXe(e),
            n = HXe[r.linkage]
          return n != null && (r.linkage = n), r
        }, 'setOptions')),
        (nme = o(function (e, r, n, i, a) {
          for (
            var s = 0,
              l = 1 / 0,
              u,
              h = a.attributes,
              f = o(function (D, O) {
                return eC(
                  a.distance,
                  h.length,
                  function (R) {
                    return h[R](D)
                  },
                  function (R) {
                    return h[R](O)
                  },
                  D,
                  O
                )
              }, 'getDist'),
              d = 0;
            d < e.length;
            d++
          ) {
            var p = e[d].key,
              m = n[p][i[p]]
            m < l && ((s = p), (l = m))
          }
          if ((a.mode === 'threshold' && l >= a.threshold) || (a.mode === 'dendrogram' && e.length === 1)) return !1
          var g = r[s],
            y = r[i[s]],
            v
          a.mode === 'dendrogram' ? (v = { left: g, right: y, key: g.key }) : (v = { value: g.value.concat(y.value), key: g.key }),
            (e[g.index] = v),
            e.splice(y.index, 1),
            (r[g.key] = v)
          for (var x = 0; x < e.length; x++) {
            var b = e[x]
            g.key === b.key
              ? (u = 1 / 0)
              : a.linkage === 'min'
                ? ((u = n[g.key][b.key]), n[g.key][b.key] > n[y.key][b.key] && (u = n[y.key][b.key]))
                : a.linkage === 'max'
                  ? ((u = n[g.key][b.key]), n[g.key][b.key] < n[y.key][b.key] && (u = n[y.key][b.key]))
                  : a.linkage === 'mean'
                    ? (u = (n[g.key][b.key] * g.size + n[y.key][b.key] * y.size) / (g.size + y.size))
                    : a.mode === 'dendrogram'
                      ? (u = f(b.value, g.value))
                      : (u = f(b.value[0], g.value[0])),
              (n[g.key][b.key] = n[b.key][g.key] = u)
          }
          for (var T = 0; T < e.length; T++) {
            var S = e[T].key
            if (i[S] === g.key || i[S] === y.key) {
              for (var w = S, E = 0; E < e.length; E++) {
                var _ = e[E].key
                n[S][_] < n[S][w] && (w = _)
              }
              i[S] = w
            }
            e[T].index = T
          }
          return (g.key = y.key = g.index = y.index = null), !0
        }, 'mergeClosest')),
        (v6 = o(function t(e, r, n) {
          e && (e.value ? r.push(e.value) : (e.left && t(e.left, r), e.right && t(e.right, r)))
        }, 'getAllChildren')),
        (qXe = o(function t(e, r) {
          if (!e) return ''
          if (e.left && e.right) {
            var n = t(e.left, r),
              i = t(e.right, r),
              a = r.add({ group: 'nodes', data: { id: n + ',' + i } })
            return r.add({ group: 'edges', data: { source: n, target: a.id() } }), r.add({ group: 'edges', data: { source: i, target: a.id() } }), a.id()
          } else if (e.value) return e.value.id()
        }, 'buildDendrogram')),
        (YXe = o(function t(e, r, n) {
          if (!e) return []
          var i = [],
            a = [],
            s = []
          return r === 0
            ? (e.left && v6(e.left, i), e.right && v6(e.right, a), (s = i.concat(a)), [n.collection(s)])
            : r === 1
              ? e.value
                ? [n.collection(e.value)]
                : (e.left && v6(e.left, i), e.right && v6(e.right, a), [n.collection(i), n.collection(a)])
              : e.value
                ? [n.collection(e.value)]
                : (e.left && (i = t(e.left, r - 1, n)), e.right && (a = t(e.right, r - 1, n)), i.concat(a))
        }, 'buildClustersFromTree')),
        (ime = o(function (e) {
          for (
            var r = this.cy(),
              n = this.nodes(),
              i = WXe(e),
              a = i.attributes,
              s = o(function (T, S) {
                return eC(
                  i.distance,
                  a.length,
                  function (w) {
                    return a[w](T)
                  },
                  function (w) {
                    return a[w](S)
                  },
                  T,
                  S
                )
              }, 'getDist'),
              l = [],
              u = [],
              h = [],
              f = [],
              d = 0;
            d < n.length;
            d++
          ) {
            var p = { value: i.mode === 'dendrogram' ? n[d] : [n[d]], key: d, index: d }
            ;(l[d] = p), (f[d] = p), (u[d] = []), (h[d] = 0)
          }
          for (var m = 0; m < l.length; m++)
            for (var g = 0; g <= m; g++) {
              var y = void 0
              i.mode === 'dendrogram' ? (y = m === g ? 1 / 0 : s(l[m].value, l[g].value)) : (y = m === g ? 1 / 0 : s(l[m].value[0], l[g].value[0])),
                (u[m][g] = y),
                (u[g][m] = y),
                y < u[m][h[m]] && (h[m] = g)
            }
          for (var v = nme(l, f, u, h, i); v; ) v = nme(l, f, u, h, i)
          var x
          return (
            i.mode === 'dendrogram'
              ? ((x = YXe(l[0], i.dendrogramDepth, r)), i.addDendrogram && qXe(l[0], r))
              : ((x = new Array(l.length)),
                l.forEach(function (b, T) {
                  ;(b.key = b.index = null), (x[T] = r.collection(b.value))
                })),
            x
          )
        }, 'hierarchicalClustering')),
        (XXe = { hierarchicalClustering: ime, hca: ime }),
        (jXe = oa({ distance: 'euclidean', preference: 'median', damping: 0.8, maxIterations: 1e3, minIterations: 100, attributes: [] })),
        (KXe = o(function (e) {
          var r = e.damping,
            n = e.preference
          ;(0.5 <= r && r < 1) || oi('Damping must range on [0.5, 1).  Got: '.concat(r))
          var i = ['median', 'mean', 'min', 'max']
          return (
            i.some(function (a) {
              return a === n
            }) ||
              _t(n) ||
              oi(
                'Preference must be one of ['
                  .concat(
                    i
                      .map(function (a) {
                        return "'".concat(a, "'")
                      })
                      .join(', '),
                    '] or a number.  Got: '
                  )
                  .concat(n)
              ),
            jXe(e)
          )
        }, 'setOptions')),
        (QXe = o(function (e, r, n, i) {
          var a = o(function (l, u) {
            return i[u](l)
          }, 'attr')
          return -eC(
            e,
            i.length,
            function (s) {
              return a(r, s)
            },
            function (s) {
              return a(n, s)
            },
            r,
            n
          )
        }, 'getSimilarity')),
        (ZXe = o(function (e, r) {
          var n = null
          return r === 'median' ? (n = KYe(e)) : r === 'mean' ? (n = jYe(e)) : r === 'min' ? (n = YYe(e)) : r === 'max' ? (n = XYe(e)) : (n = r), n
        }, 'getPreference')),
        (JXe = o(function (e, r, n) {
          for (var i = [], a = 0; a < e; a++) r[a * e + a] + n[a * e + a] > 0 && i.push(a)
          return i
        }, 'findExemplars')),
        (ame = o(function (e, r, n) {
          for (var i = [], a = 0; a < e; a++) {
            for (var s = -1, l = -1 / 0, u = 0; u < n.length; u++) {
              var h = n[u]
              r[a * e + h] > l && ((s = h), (l = r[a * e + h]))
            }
            s > 0 && i.push(s)
          }
          for (var f = 0; f < n.length; f++) i[n[f]] = n[f]
          return i
        }, 'assignClusters')),
        (eje = o(function (e, r, n) {
          for (var i = ame(e, r, n), a = 0; a < n.length; a++) {
            for (var s = [], l = 0; l < i.length; l++) i[l] === n[a] && s.push(l)
            for (var u = -1, h = -1 / 0, f = 0; f < s.length; f++) {
              for (var d = 0, p = 0; p < s.length; p++) d += r[s[p] * e + s[f]]
              d > h && ((u = f), (h = d))
            }
            n[a] = s[u]
          }
          return (i = ame(e, r, n)), i
        }, 'assign')),
        (sme = o(function (e) {
          for (var r = this.cy(), n = this.nodes(), i = KXe(e), a = {}, s = 0; s < n.length; s++) a[n[s].id()] = s
          var l, u, h, f, d, p
          ;(l = n.length), (u = l * l), (h = new Array(u))
          for (var m = 0; m < u; m++) h[m] = -1 / 0
          for (var g = 0; g < l; g++) for (var y = 0; y < l; y++) g !== y && (h[g * l + y] = QXe(i.distance, n[g], n[y], i.attributes))
          f = ZXe(h, i.preference)
          for (var v = 0; v < l; v++) h[v * l + v] = f
          d = new Array(u)
          for (var x = 0; x < u; x++) d[x] = 0
          p = new Array(u)
          for (var b = 0; b < u; b++) p[b] = 0
          for (var T = new Array(l), S = new Array(l), w = new Array(l), E = 0; E < l; E++) (T[E] = 0), (S[E] = 0), (w[E] = 0)
          for (var _ = new Array(l * i.minIterations), C = 0; C < _.length; C++) _[C] = 0
          var D
          for (D = 0; D < i.maxIterations; D++) {
            for (var O = 0; O < l; O++) {
              for (var R = -1 / 0, k = -1 / 0, L = -1, A = 0, I = 0; I < l; I++)
                (T[I] = d[O * l + I]), (A = p[O * l + I] + h[O * l + I]), A >= R ? ((k = R), (R = A), (L = I)) : A > k && (k = A)
              for (var M = 0; M < l; M++) d[O * l + M] = (1 - i.damping) * (h[O * l + M] - R) + i.damping * T[M]
              d[O * l + L] = (1 - i.damping) * (h[O * l + L] - k) + i.damping * T[L]
            }
            for (var P = 0; P < l; P++) {
              for (var B = 0, F = 0; F < l; F++) (T[F] = p[F * l + P]), (S[F] = Math.max(0, d[F * l + P])), (B += S[F])
              ;(B -= S[P]), (S[P] = d[P * l + P]), (B += S[P])
              for (var z = 0; z < l; z++) p[z * l + P] = (1 - i.damping) * Math.min(0, B - S[z]) + i.damping * T[z]
              p[P * l + P] = (1 - i.damping) * (B - S[P]) + i.damping * T[P]
            }
            for (var $ = 0, U = 0; U < l; U++) {
              var K = p[U * l + U] + d[U * l + U] > 0 ? 1 : 0
              ;(_[(D % i.minIterations) * l + U] = K), ($ += K)
            }
            if ($ > 0 && (D >= i.minIterations - 1 || D == i.maxIterations - 1)) {
              for (var ee = 0, Y = 0; Y < l; Y++) {
                w[Y] = 0
                for (var ce = 0; ce < i.minIterations; ce++) w[Y] += _[ce * l + Y]
                ;(w[Y] === 0 || w[Y] === i.minIterations) && ee++
              }
              if (ee === l) break
            }
          }
          for (var Z = JXe(l, d, p), ue = eje(l, h, Z), Q = {}, j = 0; j < Z.length; j++) Q[Z[j]] = []
          for (var ne = 0; ne < n.length; ne++) {
            var te = a[n[ne].id()],
              he = ue[te]
            he != null && Q[he].push(n[ne])
          }
          for (var le = new Array(Z.length), J = 0; J < Z.length; J++) le[J] = r.collection(Q[Z[J]])
          return le
        }, 'affinityPropagation')),
        (tje = { affinityPropagation: sme, ap: sme }),
        (rje = oa({ root: void 0, directed: !1 })),
        (nje = {
          hierholzer: o(function (e) {
            if (!Ur(e)) {
              var r = arguments
              e = { root: r[0], directed: r[1] }
            }
            var n = rje(e),
              i = n.root,
              a = n.directed,
              s = this,
              l = !1,
              u,
              h,
              f
            i && (f = Zt(i) ? this.filter(i)[0].id() : i[0].id())
            var d = {},
              p = {}
            a
              ? s.forEach(function (b) {
                  var T = b.id()
                  if (b.isNode()) {
                    var S = b.indegree(!0),
                      w = b.outdegree(!0),
                      E = S - w,
                      _ = w - S
                    E == 1 ? (u ? (l = !0) : (u = T)) : _ == 1 ? (h ? (l = !0) : (h = T)) : (_ > 1 || E > 1) && (l = !0),
                      (d[T] = []),
                      b.outgoers().forEach(function (C) {
                        C.isEdge() && d[T].push(C.id())
                      })
                  } else p[T] = [void 0, b.target().id()]
                })
              : s.forEach(function (b) {
                  var T = b.id()
                  if (b.isNode()) {
                    var S = b.degree(!0)
                    S % 2 && (u ? (h ? (l = !0) : (h = T)) : (u = T)),
                      (d[T] = []),
                      b.connectedEdges().forEach(function (w) {
                        return d[T].push(w.id())
                      })
                  } else p[T] = [b.source().id(), b.target().id()]
                })
            var m = { found: !1, trail: void 0 }
            if (l) return m
            if (h && u)
              if (a) {
                if (f && h != f) return m
                f = h
              } else {
                if (f && h != f && u != f) return m
                f || (f = h)
              }
            else f || (f = s[0].id())
            var g = o(function (T) {
                for (var S = T, w = [T], E, _, C; d[S].length; )
                  (E = d[S].shift()),
                    (_ = p[E][0]),
                    (C = p[E][1]),
                    S != C
                      ? ((d[C] = d[C].filter(function (D) {
                          return D != E
                        })),
                        (S = C))
                      : !a &&
                        S != _ &&
                        ((d[_] = d[_].filter(function (D) {
                          return D != E
                        })),
                        (S = _)),
                    w.unshift(E),
                    w.unshift(S)
                return w
              }, 'walk'),
              y = [],
              v = []
            for (v = g(f); v.length != 1; ) d[v[0]].length == 0 ? (y.unshift(s.getElementById(v.shift())), y.unshift(s.getElementById(v.shift()))) : (v = g(v.shift()).concat(v))
            y.unshift(s.getElementById(v.shift()))
            for (var x in d) if (d[x].length) return m
            return (m.found = !0), (m.trail = this.spawn(y, !0)), m
          }, 'hierholzer')
        }),
        (x6 = o(function () {
          var e = this,
            r = {},
            n = 0,
            i = 0,
            a = [],
            s = [],
            l = {},
            u = o(function (p, m) {
              for (var g = s.length - 1, y = [], v = e.spawn(); s[g].x != p || s[g].y != m; ) y.push(s.pop().edge), g--
              y.push(s.pop().edge),
                y.forEach(function (x) {
                  var b = x.connectedNodes().intersection(e)
                  v.merge(x),
                    b.forEach(function (T) {
                      var S = T.id(),
                        w = T.connectedEdges().intersection(e)
                      v.merge(T),
                        r[S].cutVertex
                          ? v.merge(
                              w.filter(function (E) {
                                return E.isLoop()
                              })
                            )
                          : v.merge(w)
                    })
                }),
                a.push(v)
            }, 'buildComponent'),
            h = o(function d(p, m, g) {
              p === g && (i += 1), (r[m] = { id: n, low: n++, cutVertex: !1 })
              var y = e.getElementById(m).connectedEdges().intersection(e)
              if (y.size() === 0) a.push(e.spawn(e.getElementById(m)))
              else {
                var v, x, b, T
                y.forEach(function (S) {
                  ;(v = S.source().id()),
                    (x = S.target().id()),
                    (b = v === m ? x : v),
                    b !== g &&
                      ((T = S.id()),
                      l[T] || ((l[T] = !0), s.push({ x: m, y: b, edge: S })),
                      b in r
                        ? (r[m].low = Math.min(r[m].low, r[b].id))
                        : (d(p, b, m), (r[m].low = Math.min(r[m].low, r[b].low)), r[m].id <= r[b].low && ((r[m].cutVertex = !0), u(m, b))))
                })
              }
            }, 'biconnectedSearch')
          e.forEach(function (d) {
            if (d.isNode()) {
              var p = d.id()
              p in r || ((i = 0), h(p, p), (r[p].cutVertex = i > 1))
            }
          })
          var f = Object.keys(r)
            .filter(function (d) {
              return r[d].cutVertex
            })
            .map(function (d) {
              return e.getElementById(d)
            })
          return { cut: e.spawn(f), components: a }
        }, 'hopcroftTarjanBiconnected')),
        (ije = { hopcroftTarjanBiconnected: x6, htbc: x6, htb: x6, hopcroftTarjanBiconnectedComponents: x6 }),
        (b6 = o(function () {
          var e = this,
            r = {},
            n = 0,
            i = [],
            a = [],
            s = e.spawn(e),
            l = o(function u(h) {
              a.push(h), (r[h] = { index: n, low: n++, explored: !1 })
              var f = e.getElementById(h).connectedEdges().intersection(e)
              if (
                (f.forEach(function (y) {
                  var v = y.target().id()
                  v !== h && (v in r || u(v), r[v].explored || (r[h].low = Math.min(r[h].low, r[v].low)))
                }),
                r[h].index === r[h].low)
              ) {
                for (var d = e.spawn(); ; ) {
                  var p = a.pop()
                  if ((d.merge(e.getElementById(p)), (r[p].low = r[h].index), (r[p].explored = !0), p === h)) break
                }
                var m = d.edgesWith(d),
                  g = d.merge(m)
                i.push(g), (s = s.difference(g))
              }
            }, 'stronglyConnectedSearch')
          return (
            e.forEach(function (u) {
              if (u.isNode()) {
                var h = u.id()
                h in r || l(h)
              }
            }),
            { cut: s, components: i }
          )
        }, 'tarjanStronglyConnected')),
        (aje = { tarjanStronglyConnected: b6, tsc: b6, tscc: b6, tarjanStronglyConnectedComponents: b6 }),
        (Oge = {})
      ;[n4, OYe, PYe, FYe, zYe, VYe, WYe, gXe, Z1, J1, wB, DXe, VXe, XXe, tje, nje, ije, aje].forEach(function (t) {
        ir(Oge, t)
      })
      ;(Pge = 0),
        (Bge = 1),
        (Fge = 2),
        (ah = o(function t(e) {
          if (!(this instanceof t)) return new t(e)
          ;(this.id = 'Thenable/1.0.7'),
            (this.state = Pge),
            (this.fulfillValue = void 0),
            (this.rejectReason = void 0),
            (this.onFulfilled = []),
            (this.onRejected = []),
            (this.proxy = { then: this.then.bind(this) }),
            typeof e == 'function' && e.call(this, this.fulfill.bind(this), this.reject.bind(this))
        }, 'api'))
      ah.prototype = {
        fulfill: o(function (e) {
          return ome(this, Bge, 'fulfillValue', e)
        }, 'fulfill'),
        reject: o(function (e) {
          return ome(this, Fge, 'rejectReason', e)
        }, 'reject'),
        then: o(function (e, r) {
          var n = this,
            i = new ah()
          return n.onFulfilled.push(cme(e, i, 'fulfill')), n.onRejected.push(cme(r, i, 'reject')), $ge(n), i.proxy
        }, 'then')
      }
      ;(ome = o(function (e, r, n, i) {
        return e.state === Pge && ((e.state = r), (e[n] = i), $ge(e)), e
      }, 'deliver')),
        ($ge = o(function (e) {
          e.state === Bge ? lme(e, 'onFulfilled', e.fulfillValue) : e.state === Fge && lme(e, 'onRejected', e.rejectReason)
        }, 'execute')),
        (lme = o(function (e, r, n) {
          if (e[r].length !== 0) {
            var i = e[r]
            e[r] = []
            var a = o(function () {
              for (var l = 0; l < i.length; l++) i[l](n)
            }, 'func')
            typeof setImmediate == 'function' ? setImmediate(a) : setTimeout(a, 0)
          }
        }, 'execute_handlers')),
        (cme = o(function (e, r, n) {
          return function (i) {
            if (typeof e != 'function') r[n].call(r, i)
            else {
              var a
              try {
                a = e(i)
              } catch (s) {
                r.reject(s)
                return
              }
              sje(r, a)
            }
          }
        }, 'resolver')),
        (sje = o(function t(e, r) {
          if (e === r || e.proxy === r) {
            e.reject(new TypeError('cannot resolve promise with itself'))
            return
          }
          var n
          if ((qi(r) === 'object' && r !== null) || typeof r == 'function')
            try {
              n = r.then
            } catch (a) {
              e.reject(a)
              return
            }
          if (typeof n == 'function') {
            var i = !1
            try {
              n.call(
                r,
                function (a) {
                  i || ((i = !0), a === r ? e.reject(new TypeError('circular thenable chain')) : t(e, a))
                },
                function (a) {
                  i || ((i = !0), e.reject(a))
                }
              )
            } catch (a) {
              i || e.reject(a)
            }
            return
          }
          e.fulfill(r)
        }, 'resolve'))
      ah.all = function (t) {
        return new ah(function (e, r) {
          for (
            var n = new Array(t.length),
              i = 0,
              a = o(function (u, h) {
                ;(n[u] = h), i++, i === t.length && e(n)
              }, 'fulfill'),
              s = 0;
            s < t.length;
            s++
          )
            (function (l) {
              var u = t[l],
                h = u != null && u.then != null
              if (h)
                u.then(
                  function (d) {
                    a(l, d)
                  },
                  function (d) {
                    r(d)
                  }
                )
              else {
                var f = u
                a(l, f)
              }
            })(s)
        })
      }
      ah.resolve = function (t) {
        return new ah(function (e, r) {
          e(t)
        })
      }
      ah.reject = function (t) {
        return new ah(function (e, r) {
          r(t)
        })
      }
      ;(sy = typeof Promise < 'u' ? Promise : ah),
        (kB = o(function (e, r, n) {
          var i = BB(e),
            a = !i,
            s = (this._private = ir({ duration: 1e3 }, r, n))
          if (
            ((s.target = e),
            (s.style = s.style || s.css),
            (s.started = !1),
            (s.playing = !1),
            (s.hooked = !1),
            (s.applying = !1),
            (s.progress = 0),
            (s.completes = []),
            (s.frames = []),
            s.complete && li(s.complete) && s.completes.push(s.complete),
            a)
          ) {
            var l = e.position()
            ;(s.startPosition = s.startPosition || { x: l.x, y: l.y }), (s.startStyle = s.startStyle || e.cy().style().getAnimationStartStyle(e, s.style))
          }
          if (i) {
            var u = e.pan()
            ;(s.startPan = { x: u.x, y: u.y }), (s.startZoom = e.zoom())
          }
          ;(this.length = 1), (this[0] = this)
        }, 'Animation')),
        (Jp = kB.prototype)
      ir(Jp, {
        instanceString: o(function () {
          return 'animation'
        }, 'instanceString'),
        hook: o(function () {
          var e = this._private
          if (!e.hooked) {
            var r,
              n = e.target._private.animation
            e.queue ? (r = n.queue) : (r = n.current), r.push(this), xo(e.target) && e.target.cy().addToAnimationPool(e.target), (e.hooked = !0)
          }
          return this
        }, 'hook'),
        play: o(function () {
          var e = this._private
          return e.progress === 1 && (e.progress = 0), (e.playing = !0), (e.started = !1), (e.stopped = !1), this.hook(), this
        }, 'play'),
        playing: o(function () {
          return this._private.playing
        }, 'playing'),
        apply: o(function () {
          var e = this._private
          return (e.applying = !0), (e.started = !1), (e.stopped = !1), this.hook(), this
        }, 'apply'),
        applying: o(function () {
          return this._private.applying
        }, 'applying'),
        pause: o(function () {
          var e = this._private
          return (e.playing = !1), (e.started = !1), this
        }, 'pause'),
        stop: o(function () {
          var e = this._private
          return (e.playing = !1), (e.started = !1), (e.stopped = !0), this
        }, 'stop'),
        rewind: o(function () {
          return this.progress(0)
        }, 'rewind'),
        fastforward: o(function () {
          return this.progress(1)
        }, 'fastforward'),
        time: o(function (e) {
          var r = this._private
          return e === void 0 ? r.progress * r.duration : this.progress(e / r.duration)
        }, 'time'),
        progress: o(function (e) {
          var r = this._private,
            n = r.playing
          return e === void 0 ? r.progress : (n && this.pause(), (r.progress = e), (r.started = !1), n && this.play(), this)
        }, 'progress'),
        completed: o(function () {
          return this._private.progress === 1
        }, 'completed'),
        reverse: o(function () {
          var e = this._private,
            r = e.playing
          r && this.pause(), (e.progress = 1 - e.progress), (e.started = !1)
          var n = o(function (h, f) {
            var d = e[h]
            d != null && ((e[h] = e[f]), (e[f] = d))
          }, 'swap')
          if ((n('zoom', 'startZoom'), n('pan', 'startPan'), n('position', 'startPosition'), e.style))
            for (var i = 0; i < e.style.length; i++) {
              var a = e.style[i],
                s = a.name,
                l = e.startStyle[s]
              ;(e.startStyle[s] = a), (e.style[i] = l)
            }
          return r && this.play(), this
        }, 'reverse'),
        promise: o(function (e) {
          var r = this._private,
            n
          switch (e) {
            case 'frame':
              n = r.frames
              break
            default:
            case 'complete':
            case 'completed':
              n = r.completes
          }
          return new sy(function (i, a) {
            n.push(function () {
              i()
            })
          })
        }, 'promise')
      })
      Jp.complete = Jp.completed
      Jp.run = Jp.play
      Jp.running = Jp.playing
      ;(oje = {
        animated: o(function () {
          return o(function () {
            var r = this,
              n = r.length !== void 0,
              i = n ? r : [r],
              a = this._private.cy || this
            if (!a.styleEnabled()) return !1
            var s = i[0]
            if (s) return s._private.animation.current.length > 0
          }, 'animatedImpl')
        }, 'animated'),
        clearQueue: o(function () {
          return o(function () {
            var r = this,
              n = r.length !== void 0,
              i = n ? r : [r],
              a = this._private.cy || this
            if (!a.styleEnabled()) return this
            for (var s = 0; s < i.length; s++) {
              var l = i[s]
              l._private.animation.queue = []
            }
            return this
          }, 'clearQueueImpl')
        }, 'clearQueue'),
        delay: o(function () {
          return o(function (r, n) {
            var i = this._private.cy || this
            return i.styleEnabled() ? this.animate({ delay: r, duration: r, complete: n }) : this
          }, 'delayImpl')
        }, 'delay'),
        delayAnimation: o(function () {
          return o(function (r, n) {
            var i = this._private.cy || this
            return i.styleEnabled() ? this.animation({ delay: r, duration: r, complete: n }) : this
          }, 'delayAnimationImpl')
        }, 'delayAnimation'),
        animation: o(function () {
          return o(function (r, n) {
            var i = this,
              a = i.length !== void 0,
              s = a ? i : [i],
              l = this._private.cy || this,
              u = !a,
              h = !u
            if (!l.styleEnabled()) return this
            var f = l.style()
            r = ir({}, r, n)
            var d = Object.keys(r).length === 0
            if (d) return new kB(s[0], r)
            switch ((r.duration === void 0 && (r.duration = 400), r.duration)) {
              case 'slow':
                r.duration = 600
                break
              case 'fast':
                r.duration = 200
                break
            }
            if ((h && ((r.style = f.getPropsList(r.style || r.css)), (r.css = void 0)), h && r.renderedPosition != null)) {
              var p = r.renderedPosition,
                m = l.pan(),
                g = l.zoom()
              r.position = Ege(p, g, m)
            }
            if (u && r.panBy != null) {
              var y = r.panBy,
                v = l.pan()
              r.pan = { x: v.x + y.x, y: v.y + y.y }
            }
            var x = r.center || r.centre
            if (u && x != null) {
              var b = l.getCenterPan(x.eles, r.zoom)
              b != null && (r.pan = b)
            }
            if (u && r.fit != null) {
              var T = r.fit,
                S = l.getFitViewport(T.eles || T.boundingBox, T.padding)
              S != null && ((r.pan = S.pan), (r.zoom = S.zoom))
            }
            if (u && Ur(r.zoom)) {
              var w = l.getZoomedViewport(r.zoom)
              w != null ? (w.zoomed && (r.zoom = w.zoom), w.panned && (r.pan = w.pan)) : (r.zoom = null)
            }
            return new kB(s[0], r)
          }, 'animationImpl')
        }, 'animation'),
        animate: o(function () {
          return o(function (r, n) {
            var i = this,
              a = i.length !== void 0,
              s = a ? i : [i],
              l = this._private.cy || this
            if (!l.styleEnabled()) return this
            n && (r = ir({}, r, n))
            for (var u = 0; u < s.length; u++) {
              var h = s[u],
                f = h.animated() && (r.queue === void 0 || r.queue),
                d = h.animation(r, f ? { queue: !0 } : void 0)
              d.play()
            }
            return this
          }, 'animateImpl')
        }, 'animate'),
        stop: o(function () {
          return o(function (r, n) {
            var i = this,
              a = i.length !== void 0,
              s = a ? i : [i],
              l = this._private.cy || this
            if (!l.styleEnabled()) return this
            for (var u = 0; u < s.length; u++) {
              for (var h = s[u], f = h._private, d = f.animation.current, p = 0; p < d.length; p++) {
                var m = d[p],
                  g = m._private
                n && (g.duration = 0)
              }
              r && (f.animation.queue = []), n || (f.animation.current = [])
            }
            return l.notify('draw'), this
          }, 'stopImpl')
        }, 'stop')
      }),
        (lje = Array.isArray),
        (tC = lje),
        (cje = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/),
        (uje = /^\w*$/)
      o(hje, 'isKey')
      ;(fje = hje), (dje = '[object AsyncFunction]'), (pje = '[object Function]'), (mje = '[object GeneratorFunction]'), (gje = '[object Proxy]')
      o(yje, 'isFunction')
      ;(vje = yje),
        (xje = Q6['__core-js_shared__']),
        (lB = xje),
        (ume = (function () {
          var t = /[^.]+$/.exec((lB && lB.keys && lB.keys.IE_PROTO) || '')
          return t ? 'Symbol(src)_1.' + t : ''
        })())
      o(bje, 'isMasked')
      ;(Tje = bje), (wje = Function.prototype), (kje = wje.toString)
      o(Eje, 'toSource')
      ;(Sje = Eje),
        (Cje = /[\\^$.*+?()[\]{}|]/g),
        (Aje = /^\[object .+?Constructor\]$/),
        (_je = Function.prototype),
        (Dje = Object.prototype),
        (Lje = _je.toString),
        (Rje = Dje.hasOwnProperty),
        (Nje = RegExp(
          '^' +
            Lje.call(Rje)
              .replace(Cje, '\\$&')
              .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') +
            '$'
        ))
      o(Mje, 'baseIsNative')
      Ije = Mje
      o(Oje, 'getValue$1')
      Pje = Oje
      o(Bje, 'getNative')
      ;(qB = Bje), (Fje = qB(Object, 'create')), (s4 = Fje)
      o($je, 'hashClear')
      zje = $je
      o(Gje, 'hashDelete')
      ;(Vje = Gje), (Uje = '__lodash_hash_undefined__'), (Hje = Object.prototype), (Wje = Hje.hasOwnProperty)
      o(qje, 'hashGet')
      ;(Yje = qje), (Xje = Object.prototype), (jje = Xje.hasOwnProperty)
      o(Kje, 'hashHas')
      ;(Qje = Kje), (Zje = '__lodash_hash_undefined__')
      o(Jje, 'hashSet')
      eKe = Jje
      o(oy, 'Hash')
      oy.prototype.clear = zje
      oy.prototype.delete = Vje
      oy.prototype.get = Yje
      oy.prototype.has = Qje
      oy.prototype.set = eKe
      hme = oy
      o(tKe, 'listCacheClear')
      rKe = tKe
      o(nKe, 'eq')
      zge = nKe
      o(iKe, 'assocIndexOf')
      ;(rC = iKe), (aKe = Array.prototype), (sKe = aKe.splice)
      o(oKe, 'listCacheDelete')
      lKe = oKe
      o(cKe, 'listCacheGet')
      uKe = cKe
      o(hKe, 'listCacheHas')
      fKe = hKe
      o(dKe, 'listCacheSet')
      pKe = dKe
      o(ly, 'ListCache')
      ly.prototype.clear = rKe
      ly.prototype.delete = lKe
      ly.prototype.get = uKe
      ly.prototype.has = fKe
      ly.prototype.set = pKe
      ;(mKe = ly), (gKe = qB(Q6, 'Map')), (yKe = gKe)
      o(vKe, 'mapCacheClear')
      xKe = vKe
      o(bKe, 'isKeyable')
      TKe = bKe
      o(wKe, 'getMapData')
      nC = wKe
      o(kKe, 'mapCacheDelete')
      EKe = kKe
      o(SKe, 'mapCacheGet')
      CKe = SKe
      o(AKe, 'mapCacheHas')
      _Ke = AKe
      o(DKe, 'mapCacheSet')
      LKe = DKe
      o(cy, 'MapCache')
      cy.prototype.clear = xKe
      cy.prototype.delete = EKe
      cy.prototype.get = CKe
      cy.prototype.has = _Ke
      cy.prototype.set = LKe
      ;(Gge = cy), (RKe = 'Expected a function')
      o(YB, 'memoize')
      YB.Cache = Gge
      ;(NKe = YB), (MKe = 500)
      o(IKe, 'memoizeCapped')
      ;(OKe = IKe),
        (PKe = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g),
        (BKe = /\\(\\)?/g),
        (FKe = OKe(function (t) {
          var e = []
          return (
            t.charCodeAt(0) === 46 && e.push(''),
            t.replace(PKe, function (r, n, i, a) {
              e.push(i ? a.replace(BKe, '$1') : n || r)
            }),
            e
          )
        })),
        (Vge = FKe)
      o($Ke, 'arrayMap')
      ;(Uge = $Ke), (zKe = 1 / 0), (fme = ty ? ty.prototype : void 0), (dme = fme ? fme.toString : void 0)
      o(Hge, 'baseToString')
      GKe = Hge
      o(VKe, 'toString$1')
      Wge = VKe
      o(UKe, 'castPath')
      ;(qge = UKe), (HKe = 1 / 0)
      o(WKe, 'toKey')
      XB = WKe
      o(qKe, 'baseGet')
      YKe = qKe
      o(XKe, 'get')
      ;(jKe = XKe),
        (KKe = (function () {
          try {
            var t = qB(Object, 'defineProperty')
            return t({}, '', {}), t
          } catch {}
        })()),
        (pme = KKe)
      o(QKe, 'baseAssignValue')
      ;(ZKe = QKe), (JKe = Object.prototype), (eQe = JKe.hasOwnProperty)
      o(tQe, 'assignValue')
      ;(rQe = tQe), (nQe = 9007199254740991), (iQe = /^(?:0|[1-9]\d*)$/)
      o(aQe, 'isIndex')
      sQe = aQe
      o(oQe, 'baseSet')
      lQe = oQe
      o(cQe, 'set')
      uQe = cQe
      o(hQe, 'copyArray')
      fQe = hQe
      o(dQe, 'toPath')
      ;(pQe = dQe),
        (mQe = {
          data: o(function (e) {
            var r = {
              field: 'data',
              bindingEvent: 'data',
              allowBinding: !1,
              allowSetting: !1,
              allowGetting: !1,
              settingEvent: 'data',
              settingTriggersEvent: !1,
              triggerFnName: 'trigger',
              immutableKeys: {},
              updateStyle: !1,
              beforeGet: o(function (i) {}, 'beforeGet'),
              beforeSet: o(function (i, a) {}, 'beforeSet'),
              onSet: o(function (i) {}, 'onSet'),
              canSet: o(function (i) {
                return !0
              }, 'canSet')
            }
            return (
              (e = ir({}, r, e)),
              o(function (i, a) {
                var s = e,
                  l = this,
                  u = l.length !== void 0,
                  h = u ? l : [l],
                  f = u ? l[0] : l
                if (Zt(i)) {
                  var d = i.indexOf('.') !== -1,
                    p = d && pQe(i)
                  if (s.allowGetting && a === void 0) {
                    var m
                    return f && (s.beforeGet(f), p && f._private[s.field][i] === void 0 ? (m = jKe(f._private[s.field], p)) : (m = f._private[s.field][i])), m
                  } else if (s.allowSetting && a !== void 0) {
                    var g = !s.immutableKeys[i]
                    if (g) {
                      var y = ige({}, i, a)
                      s.beforeSet(l, y)
                      for (var v = 0, x = h.length; v < x; v++) {
                        var b = h[v]
                        s.canSet(b) && (p && f._private[s.field][i] === void 0 ? uQe(b._private[s.field], p, a) : (b._private[s.field][i] = a))
                      }
                      s.updateStyle && l.updateStyle(), s.onSet(l), s.settingTriggersEvent && l[s.triggerFnName](s.settingEvent)
                    }
                  }
                } else if (s.allowSetting && Ur(i)) {
                  var T = i,
                    S,
                    w,
                    E = Object.keys(T)
                  s.beforeSet(l, T)
                  for (var _ = 0; _ < E.length; _++) {
                    ;(S = E[_]), (w = T[S])
                    var C = !s.immutableKeys[S]
                    if (C)
                      for (var D = 0; D < h.length; D++) {
                        var O = h[D]
                        s.canSet(O) && (O._private[s.field][S] = w)
                      }
                  }
                  s.updateStyle && l.updateStyle(), s.onSet(l), s.settingTriggersEvent && l[s.triggerFnName](s.settingEvent)
                } else if (s.allowBinding && li(i)) {
                  var R = i
                  l.on(s.bindingEvent, R)
                } else if (s.allowGetting && i === void 0) {
                  var k
                  return f && (s.beforeGet(f), (k = f._private[s.field])), k
                }
                return l
              }, 'dataImpl')
            )
          }, 'data'),
          removeData: o(function (e) {
            var r = { field: 'data', event: 'data', triggerFnName: 'trigger', triggerEvent: !1, immutableKeys: {} }
            return (
              (e = ir({}, r, e)),
              o(function (i) {
                var a = e,
                  s = this,
                  l = s.length !== void 0,
                  u = l ? s : [s]
                if (Zt(i)) {
                  for (var h = i.split(/\s+/), f = h.length, d = 0; d < f; d++) {
                    var p = h[d]
                    if (!Pf(p)) {
                      var m = !a.immutableKeys[p]
                      if (m) for (var g = 0, y = u.length; g < y; g++) u[g]._private[a.field][p] = void 0
                    }
                  }
                  a.triggerEvent && s[a.triggerFnName](a.event)
                } else if (i === void 0) {
                  for (var v = 0, x = u.length; v < x; v++)
                    for (var b = u[v]._private[a.field], T = Object.keys(b), S = 0; S < T.length; S++) {
                      var w = T[S],
                        E = !a.immutableKeys[w]
                      E && (b[w] = void 0)
                    }
                  a.triggerEvent && s[a.triggerFnName](a.event)
                }
                return s
              }, 'removeDataImpl')
            )
          }, 'removeData')
        }),
        (gQe = {
          eventAliasesOn: o(function (e) {
            var r = e
            ;(r.addListener = r.listen = r.bind = r.on),
              (r.unlisten = r.unbind = r.off = r.removeListener),
              (r.trigger = r.emit),
              (r.pon = r.promiseOn =
                function (n, i) {
                  var a = this,
                    s = Array.prototype.slice.call(arguments, 0)
                  return new sy(function (l, u) {
                    var h = o(function (m) {
                        a.off.apply(a, d), l(m)
                      }, 'callback'),
                      f = s.concat([h]),
                      d = f.concat([])
                    a.on.apply(a, f)
                  })
                })
          }, 'eventAliasesOn')
        }),
        (un = {})
      ;[oje, mQe, gQe].forEach(function (t) {
        ir(un, t)
      })
      ;(yQe = {
        animate: un.animate(),
        animation: un.animation(),
        animated: un.animated(),
        clearQueue: un.clearQueue(),
        delay: un.delay(),
        delayAnimation: un.delayAnimation(),
        stop: un.stop()
      }),
        (R6 = {
          classes: o(function (e) {
            var r = this
            if (e === void 0) {
              var n = []
              return (
                r[0]._private.classes.forEach(function (g) {
                  return n.push(g)
                }),
                n
              )
            } else En(e) || (e = (e || '').match(/\S+/g) || [])
            for (var i = [], a = new ay(e), s = 0; s < r.length; s++) {
              for (var l = r[s], u = l._private, h = u.classes, f = !1, d = 0; d < e.length; d++) {
                var p = e[d],
                  m = h.has(p)
                if (!m) {
                  f = !0
                  break
                }
              }
              f || (f = h.size !== e.length), f && ((u.classes = a), i.push(l))
            }
            return i.length > 0 && this.spawn(i).updateStyle().emit('class'), r
          }, 'classes'),
          addClass: o(function (e) {
            return this.toggleClass(e, !0)
          }, 'addClass'),
          hasClass: o(function (e) {
            var r = this[0]
            return r != null && r._private.classes.has(e)
          }, 'hasClass'),
          toggleClass: o(function (e, r) {
            En(e) || (e = e.match(/\S+/g) || [])
            for (var n = this, i = r === void 0, a = [], s = 0, l = n.length; s < l; s++)
              for (var u = n[s], h = u._private.classes, f = !1, d = 0; d < e.length; d++) {
                var p = e[d],
                  m = h.has(p),
                  g = !1
                r || (i && !m) ? (h.add(p), (g = !0)) : (!r || (i && m)) && (h.delete(p), (g = !0)), !f && g && (a.push(u), (f = !0))
              }
            return a.length > 0 && this.spawn(a).updateStyle().emit('class'), n
          }, 'toggleClass'),
          removeClass: o(function (e) {
            return this.toggleClass(e, !1)
          }, 'removeClass'),
          flashClass: o(function (e, r) {
            var n = this
            if (r == null) r = 250
            else if (r === 0) return n
            return (
              n.addClass(e),
              setTimeout(function () {
                n.removeClass(e)
              }, r),
              n
            )
          }, 'flashClass')
        })
      R6.className = R6.classNames = R6.classes
      Vr = {
        metaChar: '[\\!\\"\\#\\$\\%\\&\\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]',
        comparatorOp: '=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=',
        boolOp: '\\?|\\!|\\^',
        string: `"(?:\\\\"|[^"])*"|'(?:\\\\'|[^'])*'`,
        number: Wi,
        meta: 'degree|indegree|outdegree',
        separator: '\\s*,\\s*',
        descendant: '\\s+',
        child: '\\s+>\\s+',
        subject: '\\$',
        group: 'node|edge|\\*',
        directedEdge: '\\s+->\\s+',
        undirectedEdge: '\\s+<->\\s+'
      }
      Vr.variable = '(?:[\\w-.]|(?:\\\\' + Vr.metaChar + '))+'
      Vr.className = '(?:[\\w-]|(?:\\\\' + Vr.metaChar + '))+'
      Vr.value = Vr.string + '|' + Vr.number
      Vr.id = Vr.variable
      ;(function () {
        var t, e, r
        for (t = Vr.comparatorOp.split('|'), r = 0; r < t.length; r++) (e = t[r]), (Vr.comparatorOp += '|@' + e)
        for (t = Vr.comparatorOp.split('|'), r = 0; r < t.length; r++) (e = t[r]), !(e.indexOf('!') >= 0) && e !== '=' && (Vr.comparatorOp += '|\\!' + e)
      })()
      ;(gn = o(function () {
        return { checks: [] }
      }, 'newQuery')),
        ($t = {
          GROUP: 0,
          COLLECTION: 1,
          FILTER: 2,
          DATA_COMPARE: 3,
          DATA_EXIST: 4,
          DATA_BOOL: 5,
          META_COMPARE: 6,
          STATE: 7,
          ID: 8,
          CLASS: 9,
          UNDIRECTED_EDGE: 10,
          DIRECTED_EDGE: 11,
          NODE_SOURCE: 12,
          NODE_TARGET: 13,
          NODE_NEIGHBOR: 14,
          CHILD: 15,
          DESCENDANT: 16,
          PARENT: 17,
          ANCESTOR: 18,
          COMPOUND_SPLIT: 19,
          TRUE: 20
        }),
        (EB = [
          {
            selector: ':selected',
            matches: o(function (e) {
              return e.selected()
            }, 'matches')
          },
          {
            selector: ':unselected',
            matches: o(function (e) {
              return !e.selected()
            }, 'matches')
          },
          {
            selector: ':selectable',
            matches: o(function (e) {
              return e.selectable()
            }, 'matches')
          },
          {
            selector: ':unselectable',
            matches: o(function (e) {
              return !e.selectable()
            }, 'matches')
          },
          {
            selector: ':locked',
            matches: o(function (e) {
              return e.locked()
            }, 'matches')
          },
          {
            selector: ':unlocked',
            matches: o(function (e) {
              return !e.locked()
            }, 'matches')
          },
          {
            selector: ':visible',
            matches: o(function (e) {
              return e.visible()
            }, 'matches')
          },
          {
            selector: ':hidden',
            matches: o(function (e) {
              return !e.visible()
            }, 'matches')
          },
          {
            selector: ':transparent',
            matches: o(function (e) {
              return e.transparent()
            }, 'matches')
          },
          {
            selector: ':grabbed',
            matches: o(function (e) {
              return e.grabbed()
            }, 'matches')
          },
          {
            selector: ':free',
            matches: o(function (e) {
              return !e.grabbed()
            }, 'matches')
          },
          {
            selector: ':removed',
            matches: o(function (e) {
              return e.removed()
            }, 'matches')
          },
          {
            selector: ':inside',
            matches: o(function (e) {
              return !e.removed()
            }, 'matches')
          },
          {
            selector: ':grabbable',
            matches: o(function (e) {
              return e.grabbable()
            }, 'matches')
          },
          {
            selector: ':ungrabbable',
            matches: o(function (e) {
              return !e.grabbable()
            }, 'matches')
          },
          {
            selector: ':animated',
            matches: o(function (e) {
              return e.animated()
            }, 'matches')
          },
          {
            selector: ':unanimated',
            matches: o(function (e) {
              return !e.animated()
            }, 'matches')
          },
          {
            selector: ':parent',
            matches: o(function (e) {
              return e.isParent()
            }, 'matches')
          },
          {
            selector: ':childless',
            matches: o(function (e) {
              return e.isChildless()
            }, 'matches')
          },
          {
            selector: ':child',
            matches: o(function (e) {
              return e.isChild()
            }, 'matches')
          },
          {
            selector: ':orphan',
            matches: o(function (e) {
              return e.isOrphan()
            }, 'matches')
          },
          {
            selector: ':nonorphan',
            matches: o(function (e) {
              return e.isChild()
            }, 'matches')
          },
          {
            selector: ':compound',
            matches: o(function (e) {
              return e.isNode() ? e.isParent() : e.source().isParent() || e.target().isParent()
            }, 'matches')
          },
          {
            selector: ':loop',
            matches: o(function (e) {
              return e.isLoop()
            }, 'matches')
          },
          {
            selector: ':simple',
            matches: o(function (e) {
              return e.isSimple()
            }, 'matches')
          },
          {
            selector: ':active',
            matches: o(function (e) {
              return e.active()
            }, 'matches')
          },
          {
            selector: ':inactive',
            matches: o(function (e) {
              return !e.active()
            }, 'matches')
          },
          {
            selector: ':backgrounding',
            matches: o(function (e) {
              return e.backgrounding()
            }, 'matches')
          },
          {
            selector: ':nonbackgrounding',
            matches: o(function (e) {
              return !e.backgrounding()
            }, 'matches')
          }
        ].sort(function (t, e) {
          return Lqe(t.selector, e.selector)
        })),
        (vQe = (function () {
          for (var t = {}, e, r = 0; r < EB.length; r++) (e = EB[r]), (t[e.selector] = e.matches)
          return t
        })()),
        (xQe = o(function (e, r) {
          return vQe[e](r)
        }, 'stateSelectorMatches')),
        (bQe =
          '(' +
          EB.map(function (t) {
            return t.selector
          }).join('|') +
          ')'),
        (U1 = o(function (e) {
          return e.replace(new RegExp('\\\\(' + Vr.metaChar + ')', 'g'), function (r, n) {
            return n
          })
        }, 'cleanMetaChars')),
        (Rf = o(function (e, r, n) {
          e[e.length - 1] = n
        }, 'replaceLastQuery')),
        (SB = [
          {
            name: 'group',
            query: !0,
            regex: '(' + Vr.group + ')',
            populate: o(function (e, r, n) {
              var i = Ri(n, 1),
                a = i[0]
              r.checks.push({ type: $t.GROUP, value: a === '*' ? a : a + 's' })
            }, 'populate')
          },
          {
            name: 'state',
            query: !0,
            regex: bQe,
            populate: o(function (e, r, n) {
              var i = Ri(n, 1),
                a = i[0]
              r.checks.push({ type: $t.STATE, value: a })
            }, 'populate')
          },
          {
            name: 'id',
            query: !0,
            regex: '\\#(' + Vr.id + ')',
            populate: o(function (e, r, n) {
              var i = Ri(n, 1),
                a = i[0]
              r.checks.push({ type: $t.ID, value: U1(a) })
            }, 'populate')
          },
          {
            name: 'className',
            query: !0,
            regex: '\\.(' + Vr.className + ')',
            populate: o(function (e, r, n) {
              var i = Ri(n, 1),
                a = i[0]
              r.checks.push({ type: $t.CLASS, value: U1(a) })
            }, 'populate')
          },
          {
            name: 'dataExists',
            query: !0,
            regex: '\\[\\s*(' + Vr.variable + ')\\s*\\]',
            populate: o(function (e, r, n) {
              var i = Ri(n, 1),
                a = i[0]
              r.checks.push({ type: $t.DATA_EXIST, field: U1(a) })
            }, 'populate')
          },
          {
            name: 'dataCompare',
            query: !0,
            regex: '\\[\\s*(' + Vr.variable + ')\\s*(' + Vr.comparatorOp + ')\\s*(' + Vr.value + ')\\s*\\]',
            populate: o(function (e, r, n) {
              var i = Ri(n, 3),
                a = i[0],
                s = i[1],
                l = i[2],
                u = new RegExp('^' + Vr.string + '$').exec(l) != null
              u ? (l = l.substring(1, l.length - 1)) : (l = parseFloat(l)), r.checks.push({ type: $t.DATA_COMPARE, field: U1(a), operator: s, value: l })
            }, 'populate')
          },
          {
            name: 'dataBool',
            query: !0,
            regex: '\\[\\s*(' + Vr.boolOp + ')\\s*(' + Vr.variable + ')\\s*\\]',
            populate: o(function (e, r, n) {
              var i = Ri(n, 2),
                a = i[0],
                s = i[1]
              r.checks.push({ type: $t.DATA_BOOL, field: U1(s), operator: a })
            }, 'populate')
          },
          {
            name: 'metaCompare',
            query: !0,
            regex: '\\[\\[\\s*(' + Vr.meta + ')\\s*(' + Vr.comparatorOp + ')\\s*(' + Vr.number + ')\\s*\\]\\]',
            populate: o(function (e, r, n) {
              var i = Ri(n, 3),
                a = i[0],
                s = i[1],
                l = i[2]
              r.checks.push({ type: $t.META_COMPARE, field: U1(a), operator: s, value: parseFloat(l) })
            }, 'populate')
          },
          {
            name: 'nextQuery',
            separator: !0,
            regex: Vr.separator,
            populate: o(function (e, r) {
              var n = e.currentSubject,
                i = e.edgeCount,
                a = e.compoundCount,
                s = e[e.length - 1]
              n != null && ((s.subject = n), (e.currentSubject = null)), (s.edgeCount = i), (s.compoundCount = a), (e.edgeCount = 0), (e.compoundCount = 0)
              var l = (e[e.length++] = gn())
              return l
            }, 'populate')
          },
          {
            name: 'directedEdge',
            separator: !0,
            regex: Vr.directedEdge,
            populate: o(function (e, r) {
              if (e.currentSubject == null) {
                var n = gn(),
                  i = r,
                  a = gn()
                return n.checks.push({ type: $t.DIRECTED_EDGE, source: i, target: a }), Rf(e, r, n), e.edgeCount++, a
              } else {
                var s = gn(),
                  l = r,
                  u = gn()
                return s.checks.push({ type: $t.NODE_SOURCE, source: l, target: u }), Rf(e, r, s), e.edgeCount++, u
              }
            }, 'populate')
          },
          {
            name: 'undirectedEdge',
            separator: !0,
            regex: Vr.undirectedEdge,
            populate: o(function (e, r) {
              if (e.currentSubject == null) {
                var n = gn(),
                  i = r,
                  a = gn()
                return n.checks.push({ type: $t.UNDIRECTED_EDGE, nodes: [i, a] }), Rf(e, r, n), e.edgeCount++, a
              } else {
                var s = gn(),
                  l = r,
                  u = gn()
                return s.checks.push({ type: $t.NODE_NEIGHBOR, node: l, neighbor: u }), Rf(e, r, s), u
              }
            }, 'populate')
          },
          {
            name: 'child',
            separator: !0,
            regex: Vr.child,
            populate: o(function (e, r) {
              if (e.currentSubject == null) {
                var n = gn(),
                  i = gn(),
                  a = e[e.length - 1]
                return n.checks.push({ type: $t.CHILD, parent: a, child: i }), Rf(e, r, n), e.compoundCount++, i
              } else if (e.currentSubject === r) {
                var s = gn(),
                  l = e[e.length - 1],
                  u = gn(),
                  h = gn(),
                  f = gn(),
                  d = gn()
                return (
                  s.checks.push({ type: $t.COMPOUND_SPLIT, left: l, right: u, subject: h }),
                  (h.checks = r.checks),
                  (r.checks = [{ type: $t.TRUE }]),
                  d.checks.push({ type: $t.TRUE }),
                  u.checks.push({ type: $t.PARENT, parent: d, child: f }),
                  Rf(e, l, s),
                  (e.currentSubject = h),
                  e.compoundCount++,
                  f
                )
              } else {
                var p = gn(),
                  m = gn(),
                  g = [{ type: $t.PARENT, parent: p, child: m }]
                return (p.checks = r.checks), (r.checks = g), e.compoundCount++, m
              }
            }, 'populate')
          },
          {
            name: 'descendant',
            separator: !0,
            regex: Vr.descendant,
            populate: o(function (e, r) {
              if (e.currentSubject == null) {
                var n = gn(),
                  i = gn(),
                  a = e[e.length - 1]
                return n.checks.push({ type: $t.DESCENDANT, ancestor: a, descendant: i }), Rf(e, r, n), e.compoundCount++, i
              } else if (e.currentSubject === r) {
                var s = gn(),
                  l = e[e.length - 1],
                  u = gn(),
                  h = gn(),
                  f = gn(),
                  d = gn()
                return (
                  s.checks.push({ type: $t.COMPOUND_SPLIT, left: l, right: u, subject: h }),
                  (h.checks = r.checks),
                  (r.checks = [{ type: $t.TRUE }]),
                  d.checks.push({ type: $t.TRUE }),
                  u.checks.push({ type: $t.ANCESTOR, ancestor: d, descendant: f }),
                  Rf(e, l, s),
                  (e.currentSubject = h),
                  e.compoundCount++,
                  f
                )
              } else {
                var p = gn(),
                  m = gn(),
                  g = [{ type: $t.ANCESTOR, ancestor: p, descendant: m }]
                return (p.checks = r.checks), (r.checks = g), e.compoundCount++, m
              }
            }, 'populate')
          },
          {
            name: 'subject',
            modifier: !0,
            regex: Vr.subject,
            populate: o(function (e, r) {
              if (e.currentSubject != null && e.currentSubject !== r) return hn('Redefinition of subject in selector `' + e.toString() + '`'), !1
              e.currentSubject = r
              var n = e[e.length - 1],
                i = n.checks[0],
                a = i == null ? null : i.type
              a === $t.DIRECTED_EDGE
                ? (i.type = $t.NODE_TARGET)
                : a === $t.UNDIRECTED_EDGE && ((i.type = $t.NODE_NEIGHBOR), (i.node = i.nodes[1]), (i.neighbor = i.nodes[0]), (i.nodes = null))
            }, 'populate')
          }
        ])
      SB.forEach(function (t) {
        return (t.regexObj = new RegExp('^' + t.regex))
      })
      ;(TQe = o(function (e) {
        for (var r, n, i, a = 0; a < SB.length; a++) {
          var s = SB[a],
            l = s.name,
            u = e.match(s.regexObj)
          if (u != null) {
            ;(n = u), (r = s), (i = l)
            var h = u[0]
            e = e.substring(h.length)
            break
          }
        }
        return { expr: r, match: n, name: i, remaining: e }
      }, 'consumeExpr')),
        (wQe = o(function (e) {
          var r = e.match(/^\s+/)
          if (r) {
            var n = r[0]
            e = e.substring(n.length)
          }
          return e
        }, 'consumeWhitespace')),
        (kQe = o(function (e) {
          var r = this,
            n = (r.inputText = e),
            i = (r[0] = gn())
          for (r.length = 1, n = wQe(n); ; ) {
            var a = TQe(n)
            if (a.expr == null) return hn('The selector `' + e + '`is invalid'), !1
            var s = a.match.slice(1),
              l = a.expr.populate(r, i, s)
            if (l === !1) return !1
            if ((l != null && (i = l), (n = a.remaining), n.match(/^\s*$/))) break
          }
          var u = r[r.length - 1]
          r.currentSubject != null && (u.subject = r.currentSubject), (u.edgeCount = r.edgeCount), (u.compoundCount = r.compoundCount)
          for (var h = 0; h < r.length; h++) {
            var f = r[h]
            if (f.compoundCount > 0 && f.edgeCount > 0) return hn('The selector `' + e + '` is invalid because it uses both a compound selector and an edge selector'), !1
            if (f.edgeCount > 1) return hn('The selector `' + e + '` is invalid because it uses multiple edge selectors'), !1
            f.edgeCount === 1 &&
              hn(
                'The selector `' +
                  e +
                  '` is deprecated.  Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons.  Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.'
              )
          }
          return !0
        }, 'parse')),
        (EQe = o(function () {
          if (this.toStringCache != null) return this.toStringCache
          for (
            var e = o(function (f) {
                return f ?? ''
              }, 'clean'),
              r = o(function (f) {
                return Zt(f) ? '"' + f + '"' : e(f)
              }, 'cleanVal'),
              n = o(function (f) {
                return ' ' + f + ' '
              }, 'space'),
              i = o(function (f, d) {
                var p = f.type,
                  m = f.value
                switch (p) {
                  case $t.GROUP: {
                    var g = e(m)
                    return g.substring(0, g.length - 1)
                  }
                  case $t.DATA_COMPARE: {
                    var y = f.field,
                      v = f.operator
                    return '[' + y + n(e(v)) + r(m) + ']'
                  }
                  case $t.DATA_BOOL: {
                    var x = f.operator,
                      b = f.field
                    return '[' + e(x) + b + ']'
                  }
                  case $t.DATA_EXIST: {
                    var T = f.field
                    return '[' + T + ']'
                  }
                  case $t.META_COMPARE: {
                    var S = f.operator,
                      w = f.field
                    return '[[' + w + n(e(S)) + r(m) + ']]'
                  }
                  case $t.STATE:
                    return m
                  case $t.ID:
                    return '#' + m
                  case $t.CLASS:
                    return '.' + m
                  case $t.PARENT:
                  case $t.CHILD:
                    return a(f.parent, d) + n('>') + a(f.child, d)
                  case $t.ANCESTOR:
                  case $t.DESCENDANT:
                    return a(f.ancestor, d) + ' ' + a(f.descendant, d)
                  case $t.COMPOUND_SPLIT: {
                    var E = a(f.left, d),
                      _ = a(f.subject, d),
                      C = a(f.right, d)
                    return E + (E.length > 0 ? ' ' : '') + _ + C
                  }
                  case $t.TRUE:
                    return ''
                }
              }, 'checkToString'),
              a = o(function (f, d) {
                return f.checks.reduce(function (p, m, g) {
                  return p + (d === f && g === 0 ? '$' : '') + i(m, d)
                }, '')
              }, 'queryToString'),
              s = '',
              l = 0;
            l < this.length;
            l++
          ) {
            var u = this[l]
            ;(s += a(u, u.subject)), this.length > 1 && l < this.length - 1 && (s += ', ')
          }
          return (this.toStringCache = s), s
        }, 'toString')),
        (SQe = { parse: kQe, toString: EQe }),
        (Yge = o(function (e, r, n) {
          var i,
            a = Zt(e),
            s = _t(e),
            l = Zt(n),
            u,
            h,
            f = !1,
            d = !1,
            p = !1
          switch (
            (r.indexOf('!') >= 0 && ((r = r.replace('!', '')), (d = !0)),
            r.indexOf('@') >= 0 && ((r = r.replace('@', '')), (f = !0)),
            (a || l || f) && ((u = !a && !s ? '' : '' + e), (h = '' + n)),
            f && ((e = u = u.toLowerCase()), (n = h = h.toLowerCase())),
            r)
          ) {
            case '*=':
              i = u.indexOf(h) >= 0
              break
            case '$=':
              i = u.indexOf(h, u.length - h.length) >= 0
              break
            case '^=':
              i = u.indexOf(h) === 0
              break
            case '=':
              i = e === n
              break
            case '>':
              ;(p = !0), (i = e > n)
              break
            case '>=':
              ;(p = !0), (i = e >= n)
              break
            case '<':
              ;(p = !0), (i = e < n)
              break
            case '<=':
              ;(p = !0), (i = e <= n)
              break
            default:
              i = !1
              break
          }
          return d && (e != null || !p) && (i = !i), i
        }, 'valCmp')),
        (CQe = o(function (e, r) {
          switch (r) {
            case '?':
              return !!e
            case '!':
              return !e
            case '^':
              return e === void 0
          }
        }, 'boolCmp')),
        (AQe = o(function (e) {
          return e !== void 0
        }, 'existCmp')),
        (jB = o(function (e, r) {
          return e.data(r)
        }, 'data')),
        (_Qe = o(function (e, r) {
          return e[r]()
        }, 'meta')),
        (pi = []),
        (Vn = o(function (e, r) {
          return e.checks.every(function (n) {
            return pi[n.type](n, r)
          })
        }, 'matches'))
      pi[$t.GROUP] = function (t, e) {
        var r = t.value
        return r === '*' || r === e.group()
      }
      pi[$t.STATE] = function (t, e) {
        var r = t.value
        return xQe(r, e)
      }
      pi[$t.ID] = function (t, e) {
        var r = t.value
        return e.id() === r
      }
      pi[$t.CLASS] = function (t, e) {
        var r = t.value
        return e.hasClass(r)
      }
      pi[$t.META_COMPARE] = function (t, e) {
        var r = t.field,
          n = t.operator,
          i = t.value
        return Yge(_Qe(e, r), n, i)
      }
      pi[$t.DATA_COMPARE] = function (t, e) {
        var r = t.field,
          n = t.operator,
          i = t.value
        return Yge(jB(e, r), n, i)
      }
      pi[$t.DATA_BOOL] = function (t, e) {
        var r = t.field,
          n = t.operator
        return CQe(jB(e, r), n)
      }
      pi[$t.DATA_EXIST] = function (t, e) {
        var r = t.field
        return t.operator, AQe(jB(e, r))
      }
      pi[$t.UNDIRECTED_EDGE] = function (t, e) {
        var r = t.nodes[0],
          n = t.nodes[1],
          i = e.source(),
          a = e.target()
        return (Vn(r, i) && Vn(n, a)) || (Vn(n, i) && Vn(r, a))
      }
      pi[$t.NODE_NEIGHBOR] = function (t, e) {
        return (
          Vn(t.node, e) &&
          e.neighborhood().some(function (r) {
            return r.isNode() && Vn(t.neighbor, r)
          })
        )
      }
      pi[$t.DIRECTED_EDGE] = function (t, e) {
        return Vn(t.source, e.source()) && Vn(t.target, e.target())
      }
      pi[$t.NODE_SOURCE] = function (t, e) {
        return (
          Vn(t.source, e) &&
          e.outgoers().some(function (r) {
            return r.isNode() && Vn(t.target, r)
          })
        )
      }
      pi[$t.NODE_TARGET] = function (t, e) {
        return (
          Vn(t.target, e) &&
          e.incomers().some(function (r) {
            return r.isNode() && Vn(t.source, r)
          })
        )
      }
      pi[$t.CHILD] = function (t, e) {
        return Vn(t.child, e) && Vn(t.parent, e.parent())
      }
      pi[$t.PARENT] = function (t, e) {
        return (
          Vn(t.parent, e) &&
          e.children().some(function (r) {
            return Vn(t.child, r)
          })
        )
      }
      pi[$t.DESCENDANT] = function (t, e) {
        return (
          Vn(t.descendant, e) &&
          e.ancestors().some(function (r) {
            return Vn(t.ancestor, r)
          })
        )
      }
      pi[$t.ANCESTOR] = function (t, e) {
        return (
          Vn(t.ancestor, e) &&
          e.descendants().some(function (r) {
            return Vn(t.descendant, r)
          })
        )
      }
      pi[$t.COMPOUND_SPLIT] = function (t, e) {
        return Vn(t.subject, e) && Vn(t.left, e) && Vn(t.right, e)
      }
      pi[$t.TRUE] = function () {
        return !0
      }
      pi[$t.COLLECTION] = function (t, e) {
        var r = t.value
        return r.has(e)
      }
      pi[$t.FILTER] = function (t, e) {
        var r = t.value
        return r(e)
      }
      ;(DQe = o(function (e) {
        var r = this
        if (r.length === 1 && r[0].checks.length === 1 && r[0].checks[0].type === $t.ID) return e.getElementById(r[0].checks[0].value).collection()
        var n = o(function (a) {
          for (var s = 0; s < r.length; s++) {
            var l = r[s]
            if (Vn(l, a)) return !0
          }
          return !1
        }, 'selectorFunction')
        return (
          r.text() == null &&
            (n = o(function () {
              return !0
            }, 'selectorFunction')),
          e.filter(n)
        )
      }, 'filter')),
        (LQe = o(function (e) {
          for (var r = this, n = 0; n < r.length; n++) {
            var i = r[n]
            if (Vn(i, e)) return !0
          }
          return !1
        }, 'matches')),
        (RQe = { matches: LQe, filter: DQe }),
        ($f = o(function (e) {
          ;(this.inputText = e),
            (this.currentSubject = null),
            (this.compoundCount = 0),
            (this.edgeCount = 0),
            (this.length = 0),
            e == null ||
              (Zt(e) && e.match(/^\s*$/)) ||
              (xo(e)
                ? this.addQuery({ checks: [{ type: $t.COLLECTION, value: e.collection() }] })
                : li(e)
                  ? this.addQuery({ checks: [{ type: $t.FILTER, value: e }] })
                  : Zt(e)
                    ? this.parse(e) || (this.invalid = !0)
                    : oi('A selector must be created from a string; found '))
        }, 'Selector')),
        (zf = $f.prototype)
      ;[SQe, RQe].forEach(function (t) {
        return ir(zf, t)
      })
      zf.text = function () {
        return this.inputText
      }
      zf.size = function () {
        return this.length
      }
      zf.eq = function (t) {
        return this[t]
      }
      zf.sameText = function (t) {
        return !this.invalid && !t.invalid && this.text() === t.text()
      }
      zf.addQuery = function (t) {
        this[this.length++] = t
      }
      zf.selector = zf.toString
      If = {
        allAre: o(function (e) {
          var r = new $f(e)
          return this.every(function (n) {
            return r.matches(n)
          })
        }, 'allAre'),
        is: o(function (e) {
          var r = new $f(e)
          return this.some(function (n) {
            return r.matches(n)
          })
        }, 'is'),
        some: o(function (e, r) {
          for (var n = 0; n < this.length; n++) {
            var i = r ? e.apply(r, [this[n], n, this]) : e(this[n], n, this)
            if (i) return !0
          }
          return !1
        }, 'some'),
        every: o(function (e, r) {
          for (var n = 0; n < this.length; n++) {
            var i = r ? e.apply(r, [this[n], n, this]) : e(this[n], n, this)
            if (!i) return !1
          }
          return !0
        }, 'every'),
        same: o(function (e) {
          if (this === e) return !0
          e = this.cy().collection(e)
          var r = this.length,
            n = e.length
          return r !== n
            ? !1
            : r === 1
              ? this[0] === e[0]
              : this.every(function (i) {
                  return e.hasElementWithId(i.id())
                })
        }, 'same'),
        anySame: o(function (e) {
          return (
            (e = this.cy().collection(e)),
            this.some(function (r) {
              return e.hasElementWithId(r.id())
            })
          )
        }, 'anySame'),
        allAreNeighbors: o(function (e) {
          e = this.cy().collection(e)
          var r = this.neighborhood()
          return e.every(function (n) {
            return r.hasElementWithId(n.id())
          })
        }, 'allAreNeighbors'),
        contains: o(function (e) {
          e = this.cy().collection(e)
          var r = this
          return e.every(function (n) {
            return r.hasElementWithId(n.id())
          })
        }, 'contains')
      }
      If.allAreNeighbours = If.allAreNeighbors
      If.has = If.contains
      If.equal = If.equals = If.same
      ;(al = o(function (e, r) {
        return o(function (i, a, s, l) {
          var u = i,
            h = this,
            f
          if ((u == null ? (f = '') : xo(u) && u.length === 1 && (f = u.id()), h.length === 1 && f)) {
            var d = h[0]._private,
              p = (d.traversalCache = d.traversalCache || {}),
              m = (p[r] = p[r] || []),
              g = Bf(f),
              y = m[g]
            return y || (m[g] = e.call(h, i, a, s, l))
          } else return e.call(h, i, a, s, l)
        }, 'traversalCache')
      }, 'cache')),
        (iy = {
          parent: o(function (e) {
            var r = []
            if (this.length === 1) {
              var n = this[0]._private.parent
              if (n) return n
            }
            for (var i = 0; i < this.length; i++) {
              var a = this[i],
                s = a._private.parent
              s && r.push(s)
            }
            return this.spawn(r, !0).filter(e)
          }, 'parent'),
          parents: o(function (e) {
            for (var r = [], n = this.parent(); n.nonempty(); ) {
              for (var i = 0; i < n.length; i++) {
                var a = n[i]
                r.push(a)
              }
              n = n.parent()
            }
            return this.spawn(r, !0).filter(e)
          }, 'parents'),
          commonAncestors: o(function (e) {
            for (var r, n = 0; n < this.length; n++) {
              var i = this[n],
                a = i.parents()
              ;(r = r || a), (r = r.intersect(a))
            }
            return r.filter(e)
          }, 'commonAncestors'),
          orphans: o(function (e) {
            return this.stdFilter(function (r) {
              return r.isOrphan()
            }).filter(e)
          }, 'orphans'),
          nonorphans: o(function (e) {
            return this.stdFilter(function (r) {
              return r.isChild()
            }).filter(e)
          }, 'nonorphans'),
          children: al(function (t) {
            for (var e = [], r = 0; r < this.length; r++) for (var n = this[r], i = n._private.children, a = 0; a < i.length; a++) e.push(i[a])
            return this.spawn(e, !0).filter(t)
          }, 'children'),
          siblings: o(function (e) {
            return this.parent().children().not(this).filter(e)
          }, 'siblings'),
          isParent: o(function () {
            var e = this[0]
            if (e) return e.isNode() && e._private.children.length !== 0
          }, 'isParent'),
          isChildless: o(function () {
            var e = this[0]
            if (e) return e.isNode() && e._private.children.length === 0
          }, 'isChildless'),
          isChild: o(function () {
            var e = this[0]
            if (e) return e.isNode() && e._private.parent != null
          }, 'isChild'),
          isOrphan: o(function () {
            var e = this[0]
            if (e) return e.isNode() && e._private.parent == null
          }, 'isOrphan'),
          descendants: o(function (e) {
            var r = []
            function n(i) {
              for (var a = 0; a < i.length; a++) {
                var s = i[a]
                r.push(s), s.children().nonempty() && n(s.children())
              }
            }
            return o(n, 'add'), n(this.children()), this.spawn(r, !0).filter(e)
          }, 'descendants')
        })
      o(KB, 'forEachCompound')
      o(Xge, 'addChildren')
      iy.forEachDown = function (t) {
        var e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !0
        return KB(this, t, e, Xge)
      }
      o(jge, 'addParent')
      iy.forEachUp = function (t) {
        var e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !0
        return KB(this, t, e, jge)
      }
      o(NQe, 'addParentAndChildren')
      iy.forEachUpAndDown = function (t) {
        var e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !0
        return KB(this, t, e, NQe)
      }
      iy.ancestors = iy.parents
      o4 = Kge = {
        data: un.data({
          field: 'data',
          bindingEvent: 'data',
          allowBinding: !0,
          allowSetting: !0,
          settingEvent: 'data',
          settingTriggersEvent: !0,
          triggerFnName: 'trigger',
          allowGetting: !0,
          immutableKeys: { id: !0, source: !0, target: !0, parent: !0 },
          updateStyle: !0
        }),
        removeData: un.removeData({
          field: 'data',
          event: 'data',
          triggerFnName: 'trigger',
          triggerEvent: !0,
          immutableKeys: { id: !0, source: !0, target: !0, parent: !0 },
          updateStyle: !0
        }),
        scratch: un.data({
          field: 'scratch',
          bindingEvent: 'scratch',
          allowBinding: !0,
          allowSetting: !0,
          settingEvent: 'scratch',
          settingTriggersEvent: !0,
          triggerFnName: 'trigger',
          allowGetting: !0,
          updateStyle: !0
        }),
        removeScratch: un.removeData({ field: 'scratch', event: 'scratch', triggerFnName: 'trigger', triggerEvent: !0, updateStyle: !0 }),
        rscratch: un.data({ field: 'rscratch', allowBinding: !1, allowSetting: !0, settingTriggersEvent: !1, allowGetting: !0 }),
        removeRscratch: un.removeData({ field: 'rscratch', triggerEvent: !1 }),
        id: o(function () {
          var e = this[0]
          if (e) return e._private.data.id
        }, 'id')
      }
      o4.attr = o4.data
      o4.removeAttr = o4.removeData
      ;(MQe = Kge), (iC = {})
      o(cB, 'defineDegreeFunction')
      ir(iC, {
        degree: cB(function (t, e) {
          return e.source().same(e.target()) ? 2 : 1
        }),
        indegree: cB(function (t, e) {
          return e.target().same(t) ? 1 : 0
        }),
        outdegree: cB(function (t, e) {
          return e.source().same(t) ? 1 : 0
        })
      })
      o(H1, 'defineDegreeBoundsFunction')
      ir(iC, {
        minDegree: H1('degree', function (t, e) {
          return t < e
        }),
        maxDegree: H1('degree', function (t, e) {
          return t > e
        }),
        minIndegree: H1('indegree', function (t, e) {
          return t < e
        }),
        maxIndegree: H1('indegree', function (t, e) {
          return t > e
        }),
        minOutdegree: H1('outdegree', function (t, e) {
          return t < e
        }),
        maxOutdegree: H1('outdegree', function (t, e) {
          return t > e
        })
      })
      ir(iC, {
        totalDegree: o(function (e) {
          for (var r = 0, n = this.nodes(), i = 0; i < n.length; i++) r += n[i].degree(e)
          return r
        }, 'totalDegree')
      })
      ;(Zge = o(function (e, r, n) {
        for (var i = 0; i < e.length; i++) {
          var a = e[i]
          if (!a.locked()) {
            var s = a._private.position,
              l = { x: r.x != null ? r.x - s.x : 0, y: r.y != null ? r.y - s.y : 0 }
            a.isParent() && !(l.x === 0 && l.y === 0) && a.children().shift(l, n), a.dirtyBoundingBoxCache()
          }
        }
      }, 'beforePositionSet')),
        (mme = {
          field: 'position',
          bindingEvent: 'position',
          allowBinding: !0,
          allowSetting: !0,
          settingEvent: 'position',
          settingTriggersEvent: !0,
          triggerFnName: 'emitAndNotify',
          allowGetting: !0,
          validKeys: ['x', 'y'],
          beforeGet: o(function (e) {
            e.updateCompoundBounds()
          }, 'beforeGet'),
          beforeSet: o(function (e, r) {
            Zge(e, r, !1)
          }, 'beforeSet'),
          onSet: o(function (e) {
            e.dirtyCompoundBoundsCache()
          }, 'onSet'),
          canSet: o(function (e) {
            return !e.locked()
          }, 'canSet')
        })
      ql = Qge = {
        position: un.data(mme),
        silentPosition: un.data(
          ir({}, mme, {
            allowBinding: !1,
            allowSetting: !0,
            settingTriggersEvent: !1,
            allowGetting: !1,
            beforeSet: o(function (e, r) {
              Zge(e, r, !0)
            }, 'beforeSet'),
            onSet: o(function (e) {
              e.dirtyCompoundBoundsCache()
            }, 'onSet')
          })
        ),
        positions: o(function (e, r) {
          if (Ur(e)) r ? this.silentPosition(e) : this.position(e)
          else if (li(e)) {
            var n = e,
              i = this.cy()
            i.startBatch()
            for (var a = 0; a < this.length; a++) {
              var s = this[a],
                l = void 0
              ;(l = n(s, a)) && (r ? s.silentPosition(l) : s.position(l))
            }
            i.endBatch()
          }
          return this
        }, 'positions'),
        silentPositions: o(function (e) {
          return this.positions(e, !0)
        }, 'silentPositions'),
        shift: o(function (e, r, n) {
          var i
          if ((Ur(e) ? ((i = { x: _t(e.x) ? e.x : 0, y: _t(e.y) ? e.y : 0 }), (n = r)) : Zt(e) && _t(r) && ((i = { x: 0, y: 0 }), (i[e] = r)), i != null)) {
            var a = this.cy()
            a.startBatch()
            for (var s = 0; s < this.length; s++) {
              var l = this[s]
              if (!(a.hasCompoundNodes() && l.isChild() && l.ancestors().anySame(this))) {
                var u = l.position(),
                  h = { x: u.x + i.x, y: u.y + i.y }
                n ? l.silentPosition(h) : l.position(h)
              }
            }
            a.endBatch()
          }
          return this
        }, 'shift'),
        silentShift: o(function (e, r) {
          return Ur(e) ? this.shift(e, !0) : Zt(e) && _t(r) && this.shift(e, r, !0), this
        }, 'silentShift'),
        renderedPosition: o(function (e, r) {
          var n = this[0],
            i = this.cy(),
            a = i.zoom(),
            s = i.pan(),
            l = Ur(e) ? e : void 0,
            u = l !== void 0 || (r !== void 0 && Zt(e))
          if (n && n.isNode())
            if (u)
              for (var h = 0; h < this.length; h++) {
                var f = this[h]
                r !== void 0 ? f.position(e, (r - s[e]) / a) : l !== void 0 && f.position(Ege(l, a, s))
              }
            else {
              var d = n.position()
              return (l = J6(d, a, s)), e === void 0 ? l : l[e]
            }
          else if (!u) return
          return this
        }, 'renderedPosition'),
        relativePosition: o(function (e, r) {
          var n = this[0],
            i = this.cy(),
            a = Ur(e) ? e : void 0,
            s = a !== void 0 || (r !== void 0 && Zt(e)),
            l = i.hasCompoundNodes()
          if (n && n.isNode())
            if (s)
              for (var u = 0; u < this.length; u++) {
                var h = this[u],
                  f = l ? h.parent() : null,
                  d = f && f.length > 0,
                  p = d
                d && (f = f[0])
                var m = p ? f.position() : { x: 0, y: 0 }
                r !== void 0 ? h.position(e, r + m[e]) : a !== void 0 && h.position({ x: a.x + m.x, y: a.y + m.y })
              }
            else {
              var g = n.position(),
                y = l ? n.parent() : null,
                v = y && y.length > 0,
                x = v
              v && (y = y[0])
              var b = x ? y.position() : { x: 0, y: 0 }
              return (a = { x: g.x - b.x, y: g.y - b.y }), e === void 0 ? a : a[e]
            }
          else if (!s) return
          return this
        }, 'relativePosition')
      }
      ql.modelPosition = ql.point = ql.position
      ql.modelPositions = ql.points = ql.positions
      ql.renderedPoint = ql.renderedPosition
      ql.relativePoint = ql.relativePosition
      IQe = Qge
      ey = Hf = {}
      Hf.renderedBoundingBox = function (t) {
        var e = this.boundingBox(t),
          r = this.cy(),
          n = r.zoom(),
          i = r.pan(),
          a = e.x1 * n + i.x,
          s = e.x2 * n + i.x,
          l = e.y1 * n + i.y,
          u = e.y2 * n + i.y
        return { x1: a, x2: s, y1: l, y2: u, w: s - a, h: u - l }
      }
      Hf.dirtyCompoundBoundsCache = function () {
        var t = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : !1,
          e = this.cy()
        return !e.styleEnabled() || !e.hasCompoundNodes()
          ? this
          : (this.forEachUp(function (r) {
              if (r.isParent()) {
                var n = r._private
                ;(n.compoundBoundsClean = !1), (n.bbCache = null), t || r.emitAndNotify('bounds')
              }
            }),
            this)
      }
      Hf.updateCompoundBounds = function () {
        var t = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : !1,
          e = this.cy()
        if (!e.styleEnabled() || !e.hasCompoundNodes()) return this
        if (!t && e.batching()) return this
        function r(s) {
          if (!s.isParent()) return
          var l = s._private,
            u = s.children(),
            h = s.pstyle('compound-sizing-wrt-labels').value === 'include',
            f = {
              width: { val: s.pstyle('min-width').pfValue, left: s.pstyle('min-width-bias-left'), right: s.pstyle('min-width-bias-right') },
              height: { val: s.pstyle('min-height').pfValue, top: s.pstyle('min-height-bias-top'), bottom: s.pstyle('min-height-bias-bottom') }
            },
            d = u.boundingBox({ includeLabels: h, includeOverlays: !1, useCache: !1 }),
            p = l.position
          ;(d.w === 0 || d.h === 0) &&
            ((d = { w: s.pstyle('width').pfValue, h: s.pstyle('height').pfValue }), (d.x1 = p.x - d.w / 2), (d.x2 = p.x + d.w / 2), (d.y1 = p.y - d.h / 2), (d.y2 = p.y + d.h / 2))
          function m(D, O, R) {
            var k = 0,
              L = 0,
              A = O + R
            return D > 0 && A > 0 && ((k = (O / A) * D), (L = (R / A) * D)), { biasDiff: k, biasComplementDiff: L }
          }
          o(m, 'computeBiasValues')
          function g(D, O, R, k) {
            if (R.units === '%')
              switch (k) {
                case 'width':
                  return D > 0 ? R.pfValue * D : 0
                case 'height':
                  return O > 0 ? R.pfValue * O : 0
                case 'average':
                  return D > 0 && O > 0 ? (R.pfValue * (D + O)) / 2 : 0
                case 'min':
                  return D > 0 && O > 0 ? (D > O ? R.pfValue * O : R.pfValue * D) : 0
                case 'max':
                  return D > 0 && O > 0 ? (D > O ? R.pfValue * D : R.pfValue * O) : 0
                default:
                  return 0
              }
            else return R.units === 'px' ? R.pfValue : 0
          }
          o(g, 'computePaddingValues')
          var y = f.width.left.value
          f.width.left.units === 'px' && f.width.val > 0 && (y = (y * 100) / f.width.val)
          var v = f.width.right.value
          f.width.right.units === 'px' && f.width.val > 0 && (v = (v * 100) / f.width.val)
          var x = f.height.top.value
          f.height.top.units === 'px' && f.height.val > 0 && (x = (x * 100) / f.height.val)
          var b = f.height.bottom.value
          f.height.bottom.units === 'px' && f.height.val > 0 && (b = (b * 100) / f.height.val)
          var T = m(f.width.val - d.w, y, v),
            S = T.biasDiff,
            w = T.biasComplementDiff,
            E = m(f.height.val - d.h, x, b),
            _ = E.biasDiff,
            C = E.biasComplementDiff
          ;(l.autoPadding = g(d.w, d.h, s.pstyle('padding'), s.pstyle('padding-relative-to').value)),
            (l.autoWidth = Math.max(d.w, f.width.val)),
            (p.x = (-S + d.x1 + d.x2 + w) / 2),
            (l.autoHeight = Math.max(d.h, f.height.val)),
            (p.y = (-_ + d.y1 + d.y2 + C) / 2)
        }
        o(r, 'update')
        for (var n = 0; n < this.length; n++) {
          var i = this[n],
            a = i._private
          ;(!a.compoundBoundsClean || t) && (r(i), e.batching() || (a.compoundBoundsClean = !0))
        }
        return this
      }
      ;(il = o(function (e) {
        return e === 1 / 0 || e === -1 / 0 ? 0 : e
      }, 'noninf')),
        (Hl = o(function (e, r, n, i, a) {
          i - r === 0 ||
            a - n === 0 ||
            r == null ||
            n == null ||
            i == null ||
            a == null ||
            ((e.x1 = r < e.x1 ? r : e.x1), (e.x2 = i > e.x2 ? i : e.x2), (e.y1 = n < e.y1 ? n : e.y1), (e.y2 = a > e.y2 ? a : e.y2), (e.w = e.x2 - e.x1), (e.h = e.y2 - e.y1))
        }, 'updateBounds')),
        (qp = o(function (e, r) {
          return r == null ? e : Hl(e, r.x1, r.y1, r.x2, r.y2)
        }, 'updateBoundsFromBox')),
        (zb = o(function (e, r, n) {
          return Wl(e, r, n)
        }, 'prefixedProperty')),
        (T6 = o(function (e, r, n) {
          if (!r.cy().headless()) {
            var i = r._private,
              a = i.rstyle,
              s = a.arrowWidth / 2,
              l = r.pstyle(n + '-arrow-shape').value,
              u,
              h
            if (l !== 'none') {
              n === 'source' ? ((u = a.srcX), (h = a.srcY)) : n === 'target' ? ((u = a.tgtX), (h = a.tgtY)) : ((u = a.midX), (h = a.midY))
              var f = (i.arrowBounds = i.arrowBounds || {}),
                d = (f[n] = f[n] || {})
              ;(d.x1 = u - s), (d.y1 = h - s), (d.x2 = u + s), (d.y2 = h + s), (d.w = d.x2 - d.x1), (d.h = d.y2 - d.y1), D6(d, 1), Hl(e, d.x1, d.y1, d.x2, d.y2)
            }
          }
        }, 'updateBoundsFromArrow')),
        (uB = o(function (e, r, n) {
          if (!r.cy().headless()) {
            var i
            n ? (i = n + '-') : (i = '')
            var a = r._private,
              s = a.rstyle,
              l = r.pstyle(i + 'label').strValue
            if (l) {
              var u = r.pstyle('text-halign'),
                h = r.pstyle('text-valign'),
                f = zb(s, 'labelWidth', n),
                d = zb(s, 'labelHeight', n),
                p = zb(s, 'labelX', n),
                m = zb(s, 'labelY', n),
                g = r.pstyle(i + 'text-margin-x').pfValue,
                y = r.pstyle(i + 'text-margin-y').pfValue,
                v = r.isEdge(),
                x = r.pstyle(i + 'text-rotation'),
                b = r.pstyle('text-outline-width').pfValue,
                T = r.pstyle('text-border-width').pfValue,
                S = T / 2,
                w = r.pstyle('text-background-padding').pfValue,
                E = 2,
                _ = d,
                C = f,
                D = C / 2,
                O = _ / 2,
                R,
                k,
                L,
                A
              if (v) (R = p - D), (k = p + D), (L = m - O), (A = m + O)
              else {
                switch (u.value) {
                  case 'left':
                    ;(R = p - C), (k = p)
                    break
                  case 'center':
                    ;(R = p - D), (k = p + D)
                    break
                  case 'right':
                    ;(R = p), (k = p + C)
                    break
                }
                switch (h.value) {
                  case 'top':
                    ;(L = m - _), (A = m)
                    break
                  case 'center':
                    ;(L = m - O), (A = m + O)
                    break
                  case 'bottom':
                    ;(L = m), (A = m + _)
                    break
                }
              }
              var I = g - Math.max(b, S) - w - E,
                M = g + Math.max(b, S) + w + E,
                P = y - Math.max(b, S) - w - E,
                B = y + Math.max(b, S) + w + E
              ;(R += I), (k += M), (L += P), (A += B)
              var F = n || 'main',
                z = a.labelBounds,
                $ = (z[F] = z[F] || {})
              ;($.x1 = R), ($.y1 = L), ($.x2 = k), ($.y2 = A), ($.w = k - R), ($.h = A - L), ($.leftPad = I), ($.rightPad = M), ($.topPad = P), ($.botPad = B)
              var U = v && x.strValue === 'autorotate',
                K = x.pfValue != null && x.pfValue !== 0
              if (U || K) {
                var ee = U ? zb(a.rstyle, 'labelAngle', n) : x.pfValue,
                  Y = Math.cos(ee),
                  ce = Math.sin(ee),
                  Z = (R + k) / 2,
                  ue = (L + A) / 2
                if (!v) {
                  switch (u.value) {
                    case 'left':
                      Z = k
                      break
                    case 'right':
                      Z = R
                      break
                  }
                  switch (h.value) {
                    case 'top':
                      ue = A
                      break
                    case 'bottom':
                      ue = L
                      break
                  }
                }
                var Q = o(function (se, ae) {
                    return (se = se - Z), (ae = ae - ue), { x: se * Y - ae * ce + Z, y: se * ce + ae * Y + ue }
                  }, 'rotate'),
                  j = Q(R, L),
                  ne = Q(R, A),
                  te = Q(k, L),
                  he = Q(k, A)
                ;(R = Math.min(j.x, ne.x, te.x, he.x)), (k = Math.max(j.x, ne.x, te.x, he.x)), (L = Math.min(j.y, ne.y, te.y, he.y)), (A = Math.max(j.y, ne.y, te.y, he.y))
              }
              var le = F + 'Rot',
                J = (z[le] = z[le] || {})
              ;(J.x1 = R), (J.y1 = L), (J.x2 = k), (J.y2 = A), (J.w = k - R), (J.h = A - L), Hl(e, R, L, k, A), Hl(a.labelBounds.all, R, L, k, A)
            }
            return e
          }
        }, 'updateBoundsFromLabel')),
        (OQe = o(function (e, r) {
          if (!r.cy().headless()) {
            var n = r.pstyle('outline-opacity').value,
              i = r.pstyle('outline-width').value
            if (n > 0 && i > 0) {
              var a = r.pstyle('outline-offset').value,
                s = r.pstyle('shape').value,
                l = i + a,
                u = (e.w + l * 2) / e.w,
                h = (e.h + l * 2) / e.h,
                f = 0,
                d = 0
              ;['diamond', 'pentagon', 'round-triangle'].includes(s)
                ? ((u = (e.w + l * 2.4) / e.w), (d = -l / 3.6))
                : ['concave-hexagon', 'rhomboid', 'right-rhomboid'].includes(s)
                  ? (u = (e.w + l * 2.4) / e.w)
                  : s === 'star'
                    ? ((u = (e.w + l * 2.8) / e.w), (h = (e.h + l * 2.6) / e.h), (d = -l / 3.8))
                    : s === 'triangle'
                      ? ((u = (e.w + l * 2.8) / e.w), (h = (e.h + l * 2.4) / e.h), (d = -l / 1.4))
                      : s === 'vee' && ((u = (e.w + l * 4.4) / e.w), (h = (e.h + l * 3.8) / e.h), (d = -l * 0.5))
              var p = e.h * h - e.h,
                m = e.w * u - e.w
              if ((L6(e, [Math.ceil(p / 2), Math.ceil(m / 2)]), f != 0 || d !== 0)) {
                var g = rXe(e, f, d)
                Cge(e, g)
              }
            }
          }
        }, 'updateBoundsFromOutline')),
        (PQe = o(function (e, r) {
          var n = e._private.cy,
            i = n.styleEnabled(),
            a = n.headless(),
            s = Ys(),
            l = e._private,
            u = e.isNode(),
            h = e.isEdge(),
            f,
            d,
            p,
            m,
            g,
            y,
            v = l.rstyle,
            x = u && i ? e.pstyle('bounds-expansion').pfValue : [0],
            b = o(function (Se) {
              return Se.pstyle('display').value !== 'none'
            }, 'isDisplayed'),
            T = !i || (b(e) && (!h || (b(e.source()) && b(e.target()))))
          if (T) {
            var S = 0,
              w = 0
            i && r.includeOverlays && ((S = e.pstyle('overlay-opacity').value), S !== 0 && (w = e.pstyle('overlay-padding').value))
            var E = 0,
              _ = 0
            i && r.includeUnderlays && ((E = e.pstyle('underlay-opacity').value), E !== 0 && (_ = e.pstyle('underlay-padding').value))
            var C = Math.max(w, _),
              D = 0,
              O = 0
            if ((i && ((D = e.pstyle('width').pfValue), (O = D / 2)), u && r.includeNodes)) {
              var R = e.position()
              ;(g = R.x), (y = R.y)
              var k = e.outerWidth(),
                L = k / 2,
                A = e.outerHeight(),
                I = A / 2
              ;(f = g - L), (d = g + L), (p = y - I), (m = y + I), Hl(s, f, p, d, m), i && r.includeOutlines && OQe(s, e)
            } else if (h && r.includeEdges)
              if (i && !a) {
                var M = e.pstyle('curve-style').strValue
                if (
                  ((f = Math.min(v.srcX, v.midX, v.tgtX)),
                  (d = Math.max(v.srcX, v.midX, v.tgtX)),
                  (p = Math.min(v.srcY, v.midY, v.tgtY)),
                  (m = Math.max(v.srcY, v.midY, v.tgtY)),
                  (f -= O),
                  (d += O),
                  (p -= O),
                  (m += O),
                  Hl(s, f, p, d, m),
                  M === 'haystack')
                ) {
                  var P = v.haystackPts
                  if (P && P.length === 2) {
                    if (((f = P[0].x), (p = P[0].y), (d = P[1].x), (m = P[1].y), f > d)) {
                      var B = f
                      ;(f = d), (d = B)
                    }
                    if (p > m) {
                      var F = p
                      ;(p = m), (m = F)
                    }
                    Hl(s, f - O, p - O, d + O, m + O)
                  }
                } else if (M === 'bezier' || M === 'unbundled-bezier' || M.endsWith('segments') || M.endsWith('taxi')) {
                  var z
                  switch (M) {
                    case 'bezier':
                    case 'unbundled-bezier':
                      z = v.bezierPts
                      break
                    case 'segments':
                    case 'taxi':
                    case 'round-segments':
                    case 'round-taxi':
                      z = v.linePts
                      break
                  }
                  if (z != null)
                    for (var $ = 0; $ < z.length; $++) {
                      var U = z[$]
                      ;(f = U.x - O), (d = U.x + O), (p = U.y - O), (m = U.y + O), Hl(s, f, p, d, m)
                    }
                }
              } else {
                var K = e.source(),
                  ee = K.position(),
                  Y = e.target(),
                  ce = Y.position()
                if (((f = ee.x), (d = ce.x), (p = ee.y), (m = ce.y), f > d)) {
                  var Z = f
                  ;(f = d), (d = Z)
                }
                if (p > m) {
                  var ue = p
                  ;(p = m), (m = ue)
                }
                ;(f -= O), (d += O), (p -= O), (m += O), Hl(s, f, p, d, m)
              }
            if ((i && r.includeEdges && h && (T6(s, e, 'mid-source'), T6(s, e, 'mid-target'), T6(s, e, 'source'), T6(s, e, 'target')), i)) {
              var Q = e.pstyle('ghost').value === 'yes'
              if (Q) {
                var j = e.pstyle('ghost-offset-x').pfValue,
                  ne = e.pstyle('ghost-offset-y').pfValue
                Hl(s, s.x1 + j, s.y1 + ne, s.x2 + j, s.y2 + ne)
              }
            }
            var te = (l.bodyBounds = l.bodyBounds || {})
            X0e(te, s), L6(te, x), D6(te, 1), i && ((f = s.x1), (d = s.x2), (p = s.y1), (m = s.y2), Hl(s, f - C, p - C, d + C, m + C))
            var he = (l.overlayBounds = l.overlayBounds || {})
            X0e(he, s), L6(he, x), D6(he, 1)
            var le = (l.labelBounds = l.labelBounds || {})
            le.all != null ? tXe(le.all) : (le.all = Ys()),
              i && r.includeLabels && (r.includeMainLabels && uB(s, e, null), h && (r.includeSourceLabels && uB(s, e, 'source'), r.includeTargetLabels && uB(s, e, 'target')))
          }
          return (
            (s.x1 = il(s.x1)),
            (s.y1 = il(s.y1)),
            (s.x2 = il(s.x2)),
            (s.y2 = il(s.y2)),
            (s.w = il(s.x2 - s.x1)),
            (s.h = il(s.y2 - s.y1)),
            s.w > 0 && s.h > 0 && T && (L6(s, x), D6(s, 1)),
            s
          )
        }, 'boundingBoxImpl')),
        (Jge = o(function (e) {
          var r = 0,
            n = o(function (s) {
              return (s ? 1 : 0) << r++
            }, 'tf'),
            i = 0
          return (
            (i += n(e.incudeNodes)),
            (i += n(e.includeEdges)),
            (i += n(e.includeLabels)),
            (i += n(e.includeMainLabels)),
            (i += n(e.includeSourceLabels)),
            (i += n(e.includeTargetLabels)),
            (i += n(e.includeOverlays)),
            (i += n(e.includeOutlines)),
            i
          )
        }, 'getKey')),
        (e1e = o(function (e) {
          if (e.isEdge()) {
            var r = e.source().position(),
              n = e.target().position(),
              i = o(function (s) {
                return Math.round(s)
              }, 'r')
            return wYe([i(r.x), i(r.y), i(n.x), i(n.y)])
          } else return 0
        }, 'getBoundingBoxPosKey')),
        (gme = o(function (e, r) {
          var n = e._private,
            i,
            a = e.isEdge(),
            s = r == null ? yme : Jge(r),
            l = s === yme,
            u = e1e(e),
            h = n.bbCachePosKey === u,
            f = r.useCache && h,
            d = o(function (y) {
              return y._private.bbCache == null || y._private.styleDirty
            }, 'isDirty'),
            p = !f || d(e) || (a && (d(e.source()) || d(e.target())))
          if ((p ? (h || e.recalculateRenderedStyle(f), (i = PQe(e, l4)), (n.bbCache = i), (n.bbCachePosKey = u)) : (i = n.bbCache), !l)) {
            var m = e.isNode()
            ;(i = Ys()),
              ((r.includeNodes && m) || (r.includeEdges && !m)) && (r.includeOverlays ? qp(i, n.overlayBounds) : qp(i, n.bodyBounds)),
              r.includeLabels &&
                (r.includeMainLabels && (!a || (r.includeSourceLabels && r.includeTargetLabels))
                  ? qp(i, n.labelBounds.all)
                  : (r.includeMainLabels && qp(i, n.labelBounds.mainRot),
                    r.includeSourceLabels && qp(i, n.labelBounds.sourceRot),
                    r.includeTargetLabels && qp(i, n.labelBounds.targetRot))),
              (i.w = i.x2 - i.x1),
              (i.h = i.y2 - i.y1)
          }
          return i
        }, 'cachedBoundingBoxImpl')),
        (l4 = {
          includeNodes: !0,
          includeEdges: !0,
          includeLabels: !0,
          includeMainLabels: !0,
          includeSourceLabels: !0,
          includeTargetLabels: !0,
          includeOverlays: !0,
          includeUnderlays: !0,
          includeOutlines: !0,
          useCache: !0
        }),
        (yme = Jge(l4)),
        (vme = oa(l4))
      Hf.boundingBox = function (t) {
        var e
        if (this.length === 1 && this[0]._private.bbCache != null && !this[0]._private.styleDirty && (t === void 0 || t.useCache === void 0 || t.useCache === !0))
          t === void 0 ? (t = l4) : (t = vme(t)), (e = gme(this[0], t))
        else {
          ;(e = Ys()), (t = t || l4)
          var r = vme(t),
            n = this,
            i = n.cy(),
            a = i.styleEnabled()
          if (a)
            for (var s = 0; s < n.length; s++) {
              var l = n[s],
                u = l._private,
                h = e1e(l),
                f = u.bbCachePosKey === h,
                d = r.useCache && f && !u.styleDirty
              l.recalculateRenderedStyle(d)
            }
          this.updateCompoundBounds(!t.useCache)
          for (var p = 0; p < n.length; p++) {
            var m = n[p]
            qp(e, gme(m, r))
          }
        }
        return (e.x1 = il(e.x1)), (e.y1 = il(e.y1)), (e.x2 = il(e.x2)), (e.y2 = il(e.y2)), (e.w = il(e.x2 - e.x1)), (e.h = il(e.y2 - e.y1)), e
      }
      Hf.dirtyBoundingBoxCache = function () {
        for (var t = 0; t < this.length; t++) {
          var e = this[t]._private
          ;(e.bbCache = null),
            (e.bbCachePosKey = null),
            (e.bodyBounds = null),
            (e.overlayBounds = null),
            (e.labelBounds.all = null),
            (e.labelBounds.source = null),
            (e.labelBounds.target = null),
            (e.labelBounds.main = null),
            (e.labelBounds.sourceRot = null),
            (e.labelBounds.targetRot = null),
            (e.labelBounds.mainRot = null),
            (e.arrowBounds.source = null),
            (e.arrowBounds.target = null),
            (e.arrowBounds['mid-source'] = null),
            (e.arrowBounds['mid-target'] = null)
        }
        return this.emitAndNotify('bounds'), this
      }
      Hf.boundingBoxAt = function (t) {
        var e = this.nodes(),
          r = this.cy(),
          n = r.hasCompoundNodes(),
          i = r.collection()
        if (
          (n &&
            ((i = e.filter(function (h) {
              return h.isParent()
            })),
            (e = e.not(i))),
          Ur(t))
        ) {
          var a = t
          t = o(function () {
            return a
          }, 'fn')
        }
        var s = o(function (f, d) {
            return (f._private.bbAtOldPos = t(f, d))
          }, 'storeOldPos'),
          l = o(function (f) {
            return f._private.bbAtOldPos
          }, 'getOldPos')
        r.startBatch(), e.forEach(s).silentPositions(t), n && (i.dirtyCompoundBoundsCache(), i.dirtyBoundingBoxCache(), i.updateCompoundBounds(!0))
        var u = eXe(this.boundingBox({ useCache: !1 }))
        return e.silentPositions(l), n && (i.dirtyCompoundBoundsCache(), i.dirtyBoundingBoxCache(), i.updateCompoundBounds(!0)), r.endBatch(), u
      }
      ey.boundingbox = ey.bb = ey.boundingBox
      ey.renderedBoundingbox = ey.renderedBoundingBox
      BQe = Hf
      Xb = g4 = {}
      t1e = o(function (e) {
        ;(e.uppercaseName = G0e(e.name)),
          (e.autoName = 'auto' + e.uppercaseName),
          (e.labelName = 'label' + e.uppercaseName),
          (e.outerName = 'outer' + e.uppercaseName),
          (e.uppercaseOuterName = G0e(e.outerName)),
          (Xb[e.name] = o(function () {
            var n = this[0],
              i = n._private,
              a = i.cy,
              s = a._private.styleEnabled
            if (n)
              if (s) {
                if (n.isParent()) return n.updateCompoundBounds(), i[e.autoName] || 0
                var l = n.pstyle(e.name)
                switch (l.strValue) {
                  case 'label':
                    return n.recalculateRenderedStyle(), i.rstyle[e.labelName] || 0
                  default:
                    return l.pfValue
                }
              } else return 1
          }, 'dimImpl')),
          (Xb['outer' + e.uppercaseName] = o(function () {
            var n = this[0],
              i = n._private,
              a = i.cy,
              s = a._private.styleEnabled
            if (n)
              if (s) {
                var l = n[e.name](),
                  u = n.pstyle('border-width').pfValue,
                  h = 2 * n.padding()
                return l + u + h
              } else return 1
          }, 'outerDimImpl')),
          (Xb['rendered' + e.uppercaseName] = o(function () {
            var n = this[0]
            if (n) {
              var i = n[e.name]()
              return i * this.cy().zoom()
            }
          }, 'renderedDimImpl')),
          (Xb['rendered' + e.uppercaseOuterName] = o(function () {
            var n = this[0]
            if (n) {
              var i = n[e.outerName]()
              return i * this.cy().zoom()
            }
          }, 'renderedOuterDimImpl'))
      }, 'defineDimFns')
      t1e({ name: 'width' })
      t1e({ name: 'height' })
      g4.padding = function () {
        var t = this[0],
          e = t._private
        return t.isParent() ? (t.updateCompoundBounds(), e.autoPadding !== void 0 ? e.autoPadding : t.pstyle('padding').pfValue) : t.pstyle('padding').pfValue
      }
      g4.paddedHeight = function () {
        var t = this[0]
        return t.height() + 2 * t.padding()
      }
      g4.paddedWidth = function () {
        var t = this[0]
        return t.width() + 2 * t.padding()
      }
      ;(FQe = g4),
        ($Qe = o(function (e, r) {
          if (e.isEdge()) return r(e)
        }, 'ifEdge')),
        (zQe = o(function (e, r) {
          if (e.isEdge()) {
            var n = e.cy()
            return J6(r(e), n.zoom(), n.pan())
          }
        }, 'ifEdgeRenderedPosition')),
        (GQe = o(function (e, r) {
          if (e.isEdge()) {
            var n = e.cy(),
              i = n.pan(),
              a = n.zoom()
            return r(e).map(function (s) {
              return J6(s, a, i)
            })
          }
        }, 'ifEdgeRenderedPositions')),
        (VQe = o(function (e) {
          return e.renderer().getControlPoints(e)
        }, 'controlPoints')),
        (UQe = o(function (e) {
          return e.renderer().getSegmentPoints(e)
        }, 'segmentPoints')),
        (HQe = o(function (e) {
          return e.renderer().getSourceEndpoint(e)
        }, 'sourceEndpoint')),
        (WQe = o(function (e) {
          return e.renderer().getTargetEndpoint(e)
        }, 'targetEndpoint')),
        (qQe = o(function (e) {
          return e.renderer().getEdgeMidpoint(e)
        }, 'midpoint')),
        (xme = {
          controlPoints: { get: VQe, mult: !0 },
          segmentPoints: { get: UQe, mult: !0 },
          sourceEndpoint: { get: HQe },
          targetEndpoint: { get: WQe },
          midpoint: { get: qQe }
        }),
        (YQe = o(function (e) {
          return 'rendered' + e[0].toUpperCase() + e.substr(1)
        }, 'renderedName')),
        (XQe = Object.keys(xme).reduce(function (t, e) {
          var r = xme[e],
            n = YQe(e)
          return (
            (t[e] = function () {
              return $Qe(this, r.get)
            }),
            r.mult
              ? (t[n] = function () {
                  return GQe(this, r.get)
                })
              : (t[n] = function () {
                  return zQe(this, r.get)
                }),
            t
          )
        }, {})),
        (jQe = ir({}, IQe, BQe, FQe, XQe))
      r1e = o(function (e, r) {
        this.recycle(e, r)
      }, 'Event')
      o(Gb, 'returnFalse')
      o(w6, 'returnTrue')
      r1e.prototype = {
        instanceString: o(function () {
          return 'event'
        }, 'instanceString'),
        recycle: o(function (e, r) {
          if (
            ((this.isImmediatePropagationStopped = this.isPropagationStopped = this.isDefaultPrevented = Gb),
            e != null && e.preventDefault ? ((this.type = e.type), (this.isDefaultPrevented = e.defaultPrevented ? w6 : Gb)) : e != null && e.type ? (r = e) : (this.type = e),
            r != null &&
              ((this.originalEvent = r.originalEvent),
              (this.type = r.type != null ? r.type : this.type),
              (this.cy = r.cy),
              (this.target = r.target),
              (this.position = r.position),
              (this.renderedPosition = r.renderedPosition),
              (this.namespace = r.namespace),
              (this.layout = r.layout)),
            this.cy != null && this.position != null && this.renderedPosition == null)
          ) {
            var n = this.position,
              i = this.cy.zoom(),
              a = this.cy.pan()
            this.renderedPosition = { x: n.x * i + a.x, y: n.y * i + a.y }
          }
          this.timeStamp = (e && e.timeStamp) || Date.now()
        }, 'recycle'),
        preventDefault: o(function () {
          this.isDefaultPrevented = w6
          var e = this.originalEvent
          e && e.preventDefault && e.preventDefault()
        }, 'preventDefault'),
        stopPropagation: o(function () {
          this.isPropagationStopped = w6
          var e = this.originalEvent
          e && e.stopPropagation && e.stopPropagation()
        }, 'stopPropagation'),
        stopImmediatePropagation: o(function () {
          ;(this.isImmediatePropagationStopped = w6), this.stopPropagation()
        }, 'stopImmediatePropagation'),
        isDefaultPrevented: Gb,
        isPropagationStopped: Gb,
        isImmediatePropagationStopped: Gb
      }
      ;(n1e = /^([^.]+)(\.(?:[^.]+))?$/),
        (KQe = '.*'),
        (i1e = {
          qualifierCompare: o(function (e, r) {
            return e === r
          }, 'qualifierCompare'),
          eventMatches: o(function () {
            return !0
          }, 'eventMatches'),
          addEventFields: o(function () {}, 'addEventFields'),
          callbackContext: o(function (e) {
            return e
          }, 'callbackContext'),
          beforeEmit: o(function () {}, 'beforeEmit'),
          afterEmit: o(function () {}, 'afterEmit'),
          bubble: o(function () {
            return !1
          }, 'bubble'),
          parent: o(function () {
            return null
          }, 'parent'),
          context: null
        }),
        (bme = Object.keys(i1e)),
        (QQe = {})
      o(aC, 'Emitter')
      ;(Gf = aC.prototype),
        (a1e = o(function (e, r, n, i, a, s, l) {
          li(i) && ((a = i), (i = null)), l && (s == null ? (s = l) : (s = ir({}, s, l)))
          for (var u = En(n) ? n : n.split(/\s+/), h = 0; h < u.length; h++) {
            var f = u[h]
            if (!Pf(f)) {
              var d = f.match(n1e)
              if (d) {
                var p = d[1],
                  m = d[2] ? d[2] : null,
                  g = r(e, f, p, m, i, a, s)
                if (g === !1) break
              }
            }
          }
        }, 'forEachEvent')),
        (Tme = o(function (e, r) {
          return e.addEventFields(e.context, r), new r1e(r.type, r)
        }, 'makeEventObj')),
        (ZQe = o(function (e, r, n) {
          if (xqe(n)) {
            r(e, n)
            return
          } else if (Ur(n)) {
            r(e, Tme(e, n))
            return
          }
          for (var i = En(n) ? n : n.split(/\s+/), a = 0; a < i.length; a++) {
            var s = i[a]
            if (!Pf(s)) {
              var l = s.match(n1e)
              if (l) {
                var u = l[1],
                  h = l[2] ? l[2] : null,
                  f = Tme(e, { type: u, namespace: h, target: e.context })
                r(e, f)
              }
            }
          }
        }, 'forEachEventObj'))
      Gf.on = Gf.addListener = function (t, e, r, n, i) {
        return (
          a1e(
            this,
            function (a, s, l, u, h, f, d) {
              li(f) && a.listeners.push({ event: s, callback: f, type: l, namespace: u, qualifier: h, conf: d })
            },
            t,
            e,
            r,
            n,
            i
          ),
          this
        )
      }
      Gf.one = function (t, e, r, n) {
        return this.on(t, e, r, n, { one: !0 })
      }
      Gf.removeListener = Gf.off = function (t, e, r, n) {
        var i = this
        this.emitting !== 0 && (this.listeners = AYe(this.listeners))
        for (
          var a = this.listeners,
            s = o(function (h) {
              var f = a[h]
              a1e(
                i,
                function (d, p, m, g, y, v) {
                  if ((f.type === m || t === '*') && ((!g && f.namespace !== '.*') || f.namespace === g) && (!y || d.qualifierCompare(f.qualifier, y)) && (!v || f.callback === v))
                    return a.splice(h, 1), !1
                },
                t,
                e,
                r,
                n
              )
            }, '_loop'),
            l = a.length - 1;
          l >= 0;
          l--
        )
          s(l)
        return this
      }
      Gf.removeAllListeners = function () {
        return this.removeListener('*')
      }
      Gf.emit = Gf.trigger = function (t, e, r) {
        var n = this.listeners,
          i = n.length
        return (
          this.emitting++,
          En(e) || (e = [e]),
          ZQe(
            this,
            function (a, s) {
              r != null && ((n = [{ event: s.event, type: s.type, namespace: s.namespace, callback: r }]), (i = n.length))
              for (
                var l = o(function (f) {
                    var d = n[f]
                    if (d.type === s.type && (!d.namespace || d.namespace === s.namespace || d.namespace === KQe) && a.eventMatches(a.context, d, s)) {
                      var p = [s]
                      e != null && DYe(p, e),
                        a.beforeEmit(a.context, d, s),
                        d.conf &&
                          d.conf.one &&
                          (a.listeners = a.listeners.filter(function (y) {
                            return y !== d
                          }))
                      var m = a.callbackContext(a.context, d, s),
                        g = d.callback.apply(m, p)
                      a.afterEmit(a.context, d, s), g === !1 && (s.stopPropagation(), s.preventDefault())
                    }
                  }, '_loop2'),
                  u = 0;
                u < i;
                u++
              )
                l(u)
              a.bubble(a.context) && !s.isPropagationStopped() && a.parent(a.context).emit(s, e)
            },
            t
          ),
          this.emitting--,
          this
        )
      }
      ;(JQe = {
        qualifierCompare: o(function (e, r) {
          return e == null || r == null ? e == null && r == null : e.sameText(r)
        }, 'qualifierCompare'),
        eventMatches: o(function (e, r, n) {
          var i = r.qualifier
          return i != null ? e !== n.target && f4(n.target) && i.matches(n.target) : !0
        }, 'eventMatches'),
        addEventFields: o(function (e, r) {
          ;(r.cy = e.cy()), (r.target = e)
        }, 'addEventFields'),
        callbackContext: o(function (e, r, n) {
          return r.qualifier != null ? n.target : e
        }, 'callbackContext'),
        beforeEmit: o(function (e, r) {
          r.conf && r.conf.once && r.conf.onceCollection.removeListener(r.event, r.qualifier, r.callback)
        }, 'beforeEmit'),
        bubble: o(function () {
          return !0
        }, 'bubble'),
        parent: o(function (e) {
          return e.isChild() ? e.parent() : e.cy()
        }, 'parent')
      }),
        (k6 = o(function (e) {
          return Zt(e) ? new $f(e) : e
        }, 'argSelector')),
        (s1e = {
          createEmitter: o(function () {
            for (var e = 0; e < this.length; e++) {
              var r = this[e],
                n = r._private
              n.emitter || (n.emitter = new aC(JQe, r))
            }
            return this
          }, 'createEmitter'),
          emitter: o(function () {
            return this._private.emitter
          }, 'emitter'),
          on: o(function (e, r, n) {
            for (var i = k6(r), a = 0; a < this.length; a++) {
              var s = this[a]
              s.emitter().on(e, i, n)
            }
            return this
          }, 'on'),
          removeListener: o(function (e, r, n) {
            for (var i = k6(r), a = 0; a < this.length; a++) {
              var s = this[a]
              s.emitter().removeListener(e, i, n)
            }
            return this
          }, 'removeListener'),
          removeAllListeners: o(function () {
            for (var e = 0; e < this.length; e++) {
              var r = this[e]
              r.emitter().removeAllListeners()
            }
            return this
          }, 'removeAllListeners'),
          one: o(function (e, r, n) {
            for (var i = k6(r), a = 0; a < this.length; a++) {
              var s = this[a]
              s.emitter().one(e, i, n)
            }
            return this
          }, 'one'),
          once: o(function (e, r, n) {
            for (var i = k6(r), a = 0; a < this.length; a++) {
              var s = this[a]
              s.emitter().on(e, i, n, { once: !0, onceCollection: this })
            }
          }, 'once'),
          emit: o(function (e, r) {
            for (var n = 0; n < this.length; n++) {
              var i = this[n]
              i.emitter().emit(e, r)
            }
            return this
          }, 'emit'),
          emitAndNotify: o(function (e, r) {
            if (this.length !== 0) return this.cy().notify(e, this), this.emit(e, r), this
          }, 'emitAndNotify')
        })
      un.eventAliasesOn(s1e)
      ;(o1e = {
        nodes: o(function (e) {
          return this.filter(function (r) {
            return r.isNode()
          }).filter(e)
        }, 'nodes'),
        edges: o(function (e) {
          return this.filter(function (r) {
            return r.isEdge()
          }).filter(e)
        }, 'edges'),
        byGroup: o(function () {
          for (var e = this.spawn(), r = this.spawn(), n = 0; n < this.length; n++) {
            var i = this[n]
            i.isNode() ? e.push(i) : r.push(i)
          }
          return { nodes: e, edges: r }
        }, 'byGroup'),
        filter: o(function (e, r) {
          if (e === void 0) return this
          if (Zt(e) || xo(e)) return new $f(e).filter(this)
          if (li(e)) {
            for (var n = this.spawn(), i = this, a = 0; a < i.length; a++) {
              var s = i[a],
                l = r ? e.apply(r, [s, a, i]) : e(s, a, i)
              l && n.push(s)
            }
            return n
          }
          return this.spawn()
        }, 'filter'),
        not: o(function (e) {
          if (e) {
            Zt(e) && (e = this.filter(e))
            for (var r = this.spawn(), n = 0; n < this.length; n++) {
              var i = this[n],
                a = e.has(i)
              a || r.push(i)
            }
            return r
          } else return this
        }, 'not'),
        absoluteComplement: o(function () {
          var e = this.cy()
          return e.mutableElements().not(this)
        }, 'absoluteComplement'),
        intersect: o(function (e) {
          if (Zt(e)) {
            var r = e
            return this.filter(r)
          }
          for (var n = this.spawn(), i = this, a = e, s = this.length < e.length, l = s ? i : a, u = s ? a : i, h = 0; h < l.length; h++) {
            var f = l[h]
            u.has(f) && n.push(f)
          }
          return n
        }, 'intersect'),
        xor: o(function (e) {
          var r = this._private.cy
          Zt(e) && (e = r.$(e))
          var n = this.spawn(),
            i = this,
            a = e,
            s = o(function (u, h) {
              for (var f = 0; f < u.length; f++) {
                var d = u[f],
                  p = d._private.data.id,
                  m = h.hasElementWithId(p)
                m || n.push(d)
              }
            }, 'add')
          return s(i, a), s(a, i), n
        }, 'xor'),
        diff: o(function (e) {
          var r = this._private.cy
          Zt(e) && (e = r.$(e))
          var n = this.spawn(),
            i = this.spawn(),
            a = this.spawn(),
            s = this,
            l = e,
            u = o(function (f, d, p) {
              for (var m = 0; m < f.length; m++) {
                var g = f[m],
                  y = g._private.data.id,
                  v = d.hasElementWithId(y)
                v ? a.merge(g) : p.push(g)
              }
            }, 'add')
          return u(s, l, n), u(l, s, i), { left: n, right: i, both: a }
        }, 'diff'),
        add: o(function (e) {
          var r = this._private.cy
          if (!e) return this
          if (Zt(e)) {
            var n = e
            e = r.mutableElements().filter(n)
          }
          for (var i = this.spawnSelf(), a = 0; a < e.length; a++) {
            var s = e[a],
              l = !this.has(s)
            l && i.push(s)
          }
          return i
        }, 'add'),
        merge: o(function (e) {
          var r = this._private,
            n = r.cy
          if (!e) return this
          if (e && Zt(e)) {
            var i = e
            e = n.mutableElements().filter(i)
          }
          for (var a = r.map, s = 0; s < e.length; s++) {
            var l = e[s],
              u = l._private.data.id,
              h = !a.has(u)
            if (h) {
              var f = this.length++
              ;(this[f] = l), a.set(u, { ele: l, index: f })
            }
          }
          return this
        }, 'merge'),
        unmergeAt: o(function (e) {
          var r = this[e],
            n = r.id(),
            i = this._private,
            a = i.map
          ;(this[e] = void 0), a.delete(n)
          var s = e === this.length - 1
          if (this.length > 1 && !s) {
            var l = this.length - 1,
              u = this[l],
              h = u._private.data.id
            ;(this[l] = void 0), (this[e] = u), a.set(h, { ele: u, index: e })
          }
          return this.length--, this
        }, 'unmergeAt'),
        unmergeOne: o(function (e) {
          e = e[0]
          var r = this._private,
            n = e._private.data.id,
            i = r.map,
            a = i.get(n)
          if (!a) return this
          var s = a.index
          return this.unmergeAt(s), this
        }, 'unmergeOne'),
        unmerge: o(function (e) {
          var r = this._private.cy
          if (!e) return this
          if (e && Zt(e)) {
            var n = e
            e = r.mutableElements().filter(n)
          }
          for (var i = 0; i < e.length; i++) this.unmergeOne(e[i])
          return this
        }, 'unmerge'),
        unmergeBy: o(function (e) {
          for (var r = this.length - 1; r >= 0; r--) {
            var n = this[r]
            e(n) && this.unmergeAt(r)
          }
          return this
        }, 'unmergeBy'),
        map: o(function (e, r) {
          for (var n = [], i = this, a = 0; a < i.length; a++) {
            var s = i[a],
              l = r ? e.apply(r, [s, a, i]) : e(s, a, i)
            n.push(l)
          }
          return n
        }, 'map'),
        reduce: o(function (e, r) {
          for (var n = r, i = this, a = 0; a < i.length; a++) n = e(n, i[a], a, i)
          return n
        }, 'reduce'),
        max: o(function (e, r) {
          for (var n = -1 / 0, i, a = this, s = 0; s < a.length; s++) {
            var l = a[s],
              u = r ? e.apply(r, [l, s, a]) : e(l, s, a)
            u > n && ((n = u), (i = l))
          }
          return { value: n, ele: i }
        }, 'max'),
        min: o(function (e, r) {
          for (var n = 1 / 0, i, a = this, s = 0; s < a.length; s++) {
            var l = a[s],
              u = r ? e.apply(r, [l, s, a]) : e(l, s, a)
            u < n && ((n = u), (i = l))
          }
          return { value: n, ele: i }
        }, 'min')
      }),
        (Qr = o1e)
      Qr.u = Qr['|'] = Qr['+'] = Qr.union = Qr.or = Qr.add
      Qr['\\'] = Qr['!'] = Qr['-'] = Qr.difference = Qr.relativeComplement = Qr.subtract = Qr.not
      Qr.n = Qr['&'] = Qr['.'] = Qr.and = Qr.intersection = Qr.intersect
      Qr['^'] = Qr['(+)'] = Qr['(-)'] = Qr.symmetricDifference = Qr.symdiff = Qr.xor
      Qr.fnFilter = Qr.filterFn = Qr.stdFilter = Qr.filter
      Qr.complement = Qr.abscomp = Qr.absoluteComplement
      ;(eZe = {
        isNode: o(function () {
          return this.group() === 'nodes'
        }, 'isNode'),
        isEdge: o(function () {
          return this.group() === 'edges'
        }, 'isEdge'),
        isLoop: o(function () {
          return this.isEdge() && this.source()[0] === this.target()[0]
        }, 'isLoop'),
        isSimple: o(function () {
          return this.isEdge() && this.source()[0] !== this.target()[0]
        }, 'isSimple'),
        group: o(function () {
          var e = this[0]
          if (e) return e._private.group
        }, 'group')
      }),
        (l1e = o(function (e, r) {
          var n = e.cy(),
            i = n.hasCompoundNodes()
          function a(f) {
            var d = f.pstyle('z-compound-depth')
            return d.value === 'auto' ? (i ? f.zDepth() : 0) : d.value === 'bottom' ? -1 : d.value === 'top' ? $B : 0
          }
          o(a, 'getDepth')
          var s = a(e) - a(r)
          if (s !== 0) return s
          function l(f) {
            var d = f.pstyle('z-index-compare')
            return d.value === 'auto' && f.isNode() ? 1 : 0
          }
          o(l, 'getEleDepth')
          var u = l(e) - l(r)
          if (u !== 0) return u
          var h = e.pstyle('z-index').value - r.pstyle('z-index').value
          return h !== 0 ? h : e.poolIndex() - r.poolIndex()
        }, 'zIndexSort')),
        (H6 = {
          forEach: o(function (e, r) {
            if (li(e))
              for (var n = this.length, i = 0; i < n; i++) {
                var a = this[i],
                  s = r ? e.apply(r, [a, i, this]) : e(a, i, this)
                if (s === !1) break
              }
            return this
          }, 'forEach'),
          toArray: o(function () {
            for (var e = [], r = 0; r < this.length; r++) e.push(this[r])
            return e
          }, 'toArray'),
          slice: o(function (e, r) {
            var n = [],
              i = this.length
            r == null && (r = i), e == null && (e = 0), e < 0 && (e = i + e), r < 0 && (r = i + r)
            for (var a = e; a >= 0 && a < r && a < i; a++) n.push(this[a])
            return this.spawn(n)
          }, 'slice'),
          size: o(function () {
            return this.length
          }, 'size'),
          eq: o(function (e) {
            return this[e] || this.spawn()
          }, 'eq'),
          first: o(function () {
            return this[0] || this.spawn()
          }, 'first'),
          last: o(function () {
            return this[this.length - 1] || this.spawn()
          }, 'last'),
          empty: o(function () {
            return this.length === 0
          }, 'empty'),
          nonempty: o(function () {
            return !this.empty()
          }, 'nonempty'),
          sort: o(function (e) {
            if (!li(e)) return this
            var r = this.toArray().sort(e)
            return this.spawn(r)
          }, 'sort'),
          sortByZIndex: o(function () {
            return this.sort(l1e)
          }, 'sortByZIndex'),
          zDepth: o(function () {
            var e = this[0]
            if (e) {
              var r = e._private,
                n = r.group
              if (n === 'nodes') {
                var i = r.data.parent ? e.parents().size() : 0
                return e.isParent() ? i : $B - 1
              } else {
                var a = r.source,
                  s = r.target,
                  l = a.zDepth(),
                  u = s.zDepth()
                return Math.max(l, u, 0)
              }
            }
          }, 'zDepth')
        })
      H6.each = H6.forEach
      tZe = o(function () {
        var e = 'undefined',
          r = (typeof Symbol > 'u' ? 'undefined' : qi(Symbol)) != e && qi(Symbol.iterator) != e
        r &&
          (H6[Symbol.iterator] = function () {
            var n = this,
              i = { value: void 0, done: !1 },
              a = 0,
              s = this.length
            return ige(
              {
                next: o(function () {
                  return a < s ? (i.value = n[a++]) : ((i.value = void 0), (i.done = !0)), i
                }, 'next')
              },
              Symbol.iterator,
              function () {
                return this
              }
            )
          })
      }, 'defineSymbolIterator')
      tZe()
      ;(rZe = oa({ nodeDimensionsIncludeLabels: !1 })),
        (N6 = {
          layoutDimensions: o(function (e) {
            e = rZe(e)
            var r
            if (!this.takesUpSpace()) r = { w: 0, h: 0 }
            else if (e.nodeDimensionsIncludeLabels) {
              var n = this.boundingBox()
              r = { w: n.w, h: n.h }
            } else r = { w: this.outerWidth(), h: this.outerHeight() }
            return (r.w === 0 || r.h === 0) && (r.w = r.h = 1), r
          }, 'layoutDimensions'),
          layoutPositions: o(function (e, r, n) {
            var i = this.nodes().filter(function (w) {
                return !w.isParent()
              }),
              a = this.cy(),
              s = r.eles,
              l = o(function (E) {
                return E.id()
              }, 'getMemoizeKey'),
              u = e4(n, l)
            e.emit({ type: 'layoutstart', layout: e }), (e.animations = [])
            var h = o(function (E, _, C) {
                var D = { x: _.x1 + _.w / 2, y: _.y1 + _.h / 2 },
                  O = { x: (C.x - D.x) * E, y: (C.y - D.y) * E }
                return { x: D.x + O.x, y: D.y + O.y }
              }, 'calculateSpacing'),
              f = r.spacingFactor && r.spacingFactor !== 1,
              d = o(function () {
                if (!f) return null
                for (var E = Ys(), _ = 0; _ < i.length; _++) {
                  var C = i[_],
                    D = u(C, _)
                  nXe(E, D.x, D.y)
                }
                return E
              }, 'spacingBb'),
              p = d(),
              m = e4(function (w, E) {
                var _ = u(w, E)
                if (f) {
                  var C = Math.abs(r.spacingFactor)
                  _ = h(C, p, _)
                }
                return r.transform != null && (_ = r.transform(w, _)), _
              }, l)
            if (r.animate) {
              for (var g = 0; g < i.length; g++) {
                var y = i[g],
                  v = m(y, g),
                  x = r.animateFilter == null || r.animateFilter(y, g)
                if (x) {
                  var b = y.animation({ position: v, duration: r.animationDuration, easing: r.animationEasing })
                  e.animations.push(b)
                } else y.position(v)
              }
              if (r.fit) {
                var T = a.animation({ fit: { boundingBox: s.boundingBoxAt(m), padding: r.padding }, duration: r.animationDuration, easing: r.animationEasing })
                e.animations.push(T)
              } else if (r.zoom !== void 0 && r.pan !== void 0) {
                var S = a.animation({ zoom: r.zoom, pan: r.pan, duration: r.animationDuration, easing: r.animationEasing })
                e.animations.push(S)
              }
              e.animations.forEach(function (w) {
                return w.play()
              }),
                e.one('layoutready', r.ready),
                e.emit({ type: 'layoutready', layout: e }),
                sy
                  .all(
                    e.animations.map(function (w) {
                      return w.promise()
                    })
                  )
                  .then(function () {
                    e.one('layoutstop', r.stop), e.emit({ type: 'layoutstop', layout: e })
                  })
            } else
              i.positions(m),
                r.fit && a.fit(r.eles, r.padding),
                r.zoom != null && a.zoom(r.zoom),
                r.pan && a.pan(r.pan),
                e.one('layoutready', r.ready),
                e.emit({ type: 'layoutready', layout: e }),
                e.one('layoutstop', r.stop),
                e.emit({ type: 'layoutstop', layout: e })
            return this
          }, 'layoutPositions'),
          layout: o(function (e) {
            var r = this.cy()
            return r.makeLayout(ir({}, e, { eles: this }))
          }, 'layout')
        })
      N6.createLayout = N6.makeLayout = N6.layout
      o(c1e, 'styleCache')
      o(sC, 'cacheStyleFunction')
      o(oC, 'cachePrototypeStyleFunction')
      Ea = {
        recalculateRenderedStyle: o(function (e) {
          var r = this.cy(),
            n = r.renderer(),
            i = r.styleEnabled()
          return n && i && n.recalculateRenderedStyle(this, e), this
        }, 'recalculateRenderedStyle'),
        dirtyStyleCache: o(function () {
          var e = this.cy(),
            r = o(function (a) {
              return (a._private.styleCache = null)
            }, 'dirty')
          if (e.hasCompoundNodes()) {
            var n
            ;(n = this.spawnSelf().merge(this.descendants()).merge(this.parents())), n.merge(n.connectedEdges()), n.forEach(r)
          } else
            this.forEach(function (i) {
              r(i), i.connectedEdges().forEach(r)
            })
          return this
        }, 'dirtyStyleCache'),
        updateStyle: o(function (e) {
          var r = this._private.cy
          if (!r.styleEnabled()) return this
          if (r.batching()) {
            var n = r._private.batchStyleEles
            return n.merge(this), this
          }
          var i = r.hasCompoundNodes(),
            a = this
          ;(e = !!(e || e === void 0)), i && (a = this.spawnSelf().merge(this.descendants()).merge(this.parents()))
          var s = a
          return (
            e ? s.emitAndNotify('style') : s.emit('style'),
            a.forEach(function (l) {
              return (l._private.styleDirty = !0)
            }),
            this
          )
        }, 'updateStyle'),
        cleanStyle: o(function () {
          var e = this.cy()
          if (e.styleEnabled())
            for (var r = 0; r < this.length; r++) {
              var n = this[r]
              n._private.styleDirty && ((n._private.styleDirty = !1), e.style().apply(n))
            }
        }, 'cleanStyle'),
        parsedStyle: o(function (e) {
          var r = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !0,
            n = this[0],
            i = n.cy()
          if (i.styleEnabled() && n) {
            n._private.styleDirty && ((n._private.styleDirty = !1), i.style().apply(n))
            var a = n._private.style[e]
            return a ?? (r ? i.style().getDefaultProperty(e) : null)
          }
        }, 'parsedStyle'),
        numericStyle: o(function (e) {
          var r = this[0]
          if (r.cy().styleEnabled() && r) {
            var n = r.pstyle(e)
            return n.pfValue !== void 0 ? n.pfValue : n.value
          }
        }, 'numericStyle'),
        numericStyleUnits: o(function (e) {
          var r = this[0]
          if (r.cy().styleEnabled() && r) return r.pstyle(e).units
        }, 'numericStyleUnits'),
        renderedStyle: o(function (e) {
          var r = this.cy()
          if (!r.styleEnabled()) return this
          var n = this[0]
          if (n) return r.style().getRenderedStyle(n, e)
        }, 'renderedStyle'),
        style: o(function (e, r) {
          var n = this.cy()
          if (!n.styleEnabled()) return this
          var i = !1,
            a = n.style()
          if (Ur(e)) {
            var s = e
            a.applyBypass(this, s, i), this.emitAndNotify('style')
          } else if (Zt(e))
            if (r === void 0) {
              var l = this[0]
              return l ? a.getStylePropertyValue(l, e) : void 0
            } else a.applyBypass(this, e, r, i), this.emitAndNotify('style')
          else if (e === void 0) {
            var u = this[0]
            return u ? a.getRawStyle(u) : void 0
          }
          return this
        }, 'style'),
        removeStyle: o(function (e) {
          var r = this.cy()
          if (!r.styleEnabled()) return this
          var n = !1,
            i = r.style(),
            a = this
          if (e === void 0)
            for (var s = 0; s < a.length; s++) {
              var l = a[s]
              i.removeAllBypasses(l, n)
            }
          else {
            e = e.split(/\s+/)
            for (var u = 0; u < a.length; u++) {
              var h = a[u]
              i.removeBypasses(h, e, n)
            }
          }
          return this.emitAndNotify('style'), this
        }, 'removeStyle'),
        show: o(function () {
          return this.css('display', 'element'), this
        }, 'show'),
        hide: o(function () {
          return this.css('display', 'none'), this
        }, 'hide'),
        effectiveOpacity: o(function () {
          var e = this.cy()
          if (!e.styleEnabled()) return 1
          var r = e.hasCompoundNodes(),
            n = this[0]
          if (n) {
            var i = n._private,
              a = n.pstyle('opacity').value
            if (!r) return a
            var s = i.data.parent ? n.parents() : null
            if (s)
              for (var l = 0; l < s.length; l++) {
                var u = s[l],
                  h = u.pstyle('opacity').value
                a = h * a
              }
            return a
          }
        }, 'effectiveOpacity'),
        transparent: o(function () {
          var e = this.cy()
          if (!e.styleEnabled()) return !1
          var r = this[0],
            n = r.cy().hasCompoundNodes()
          if (r) return n ? r.effectiveOpacity() === 0 : r.pstyle('opacity').value === 0
        }, 'transparent'),
        backgrounding: o(function () {
          var e = this.cy()
          if (!e.styleEnabled()) return !1
          var r = this[0]
          return !!r._private.backgrounding
        }, 'backgrounding')
      }
      o(hB, 'checkCompound')
      o(QB, 'defineDerivedStateFunction')
      uy = sC('eleTakesUpSpace', function (t) {
        return t.pstyle('display').value === 'element' && t.width() !== 0 && (t.isNode() ? t.height() !== 0 : !0)
      })
      Ea.takesUpSpace = oC('takesUpSpace', QB({ ok: uy }))
      ;(nZe = sC('eleInteractive', function (t) {
        return t.pstyle('events').value === 'yes' && t.pstyle('visibility').value === 'visible' && uy(t)
      })),
        (iZe = sC('parentInteractive', function (t) {
          return t.pstyle('visibility').value === 'visible' && uy(t)
        }))
      Ea.interactive = oC('interactive', QB({ ok: nZe, parentOk: iZe, edgeOkViaNode: uy }))
      Ea.noninteractive = function () {
        var t = this[0]
        if (t) return !t.interactive()
      }
      ;(aZe = sC('eleVisible', function (t) {
        return t.pstyle('visibility').value === 'visible' && t.pstyle('opacity').pfValue !== 0 && uy(t)
      })),
        (sZe = uy)
      Ea.visible = oC('visible', QB({ ok: aZe, edgeOkViaNode: sZe }))
      Ea.hidden = function () {
        var t = this[0]
        if (t) return !t.visible()
      }
      Ea.isBundledBezier = oC('isBundledBezier', function () {
        return this.cy().styleEnabled() ? !this.removed() && this.pstyle('curve-style').value === 'bezier' && this.takesUpSpace() : !1
      })
      Ea.bypass = Ea.css = Ea.style
      Ea.renderedCss = Ea.renderedStyle
      Ea.removeBypass = Ea.removeCss = Ea.removeStyle
      Ea.pstyle = Ea.parsedStyle
      Of = {}
      o(wme, 'defineSwitchFunction')
      o(hy, 'defineSwitchSet')
      hy({
        field: 'locked',
        overrideField: o(function (e) {
          return e.cy().autolock() ? !0 : void 0
        }, 'overrideField'),
        on: 'lock',
        off: 'unlock'
      })
      hy({
        field: 'grabbable',
        overrideField: o(function (e) {
          return e.cy().autoungrabify() || e.pannable() ? !1 : void 0
        }, 'overrideField'),
        on: 'grabify',
        off: 'ungrabify'
      })
      hy({
        field: 'selected',
        ableField: 'selectable',
        overrideAble: o(function (e) {
          return e.cy().autounselectify() ? !1 : void 0
        }, 'overrideAble'),
        on: 'select',
        off: 'unselect'
      })
      hy({
        field: 'selectable',
        overrideField: o(function (e) {
          return e.cy().autounselectify() ? !1 : void 0
        }, 'overrideField'),
        on: 'selectify',
        off: 'unselectify'
      })
      Of.deselect = Of.unselect
      Of.grabbed = function () {
        var t = this[0]
        if (t) return t._private.grabbed
      }
      hy({ field: 'active', on: 'activate', off: 'unactivate' })
      hy({ field: 'pannable', on: 'panify', off: 'unpanify' })
      Of.inactive = function () {
        var t = this[0]
        if (t) return !t._private.active
      }
      ;(Ha = {}),
        (kme = o(function (e) {
          return o(function (n) {
            for (var i = this, a = [], s = 0; s < i.length; s++) {
              var l = i[s]
              if (l.isNode()) {
                for (var u = !1, h = l.connectedEdges(), f = 0; f < h.length; f++) {
                  var d = h[f],
                    p = d.source(),
                    m = d.target()
                  if ((e.noIncomingEdges && m === l && p !== l) || (e.noOutgoingEdges && p === l && m !== l)) {
                    u = !0
                    break
                  }
                }
                u || a.push(l)
              }
            }
            return this.spawn(a, !0).filter(n)
          }, 'dagExtremityImpl')
        }, 'defineDagExtremity')),
        (Eme = o(function (e) {
          return function (r) {
            for (var n = this, i = [], a = 0; a < n.length; a++) {
              var s = n[a]
              if (s.isNode())
                for (var l = s.connectedEdges(), u = 0; u < l.length; u++) {
                  var h = l[u],
                    f = h.source(),
                    d = h.target()
                  e.outgoing && f === s ? (i.push(h), i.push(d)) : e.incoming && d === s && (i.push(h), i.push(f))
                }
            }
            return this.spawn(i, !0).filter(r)
          }
        }, 'defineDagOneHop')),
        (Sme = o(function (e) {
          return function (r) {
            for (var n = this, i = [], a = {}; ; ) {
              var s = e.outgoing ? n.outgoers() : n.incomers()
              if (s.length === 0) break
              for (var l = !1, u = 0; u < s.length; u++) {
                var h = s[u],
                  f = h.id()
                a[f] || ((a[f] = !0), i.push(h), (l = !0))
              }
              if (!l) break
              n = s
            }
            return this.spawn(i, !0).filter(r)
          }
        }, 'defineDagAllHops'))
      Ha.clearTraversalCache = function () {
        for (var t = 0; t < this.length; t++) this[t]._private.traversalCache = null
      }
      ir(Ha, {
        roots: kme({ noIncomingEdges: !0 }),
        leaves: kme({ noOutgoingEdges: !0 }),
        outgoers: al(Eme({ outgoing: !0 }), 'outgoers'),
        successors: Sme({ outgoing: !0 }),
        incomers: al(Eme({ incoming: !0 }), 'incomers'),
        predecessors: Sme({ incoming: !0 })
      })
      ir(Ha, {
        neighborhood: al(function (t) {
          for (var e = [], r = this.nodes(), n = 0; n < r.length; n++)
            for (var i = r[n], a = i.connectedEdges(), s = 0; s < a.length; s++) {
              var l = a[s],
                u = l.source(),
                h = l.target(),
                f = i === u ? h : u
              f.length > 0 && e.push(f[0]), e.push(l[0])
            }
          return this.spawn(e, !0).filter(t)
        }, 'neighborhood'),
        closedNeighborhood: o(function (e) {
          return this.neighborhood().add(this).filter(e)
        }, 'closedNeighborhood'),
        openNeighborhood: o(function (e) {
          return this.neighborhood(e)
        }, 'openNeighborhood')
      })
      Ha.neighbourhood = Ha.neighborhood
      Ha.closedNeighbourhood = Ha.closedNeighborhood
      Ha.openNeighbourhood = Ha.openNeighborhood
      ir(Ha, {
        source: al(
          o(function (e) {
            var r = this[0],
              n
            return r && (n = r._private.source || r.cy().collection()), n && e ? n.filter(e) : n
          }, 'sourceImpl'),
          'source'
        ),
        target: al(
          o(function (e) {
            var r = this[0],
              n
            return r && (n = r._private.target || r.cy().collection()), n && e ? n.filter(e) : n
          }, 'targetImpl'),
          'target'
        ),
        sources: Cme({ attr: 'source' }),
        targets: Cme({ attr: 'target' })
      })
      o(Cme, 'defineSourceFunction')
      ir(Ha, { edgesWith: al(Ame(), 'edgesWith'), edgesTo: al(Ame({ thisIsSrc: !0 }), 'edgesTo') })
      o(Ame, 'defineEdgesWithFunction')
      ir(Ha, {
        connectedEdges: al(function (t) {
          for (var e = [], r = this, n = 0; n < r.length; n++) {
            var i = r[n]
            if (i.isNode())
              for (var a = i._private.edges, s = 0; s < a.length; s++) {
                var l = a[s]
                e.push(l)
              }
          }
          return this.spawn(e, !0).filter(t)
        }, 'connectedEdges'),
        connectedNodes: al(function (t) {
          for (var e = [], r = this, n = 0; n < r.length; n++) {
            var i = r[n]
            i.isEdge() && (e.push(i.source()[0]), e.push(i.target()[0]))
          }
          return this.spawn(e, !0).filter(t)
        }, 'connectedNodes'),
        parallelEdges: al(_me(), 'parallelEdges'),
        codirectedEdges: al(_me({ codirected: !0 }), 'codirectedEdges')
      })
      o(_me, 'defineParallelEdgesFunction')
      ir(Ha, {
        components: o(function (e) {
          var r = this,
            n = r.cy(),
            i = n.collection(),
            a = e == null ? r.nodes() : e.nodes(),
            s = []
          e != null && a.empty() && (a = e.sources())
          var l = o(function (f, d) {
            i.merge(f), a.unmerge(f), d.merge(f)
          }, 'visitInComponent')
          if (a.empty()) return r.spawn()
          var u = o(function () {
            var f = n.collection()
            s.push(f)
            var d = a[0]
            l(d, f),
              r.bfs({
                directed: !1,
                roots: d,
                visit: o(function (m) {
                  return l(m, f)
                }, 'visit')
              }),
              f.forEach(function (p) {
                p.connectedEdges().forEach(function (m) {
                  r.has(m) && f.has(m.source()) && f.has(m.target()) && f.merge(m)
                })
              })
          }, '_loop')
          do u()
          while (a.length > 0)
          return s
        }, 'components'),
        component: o(function () {
          var e = this[0]
          return e.cy().mutableElements().components(e)[0]
        }, 'component')
      })
      Ha.componentsOf = Ha.components
      ;(Sa = o(function (e, r) {
        var n = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : !1,
          i = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : !1
        if (e === void 0) {
          oi('A collection must have a reference to the core')
          return
        }
        var a = new Zc(),
          s = !1
        if (!r) r = []
        else if (r.length > 0 && Ur(r[0]) && !f4(r[0])) {
          s = !0
          for (var l = [], u = new ay(), h = 0, f = r.length; h < f; h++) {
            var d = r[h]
            d.data == null && (d.data = {})
            var p = d.data
            if (p.id == null) p.id = wge()
            else if (e.hasElementWithId(p.id) || u.has(p.id)) continue
            var m = new Z6(e, d, !1)
            l.push(m), u.add(p.id)
          }
          r = l
        }
        this.length = 0
        for (var g = 0, y = r.length; g < y; g++) {
          var v = r[g][0]
          if (v != null) {
            var x = v._private.data.id
            ;(!n || !a.has(x)) && (n && a.set(x, { index: this.length, ele: v }), (this[this.length] = v), this.length++)
          }
        }
        ;(this._private = {
          eles: this,
          cy: e,
          get map() {
            return this.lazyMap == null && this.rebuildMap(), this.lazyMap
          },
          set map(b) {
            this.lazyMap = b
          },
          rebuildMap: o(function () {
            for (var T = (this.lazyMap = new Zc()), S = this.eles, w = 0; w < S.length; w++) {
              var E = S[w]
              T.set(E.id(), { index: w, ele: E })
            }
          }, 'rebuildMap')
        }),
          n && (this._private.map = a),
          s && !i && this.restore()
      }, 'Collection')),
        (Mn = Z6.prototype = Sa.prototype = Object.create(Array.prototype))
      Mn.instanceString = function () {
        return 'collection'
      }
      Mn.spawn = function (t, e) {
        return new Sa(this.cy(), t, e)
      }
      Mn.spawnSelf = function () {
        return this.spawn(this)
      }
      Mn.cy = function () {
        return this._private.cy
      }
      Mn.renderer = function () {
        return this._private.cy.renderer()
      }
      Mn.element = function () {
        return this[0]
      }
      Mn.collection = function () {
        return oge(this) ? this : new Sa(this._private.cy, [this])
      }
      Mn.unique = function () {
        return new Sa(this._private.cy, this, !0)
      }
      Mn.hasElementWithId = function (t) {
        return (t = '' + t), this._private.map.has(t)
      }
      Mn.getElementById = function (t) {
        t = '' + t
        var e = this._private.cy,
          r = this._private.map.get(t)
        return r ? r.ele : new Sa(e)
      }
      Mn.$id = Mn.getElementById
      Mn.poolIndex = function () {
        var t = this._private.cy,
          e = t._private.elements,
          r = this[0]._private.data.id
        return e._private.map.get(r).index
      }
      Mn.indexOf = function (t) {
        var e = t[0]._private.data.id
        return this._private.map.get(e).index
      }
      Mn.indexOfId = function (t) {
        return (t = '' + t), this._private.map.get(t).index
      }
      Mn.json = function (t) {
        var e = this.element(),
          r = this.cy()
        if (e == null && t) return this
        if (e != null) {
          var n = e._private
          if (Ur(t)) {
            if ((r.startBatch(), t.data)) {
              e.data(t.data)
              var i = n.data
              if (e.isEdge()) {
                var a = !1,
                  s = {},
                  l = t.data.source,
                  u = t.data.target
                l != null && l != i.source && ((s.source = '' + l), (a = !0)), u != null && u != i.target && ((s.target = '' + u), (a = !0)), a && (e = e.move(s))
              } else {
                var h = 'parent' in t.data,
                  f = t.data.parent
                h && (f != null || i.parent != null) && f != i.parent && (f === void 0 && (f = null), f != null && (f = '' + f), (e = e.move({ parent: f })))
              }
            }
            t.position && e.position(t.position)
            var d = o(function (y, v, x) {
              var b = t[y]
              b != null && b !== n[y] && (b ? e[v]() : e[x]())
            }, 'checkSwitch')
            return (
              d('removed', 'remove', 'restore'),
              d('selected', 'select', 'unselect'),
              d('selectable', 'selectify', 'unselectify'),
              d('locked', 'lock', 'unlock'),
              d('grabbable', 'grabify', 'ungrabify'),
              d('pannable', 'panify', 'unpanify'),
              t.classes != null && e.classes(t.classes),
              r.endBatch(),
              this
            )
          } else if (t === void 0) {
            var p = {
              data: Qc(n.data),
              position: Qc(n.position),
              group: n.group,
              removed: n.removed,
              selected: n.selected,
              selectable: n.selectable,
              locked: n.locked,
              grabbable: n.grabbable,
              pannable: n.pannable,
              classes: null
            }
            p.classes = ''
            var m = 0
            return (
              n.classes.forEach(function (g) {
                return (p.classes += m++ === 0 ? g : ' ' + g)
              }),
              p
            )
          }
        }
      }
      Mn.jsons = function () {
        for (var t = [], e = 0; e < this.length; e++) {
          var r = this[e],
            n = r.json()
          t.push(n)
        }
        return t
      }
      Mn.clone = function () {
        for (var t = this.cy(), e = [], r = 0; r < this.length; r++) {
          var n = this[r],
            i = n.json(),
            a = new Z6(t, i, !1)
          e.push(a)
        }
        return new Sa(t, e)
      }
      Mn.copy = Mn.clone
      Mn.restore = function () {
        for (
          var t = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : !0,
            e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !0,
            r = this,
            n = r.cy(),
            i = n._private,
            a = [],
            s = [],
            l,
            u = 0,
            h = r.length;
          u < h;
          u++
        ) {
          var f = r[u]
          ;(e && !f.removed()) || (f.isNode() ? a.push(f) : s.push(f))
        }
        l = a.concat(s)
        var d,
          p = o(function () {
            l.splice(d, 1), d--
          }, 'removeFromElements')
        for (d = 0; d < l.length; d++) {
          var m = l[d],
            g = m._private,
            y = g.data
          if ((m.clearTraversalCache(), !(!e && !g.removed))) {
            if (y.id === void 0) y.id = wge()
            else if (_t(y.id)) y.id = '' + y.id
            else if (Pf(y.id) || !Zt(y.id)) {
              oi('Can not create element with invalid string ID `' + y.id + '`'), p()
              continue
            } else if (n.hasElementWithId(y.id)) {
              oi('Can not create second element with ID `' + y.id + '`'), p()
              continue
            }
          }
          var v = y.id
          if (m.isNode()) {
            var x = g.position
            x.x == null && (x.x = 0), x.y == null && (x.y = 0)
          }
          if (m.isEdge()) {
            for (var b = m, T = ['source', 'target'], S = T.length, w = !1, E = 0; E < S; E++) {
              var _ = T[E],
                C = y[_]
              _t(C) && (C = y[_] = '' + y[_]),
                C == null || C === ''
                  ? (oi('Can not create edge `' + v + '` with unspecified ' + _), (w = !0))
                  : n.hasElementWithId(C) || (oi('Can not create edge `' + v + '` with nonexistant ' + _ + ' `' + C + '`'), (w = !0))
            }
            if (w) {
              p()
              continue
            }
            var D = n.getElementById(y.source),
              O = n.getElementById(y.target)
            D.same(O) ? D._private.edges.push(b) : (D._private.edges.push(b), O._private.edges.push(b)), (b._private.source = D), (b._private.target = O)
          }
          ;(g.map = new Zc()), g.map.set(v, { ele: m, index: 0 }), (g.removed = !1), e && n.addToPool(m)
        }
        for (var R = 0; R < a.length; R++) {
          var k = a[R],
            L = k._private.data
          _t(L.parent) && (L.parent = '' + L.parent)
          var A = L.parent,
            I = A != null
          if (I || k._private.parent) {
            var M = k._private.parent ? n.collection().merge(k._private.parent) : n.getElementById(A)
            if (M.empty()) L.parent = void 0
            else if (M[0].removed()) hn('Node added with missing parent, reference to parent removed'), (L.parent = void 0), (k._private.parent = null)
            else {
              for (var P = !1, B = M; !B.empty(); ) {
                if (k.same(B)) {
                  ;(P = !0), (L.parent = void 0)
                  break
                }
                B = B.parent()
              }
              P || (M[0]._private.children.push(k), (k._private.parent = M[0]), (i.hasCompoundNodes = !0))
            }
          }
        }
        if (l.length > 0) {
          for (var F = l.length === r.length ? r : new Sa(n, l), z = 0; z < F.length; z++) {
            var $ = F[z]
            $.isNode() || ($.parallelEdges().clearTraversalCache(), $.source().clearTraversalCache(), $.target().clearTraversalCache())
          }
          var U
          i.hasCompoundNodes ? (U = n.collection().merge(F).merge(F.connectedNodes()).merge(F.parent())) : (U = F),
            U.dirtyCompoundBoundsCache().dirtyBoundingBoxCache().updateStyle(t),
            t ? F.emitAndNotify('add') : e && F.emit('add')
        }
        return r
      }
      Mn.removed = function () {
        var t = this[0]
        return t && t._private.removed
      }
      Mn.inside = function () {
        var t = this[0]
        return t && !t._private.removed
      }
      Mn.remove = function () {
        var t = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : !0,
          e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !0,
          r = this,
          n = [],
          i = {},
          a = r._private.cy
        function s(A) {
          for (var I = A._private.edges, M = 0; M < I.length; M++) u(I[M])
        }
        o(s, 'addConnectedEdges')
        function l(A) {
          for (var I = A._private.children, M = 0; M < I.length; M++) u(I[M])
        }
        o(l, 'addChildren')
        function u(A) {
          var I = i[A.id()]
          ;(e && A.removed()) || I || ((i[A.id()] = !0), A.isNode() ? (n.push(A), s(A), l(A)) : n.unshift(A))
        }
        o(u, 'add')
        for (var h = 0, f = r.length; h < f; h++) {
          var d = r[h]
          u(d)
        }
        function p(A, I) {
          var M = A._private.edges
          Ff(M, I), A.clearTraversalCache()
        }
        o(p, 'removeEdgeRef')
        function m(A) {
          A.clearTraversalCache()
        }
        o(m, 'removeParallelRef')
        var g = []
        g.ids = {}
        function y(A, I) {
          ;(I = I[0]), (A = A[0])
          var M = A._private.children,
            P = A.id()
          Ff(M, I), (I._private.parent = null), g.ids[P] || ((g.ids[P] = !0), g.push(A))
        }
        o(y, 'removeChildRef'), r.dirtyCompoundBoundsCache(), e && a.removeFromPool(n)
        for (var v = 0; v < n.length; v++) {
          var x = n[v]
          if (x.isEdge()) {
            var b = x.source()[0],
              T = x.target()[0]
            p(b, x), p(T, x)
            for (var S = x.parallelEdges(), w = 0; w < S.length; w++) {
              var E = S[w]
              m(E), E.isBundledBezier() && E.dirtyBoundingBoxCache()
            }
          } else {
            var _ = x.parent()
            _.length !== 0 && y(_, x)
          }
          e && (x._private.removed = !0)
        }
        var C = a._private.elements
        a._private.hasCompoundNodes = !1
        for (var D = 0; D < C.length; D++) {
          var O = C[D]
          if (O.isParent()) {
            a._private.hasCompoundNodes = !0
            break
          }
        }
        var R = new Sa(this.cy(), n)
        R.size() > 0 && (t ? R.emitAndNotify('remove') : e && R.emit('remove'))
        for (var k = 0; k < g.length; k++) {
          var L = g[k]
          ;(!e || !L.removed()) && L.updateStyle()
        }
        return R
      }
      Mn.move = function (t) {
        var e = this._private.cy,
          r = this,
          n = !1,
          i = !1,
          a = o(function (g) {
            return g == null ? g : '' + g
          }, 'toString')
        if (t.source !== void 0 || t.target !== void 0) {
          var s = a(t.source),
            l = a(t.target),
            u = s != null && e.hasElementWithId(s),
            h = l != null && e.hasElementWithId(l)
          ;(u || h) &&
            (e.batch(function () {
              r.remove(n, i), r.emitAndNotify('moveout')
              for (var m = 0; m < r.length; m++) {
                var g = r[m],
                  y = g._private.data
                g.isEdge() && (u && (y.source = s), h && (y.target = l))
              }
              r.restore(n, i)
            }),
            r.emitAndNotify('move'))
        } else if (t.parent !== void 0) {
          var f = a(t.parent),
            d = f === null || e.hasElementWithId(f)
          if (d) {
            var p = f === null ? void 0 : f
            e.batch(function () {
              var m = r.remove(n, i)
              m.emitAndNotify('moveout')
              for (var g = 0; g < r.length; g++) {
                var y = r[g],
                  v = y._private.data
                y.isNode() && (v.parent = p)
              }
              m.restore(n, i)
            }),
              r.emitAndNotify('move')
          }
        }
        return this
      }
      ;[Oge, yQe, R6, If, iy, MQe, iC, jQe, s1e, o1e, eZe, H6, N6, Ea, Of, Ha].forEach(function (t) {
        ir(Mn, t)
      })
      oZe = {
        add: o(function (e) {
          var r,
            n = this
          if (xo(e)) {
            var i = e
            if (i._private.cy === n) r = i.restore()
            else {
              for (var a = [], s = 0; s < i.length; s++) {
                var l = i[s]
                a.push(l.json())
              }
              r = new Sa(n, a)
            }
          } else if (En(e)) {
            var u = e
            r = new Sa(n, u)
          } else if (Ur(e) && (En(e.nodes) || En(e.edges))) {
            for (var h = e, f = [], d = ['nodes', 'edges'], p = 0, m = d.length; p < m; p++) {
              var g = d[p],
                y = h[g]
              if (En(y))
                for (var v = 0, x = y.length; v < x; v++) {
                  var b = ir({ group: g }, y[v])
                  f.push(b)
                }
            }
            r = new Sa(n, f)
          } else {
            var T = e
            r = new Z6(n, T).collection()
          }
          return r
        }, 'add'),
        remove: o(function (e) {
          if (!xo(e)) {
            if (Zt(e)) {
              var r = e
              e = this.$(r)
            }
          }
          return e.remove()
        }, 'remove')
      }
      o(lZe, 'generateCubicBezier')
      ;(cZe = (function () {
        function t(n) {
          return -n.tension * n.x - n.friction * n.v
        }
        o(t, 'springAccelerationForState')
        function e(n, i, a) {
          var s = { x: n.x + a.dx * i, v: n.v + a.dv * i, tension: n.tension, friction: n.friction }
          return { dx: s.v, dv: t(s) }
        }
        o(e, 'springEvaluateStateWithDerivative')
        function r(n, i) {
          var a = { dx: n.v, dv: t(n) },
            s = e(n, i * 0.5, a),
            l = e(n, i * 0.5, s),
            u = e(n, i, l),
            h = (1 / 6) * (a.dx + 2 * (s.dx + l.dx) + u.dx),
            f = (1 / 6) * (a.dv + 2 * (s.dv + l.dv) + u.dv)
          return (n.x = n.x + h * i), (n.v = n.v + f * i), n
        }
        return (
          o(r, 'springIntegrateState'),
          o(function n(i, a, s) {
            var l = { x: -1, v: 0, tension: null, friction: null },
              u = [0],
              h = 0,
              f = 1 / 1e4,
              d = 16 / 1e3,
              p,
              m,
              g
            for (
              i = parseFloat(i) || 500, a = parseFloat(a) || 20, s = s || null, l.tension = i, l.friction = a, p = s !== null, p ? ((h = n(i, a)), (m = (h / s) * d)) : (m = d);
              (g = r(g || l, m)), u.push(1 + g.x), (h += 16), Math.abs(g.x) > f && Math.abs(g.v) > f;

            );
            return p
              ? function (y) {
                  return u[(y * (u.length - 1)) | 0]
                }
              : h
          }, 'springRK4Factory')
        )
      })()),
        (Nn = o(function (e, r, n, i) {
          var a = lZe(e, r, n, i)
          return function (s, l, u) {
            return s + (l - s) * a(u)
          }
        }, 'cubicBezier')),
        (M6 = {
          linear: o(function (e, r, n) {
            return e + (r - e) * n
          }, 'linear'),
          ease: Nn(0.25, 0.1, 0.25, 1),
          'ease-in': Nn(0.42, 0, 1, 1),
          'ease-out': Nn(0, 0, 0.58, 1),
          'ease-in-out': Nn(0.42, 0, 0.58, 1),
          'ease-in-sine': Nn(0.47, 0, 0.745, 0.715),
          'ease-out-sine': Nn(0.39, 0.575, 0.565, 1),
          'ease-in-out-sine': Nn(0.445, 0.05, 0.55, 0.95),
          'ease-in-quad': Nn(0.55, 0.085, 0.68, 0.53),
          'ease-out-quad': Nn(0.25, 0.46, 0.45, 0.94),
          'ease-in-out-quad': Nn(0.455, 0.03, 0.515, 0.955),
          'ease-in-cubic': Nn(0.55, 0.055, 0.675, 0.19),
          'ease-out-cubic': Nn(0.215, 0.61, 0.355, 1),
          'ease-in-out-cubic': Nn(0.645, 0.045, 0.355, 1),
          'ease-in-quart': Nn(0.895, 0.03, 0.685, 0.22),
          'ease-out-quart': Nn(0.165, 0.84, 0.44, 1),
          'ease-in-out-quart': Nn(0.77, 0, 0.175, 1),
          'ease-in-quint': Nn(0.755, 0.05, 0.855, 0.06),
          'ease-out-quint': Nn(0.23, 1, 0.32, 1),
          'ease-in-out-quint': Nn(0.86, 0, 0.07, 1),
          'ease-in-expo': Nn(0.95, 0.05, 0.795, 0.035),
          'ease-out-expo': Nn(0.19, 1, 0.22, 1),
          'ease-in-out-expo': Nn(1, 0, 0, 1),
          'ease-in-circ': Nn(0.6, 0.04, 0.98, 0.335),
          'ease-out-circ': Nn(0.075, 0.82, 0.165, 1),
          'ease-in-out-circ': Nn(0.785, 0.135, 0.15, 0.86),
          spring: o(function (e, r, n) {
            if (n === 0) return M6.linear
            var i = cZe(e, r, n)
            return function (a, s, l) {
              return a + (s - a) * i(l)
            }
          }, 'spring'),
          'cubic-bezier': Nn
        })
      o(Dme, 'getEasedValue')
      o(Lme, 'getValue')
      o(W1, 'ease')
      o(uZe, 'step$1')
      o(Vb, 'valid')
      o(hZe, 'startAnimation')
      o(Rme, 'stepAll')
      ;(fZe = {
        animate: un.animate(),
        animation: un.animation(),
        animated: un.animated(),
        clearQueue: un.clearQueue(),
        delay: un.delay(),
        delayAnimation: un.delayAnimation(),
        stop: un.stop(),
        addToAnimationPool: o(function (e) {
          var r = this
          r.styleEnabled() && r._private.aniEles.merge(e)
        }, 'addToAnimationPool'),
        stopAnimationLoop: o(function () {
          this._private.animationsRunning = !1
        }, 'stopAnimationLoop'),
        startAnimationLoop: o(function () {
          var e = this
          if (((e._private.animationsRunning = !0), !e.styleEnabled())) return
          function r() {
            e._private.animationsRunning &&
              $6(
                o(function (a) {
                  Rme(a, e), r()
                }, 'animationStep')
              )
          }
          o(r, 'headlessStep')
          var n = e.renderer()
          n && n.beforeRender
            ? n.beforeRender(
                o(function (a, s) {
                  Rme(s, e)
                }, 'rendererAnimationStep'),
                n.beforeRenderPriorities.animations
              )
            : r()
        }, 'startAnimationLoop')
      }),
        (dZe = {
          qualifierCompare: o(function (e, r) {
            return e == null || r == null ? e == null && r == null : e.sameText(r)
          }, 'qualifierCompare'),
          eventMatches: o(function (e, r, n) {
            var i = r.qualifier
            return i != null ? e !== n.target && f4(n.target) && i.matches(n.target) : !0
          }, 'eventMatches'),
          addEventFields: o(function (e, r) {
            ;(r.cy = e), (r.target = e)
          }, 'addEventFields'),
          callbackContext: o(function (e, r, n) {
            return r.qualifier != null ? n.target : e
          }, 'callbackContext')
        }),
        (E6 = o(function (e) {
          return Zt(e) ? new $f(e) : e
        }, 'argSelector')),
        (u1e = {
          createEmitter: o(function () {
            var e = this._private
            return e.emitter || (e.emitter = new aC(dZe, this)), this
          }, 'createEmitter'),
          emitter: o(function () {
            return this._private.emitter
          }, 'emitter'),
          on: o(function (e, r, n) {
            return this.emitter().on(e, E6(r), n), this
          }, 'on'),
          removeListener: o(function (e, r, n) {
            return this.emitter().removeListener(e, E6(r), n), this
          }, 'removeListener'),
          removeAllListeners: o(function () {
            return this.emitter().removeAllListeners(), this
          }, 'removeAllListeners'),
          one: o(function (e, r, n) {
            return this.emitter().one(e, E6(r), n), this
          }, 'one'),
          once: o(function (e, r, n) {
            return this.emitter().one(e, E6(r), n), this
          }, 'once'),
          emit: o(function (e, r) {
            return this.emitter().emit(e, r), this
          }, 'emit'),
          emitAndNotify: o(function (e, r) {
            return this.emit(e), this.notify(e, r), this
          }, 'emitAndNotify')
        })
      un.eventAliasesOn(u1e)
      CB = {
        png: o(function (e) {
          var r = this._private.renderer
          return (e = e || {}), r.png(e)
        }, 'png'),
        jpg: o(function (e) {
          var r = this._private.renderer
          return (e = e || {}), (e.bg = e.bg || '#fff'), r.jpg(e)
        }, 'jpg')
      }
      CB.jpeg = CB.jpg
      I6 = {
        layout: o(function (e) {
          var r = this
          if (e == null) {
            oi('Layout options must be specified to make a layout')
            return
          }
          if (e.name == null) {
            oi('A `name` must be specified to make a layout')
            return
          }
          var n = e.name,
            i = r.extension('layout', n)
          if (i == null) {
            oi('No such layout `' + n + '` found.  Did you forget to import it and `cytoscape.use()` it?')
            return
          }
          var a
          Zt(e.eles) ? (a = r.$(e.eles)) : (a = e.eles != null ? e.eles : r.$())
          var s = new i(ir({}, e, { cy: r, eles: a }))
          return s
        }, 'layout')
      }
      I6.createLayout = I6.makeLayout = I6.layout
      ;(pZe = {
        notify: o(function (e, r) {
          var n = this._private
          if (this.batching()) {
            n.batchNotifications = n.batchNotifications || {}
            var i = (n.batchNotifications[e] = n.batchNotifications[e] || this.collection())
            r != null && i.merge(r)
            return
          }
          if (n.notificationsEnabled) {
            var a = this.renderer()
            this.destroyed() || !a || a.notify(e, r)
          }
        }, 'notify'),
        notifications: o(function (e) {
          var r = this._private
          return e === void 0 ? r.notificationsEnabled : ((r.notificationsEnabled = !!e), this)
        }, 'notifications'),
        noNotifications: o(function (e) {
          this.notifications(!1), e(), this.notifications(!0)
        }, 'noNotifications'),
        batching: o(function () {
          return this._private.batchCount > 0
        }, 'batching'),
        startBatch: o(function () {
          var e = this._private
          return e.batchCount == null && (e.batchCount = 0), e.batchCount === 0 && ((e.batchStyleEles = this.collection()), (e.batchNotifications = {})), e.batchCount++, this
        }, 'startBatch'),
        endBatch: o(function () {
          var e = this._private
          if (e.batchCount === 0) return this
          if ((e.batchCount--, e.batchCount === 0)) {
            e.batchStyleEles.updateStyle()
            var r = this.renderer()
            Object.keys(e.batchNotifications).forEach(function (n) {
              var i = e.batchNotifications[n]
              i.empty() ? r.notify(n) : r.notify(n, i)
            })
          }
          return this
        }, 'endBatch'),
        batch: o(function (e) {
          return this.startBatch(), e(), this.endBatch(), this
        }, 'batch'),
        batchData: o(function (e) {
          var r = this
          return this.batch(function () {
            for (var n = Object.keys(e), i = 0; i < n.length; i++) {
              var a = n[i],
                s = e[a],
                l = r.getElementById(a)
              l.data(s)
            }
          })
        }, 'batchData')
      }),
        (mZe = oa({
          hideEdgesOnViewport: !1,
          textureOnViewport: !1,
          motionBlur: !1,
          motionBlurOpacity: 0.05,
          pixelRatio: void 0,
          desktopTapThreshold: 4,
          touchTapThreshold: 8,
          wheelSensitivity: 1,
          debug: !1,
          showFps: !1,
          webgl: !1,
          webglDebug: !1,
          webglDebugShowAtlases: !1,
          webglTexSize: 2048,
          webglTexRows: 12,
          webglBatchSize: 2048,
          webglTexPerBatch: 14,
          webglBgColor: [255, 255, 255]
        })),
        (AB = {
          renderTo: o(function (e, r, n, i) {
            var a = this._private.renderer
            return a.renderTo(e, r, n, i), this
          }, 'renderTo'),
          renderer: o(function () {
            return this._private.renderer
          }, 'renderer'),
          forceRender: o(function () {
            return this.notify('draw'), this
          }, 'forceRender'),
          resize: o(function () {
            return this.invalidateSize(), this.emitAndNotify('resize'), this
          }, 'resize'),
          initRenderer: o(function (e) {
            var r = this,
              n = r.extension('renderer', e.name)
            if (n == null) {
              oi('Can not initialise: No such renderer `'.concat(e.name, '` found. Did you forget to import it and `cytoscape.use()` it?'))
              return
            }
            e.wheelSensitivity !== void 0 &&
              hn(
                'You have set a custom wheel sensitivity.  This will make your app zoom unnaturally when using mainstream mice.  You should change this value from the default only if you can guarantee that all your users will use the same hardware and OS configuration as your current machine.'
              )
            var i = mZe(e)
            ;(i.cy = r), (r._private.renderer = new n(i)), this.notify('init')
          }, 'initRenderer'),
          destroyRenderer: o(function () {
            var e = this
            e.notify('destroy')
            var r = e.container()
            if (r) for (r._cyreg = null; r.childNodes.length > 0; ) r.removeChild(r.childNodes[0])
            ;(e._private.renderer = null),
              e.mutableElements().forEach(function (n) {
                var i = n._private
                ;(i.rscratch = {}), (i.rstyle = {}), (i.animation.current = []), (i.animation.queue = [])
              })
          }, 'destroyRenderer'),
          onRender: o(function (e) {
            return this.on('render', e)
          }, 'onRender'),
          offRender: o(function (e) {
            return this.off('render', e)
          }, 'offRender')
        })
      AB.invalidateDimensions = AB.resize
      O6 = {
        collection: o(function (e, r) {
          return Zt(e) ? this.$(e) : xo(e) ? e.collection() : En(e) ? (r || (r = {}), new Sa(this, e, r.unique, r.removed)) : new Sa(this)
        }, 'collection'),
        nodes: o(function (e) {
          var r = this.$(function (n) {
            return n.isNode()
          })
          return e ? r.filter(e) : r
        }, 'nodes'),
        edges: o(function (e) {
          var r = this.$(function (n) {
            return n.isEdge()
          })
          return e ? r.filter(e) : r
        }, 'edges'),
        $: o(function (e) {
          var r = this._private.elements
          return e ? r.filter(e) : r.spawnSelf()
        }, '$'),
        mutableElements: o(function () {
          return this._private.elements
        }, 'mutableElements')
      }
      O6.elements = O6.filter = O6.$
      ;(qa = {}), (Kb = 't'), (gZe = 'f')
      qa.apply = function (t) {
        for (var e = this, r = e._private, n = r.cy, i = n.collection(), a = 0; a < t.length; a++) {
          var s = t[a],
            l = e.getContextMeta(s)
          if (!l.empty) {
            var u = e.getContextStyle(l),
              h = e.applyContextStyle(l, u, s)
            s._private.appliedInitStyle ? e.updateTransitions(s, h.diffProps) : (s._private.appliedInitStyle = !0)
            var f = e.updateStyleHints(s)
            f && i.push(s)
          }
        }
        return i
      }
      qa.getPropertiesDiff = function (t, e) {
        var r = this,
          n = (r._private.propDiffs = r._private.propDiffs || {}),
          i = t + '-' + e,
          a = n[i]
        if (a) return a
        for (var s = [], l = {}, u = 0; u < r.length; u++) {
          var h = r[u],
            f = t[u] === Kb,
            d = e[u] === Kb,
            p = f !== d,
            m = h.mappedProperties.length > 0
          if (p || (d && m)) {
            var g = void 0
            ;(p && m) || p ? (g = h.properties) : m && (g = h.mappedProperties)
            for (var y = 0; y < g.length; y++) {
              for (var v = g[y], x = v.name, b = !1, T = u + 1; T < r.length; T++) {
                var S = r[T],
                  w = e[T] === Kb
                if (w && ((b = S.properties[v.name] != null), b)) break
              }
              !l[x] && !b && ((l[x] = !0), s.push(x))
            }
          }
        }
        return (n[i] = s), s
      }
      qa.getContextMeta = function (t) {
        for (var e = this, r = '', n, i = t._private.styleCxtKey || '', a = 0; a < e.length; a++) {
          var s = e[a],
            l = s.selector && s.selector.matches(t)
          l ? (r += Kb) : (r += gZe)
        }
        return (n = e.getPropertiesDiff(i, r)), (t._private.styleCxtKey = r), { key: r, diffPropNames: n, empty: n.length === 0 }
      }
      qa.getContextStyle = function (t) {
        var e = t.key,
          r = this,
          n = (this._private.contextStyles = this._private.contextStyles || {})
        if (n[e]) return n[e]
        for (var i = { _private: { key: e } }, a = 0; a < r.length; a++) {
          var s = r[a],
            l = e[a] === Kb
          if (l)
            for (var u = 0; u < s.properties.length; u++) {
              var h = s.properties[u]
              i[h.name] = h
            }
        }
        return (n[e] = i), i
      }
      qa.applyContextStyle = function (t, e, r) {
        for (var n = this, i = t.diffPropNames, a = {}, s = n.types, l = 0; l < i.length; l++) {
          var u = i[l],
            h = e[u],
            f = r.pstyle(u)
          if (!h)
            if (f) f.bypass ? (h = { name: u, deleteBypassed: !0 }) : (h = { name: u, delete: !0 })
            else continue
          if (f !== h) {
            if (h.mapped === s.fn && f != null && f.mapping != null && f.mapping.value === h.value) {
              var d = f.mapping,
                p = (d.fnValue = h.value(r))
              if (p === d.prevFnValue) continue
            }
            var m = (a[u] = { prev: f })
            n.applyParsedProperty(r, h), (m.next = r.pstyle(u)), m.next && m.next.bypass && (m.next = m.next.bypassed)
          }
        }
        return { diffProps: a }
      }
      qa.updateStyleHints = function (t) {
        var e = t._private,
          r = this,
          n = r.propertyGroupNames,
          i = r.propertyGroupKeys,
          a = o(function (ne, te, he) {
            return r.getPropertiesHash(ne, te, he)
          }, 'propHash'),
          s = e.styleKey
        if (t.removed()) return !1
        var l = e.group === 'nodes',
          u = t._private.style
        n = Object.keys(u)
        for (var h = 0; h < i.length; h++) {
          var f = i[h]
          e.styleKeys[f] = [X1, qb]
        }
        for (
          var d = o(function (ne, te) {
              return (e.styleKeys[te][0] = t4(ne, e.styleKeys[te][0]))
            }, 'updateGrKey1'),
            p = o(function (ne, te) {
              return (e.styleKeys[te][1] = r4(ne, e.styleKeys[te][1]))
            }, 'updateGrKey2'),
            m = o(function (ne, te) {
              d(ne, te), p(ne, te)
            }, 'updateGrKey'),
            g = o(function (ne, te) {
              for (var he = 0; he < ne.length; he++) {
                var le = ne.charCodeAt(he)
                d(le, te), p(le, te)
              }
            }, 'updateGrKeyWStr'),
            y = 2e9,
            v = o(function (ne) {
              return -128 < ne && ne < 128 && Math.floor(ne) !== ne ? y - ((ne * 1024) | 0) : ne
            }, 'cleanNum'),
            x = 0;
          x < n.length;
          x++
        ) {
          var b = n[x],
            T = u[b]
          if (T != null) {
            var S = this.properties[b],
              w = S.type,
              E = S.groupKey,
              _ = void 0
            S.hashOverride != null ? (_ = S.hashOverride(t, T)) : T.pfValue != null && (_ = T.pfValue)
            var C = S.enums == null ? T.value : null,
              D = _ != null,
              O = C != null,
              R = D || O,
              k = T.units
            if (w.number && R && !w.multiple) {
              var L = D ? _ : C
              m(v(L), E), !D && k != null && g(k, E)
            } else g(T.strValue, E)
          }
        }
        for (var A = [X1, qb], I = 0; I < i.length; I++) {
          var M = i[I],
            P = e.styleKeys[M]
          ;(A[0] = t4(P[0], A[0])), (A[1] = r4(P[1], A[1]))
        }
        e.styleKey = TYe(A[0], A[1])
        var B = e.styleKeys
        e.labelDimsKey = Lf(B.labelDimensions)
        var F = a(t, ['label'], B.labelDimensions)
        if (((e.labelKey = Lf(F)), (e.labelStyleKey = Lf(m6(B.commonLabel, F))), !l)) {
          var z = a(t, ['source-label'], B.labelDimensions)
          ;(e.sourceLabelKey = Lf(z)), (e.sourceLabelStyleKey = Lf(m6(B.commonLabel, z)))
          var $ = a(t, ['target-label'], B.labelDimensions)
          ;(e.targetLabelKey = Lf($)), (e.targetLabelStyleKey = Lf(m6(B.commonLabel, $)))
        }
        if (l) {
          var U = e.styleKeys,
            K = U.nodeBody,
            ee = U.nodeBorder,
            Y = U.nodeOutline,
            ce = U.backgroundImage,
            Z = U.compound,
            ue = U.pie,
            Q = [K, ee, Y, ce, Z, ue]
              .filter(function (j) {
                return j != null
              })
              .reduce(m6, [X1, qb])
          ;(e.nodeKey = Lf(Q)), (e.hasPie = ue != null && ue[0] !== X1 && ue[1] !== qb)
        }
        return s !== e.styleKey
      }
      qa.clearStyleHints = function (t) {
        var e = t._private
        ;(e.styleCxtKey = ''),
          (e.styleKeys = {}),
          (e.styleKey = null),
          (e.labelKey = null),
          (e.labelStyleKey = null),
          (e.sourceLabelKey = null),
          (e.sourceLabelStyleKey = null),
          (e.targetLabelKey = null),
          (e.targetLabelStyleKey = null),
          (e.nodeKey = null),
          (e.hasPie = null)
      }
      qa.applyParsedProperty = function (t, e) {
        var r = this,
          n = e,
          i = t._private.style,
          a,
          s = r.types,
          l = r.properties[n.name].type,
          u = n.bypass,
          h = i[n.name],
          f = h && h.bypass,
          d = t._private,
          p = 'mapping',
          m = o(function (K) {
            return K == null ? null : K.pfValue != null ? K.pfValue : K.value
          }, 'getVal'),
          g = o(function () {
            var K = m(h),
              ee = m(n)
            r.checkTriggers(t, n.name, K, ee)
          }, 'checkTriggers')
        if (
          (e.name === 'curve-style' &&
            t.isEdge() &&
            ((e.value !== 'bezier' && t.isLoop()) || (e.value === 'haystack' && (t.source().isParent() || t.target().isParent()))) &&
            (n = e = this.parse(e.name, 'bezier', u)),
          n.delete)
        )
          return (i[n.name] = void 0), g(), !0
        if (n.deleteBypassed) return h ? (h.bypass ? ((h.bypassed = void 0), g(), !0) : !1) : (g(), !0)
        if (n.deleteBypass) return h ? (h.bypass ? ((i[n.name] = h.bypassed), g(), !0) : !1) : (g(), !0)
        var y = o(function () {
          hn(
            'Do not assign mappings to elements without corresponding data (i.e. ele `' +
              t.id() +
              '` has no mapping for property `' +
              n.name +
              '` with data field `' +
              n.field +
              '`); try a `[' +
              n.field +
              ']` selector to limit scope to elements with `' +
              n.field +
              '` defined'
          )
        }, 'printMappingErr')
        switch (n.mapped) {
          case s.mapData: {
            for (var v = n.field.split('.'), x = d.data, b = 0; b < v.length && x; b++) {
              var T = v[b]
              x = x[T]
            }
            if (x == null) return y(), !1
            var S
            if (_t(x)) {
              var w = n.fieldMax - n.fieldMin
              w === 0 ? (S = 0) : (S = (x - n.fieldMin) / w)
            } else return hn('Do not use continuous mappers without specifying numeric data (i.e. `' + n.field + ': ' + x + '` for `' + t.id() + '` is non-numeric)'), !1
            if ((S < 0 ? (S = 0) : S > 1 && (S = 1), l.color)) {
              var E = n.valueMin[0],
                _ = n.valueMax[0],
                C = n.valueMin[1],
                D = n.valueMax[1],
                O = n.valueMin[2],
                R = n.valueMax[2],
                k = n.valueMin[3] == null ? 1 : n.valueMin[3],
                L = n.valueMax[3] == null ? 1 : n.valueMax[3],
                A = [Math.round(E + (_ - E) * S), Math.round(C + (D - C) * S), Math.round(O + (R - O) * S), Math.round(k + (L - k) * S)]
              a = { bypass: n.bypass, name: n.name, value: A, strValue: 'rgb(' + A[0] + ', ' + A[1] + ', ' + A[2] + ')' }
            } else if (l.number) {
              var I = n.valueMin + (n.valueMax - n.valueMin) * S
              a = this.parse(n.name, I, n.bypass, p)
            } else return !1
            if (!a) return y(), !1
            ;(a.mapping = n), (n = a)
            break
          }
          case s.data: {
            for (var M = n.field.split('.'), P = d.data, B = 0; B < M.length && P; B++) {
              var F = M[B]
              P = P[F]
            }
            if ((P != null && (a = this.parse(n.name, P, n.bypass, p)), !a)) return y(), !1
            ;(a.mapping = n), (n = a)
            break
          }
          case s.fn: {
            var z = n.value,
              $ = n.fnValue != null ? n.fnValue : z(t)
            if (((n.prevFnValue = $), $ == null)) return hn('Custom function mappers may not return null (i.e. `' + n.name + '` for ele `' + t.id() + '` is null)'), !1
            if (((a = this.parse(n.name, $, n.bypass, p)), !a))
              return hn('Custom function mappers may not return invalid values for the property type (i.e. `' + n.name + '` for ele `' + t.id() + '` is invalid)'), !1
            ;(a.mapping = Qc(n)), (n = a)
            break
          }
          case void 0:
            break
          default:
            return !1
        }
        return u ? (f ? (n.bypassed = h.bypassed) : (n.bypassed = h), (i[n.name] = n)) : f ? (h.bypassed = n) : (i[n.name] = n), g(), !0
      }
      qa.cleanElements = function (t, e) {
        for (var r = 0; r < t.length; r++) {
          var n = t[r]
          if ((this.clearStyleHints(n), n.dirtyCompoundBoundsCache(), n.dirtyBoundingBoxCache(), !e)) n._private.style = {}
          else
            for (var i = n._private.style, a = Object.keys(i), s = 0; s < a.length; s++) {
              var l = a[s],
                u = i[l]
              u != null && (u.bypass ? (u.bypassed = null) : (i[l] = null))
            }
        }
      }
      qa.update = function () {
        var t = this._private.cy,
          e = t.mutableElements()
        e.updateStyle()
      }
      qa.updateTransitions = function (t, e) {
        var r = this,
          n = t._private,
          i = t.pstyle('transition-property').value,
          a = t.pstyle('transition-duration').pfValue,
          s = t.pstyle('transition-delay').pfValue
        if (i.length > 0 && a > 0) {
          for (var l = {}, u = !1, h = 0; h < i.length; h++) {
            var f = i[h],
              d = t.pstyle(f),
              p = e[f]
            if (p) {
              var m = p.prev,
                g = m,
                y = p.next != null ? p.next : d,
                v = !1,
                x = void 0,
                b = 1e-6
              g &&
                (_t(g.pfValue) && _t(y.pfValue)
                  ? ((v = y.pfValue - g.pfValue), (x = g.pfValue + b * v))
                  : _t(g.value) && _t(y.value)
                    ? ((v = y.value - g.value), (x = g.value + b * v))
                    : En(g.value) && En(y.value) && ((v = g.value[0] !== y.value[0] || g.value[1] !== y.value[1] || g.value[2] !== y.value[2]), (x = g.strValue)),
                v && ((l[f] = y.strValue), this.applyBypass(t, f, x), (u = !0)))
            }
          }
          if (!u) return
          ;(n.transitioning = !0),
            new sy(function (T) {
              s > 0 ? t.delayAnimation(s).play().promise().then(T) : T()
            })
              .then(function () {
                return t
                  .animation({ style: l, duration: a, easing: t.pstyle('transition-timing-function').value, queue: !1 })
                  .play()
                  .promise()
              })
              .then(function () {
                r.removeBypasses(t, i), t.emitAndNotify('style'), (n.transitioning = !1)
              })
        } else n.transitioning && (this.removeBypasses(t, i), t.emitAndNotify('style'), (n.transitioning = !1))
      }
      qa.checkTrigger = function (t, e, r, n, i, a) {
        var s = this.properties[e],
          l = i(s)
        l != null && l(r, n) && a(s)
      }
      qa.checkZOrderTrigger = function (t, e, r, n) {
        var i = this
        this.checkTrigger(
          t,
          e,
          r,
          n,
          function (a) {
            return a.triggersZOrder
          },
          function () {
            i._private.cy.notify('zorder', t)
          }
        )
      }
      qa.checkBoundsTrigger = function (t, e, r, n) {
        this.checkTrigger(
          t,
          e,
          r,
          n,
          function (i) {
            return i.triggersBounds
          },
          function (i) {
            t.dirtyCompoundBoundsCache(),
              t.dirtyBoundingBoxCache(),
              i.triggersBoundsOfParallelBeziers &&
                e === 'curve-style' &&
                (r === 'bezier' || n === 'bezier') &&
                t.parallelEdges().forEach(function (a) {
                  a.dirtyBoundingBoxCache()
                }),
              i.triggersBoundsOfConnectedEdges &&
                e === 'display' &&
                (r === 'none' || n === 'none') &&
                t.connectedEdges().forEach(function (a) {
                  a.dirtyBoundingBoxCache()
                })
          }
        )
      }
      qa.checkTriggers = function (t, e, r, n) {
        t.dirtyStyleCache(), this.checkZOrderTrigger(t, e, r, n), this.checkBoundsTrigger(t, e, r, n)
      }
      y4 = {}
      y4.applyBypass = function (t, e, r, n) {
        var i = this,
          a = [],
          s = !0
        if (e === '*' || e === '**') {
          if (r !== void 0)
            for (var l = 0; l < i.properties.length; l++) {
              var u = i.properties[l],
                h = u.name,
                f = this.parse(h, r, !0)
              f && a.push(f)
            }
        } else if (Zt(e)) {
          var d = this.parse(e, r, !0)
          d && a.push(d)
        } else if (Ur(e)) {
          var p = e
          n = r
          for (var m = Object.keys(p), g = 0; g < m.length; g++) {
            var y = m[g],
              v = p[y]
            if ((v === void 0 && (v = p[K6(y)]), v !== void 0)) {
              var x = this.parse(y, v, !0)
              x && a.push(x)
            }
          }
        } else return !1
        if (a.length === 0) return !1
        for (var b = !1, T = 0; T < t.length; T++) {
          for (var S = t[T], w = {}, E = void 0, _ = 0; _ < a.length; _++) {
            var C = a[_]
            if (n) {
              var D = S.pstyle(C.name)
              E = w[C.name] = { prev: D }
            }
            ;(b = this.applyParsedProperty(S, Qc(C)) || b), n && (E.next = S.pstyle(C.name))
          }
          b && this.updateStyleHints(S), n && this.updateTransitions(S, w, s)
        }
        return b
      }
      y4.overrideBypass = function (t, e, r) {
        e = FB(e)
        for (var n = 0; n < t.length; n++) {
          var i = t[n],
            a = i._private.style[e],
            s = this.properties[e].type,
            l = s.color,
            u = s.mutiple,
            h = a ? (a.pfValue != null ? a.pfValue : a.value) : null
          !a || !a.bypass
            ? this.applyBypass(i, e, r)
            : ((a.value = r),
              a.pfValue != null && (a.pfValue = r),
              l ? (a.strValue = 'rgb(' + r.join(',') + ')') : u ? (a.strValue = r.join(' ')) : (a.strValue = '' + r),
              this.updateStyleHints(i)),
            this.checkTriggers(i, e, h, r)
        }
      }
      y4.removeAllBypasses = function (t, e) {
        return this.removeBypasses(t, this.propertyNames, e)
      }
      y4.removeBypasses = function (t, e, r) {
        for (var n = !0, i = 0; i < t.length; i++) {
          for (var a = t[i], s = {}, l = 0; l < e.length; l++) {
            var u = e[l],
              h = this.properties[u],
              f = a.pstyle(h.name)
            if (!(!f || !f.bypass)) {
              var d = '',
                p = this.parse(u, d, !0),
                m = (s[h.name] = { prev: f })
              this.applyParsedProperty(a, p), (m.next = a.pstyle(h.name))
            }
          }
          this.updateStyleHints(a), r && this.updateTransitions(a, s, n)
        }
      }
      ZB = {}
      ZB.getEmSizeInPixels = function () {
        var t = this.containerCss('font-size')
        return t != null ? parseFloat(t) : 1
      }
      ZB.containerCss = function (t) {
        var e = this._private.cy,
          r = e.container(),
          n = e.window()
        if (n && r && n.getComputedStyle) return n.getComputedStyle(r).getPropertyValue(t)
      }
      Jc = {}
      Jc.getRenderedStyle = function (t, e) {
        return e ? this.getStylePropertyValue(t, e, !0) : this.getRawStyle(t, !0)
      }
      Jc.getRawStyle = function (t, e) {
        var r = this
        if (((t = t[0]), t)) {
          for (var n = {}, i = 0; i < r.properties.length; i++) {
            var a = r.properties[i],
              s = r.getStylePropertyValue(t, a.name, e)
            s != null && ((n[a.name] = s), (n[K6(a.name)] = s))
          }
          return n
        }
      }
      Jc.getIndexedStyle = function (t, e, r, n) {
        var i = t.pstyle(e)[r][n]
        return i ?? t.cy().style().getDefaultProperty(e)[r][0]
      }
      Jc.getStylePropertyValue = function (t, e, r) {
        var n = this
        if (((t = t[0]), t)) {
          var i = n.properties[e]
          i.alias && (i = i.pointsTo)
          var a = i.type,
            s = t.pstyle(i.name)
          if (s) {
            var l = s.value,
              u = s.units,
              h = s.strValue
            if (r && a.number && l != null && _t(l)) {
              var f = t.cy().zoom(),
                d = o(function (v) {
                  return v * f
                }, 'getRenderedValue'),
                p = o(function (v, x) {
                  return d(v) + x
                }, 'getValueStringWithUnits'),
                m = En(l),
                g = m
                  ? u.every(function (y) {
                      return y != null
                    })
                  : u != null
              return g
                ? m
                  ? l
                      .map(function (y, v) {
                        return p(y, u[v])
                      })
                      .join(' ')
                  : p(l, u)
                : m
                  ? l
                      .map(function (y) {
                        return Zt(y) ? y : '' + d(y)
                      })
                      .join(' ')
                  : '' + d(l)
            } else if (h != null) return h
          }
          return null
        }
      }
      Jc.getAnimationStartStyle = function (t, e) {
        for (var r = {}, n = 0; n < e.length; n++) {
          var i = e[n],
            a = i.name,
            s = t.pstyle(a)
          s !== void 0 && (Ur(s) ? (s = this.parse(a, s.strValue)) : (s = this.parse(a, s))), s && (r[a] = s)
        }
        return r
      }
      Jc.getPropsList = function (t) {
        var e = this,
          r = [],
          n = t,
          i = e.properties
        if (n)
          for (var a = Object.keys(n), s = 0; s < a.length; s++) {
            var l = a[s],
              u = n[l],
              h = i[l] || i[FB(l)],
              f = this.parse(h.name, u)
            f && r.push(f)
          }
        return r
      }
      Jc.getNonDefaultPropertiesHash = function (t, e, r) {
        var n = r.slice(),
          i,
          a,
          s,
          l,
          u,
          h
        for (u = 0; u < e.length; u++)
          if (((i = e[u]), (a = t.pstyle(i, !1)), a != null))
            if (a.pfValue != null) (n[0] = t4(l, n[0])), (n[1] = r4(l, n[1]))
            else for (s = a.strValue, h = 0; h < s.length; h++) (l = s.charCodeAt(h)), (n[0] = t4(l, n[0])), (n[1] = r4(l, n[1]))
        return n
      }
      Jc.getPropertiesHash = Jc.getNonDefaultPropertiesHash
      lC = {}
      lC.appendFromJson = function (t) {
        for (var e = this, r = 0; r < t.length; r++) {
          var n = t[r],
            i = n.selector,
            a = n.style || n.css,
            s = Object.keys(a)
          e.selector(i)
          for (var l = 0; l < s.length; l++) {
            var u = s[l],
              h = a[u]
            e.css(u, h)
          }
        }
        return e
      }
      lC.fromJson = function (t) {
        var e = this
        return e.resetToDefault(), e.appendFromJson(t), e
      }
      lC.json = function () {
        for (var t = [], e = this.defaultLength; e < this.length; e++) {
          for (var r = this[e], n = r.selector, i = r.properties, a = {}, s = 0; s < i.length; s++) {
            var l = i[s]
            a[l.name] = l.strValue
          }
          t.push({ selector: n ? n.toString() : 'core', style: a })
        }
        return t
      }
      JB = {}
      JB.appendFromString = function (t) {
        var e = this,
          r = this,
          n = '' + t,
          i,
          a,
          s
        n = n.replace(/[/][*](\s|.)+?[*][/]/g, '')
        function l() {
          n.length > i.length ? (n = n.substr(i.length)) : (n = '')
        }
        o(l, 'removeSelAndBlockFromRemaining')
        function u() {
          a.length > s.length ? (a = a.substr(s.length)) : (a = '')
        }
        for (o(u, 'removePropAndValFromRem'); ; ) {
          var h = n.match(/^\s*$/)
          if (h) break
          var f = n.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/)
          if (!f) {
            hn('Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: ' + n)
            break
          }
          i = f[0]
          var d = f[1]
          if (d !== 'core') {
            var p = new $f(d)
            if (p.invalid) {
              hn('Skipping parsing of block: Invalid selector found in string stylesheet: ' + d), l()
              continue
            }
          }
          var m = f[2],
            g = !1
          a = m
          for (var y = []; ; ) {
            var v = a.match(/^\s*$/)
            if (v) break
            var x = a.match(/^\s*(.+?)\s*:\s*(.+?)(?:\s*;|\s*$)/)
            if (!x) {
              hn('Skipping parsing of block: Invalid formatting of style property and value definitions found in:' + m), (g = !0)
              break
            }
            s = x[0]
            var b = x[1],
              T = x[2],
              S = e.properties[b]
            if (!S) {
              hn('Skipping property: Invalid property name in: ' + s), u()
              continue
            }
            var w = r.parse(b, T)
            if (!w) {
              hn('Skipping property: Invalid property definition in: ' + s), u()
              continue
            }
            y.push({ name: b, val: T }), u()
          }
          if (g) {
            l()
            break
          }
          r.selector(d)
          for (var E = 0; E < y.length; E++) {
            var _ = y[E]
            r.css(_.name, _.val)
          }
          l()
        }
        return r
      }
      JB.fromString = function (t) {
        var e = this
        return e.resetToDefault(), e.appendFromString(t), e
      }
      ka = {}
      ;(function () {
        var t = Wi,
          e = Sqe,
          r = Aqe,
          n = _qe,
          i = Dqe,
          a = o(function (Q) {
            return '^' + Q + '\\s*\\(\\s*([\\w\\.]+)\\s*\\)$'
          }, 'data'),
          s = o(function (Q) {
            var j = t + '|\\w+|' + e + '|' + r + '|' + n + '|' + i
            return '^' + Q + '\\s*\\(([\\w\\.]+)\\s*\\,\\s*(' + t + ')\\s*\\,\\s*(' + t + ')\\s*,\\s*(' + j + ')\\s*\\,\\s*(' + j + ')\\)$'
          }, 'mapData'),
          l = [`^url\\s*\\(\\s*['"]?(.+?)['"]?\\s*\\)$`, '^(none)$', '^(.+)$']
        ka.types = {
          time: { number: !0, min: 0, units: 's|ms', implicitUnits: 'ms' },
          percent: { number: !0, min: 0, max: 100, units: '%', implicitUnits: '%' },
          percentages: { number: !0, min: 0, max: 100, units: '%', implicitUnits: '%', multiple: !0 },
          zeroOneNumber: { number: !0, min: 0, max: 1, unitless: !0 },
          zeroOneNumbers: { number: !0, min: 0, max: 1, unitless: !0, multiple: !0 },
          nOneOneNumber: { number: !0, min: -1, max: 1, unitless: !0 },
          nonNegativeInt: { number: !0, min: 0, integer: !0, unitless: !0 },
          nonNegativeNumber: { number: !0, min: 0, unitless: !0 },
          position: { enums: ['parent', 'origin'] },
          nodeSize: { number: !0, min: 0, enums: ['label'] },
          number: { number: !0, unitless: !0 },
          numbers: { number: !0, unitless: !0, multiple: !0 },
          positiveNumber: { number: !0, unitless: !0, min: 0, strictMin: !0 },
          size: { number: !0, min: 0 },
          bidirectionalSize: { number: !0 },
          bidirectionalSizeMaybePercent: { number: !0, allowPercent: !0 },
          bidirectionalSizes: { number: !0, multiple: !0 },
          sizeMaybePercent: { number: !0, min: 0, allowPercent: !0 },
          axisDirection: { enums: ['horizontal', 'leftward', 'rightward', 'vertical', 'upward', 'downward', 'auto'] },
          paddingRelativeTo: { enums: ['width', 'height', 'average', 'min', 'max'] },
          bgWH: { number: !0, min: 0, allowPercent: !0, enums: ['auto'], multiple: !0 },
          bgPos: { number: !0, allowPercent: !0, multiple: !0 },
          bgRelativeTo: { enums: ['inner', 'include-padding'], multiple: !0 },
          bgRepeat: { enums: ['repeat', 'repeat-x', 'repeat-y', 'no-repeat'], multiple: !0 },
          bgFit: { enums: ['none', 'contain', 'cover'], multiple: !0 },
          bgCrossOrigin: { enums: ['anonymous', 'use-credentials', 'null'], multiple: !0 },
          bgClip: { enums: ['none', 'node'], multiple: !0 },
          bgContainment: { enums: ['inside', 'over'], multiple: !0 },
          color: { color: !0 },
          colors: { color: !0, multiple: !0 },
          fill: { enums: ['solid', 'linear-gradient', 'radial-gradient'] },
          bool: { enums: ['yes', 'no'] },
          bools: { enums: ['yes', 'no'], multiple: !0 },
          lineStyle: { enums: ['solid', 'dotted', 'dashed'] },
          lineCap: { enums: ['butt', 'round', 'square'] },
          linePosition: { enums: ['center', 'inside', 'outside'] },
          lineJoin: { enums: ['round', 'bevel', 'miter'] },
          borderStyle: { enums: ['solid', 'dotted', 'dashed', 'double'] },
          curveStyle: { enums: ['bezier', 'unbundled-bezier', 'haystack', 'segments', 'straight', 'straight-triangle', 'taxi', 'round-segments', 'round-taxi'] },
          radiusType: { enums: ['arc-radius', 'influence-radius'], multiple: !0 },
          fontFamily: { regex: '^([\\w- \\"]+(?:\\s*,\\s*[\\w- \\"]+)*)$' },
          fontStyle: { enums: ['italic', 'normal', 'oblique'] },
          fontWeight: { enums: ['normal', 'bold', 'bolder', 'lighter', '100', '200', '300', '400', '500', '600', '800', '900', 100, 200, 300, 400, 500, 600, 700, 800, 900] },
          textDecoration: { enums: ['none', 'underline', 'overline', 'line-through'] },
          textTransform: { enums: ['none', 'uppercase', 'lowercase'] },
          textWrap: { enums: ['none', 'wrap', 'ellipsis'] },
          textOverflowWrap: { enums: ['whitespace', 'anywhere'] },
          textBackgroundShape: { enums: ['rectangle', 'roundrectangle', 'round-rectangle'] },
          nodeShape: {
            enums: [
              'rectangle',
              'roundrectangle',
              'round-rectangle',
              'cutrectangle',
              'cut-rectangle',
              'bottomroundrectangle',
              'bottom-round-rectangle',
              'barrel',
              'ellipse',
              'triangle',
              'round-triangle',
              'square',
              'pentagon',
              'round-pentagon',
              'hexagon',
              'round-hexagon',
              'concavehexagon',
              'concave-hexagon',
              'heptagon',
              'round-heptagon',
              'octagon',
              'round-octagon',
              'tag',
              'round-tag',
              'star',
              'diamond',
              'round-diamond',
              'vee',
              'rhomboid',
              'right-rhomboid',
              'polygon'
            ]
          },
          overlayShape: { enums: ['roundrectangle', 'round-rectangle', 'ellipse'] },
          cornerRadius: { number: !0, min: 0, units: 'px|em', implicitUnits: 'px', enums: ['auto'] },
          compoundIncludeLabels: { enums: ['include', 'exclude'] },
          arrowShape: {
            enums: ['tee', 'triangle', 'triangle-tee', 'circle-triangle', 'triangle-cross', 'triangle-backcurve', 'vee', 'square', 'circle', 'diamond', 'chevron', 'none']
          },
          arrowFill: { enums: ['filled', 'hollow'] },
          arrowWidth: { number: !0, units: '%|px|em', implicitUnits: 'px', enums: ['match-line'] },
          display: { enums: ['element', 'none'] },
          visibility: { enums: ['hidden', 'visible'] },
          zCompoundDepth: { enums: ['bottom', 'orphan', 'auto', 'top'] },
          zIndexCompare: { enums: ['auto', 'manual'] },
          valign: { enums: ['top', 'center', 'bottom'] },
          halign: { enums: ['left', 'center', 'right'] },
          justification: { enums: ['left', 'center', 'right', 'auto'] },
          text: { string: !0 },
          data: { mapping: !0, regex: a('data') },
          layoutData: { mapping: !0, regex: a('layoutData') },
          scratch: { mapping: !0, regex: a('scratch') },
          mapData: { mapping: !0, regex: s('mapData') },
          mapLayoutData: { mapping: !0, regex: s('mapLayoutData') },
          mapScratch: { mapping: !0, regex: s('mapScratch') },
          fn: { mapping: !0, fn: !0 },
          url: { regexes: l, singleRegexMatchValue: !0 },
          urls: { regexes: l, singleRegexMatchValue: !0, multiple: !0 },
          propList: { propList: !0 },
          angle: { number: !0, units: 'deg|rad', implicitUnits: 'rad' },
          textRotation: { number: !0, units: 'deg|rad', implicitUnits: 'rad', enums: ['none', 'autorotate'] },
          polygonPointList: { number: !0, multiple: !0, evenMultiple: !0, min: -1, max: 1, unitless: !0 },
          edgeDistances: { enums: ['intersection', 'node-position', 'endpoints'] },
          edgeEndpoint: {
            number: !0,
            multiple: !0,
            units: '%|px|em|deg|rad',
            implicitUnits: 'px',
            enums: ['inside-to-node', 'outside-to-node', 'outside-to-node-or-label', 'outside-to-line', 'outside-to-line-or-label'],
            singleEnum: !0,
            validate: o(function (Q, j) {
              switch (Q.length) {
                case 2:
                  return j[0] !== 'deg' && j[0] !== 'rad' && j[1] !== 'deg' && j[1] !== 'rad'
                case 1:
                  return Zt(Q[0]) || j[0] === 'deg' || j[0] === 'rad'
                default:
                  return !1
              }
            }, 'validate')
          },
          easing: {
            regexes: [
              '^(spring)\\s*\\(\\s*(' + t + ')\\s*,\\s*(' + t + ')\\s*\\)$',
              '^(cubic-bezier)\\s*\\(\\s*(' + t + ')\\s*,\\s*(' + t + ')\\s*,\\s*(' + t + ')\\s*,\\s*(' + t + ')\\s*\\)$'
            ],
            enums: [
              'linear',
              'ease',
              'ease-in',
              'ease-out',
              'ease-in-out',
              'ease-in-sine',
              'ease-out-sine',
              'ease-in-out-sine',
              'ease-in-quad',
              'ease-out-quad',
              'ease-in-out-quad',
              'ease-in-cubic',
              'ease-out-cubic',
              'ease-in-out-cubic',
              'ease-in-quart',
              'ease-out-quart',
              'ease-in-out-quart',
              'ease-in-quint',
              'ease-out-quint',
              'ease-in-out-quint',
              'ease-in-expo',
              'ease-out-expo',
              'ease-in-out-expo',
              'ease-in-circ',
              'ease-out-circ',
              'ease-in-out-circ'
            ]
          },
          gradientDirection: {
            enums: [
              'to-bottom',
              'to-top',
              'to-left',
              'to-right',
              'to-bottom-right',
              'to-bottom-left',
              'to-top-right',
              'to-top-left',
              'to-right-bottom',
              'to-left-bottom',
              'to-right-top',
              'to-left-top'
            ]
          },
          boundsExpansion: {
            number: !0,
            multiple: !0,
            min: 0,
            validate: o(function (Q) {
              var j = Q.length
              return j === 1 || j === 2 || j === 4
            }, 'validate')
          }
        }
        var u = {
            zeroNonZero: o(function (Q, j) {
              return ((Q == null || j == null) && Q !== j) || (Q == 0 && j != 0) ? !0 : Q != 0 && j == 0
            }, 'zeroNonZero'),
            any: o(function (Q, j) {
              return Q != j
            }, 'any'),
            emptyNonEmpty: o(function (Q, j) {
              var ne = Pf(Q),
                te = Pf(j)
              return (ne && !te) || (!ne && te)
            }, 'emptyNonEmpty')
          },
          h = ka.types,
          f = [
            { name: 'label', type: h.text, triggersBounds: u.any, triggersZOrder: u.emptyNonEmpty },
            { name: 'text-rotation', type: h.textRotation, triggersBounds: u.any },
            { name: 'text-margin-x', type: h.bidirectionalSize, triggersBounds: u.any },
            { name: 'text-margin-y', type: h.bidirectionalSize, triggersBounds: u.any }
          ],
          d = [
            { name: 'source-label', type: h.text, triggersBounds: u.any },
            { name: 'source-text-rotation', type: h.textRotation, triggersBounds: u.any },
            { name: 'source-text-margin-x', type: h.bidirectionalSize, triggersBounds: u.any },
            { name: 'source-text-margin-y', type: h.bidirectionalSize, triggersBounds: u.any },
            { name: 'source-text-offset', type: h.size, triggersBounds: u.any }
          ],
          p = [
            { name: 'target-label', type: h.text, triggersBounds: u.any },
            { name: 'target-text-rotation', type: h.textRotation, triggersBounds: u.any },
            { name: 'target-text-margin-x', type: h.bidirectionalSize, triggersBounds: u.any },
            { name: 'target-text-margin-y', type: h.bidirectionalSize, triggersBounds: u.any },
            { name: 'target-text-offset', type: h.size, triggersBounds: u.any }
          ],
          m = [
            { name: 'font-family', type: h.fontFamily, triggersBounds: u.any },
            { name: 'font-style', type: h.fontStyle, triggersBounds: u.any },
            { name: 'font-weight', type: h.fontWeight, triggersBounds: u.any },
            { name: 'font-size', type: h.size, triggersBounds: u.any },
            { name: 'text-transform', type: h.textTransform, triggersBounds: u.any },
            { name: 'text-wrap', type: h.textWrap, triggersBounds: u.any },
            { name: 'text-overflow-wrap', type: h.textOverflowWrap, triggersBounds: u.any },
            { name: 'text-max-width', type: h.size, triggersBounds: u.any },
            { name: 'text-outline-width', type: h.size, triggersBounds: u.any },
            { name: 'line-height', type: h.positiveNumber, triggersBounds: u.any }
          ],
          g = [
            { name: 'text-valign', type: h.valign, triggersBounds: u.any },
            { name: 'text-halign', type: h.halign, triggersBounds: u.any },
            { name: 'color', type: h.color },
            { name: 'text-outline-color', type: h.color },
            { name: 'text-outline-opacity', type: h.zeroOneNumber },
            { name: 'text-background-color', type: h.color },
            { name: 'text-background-opacity', type: h.zeroOneNumber },
            { name: 'text-background-padding', type: h.size, triggersBounds: u.any },
            { name: 'text-border-opacity', type: h.zeroOneNumber },
            { name: 'text-border-color', type: h.color },
            { name: 'text-border-width', type: h.size, triggersBounds: u.any },
            { name: 'text-border-style', type: h.borderStyle, triggersBounds: u.any },
            { name: 'text-background-shape', type: h.textBackgroundShape, triggersBounds: u.any },
            { name: 'text-justification', type: h.justification }
          ],
          y = [
            { name: 'events', type: h.bool, triggersZOrder: u.any },
            { name: 'text-events', type: h.bool, triggersZOrder: u.any }
          ],
          v = [
            { name: 'display', type: h.display, triggersZOrder: u.any, triggersBounds: u.any, triggersBoundsOfConnectedEdges: !0 },
            { name: 'visibility', type: h.visibility, triggersZOrder: u.any },
            { name: 'opacity', type: h.zeroOneNumber, triggersZOrder: u.zeroNonZero },
            { name: 'text-opacity', type: h.zeroOneNumber },
            { name: 'min-zoomed-font-size', type: h.size },
            { name: 'z-compound-depth', type: h.zCompoundDepth, triggersZOrder: u.any },
            { name: 'z-index-compare', type: h.zIndexCompare, triggersZOrder: u.any },
            { name: 'z-index', type: h.number, triggersZOrder: u.any }
          ],
          x = [
            { name: 'overlay-padding', type: h.size, triggersBounds: u.any },
            { name: 'overlay-color', type: h.color },
            { name: 'overlay-opacity', type: h.zeroOneNumber, triggersBounds: u.zeroNonZero },
            { name: 'overlay-shape', type: h.overlayShape, triggersBounds: u.any },
            { name: 'overlay-corner-radius', type: h.cornerRadius }
          ],
          b = [
            { name: 'underlay-padding', type: h.size, triggersBounds: u.any },
            { name: 'underlay-color', type: h.color },
            { name: 'underlay-opacity', type: h.zeroOneNumber, triggersBounds: u.zeroNonZero },
            { name: 'underlay-shape', type: h.overlayShape, triggersBounds: u.any },
            { name: 'underlay-corner-radius', type: h.cornerRadius }
          ],
          T = [
            { name: 'transition-property', type: h.propList },
            { name: 'transition-duration', type: h.time },
            { name: 'transition-delay', type: h.time },
            { name: 'transition-timing-function', type: h.easing }
          ],
          S = o(function (Q, j) {
            return j.value === 'label' ? -Q.poolIndex() : j.pfValue
          }, 'nodeSizeHashOverride'),
          w = [
            { name: 'height', type: h.nodeSize, triggersBounds: u.any, hashOverride: S },
            { name: 'width', type: h.nodeSize, triggersBounds: u.any, hashOverride: S },
            { name: 'shape', type: h.nodeShape, triggersBounds: u.any },
            { name: 'shape-polygon-points', type: h.polygonPointList, triggersBounds: u.any },
            { name: 'corner-radius', type: h.cornerRadius },
            { name: 'background-color', type: h.color },
            { name: 'background-fill', type: h.fill },
            { name: 'background-opacity', type: h.zeroOneNumber },
            { name: 'background-blacken', type: h.nOneOneNumber },
            { name: 'background-gradient-stop-colors', type: h.colors },
            { name: 'background-gradient-stop-positions', type: h.percentages },
            { name: 'background-gradient-direction', type: h.gradientDirection },
            { name: 'padding', type: h.sizeMaybePercent, triggersBounds: u.any },
            { name: 'padding-relative-to', type: h.paddingRelativeTo, triggersBounds: u.any },
            { name: 'bounds-expansion', type: h.boundsExpansion, triggersBounds: u.any }
          ],
          E = [
            { name: 'border-color', type: h.color },
            { name: 'border-opacity', type: h.zeroOneNumber },
            { name: 'border-width', type: h.size, triggersBounds: u.any },
            { name: 'border-style', type: h.borderStyle },
            { name: 'border-cap', type: h.lineCap },
            { name: 'border-join', type: h.lineJoin },
            { name: 'border-dash-pattern', type: h.numbers },
            { name: 'border-dash-offset', type: h.number },
            { name: 'border-position', type: h.linePosition }
          ],
          _ = [
            { name: 'outline-color', type: h.color },
            { name: 'outline-opacity', type: h.zeroOneNumber },
            { name: 'outline-width', type: h.size, triggersBounds: u.any },
            { name: 'outline-style', type: h.borderStyle },
            { name: 'outline-offset', type: h.size, triggersBounds: u.any }
          ],
          C = [
            { name: 'background-image', type: h.urls },
            { name: 'background-image-crossorigin', type: h.bgCrossOrigin },
            { name: 'background-image-opacity', type: h.zeroOneNumbers },
            { name: 'background-image-containment', type: h.bgContainment },
            { name: 'background-image-smoothing', type: h.bools },
            { name: 'background-position-x', type: h.bgPos },
            { name: 'background-position-y', type: h.bgPos },
            { name: 'background-width-relative-to', type: h.bgRelativeTo },
            { name: 'background-height-relative-to', type: h.bgRelativeTo },
            { name: 'background-repeat', type: h.bgRepeat },
            { name: 'background-fit', type: h.bgFit },
            { name: 'background-clip', type: h.bgClip },
            { name: 'background-width', type: h.bgWH },
            { name: 'background-height', type: h.bgWH },
            { name: 'background-offset-x', type: h.bgPos },
            { name: 'background-offset-y', type: h.bgPos }
          ],
          D = [
            { name: 'position', type: h.position, triggersBounds: u.any },
            { name: 'compound-sizing-wrt-labels', type: h.compoundIncludeLabels, triggersBounds: u.any },
            { name: 'min-width', type: h.size, triggersBounds: u.any },
            { name: 'min-width-bias-left', type: h.sizeMaybePercent, triggersBounds: u.any },
            { name: 'min-width-bias-right', type: h.sizeMaybePercent, triggersBounds: u.any },
            { name: 'min-height', type: h.size, triggersBounds: u.any },
            { name: 'min-height-bias-top', type: h.sizeMaybePercent, triggersBounds: u.any },
            { name: 'min-height-bias-bottom', type: h.sizeMaybePercent, triggersBounds: u.any }
          ],
          O = [
            { name: 'line-style', type: h.lineStyle },
            { name: 'line-color', type: h.color },
            { name: 'line-fill', type: h.fill },
            { name: 'line-cap', type: h.lineCap },
            { name: 'line-opacity', type: h.zeroOneNumber },
            { name: 'line-dash-pattern', type: h.numbers },
            { name: 'line-dash-offset', type: h.number },
            { name: 'line-outline-width', type: h.size },
            { name: 'line-outline-color', type: h.color },
            { name: 'line-gradient-stop-colors', type: h.colors },
            { name: 'line-gradient-stop-positions', type: h.percentages },
            { name: 'curve-style', type: h.curveStyle, triggersBounds: u.any, triggersBoundsOfParallelBeziers: !0 },
            { name: 'haystack-radius', type: h.zeroOneNumber, triggersBounds: u.any },
            { name: 'source-endpoint', type: h.edgeEndpoint, triggersBounds: u.any },
            { name: 'target-endpoint', type: h.edgeEndpoint, triggersBounds: u.any },
            { name: 'control-point-step-size', type: h.size, triggersBounds: u.any },
            { name: 'control-point-distances', type: h.bidirectionalSizes, triggersBounds: u.any },
            { name: 'control-point-weights', type: h.numbers, triggersBounds: u.any },
            { name: 'segment-distances', type: h.bidirectionalSizes, triggersBounds: u.any },
            { name: 'segment-weights', type: h.numbers, triggersBounds: u.any },
            { name: 'segment-radii', type: h.numbers, triggersBounds: u.any },
            { name: 'radius-type', type: h.radiusType, triggersBounds: u.any },
            { name: 'taxi-turn', type: h.bidirectionalSizeMaybePercent, triggersBounds: u.any },
            { name: 'taxi-turn-min-distance', type: h.size, triggersBounds: u.any },
            { name: 'taxi-direction', type: h.axisDirection, triggersBounds: u.any },
            { name: 'taxi-radius', type: h.number, triggersBounds: u.any },
            { name: 'edge-distances', type: h.edgeDistances, triggersBounds: u.any },
            { name: 'arrow-scale', type: h.positiveNumber, triggersBounds: u.any },
            { name: 'loop-direction', type: h.angle, triggersBounds: u.any },
            { name: 'loop-sweep', type: h.angle, triggersBounds: u.any },
            { name: 'source-distance-from-node', type: h.size, triggersBounds: u.any },
            { name: 'target-distance-from-node', type: h.size, triggersBounds: u.any }
          ],
          R = [
            { name: 'ghost', type: h.bool, triggersBounds: u.any },
            { name: 'ghost-offset-x', type: h.bidirectionalSize, triggersBounds: u.any },
            { name: 'ghost-offset-y', type: h.bidirectionalSize, triggersBounds: u.any },
            { name: 'ghost-opacity', type: h.zeroOneNumber }
          ],
          k = [
            { name: 'selection-box-color', type: h.color },
            { name: 'selection-box-opacity', type: h.zeroOneNumber },
            { name: 'selection-box-border-color', type: h.color },
            { name: 'selection-box-border-width', type: h.size },
            { name: 'active-bg-color', type: h.color },
            { name: 'active-bg-opacity', type: h.zeroOneNumber },
            { name: 'active-bg-size', type: h.size },
            { name: 'outside-texture-bg-color', type: h.color },
            { name: 'outside-texture-bg-opacity', type: h.zeroOneNumber }
          ],
          L = []
        ;(ka.pieBackgroundN = 16), L.push({ name: 'pie-size', type: h.sizeMaybePercent })
        for (var A = 1; A <= ka.pieBackgroundN; A++)
          L.push({ name: 'pie-' + A + '-background-color', type: h.color }),
            L.push({ name: 'pie-' + A + '-background-size', type: h.percent }),
            L.push({ name: 'pie-' + A + '-background-opacity', type: h.zeroOneNumber })
        var I = [],
          M = (ka.arrowPrefixes = ['source', 'mid-source', 'target', 'mid-target'])
        ;[
          { name: 'arrow-shape', type: h.arrowShape, triggersBounds: u.any },
          { name: 'arrow-color', type: h.color },
          { name: 'arrow-fill', type: h.arrowFill },
          { name: 'arrow-width', type: h.arrowWidth }
        ].forEach(function (ue) {
          M.forEach(function (Q) {
            var j = Q + '-' + ue.name,
              ne = ue.type,
              te = ue.triggersBounds
            I.push({ name: j, type: ne, triggersBounds: te })
          })
        }, {})
        var P = (ka.properties = [].concat(y, T, v, x, b, R, g, m, f, d, p, w, E, _, C, L, D, O, I, k)),
          B = (ka.propertyGroups = {
            behavior: y,
            transition: T,
            visibility: v,
            overlay: x,
            underlay: b,
            ghost: R,
            commonLabel: g,
            labelDimensions: m,
            mainLabel: f,
            sourceLabel: d,
            targetLabel: p,
            nodeBody: w,
            nodeBorder: E,
            nodeOutline: _,
            backgroundImage: C,
            pie: L,
            compound: D,
            edgeLine: O,
            edgeArrow: I,
            core: k
          }),
          F = (ka.propertyGroupNames = {}),
          z = (ka.propertyGroupKeys = Object.keys(B))
        z.forEach(function (ue) {
          ;(F[ue] = B[ue].map(function (Q) {
            return Q.name
          })),
            B[ue].forEach(function (Q) {
              return (Q.groupKey = ue)
            })
        })
        var $ = (ka.aliases = [
          { name: 'content', pointsTo: 'label' },
          { name: 'control-point-distance', pointsTo: 'control-point-distances' },
          { name: 'control-point-weight', pointsTo: 'control-point-weights' },
          { name: 'segment-distance', pointsTo: 'segment-distances' },
          { name: 'segment-weight', pointsTo: 'segment-weights' },
          { name: 'segment-radius', pointsTo: 'segment-radii' },
          { name: 'edge-text-rotation', pointsTo: 'text-rotation' },
          { name: 'padding-left', pointsTo: 'padding' },
          { name: 'padding-right', pointsTo: 'padding' },
          { name: 'padding-top', pointsTo: 'padding' },
          { name: 'padding-bottom', pointsTo: 'padding' }
        ])
        ka.propertyNames = P.map(function (ue) {
          return ue.name
        })
        for (var U = 0; U < P.length; U++) {
          var K = P[U]
          P[K.name] = K
        }
        for (var ee = 0; ee < $.length; ee++) {
          var Y = $[ee],
            ce = P[Y.pointsTo],
            Z = { name: Y.name, alias: !0, pointsTo: ce }
          P.push(Z), (P[Y.name] = Z)
        }
      })()
      ka.getDefaultProperty = function (t) {
        return this.getDefaultProperties()[t]
      }
      ka.getDefaultProperties = function () {
        var t = this._private
        if (t.defaultProperties != null) return t.defaultProperties
        for (
          var e = ir(
              {
                'selection-box-color': '#ddd',
                'selection-box-opacity': 0.65,
                'selection-box-border-color': '#aaa',
                'selection-box-border-width': 1,
                'active-bg-color': 'black',
                'active-bg-opacity': 0.15,
                'active-bg-size': 30,
                'outside-texture-bg-color': '#000',
                'outside-texture-bg-opacity': 0.125,
                events: 'yes',
                'text-events': 'no',
                'text-valign': 'top',
                'text-halign': 'center',
                'text-justification': 'auto',
                'line-height': 1,
                color: '#000',
                'text-outline-color': '#000',
                'text-outline-width': 0,
                'text-outline-opacity': 1,
                'text-opacity': 1,
                'text-decoration': 'none',
                'text-transform': 'none',
                'text-wrap': 'none',
                'text-overflow-wrap': 'whitespace',
                'text-max-width': 9999,
                'text-background-color': '#000',
                'text-background-opacity': 0,
                'text-background-shape': 'rectangle',
                'text-background-padding': 0,
                'text-border-opacity': 0,
                'text-border-width': 0,
                'text-border-style': 'solid',
                'text-border-color': '#000',
                'font-family': 'Helvetica Neue, Helvetica, sans-serif',
                'font-style': 'normal',
                'font-weight': 'normal',
                'font-size': 16,
                'min-zoomed-font-size': 0,
                'text-rotation': 'none',
                'source-text-rotation': 'none',
                'target-text-rotation': 'none',
                visibility: 'visible',
                display: 'element',
                opacity: 1,
                'z-compound-depth': 'auto',
                'z-index-compare': 'auto',
                'z-index': 0,
                label: '',
                'text-margin-x': 0,
                'text-margin-y': 0,
                'source-label': '',
                'source-text-offset': 0,
                'source-text-margin-x': 0,
                'source-text-margin-y': 0,
                'target-label': '',
                'target-text-offset': 0,
                'target-text-margin-x': 0,
                'target-text-margin-y': 0,
                'overlay-opacity': 0,
                'overlay-color': '#000',
                'overlay-padding': 10,
                'overlay-shape': 'round-rectangle',
                'overlay-corner-radius': 'auto',
                'underlay-opacity': 0,
                'underlay-color': '#000',
                'underlay-padding': 10,
                'underlay-shape': 'round-rectangle',
                'underlay-corner-radius': 'auto',
                'transition-property': 'none',
                'transition-duration': 0,
                'transition-delay': 0,
                'transition-timing-function': 'linear',
                'background-blacken': 0,
                'background-color': '#999',
                'background-fill': 'solid',
                'background-opacity': 1,
                'background-image': 'none',
                'background-image-crossorigin': 'anonymous',
                'background-image-opacity': 1,
                'background-image-containment': 'inside',
                'background-image-smoothing': 'yes',
                'background-position-x': '50%',
                'background-position-y': '50%',
                'background-offset-x': 0,
                'background-offset-y': 0,
                'background-width-relative-to': 'include-padding',
                'background-height-relative-to': 'include-padding',
                'background-repeat': 'no-repeat',
                'background-fit': 'none',
                'background-clip': 'node',
                'background-width': 'auto',
                'background-height': 'auto',
                'border-color': '#000',
                'border-opacity': 1,
                'border-width': 0,
                'border-style': 'solid',
                'border-dash-pattern': [4, 2],
                'border-dash-offset': 0,
                'border-cap': 'butt',
                'border-join': 'miter',
                'border-position': 'center',
                'outline-color': '#999',
                'outline-opacity': 1,
                'outline-width': 0,
                'outline-offset': 0,
                'outline-style': 'solid',
                height: 30,
                width: 30,
                shape: 'ellipse',
                'shape-polygon-points': '-1, -1,   1, -1,   1, 1,   -1, 1',
                'corner-radius': 'auto',
                'bounds-expansion': 0,
                'background-gradient-direction': 'to-bottom',
                'background-gradient-stop-colors': '#999',
                'background-gradient-stop-positions': '0%',
                ghost: 'no',
                'ghost-offset-y': 0,
                'ghost-offset-x': 0,
                'ghost-opacity': 0,
                padding: 0,
                'padding-relative-to': 'width',
                position: 'origin',
                'compound-sizing-wrt-labels': 'include',
                'min-width': 0,
                'min-width-bias-left': 0,
                'min-width-bias-right': 0,
                'min-height': 0,
                'min-height-bias-top': 0,
                'min-height-bias-bottom': 0
              },
              { 'pie-size': '100%' },
              [
                { name: 'pie-{{i}}-background-color', value: 'black' },
                { name: 'pie-{{i}}-background-size', value: '0%' },
                { name: 'pie-{{i}}-background-opacity', value: 1 }
              ].reduce(function (u, h) {
                for (var f = 1; f <= ka.pieBackgroundN; f++) {
                  var d = h.name.replace('{{i}}', f),
                    p = h.value
                  u[d] = p
                }
                return u
              }, {}),
              {
                'line-style': 'solid',
                'line-color': '#999',
                'line-fill': 'solid',
                'line-cap': 'butt',
                'line-opacity': 1,
                'line-outline-width': 0,
                'line-outline-color': '#000',
                'line-gradient-stop-colors': '#999',
                'line-gradient-stop-positions': '0%',
                'control-point-step-size': 40,
                'control-point-weights': 0.5,
                'segment-weights': 0.5,
                'segment-distances': 20,
                'segment-radii': 15,
                'radius-type': 'arc-radius',
                'taxi-turn': '50%',
                'taxi-radius': 15,
                'taxi-turn-min-distance': 10,
                'taxi-direction': 'auto',
                'edge-distances': 'intersection',
                'curve-style': 'haystack',
                'haystack-radius': 0,
                'arrow-scale': 1,
                'loop-direction': '-45deg',
                'loop-sweep': '-90deg',
                'source-distance-from-node': 0,
                'target-distance-from-node': 0,
                'source-endpoint': 'outside-to-node',
                'target-endpoint': 'outside-to-node',
                'line-dash-pattern': [6, 3],
                'line-dash-offset': 0
              },
              [
                { name: 'arrow-shape', value: 'none' },
                { name: 'arrow-color', value: '#999' },
                { name: 'arrow-fill', value: 'filled' },
                { name: 'arrow-width', value: 1 }
              ].reduce(function (u, h) {
                return (
                  ka.arrowPrefixes.forEach(function (f) {
                    var d = f + '-' + h.name,
                      p = h.value
                    u[d] = p
                  }),
                  u
                )
              }, {})
            ),
            r = {},
            n = 0;
          n < this.properties.length;
          n++
        ) {
          var i = this.properties[n]
          if (!i.pointsTo) {
            var a = i.name,
              s = e[a],
              l = this.parse(a, s)
            r[a] = l
          }
        }
        return (t.defaultProperties = r), t.defaultProperties
      }
      ka.addDefaultStylesheet = function () {
        this.selector(':parent')
          .css({ shape: 'rectangle', padding: 10, 'background-color': '#eee', 'border-color': '#ccc', 'border-width': 1 })
          .selector('edge')
          .css({ width: 3 })
          .selector(':loop')
          .css({ 'curve-style': 'bezier' })
          .selector('edge:compound')
          .css({ 'curve-style': 'bezier', 'source-endpoint': 'outside-to-line', 'target-endpoint': 'outside-to-line' })
          .selector(':selected')
          .css({
            'background-color': '#0169D9',
            'line-color': '#0169D9',
            'source-arrow-color': '#0169D9',
            'target-arrow-color': '#0169D9',
            'mid-source-arrow-color': '#0169D9',
            'mid-target-arrow-color': '#0169D9'
          })
          .selector(':parent:selected')
          .css({ 'background-color': '#CCE1F9', 'border-color': '#aec8e5' })
          .selector(':active')
          .css({ 'overlay-color': 'black', 'overlay-padding': 10, 'overlay-opacity': 0.25 }),
          (this.defaultLength = this.length)
      }
      cC = {}
      cC.parse = function (t, e, r, n) {
        var i = this
        if (li(e)) return i.parseImplWarn(t, e, r, n)
        var a = n === 'mapping' || n === !0 || n === !1 || n == null ? 'dontcare' : n,
          s = r ? 't' : 'f',
          l = '' + e,
          u = xge(t, l, s, a),
          h = (i.propCache = i.propCache || []),
          f
        return (f = h[u]) || (f = h[u] = i.parseImplWarn(t, e, r, n)), (r || n === 'mapping') && ((f = Qc(f)), f && (f.value = Qc(f.value))), f
      }
      cC.parseImplWarn = function (t, e, r, n) {
        var i = this.parseImpl(t, e, r, n)
        return (
          !i && e != null && hn('The style property `'.concat(t, ': ').concat(e, '` is invalid')),
          i && (i.name === 'width' || i.name === 'height') && e === 'label' && hn('The style value of `label` is deprecated for `' + i.name + '`'),
          i
        )
      }
      cC.parseImpl = function (t, e, r, n) {
        var i = this
        t = FB(t)
        var a = i.properties[t],
          s = e,
          l = i.types
        if (!a || e === void 0) return null
        a.alias && ((a = a.pointsTo), (t = a.name))
        var u = Zt(e)
        u && (e = e.trim())
        var h = a.type
        if (!h) return null
        if (r && (e === '' || e === null)) return { name: t, value: e, bypass: !0, deleteBypass: !0 }
        if (li(e)) return { name: t, value: e, strValue: 'fn', mapped: l.fn, bypass: r }
        var f, d
        if (!(!u || n || e.length < 7 || e[1] !== 'a')) {
          if (e.length >= 7 && e[0] === 'd' && (f = new RegExp(l.data.regex).exec(e))) {
            if (r) return !1
            var p = l.data
            return { name: t, value: f, strValue: '' + e, mapped: p, field: f[1], bypass: r }
          } else if (e.length >= 10 && e[0] === 'm' && (d = new RegExp(l.mapData.regex).exec(e))) {
            if (r || h.multiple) return !1
            var m = l.mapData
            if (!(h.color || h.number)) return !1
            var g = this.parse(t, d[4])
            if (!g || g.mapped) return !1
            var y = this.parse(t, d[5])
            if (!y || y.mapped) return !1
            if (g.pfValue === y.pfValue || g.strValue === y.strValue)
              return hn('`' + t + ': ' + e + '` is not a valid mapper because the output range is zero; converting to `' + t + ': ' + g.strValue + '`'), this.parse(t, g.strValue)
            if (h.color) {
              var v = g.value,
                x = y.value,
                b = v[0] === x[0] && v[1] === x[1] && v[2] === x[2] && (v[3] === x[3] || ((v[3] == null || v[3] === 1) && (x[3] == null || x[3] === 1)))
              if (b) return !1
            }
            return {
              name: t,
              value: d,
              strValue: '' + e,
              mapped: m,
              field: d[1],
              fieldMin: parseFloat(d[2]),
              fieldMax: parseFloat(d[3]),
              valueMin: g.value,
              valueMax: y.value,
              bypass: r
            }
          }
        }
        if (h.multiple && n !== 'multiple') {
          var T
          if ((u ? (T = e.split(/\s+/)) : En(e) ? (T = e) : (T = [e]), h.evenMultiple && T.length % 2 !== 0)) return null
          for (var S = [], w = [], E = [], _ = '', C = !1, D = 0; D < T.length; D++) {
            var O = i.parse(t, T[D], r, 'multiple')
            ;(C = C || Zt(O.value)), S.push(O.value), E.push(O.pfValue != null ? O.pfValue : O.value), w.push(O.units), (_ += (D > 0 ? ' ' : '') + O.strValue)
          }
          return h.validate && !h.validate(S, w)
            ? null
            : h.singleEnum && C
              ? S.length === 1 && Zt(S[0])
                ? { name: t, value: S[0], strValue: S[0], bypass: r }
                : null
              : { name: t, value: S, pfValue: E, strValue: _, bypass: r, units: w }
        }
        var R = o(function () {
          for (var Q = 0; Q < h.enums.length; Q++) {
            var j = h.enums[Q]
            if (j === e) return { name: t, value: e, strValue: '' + e, bypass: r }
          }
          return null
        }, 'checkEnums')
        if (h.number) {
          var k,
            L = 'px'
          if ((h.units && (k = h.units), h.implicitUnits && (L = h.implicitUnits), !h.unitless))
            if (u) {
              var A = 'px|em' + (h.allowPercent ? '|\\%' : '')
              k && (A = k)
              var I = e.match('^(' + Wi + ')(' + A + ')?$')
              I && ((e = I[1]), (k = I[2] || L))
            } else (!k || h.implicitUnits) && (k = L)
          if (((e = parseFloat(e)), isNaN(e) && h.enums === void 0)) return null
          if (isNaN(e) && h.enums !== void 0) return (e = s), R()
          if ((h.integer && !vqe(e)) || (h.min !== void 0 && (e < h.min || (h.strictMin && e === h.min))) || (h.max !== void 0 && (e > h.max || (h.strictMax && e === h.max))))
            return null
          var M = { name: t, value: e, strValue: '' + e + (k || ''), units: k, bypass: r }
          return (
            h.unitless || (k !== 'px' && k !== 'em') ? (M.pfValue = e) : (M.pfValue = k === 'px' || !k ? e : this.getEmSizeInPixels() * e),
            (k === 'ms' || k === 's') && (M.pfValue = k === 'ms' ? e : 1e3 * e),
            (k === 'deg' || k === 'rad') && (M.pfValue = k === 'rad' ? e : QYe(e)),
            k === '%' && (M.pfValue = e / 100),
            M
          )
        } else if (h.propList) {
          var P = [],
            B = '' + e
          if (B !== 'none') {
            for (var F = B.split(/\s*,\s*|\s+/), z = 0; z < F.length; z++) {
              var $ = F[z].trim()
              i.properties[$] ? P.push($) : hn('`' + $ + '` is not a valid property name')
            }
            if (P.length === 0) return null
          }
          return { name: t, value: P, strValue: P.length === 0 ? 'none' : P.join(' '), bypass: r }
        } else if (h.color) {
          var U = hge(e)
          return U ? { name: t, value: U, pfValue: U, strValue: 'rgb(' + U[0] + ',' + U[1] + ',' + U[2] + ')', bypass: r } : null
        } else if (h.regex || h.regexes) {
          if (h.enums) {
            var K = R()
            if (K) return K
          }
          for (var ee = h.regexes ? h.regexes : [h.regex], Y = 0; Y < ee.length; Y++) {
            var ce = new RegExp(ee[Y]),
              Z = ce.exec(e)
            if (Z) return { name: t, value: h.singleRegexMatchValue ? Z[1] : Z, strValue: '' + e, bypass: r }
          }
          return null
        } else return h.string ? { name: t, value: '' + e, strValue: '' + e, bypass: r } : h.enums ? R() : null
      }
      ;(Ua = o(function t(e) {
        if (!(this instanceof t)) return new t(e)
        if (!BB(e)) {
          oi('A style must have a core reference')
          return
        }
        ;(this._private = { cy: e, coreStyle: {} }), (this.length = 0), this.resetToDefault()
      }, 'Style')),
        (Wa = Ua.prototype)
      Wa.instanceString = function () {
        return 'style'
      }
      Wa.clear = function () {
        for (var t = this._private, e = t.cy, r = e.elements(), n = 0; n < this.length; n++) this[n] = void 0
        return (
          (this.length = 0),
          (t.contextStyles = {}),
          (t.propDiffs = {}),
          this.cleanElements(r, !0),
          r.forEach(function (i) {
            var a = i[0]._private
            ;(a.styleDirty = !0), (a.appliedInitStyle = !1)
          }),
          this
        )
      }
      Wa.resetToDefault = function () {
        return this.clear(), this.addDefaultStylesheet(), this
      }
      Wa.core = function (t) {
        return this._private.coreStyle[t] || this.getDefaultProperty(t)
      }
      Wa.selector = function (t) {
        var e = t === 'core' ? null : new $f(t),
          r = this.length++
        return (this[r] = { selector: e, properties: [], mappedProperties: [], index: r }), this
      }
      Wa.css = function () {
        var t = this,
          e = arguments
        if (e.length === 1)
          for (var r = e[0], n = 0; n < t.properties.length; n++) {
            var i = t.properties[n],
              a = r[i.name]
            a === void 0 && (a = r[K6(i.name)]), a !== void 0 && this.cssRule(i.name, a)
          }
        else e.length === 2 && this.cssRule(e[0], e[1])
        return this
      }
      Wa.style = Wa.css
      Wa.cssRule = function (t, e) {
        var r = this.parse(t, e)
        if (r) {
          var n = this.length - 1
          this[n].properties.push(r),
            (this[n].properties[r.name] = r),
            r.name.match(/pie-(\d+)-background-size/) && r.value && (this._private.hasPie = !0),
            r.mapped && this[n].mappedProperties.push(r)
          var i = !this[n].selector
          i && (this._private.coreStyle[r.name] = r)
        }
        return this
      }
      Wa.append = function (t) {
        return lge(t) ? t.appendToStyle(this) : En(t) ? this.appendFromJson(t) : Zt(t) && this.appendFromString(t), this
      }
      Ua.fromJson = function (t, e) {
        var r = new Ua(t)
        return r.fromJson(e), r
      }
      Ua.fromString = function (t, e) {
        return new Ua(t).fromString(e)
      }
      ;[qa, y4, ZB, Jc, lC, JB, ka, cC].forEach(function (t) {
        ir(Wa, t)
      })
      Ua.types = Wa.types
      Ua.properties = Wa.properties
      Ua.propertyGroups = Wa.propertyGroups
      Ua.propertyGroupNames = Wa.propertyGroupNames
      Ua.propertyGroupKeys = Wa.propertyGroupKeys
      ;(yZe = {
        style: o(function (e) {
          if (e) {
            var r = this.setStyle(e)
            r.update()
          }
          return this._private.style
        }, 'style'),
        setStyle: o(function (e) {
          var r = this._private
          return lge(e) ? (r.style = e.generateStyle(this)) : En(e) ? (r.style = Ua.fromJson(this, e)) : Zt(e) ? (r.style = Ua.fromString(this, e)) : (r.style = Ua(this)), r.style
        }, 'setStyle'),
        updateStyle: o(function () {
          this.mutableElements().updateStyle()
        }, 'updateStyle')
      }),
        (vZe = 'single'),
        (e0 = {
          autolock: o(function (e) {
            if (e !== void 0) this._private.autolock = !!e
            else return this._private.autolock
            return this
          }, 'autolock'),
          autoungrabify: o(function (e) {
            if (e !== void 0) this._private.autoungrabify = !!e
            else return this._private.autoungrabify
            return this
          }, 'autoungrabify'),
          autounselectify: o(function (e) {
            if (e !== void 0) this._private.autounselectify = !!e
            else return this._private.autounselectify
            return this
          }, 'autounselectify'),
          selectionType: o(function (e) {
            var r = this._private
            if ((r.selectionType == null && (r.selectionType = vZe), e !== void 0)) (e === 'additive' || e === 'single') && (r.selectionType = e)
            else return r.selectionType
            return this
          }, 'selectionType'),
          panningEnabled: o(function (e) {
            if (e !== void 0) this._private.panningEnabled = !!e
            else return this._private.panningEnabled
            return this
          }, 'panningEnabled'),
          userPanningEnabled: o(function (e) {
            if (e !== void 0) this._private.userPanningEnabled = !!e
            else return this._private.userPanningEnabled
            return this
          }, 'userPanningEnabled'),
          zoomingEnabled: o(function (e) {
            if (e !== void 0) this._private.zoomingEnabled = !!e
            else return this._private.zoomingEnabled
            return this
          }, 'zoomingEnabled'),
          userZoomingEnabled: o(function (e) {
            if (e !== void 0) this._private.userZoomingEnabled = !!e
            else return this._private.userZoomingEnabled
            return this
          }, 'userZoomingEnabled'),
          boxSelectionEnabled: o(function (e) {
            if (e !== void 0) this._private.boxSelectionEnabled = !!e
            else return this._private.boxSelectionEnabled
            return this
          }, 'boxSelectionEnabled'),
          pan: o(function () {
            var e = arguments,
              r = this._private.pan,
              n,
              i,
              a,
              s,
              l
            switch (e.length) {
              case 0:
                return r
              case 1:
                if (Zt(e[0])) return (n = e[0]), r[n]
                if (Ur(e[0])) {
                  if (!this._private.panningEnabled) return this
                  ;(a = e[0]), (s = a.x), (l = a.y), _t(s) && (r.x = s), _t(l) && (r.y = l), this.emit('pan viewport')
                }
                break
              case 2:
                if (!this._private.panningEnabled) return this
                ;(n = e[0]), (i = e[1]), (n === 'x' || n === 'y') && _t(i) && (r[n] = i), this.emit('pan viewport')
                break
            }
            return this.notify('viewport'), this
          }, 'pan'),
          panBy: o(function (e, r) {
            var n = arguments,
              i = this._private.pan,
              a,
              s,
              l,
              u,
              h
            if (!this._private.panningEnabled) return this
            switch (n.length) {
              case 1:
                Ur(e) && ((l = n[0]), (u = l.x), (h = l.y), _t(u) && (i.x += u), _t(h) && (i.y += h), this.emit('pan viewport'))
                break
              case 2:
                ;(a = e), (s = r), (a === 'x' || a === 'y') && _t(s) && (i[a] += s), this.emit('pan viewport')
                break
            }
            return this.notify('viewport'), this
          }, 'panBy'),
          gc: o(function () {
            this.notify('gc')
          }, 'gc'),
          fit: o(function (e, r) {
            var n = this.getFitViewport(e, r)
            if (n) {
              var i = this._private
              ;(i.zoom = n.zoom), (i.pan = n.pan), this.emit('pan zoom viewport'), this.notify('viewport')
            }
            return this
          }, 'fit'),
          getFitViewport: o(function (e, r) {
            if ((_t(e) && r === void 0 && ((r = e), (e = void 0)), !(!this._private.panningEnabled || !this._private.zoomingEnabled))) {
              var n
              if (Zt(e)) {
                var i = e
                e = this.$(i)
              } else if (Tqe(e)) {
                var a = e
                ;(n = { x1: a.x1, y1: a.y1, x2: a.x2, y2: a.y2 }), (n.w = n.x2 - n.x1), (n.h = n.y2 - n.y1)
              } else xo(e) || (e = this.mutableElements())
              if (!(xo(e) && e.empty())) {
                n = n || e.boundingBox()
                var s = this.width(),
                  l = this.height(),
                  u
                if (((r = _t(r) ? r : 0), !isNaN(s) && !isNaN(l) && s > 0 && l > 0 && !isNaN(n.w) && !isNaN(n.h) && n.w > 0 && n.h > 0)) {
                  ;(u = Math.min((s - 2 * r) / n.w, (l - 2 * r) / n.h)),
                    (u = u > this._private.maxZoom ? this._private.maxZoom : u),
                    (u = u < this._private.minZoom ? this._private.minZoom : u)
                  var h = { x: (s - u * (n.x1 + n.x2)) / 2, y: (l - u * (n.y1 + n.y2)) / 2 }
                  return { zoom: u, pan: h }
                }
              }
            }
          }, 'getFitViewport'),
          zoomRange: o(function (e, r) {
            var n = this._private
            if (r == null) {
              var i = e
              ;(e = i.min), (r = i.max)
            }
            return (
              _t(e) && _t(r) && e <= r
                ? ((n.minZoom = e), (n.maxZoom = r))
                : _t(e) && r === void 0 && e <= n.maxZoom
                  ? (n.minZoom = e)
                  : _t(r) && e === void 0 && r >= n.minZoom && (n.maxZoom = r),
              this
            )
          }, 'zoomRange'),
          minZoom: o(function (e) {
            return e === void 0 ? this._private.minZoom : this.zoomRange({ min: e })
          }, 'minZoom'),
          maxZoom: o(function (e) {
            return e === void 0 ? this._private.maxZoom : this.zoomRange({ max: e })
          }, 'maxZoom'),
          getZoomedViewport: o(function (e) {
            var r = this._private,
              n = r.pan,
              i = r.zoom,
              a,
              s,
              l = !1
            if (
              (r.zoomingEnabled || (l = !0),
              _t(e)
                ? (s = e)
                : Ur(e) &&
                  ((s = e.level),
                  e.position != null ? (a = J6(e.position, i, n)) : e.renderedPosition != null && (a = e.renderedPosition),
                  a != null && !r.panningEnabled && (l = !0)),
              (s = s > r.maxZoom ? r.maxZoom : s),
              (s = s < r.minZoom ? r.minZoom : s),
              l || !_t(s) || s === i || (a != null && (!_t(a.x) || !_t(a.y))))
            )
              return null
            if (a != null) {
              var u = n,
                h = i,
                f = s,
                d = { x: (-f / h) * (a.x - u.x) + a.x, y: (-f / h) * (a.y - u.y) + a.y }
              return { zoomed: !0, panned: !0, zoom: f, pan: d }
            } else return { zoomed: !0, panned: !1, zoom: s, pan: n }
          }, 'getZoomedViewport'),
          zoom: o(function (e) {
            if (e === void 0) return this._private.zoom
            var r = this.getZoomedViewport(e),
              n = this._private
            return r == null || !r.zoomed
              ? this
              : ((n.zoom = r.zoom),
                r.panned && ((n.pan.x = r.pan.x), (n.pan.y = r.pan.y)),
                this.emit('zoom' + (r.panned ? ' pan' : '') + ' viewport'),
                this.notify('viewport'),
                this)
          }, 'zoom'),
          viewport: o(function (e) {
            var r = this._private,
              n = !0,
              i = !0,
              a = [],
              s = !1,
              l = !1
            if (!e) return this
            if ((_t(e.zoom) || (n = !1), Ur(e.pan) || (i = !1), !n && !i)) return this
            if (n) {
              var u = e.zoom
              u < r.minZoom || u > r.maxZoom || !r.zoomingEnabled ? (s = !0) : ((r.zoom = u), a.push('zoom'))
            }
            if (i && (!s || !e.cancelOnFailedZoom) && r.panningEnabled) {
              var h = e.pan
              _t(h.x) && ((r.pan.x = h.x), (l = !1)), _t(h.y) && ((r.pan.y = h.y), (l = !1)), l || a.push('pan')
            }
            return a.length > 0 && (a.push('viewport'), this.emit(a.join(' ')), this.notify('viewport')), this
          }, 'viewport'),
          center: o(function (e) {
            var r = this.getCenterPan(e)
            return r && ((this._private.pan = r), this.emit('pan viewport'), this.notify('viewport')), this
          }, 'center'),
          getCenterPan: o(function (e, r) {
            if (this._private.panningEnabled) {
              if (Zt(e)) {
                var n = e
                e = this.mutableElements().filter(n)
              } else xo(e) || (e = this.mutableElements())
              if (e.length !== 0) {
                var i = e.boundingBox(),
                  a = this.width(),
                  s = this.height()
                r = r === void 0 ? this._private.zoom : r
                var l = { x: (a - r * (i.x1 + i.x2)) / 2, y: (s - r * (i.y1 + i.y2)) / 2 }
                return l
              }
            }
          }, 'getCenterPan'),
          reset: o(function () {
            return !this._private.panningEnabled || !this._private.zoomingEnabled ? this : (this.viewport({ pan: { x: 0, y: 0 }, zoom: 1 }), this)
          }, 'reset'),
          invalidateSize: o(function () {
            this._private.sizeCache = null
          }, 'invalidateSize'),
          size: o(function () {
            var e = this._private,
              r = e.container,
              n = this
            return (e.sizeCache =
              e.sizeCache ||
              (r
                ? (function () {
                    var i = n.window().getComputedStyle(r),
                      a = o(function (l) {
                        return parseFloat(i.getPropertyValue(l))
                      }, 'val')
                    return { width: r.clientWidth - a('padding-left') - a('padding-right'), height: r.clientHeight - a('padding-top') - a('padding-bottom') }
                  })()
                : { width: 1, height: 1 }))
          }, 'size'),
          width: o(function () {
            return this.size().width
          }, 'width'),
          height: o(function () {
            return this.size().height
          }, 'height'),
          extent: o(function () {
            var e = this._private.pan,
              r = this._private.zoom,
              n = this.renderedExtent(),
              i = { x1: (n.x1 - e.x) / r, x2: (n.x2 - e.x) / r, y1: (n.y1 - e.y) / r, y2: (n.y2 - e.y) / r }
            return (i.w = i.x2 - i.x1), (i.h = i.y2 - i.y1), i
          }, 'extent'),
          renderedExtent: o(function () {
            var e = this.width(),
              r = this.height()
            return { x1: 0, y1: 0, x2: e, y2: r, w: e, h: r }
          }, 'renderedExtent'),
          multiClickDebounceTime: o(function (e) {
            if (e) this._private.multiClickDebounceTime = e
            else return this._private.multiClickDebounceTime
            return this
          }, 'multiClickDebounceTime')
        })
      e0.centre = e0.center
      e0.autolockNodes = e0.autolock
      e0.autoungrabifyNodes = e0.autoungrabify
      c4 = {
        data: un.data({
          field: 'data',
          bindingEvent: 'data',
          allowBinding: !0,
          allowSetting: !0,
          settingEvent: 'data',
          settingTriggersEvent: !0,
          triggerFnName: 'trigger',
          allowGetting: !0,
          updateStyle: !0
        }),
        removeData: un.removeData({ field: 'data', event: 'data', triggerFnName: 'trigger', triggerEvent: !0, updateStyle: !0 }),
        scratch: un.data({
          field: 'scratch',
          bindingEvent: 'scratch',
          allowBinding: !0,
          allowSetting: !0,
          settingEvent: 'scratch',
          settingTriggersEvent: !0,
          triggerFnName: 'trigger',
          allowGetting: !0,
          updateStyle: !0
        }),
        removeScratch: un.removeData({ field: 'scratch', event: 'scratch', triggerFnName: 'trigger', triggerEvent: !0, updateStyle: !0 })
      }
      c4.attr = c4.data
      c4.removeAttr = c4.removeData
      ;(u4 = o(function (e) {
        var r = this
        e = ir({}, e)
        var n = e.container
        n && !F6(n) && F6(n[0]) && (n = n[0])
        var i = n ? n._cyreg : null
        ;(i = i || {}), i && i.cy && (i.cy.destroy(), (i = {}))
        var a = (i.readies = i.readies || [])
        n && (n._cyreg = i), (i.cy = r)
        var s = Hi !== void 0 && n !== void 0 && !e.headless,
          l = e
        ;(l.layout = ir({ name: s ? 'grid' : 'null' }, l.layout)), (l.renderer = ir({ name: s ? 'canvas' : 'null' }, l.renderer))
        var u = o(function (g, y, v) {
            return y !== void 0 ? y : v !== void 0 ? v : g
          }, 'defVal'),
          h = (this._private = {
            container: n,
            ready: !1,
            options: l,
            elements: new Sa(this),
            listeners: [],
            aniEles: new Sa(this),
            data: l.data || {},
            scratch: {},
            layout: null,
            renderer: null,
            destroyed: !1,
            notificationsEnabled: !0,
            minZoom: 1e-50,
            maxZoom: 1e50,
            zoomingEnabled: u(!0, l.zoomingEnabled),
            userZoomingEnabled: u(!0, l.userZoomingEnabled),
            panningEnabled: u(!0, l.panningEnabled),
            userPanningEnabled: u(!0, l.userPanningEnabled),
            boxSelectionEnabled: u(!0, l.boxSelectionEnabled),
            autolock: u(!1, l.autolock, l.autolockNodes),
            autoungrabify: u(!1, l.autoungrabify, l.autoungrabifyNodes),
            autounselectify: u(!1, l.autounselectify),
            styleEnabled: l.styleEnabled === void 0 ? s : l.styleEnabled,
            zoom: _t(l.zoom) ? l.zoom : 1,
            pan: { x: Ur(l.pan) && _t(l.pan.x) ? l.pan.x : 0, y: Ur(l.pan) && _t(l.pan.y) ? l.pan.y : 0 },
            animation: { current: [], queue: [] },
            hasCompoundNodes: !1,
            multiClickDebounceTime: u(250, l.multiClickDebounceTime)
          })
        this.createEmitter(), this.selectionType(l.selectionType), this.zoomRange({ min: l.minZoom, max: l.maxZoom })
        var f = o(function (g, y) {
          var v = g.some(wqe)
          if (v) return sy.all(g).then(y)
          y(g)
        }, 'loadExtData')
        h.styleEnabled && r.setStyle([])
        var d = ir({}, l, l.renderer)
        r.initRenderer(d)
        var p = o(function (g, y, v) {
          r.notifications(!1)
          var x = r.mutableElements()
          x.length > 0 && x.remove(),
            g != null && (Ur(g) || En(g)) && r.add(g),
            r
              .one('layoutready', function (T) {
                r.notifications(!0), r.emit(T), r.one('load', y), r.emitAndNotify('load')
              })
              .one('layoutstop', function () {
                r.one('done', v), r.emit('done')
              })
          var b = ir({}, r._private.options.layout)
          ;(b.eles = r.elements()), r.layout(b).run()
        }, 'setElesAndLayout')
        f([l.style, l.elements], function (m) {
          var g = m[0],
            y = m[1]
          h.styleEnabled && r.style().append(g),
            p(
              y,
              function () {
                r.startAnimationLoop(), (h.ready = !0), li(l.ready) && r.on('ready', l.ready)
                for (var v = 0; v < a.length; v++) {
                  var x = a[v]
                  r.on('ready', x)
                }
                i && (i.readies = []), r.emit('ready')
              },
              l.done
            )
        })
      }, 'Core')),
        (W6 = u4.prototype)
      ir(W6, {
        instanceString: o(function () {
          return 'core'
        }, 'instanceString'),
        isReady: o(function () {
          return this._private.ready
        }, 'isReady'),
        destroyed: o(function () {
          return this._private.destroyed
        }, 'destroyed'),
        ready: o(function (e) {
          return this.isReady() ? this.emitter().emit('ready', [], e) : this.on('ready', e), this
        }, 'ready'),
        destroy: o(function () {
          var e = this
          if (!e.destroyed()) return e.stopAnimationLoop(), e.destroyRenderer(), this.emit('destroy'), (e._private.destroyed = !0), e
        }, 'destroy'),
        hasElementWithId: o(function (e) {
          return this._private.elements.hasElementWithId(e)
        }, 'hasElementWithId'),
        getElementById: o(function (e) {
          return this._private.elements.getElementById(e)
        }, 'getElementById'),
        hasCompoundNodes: o(function () {
          return this._private.hasCompoundNodes
        }, 'hasCompoundNodes'),
        headless: o(function () {
          return this._private.renderer.isHeadless()
        }, 'headless'),
        styleEnabled: o(function () {
          return this._private.styleEnabled
        }, 'styleEnabled'),
        addToPool: o(function (e) {
          return this._private.elements.merge(e), this
        }, 'addToPool'),
        removeFromPool: o(function (e) {
          return this._private.elements.unmerge(e), this
        }, 'removeFromPool'),
        container: o(function () {
          return this._private.container || null
        }, 'container'),
        window: o(function () {
          var e = this._private.container
          if (e == null) return Hi
          var r = this._private.container.ownerDocument
          return r === void 0 || r == null ? Hi : r.defaultView || Hi
        }, 'window'),
        mount: o(function (e) {
          if (e != null) {
            var r = this,
              n = r._private,
              i = n.options
            return (
              !F6(e) && F6(e[0]) && (e = e[0]),
              r.stopAnimationLoop(),
              r.destroyRenderer(),
              (n.container = e),
              (n.styleEnabled = !0),
              r.invalidateSize(),
              r.initRenderer(ir({}, i, i.renderer, { name: i.renderer.name === 'null' ? 'canvas' : i.renderer.name })),
              r.startAnimationLoop(),
              r.style(i.style),
              r.emit('mount'),
              r
            )
          }
        }, 'mount'),
        unmount: o(function () {
          var e = this
          return e.stopAnimationLoop(), e.destroyRenderer(), e.initRenderer({ name: 'null' }), e.emit('unmount'), e
        }, 'unmount'),
        options: o(function () {
          return Qc(this._private.options)
        }, 'options'),
        json: o(function (e) {
          var r = this,
            n = r._private,
            i = r.mutableElements(),
            a = o(function (S) {
              return r.getElementById(S.id())
            }, 'getFreshRef')
          if (Ur(e)) {
            if ((r.startBatch(), e.elements)) {
              var s = {},
                l = o(function (S, w) {
                  for (var E = [], _ = [], C = 0; C < S.length; C++) {
                    var D = S[C]
                    if (!D.data.id) {
                      hn('cy.json() cannot handle elements without an ID attribute')
                      continue
                    }
                    var O = '' + D.data.id,
                      R = r.getElementById(O)
                    ;(s[O] = !0), R.length !== 0 ? _.push({ ele: R, json: D }) : (w && (D.group = w), E.push(D))
                  }
                  r.add(E)
                  for (var k = 0; k < _.length; k++) {
                    var L = _[k],
                      A = L.ele,
                      I = L.json
                    A.json(I)
                  }
                }, 'updateEles')
              if (En(e.elements)) l(e.elements)
              else
                for (var u = ['nodes', 'edges'], h = 0; h < u.length; h++) {
                  var f = u[h],
                    d = e.elements[f]
                  En(d) && l(d, f)
                }
              var p = r.collection()
              i
                .filter(function (T) {
                  return !s[T.id()]
                })
                .forEach(function (T) {
                  T.isParent() ? p.merge(T) : T.remove()
                }),
                p.forEach(function (T) {
                  return T.children().move({ parent: null })
                }),
                p.forEach(function (T) {
                  return a(T).remove()
                })
            }
            e.style && r.style(e.style),
              e.zoom != null && e.zoom !== n.zoom && r.zoom(e.zoom),
              e.pan && (e.pan.x !== n.pan.x || e.pan.y !== n.pan.y) && r.pan(e.pan),
              e.data && r.data(e.data)
            for (
              var m = [
                  'minZoom',
                  'maxZoom',
                  'zoomingEnabled',
                  'userZoomingEnabled',
                  'panningEnabled',
                  'userPanningEnabled',
                  'boxSelectionEnabled',
                  'autolock',
                  'autoungrabify',
                  'autounselectify',
                  'multiClickDebounceTime'
                ],
                g = 0;
              g < m.length;
              g++
            ) {
              var y = m[g]
              e[y] != null && r[y](e[y])
            }
            return r.endBatch(), this
          } else {
            var v = !!e,
              x = {}
            v
              ? (x.elements = this.elements().map(function (T) {
                  return T.json()
                }))
              : ((x.elements = {}),
                i.forEach(function (T) {
                  var S = T.group()
                  x.elements[S] || (x.elements[S] = []), x.elements[S].push(T.json())
                })),
              this._private.styleEnabled && (x.style = r.style().json()),
              (x.data = Qc(r.data()))
            var b = n.options
            return (
              (x.zoomingEnabled = n.zoomingEnabled),
              (x.userZoomingEnabled = n.userZoomingEnabled),
              (x.zoom = n.zoom),
              (x.minZoom = n.minZoom),
              (x.maxZoom = n.maxZoom),
              (x.panningEnabled = n.panningEnabled),
              (x.userPanningEnabled = n.userPanningEnabled),
              (x.pan = Qc(n.pan)),
              (x.boxSelectionEnabled = n.boxSelectionEnabled),
              (x.renderer = Qc(b.renderer)),
              (x.hideEdgesOnViewport = b.hideEdgesOnViewport),
              (x.textureOnViewport = b.textureOnViewport),
              (x.wheelSensitivity = b.wheelSensitivity),
              (x.motionBlur = b.motionBlur),
              (x.multiClickDebounceTime = b.multiClickDebounceTime),
              x
            )
          }
        }, 'json')
      })
      W6.$id = W6.getElementById
      ;[oZe, fZe, u1e, CB, I6, pZe, AB, O6, yZe, e0, c4].forEach(function (t) {
        ir(W6, t)
      })
      ;(xZe = {
        fit: !0,
        directed: !1,
        padding: 30,
        circle: !1,
        grid: !1,
        spacingFactor: 1.75,
        boundingBox: void 0,
        avoidOverlap: !0,
        nodeDimensionsIncludeLabels: !1,
        roots: void 0,
        depthSort: void 0,
        animate: !1,
        animationDuration: 500,
        animationEasing: void 0,
        animateFilter: o(function (e, r) {
          return !0
        }, 'animateFilter'),
        ready: void 0,
        stop: void 0,
        transform: o(function (e, r) {
          return r
        }, 'transform')
      }),
        (bZe = { maximal: !1, acyclic: !1 }),
        (q1 = o(function (e) {
          return e.scratch('breadthfirst')
        }, 'getInfo')),
        (Nme = o(function (e, r) {
          return e.scratch('breadthfirst', r)
        }, 'setInfo'))
      o(h1e, 'BreadthFirstLayout')
      h1e.prototype.run = function () {
        var t = this.options,
          e = t.cy,
          r = t.eles,
          n = r.nodes().filter(function (ae) {
            return ae.isChildless()
          }),
          i = r,
          a = t.directed,
          s = t.acyclic || t.maximal || t.maximalAdjustments > 0,
          l = !!t.boundingBox,
          u = e.extent(),
          h = Ys(l ? t.boundingBox : { x1: u.x1, y1: u.y1, w: u.w, h: u.h }),
          f
        if (xo(t.roots)) f = t.roots
        else if (En(t.roots)) {
          for (var d = [], p = 0; p < t.roots.length; p++) {
            var m = t.roots[p],
              g = e.getElementById(m)
            d.push(g)
          }
          f = e.collection(d)
        } else if (Zt(t.roots)) f = e.$(t.roots)
        else if (a) f = n.roots()
        else {
          var y = r.components()
          f = e.collection()
          for (
            var v = o(function (Oe) {
                var ye = y[Oe],
                  Be = ye.maxDegree(!1),
                  He = ye.filter(function (ze) {
                    return ze.degree(!1) === Be
                  })
                f = f.add(He)
              }, '_loop'),
              x = 0;
            x < y.length;
            x++
          )
            v(x)
        }
        var b = [],
          T = {},
          S = o(function (Oe, ye) {
            b[ye] == null && (b[ye] = [])
            var Be = b[ye].length
            b[ye].push(Oe), Nme(Oe, { index: Be, depth: ye })
          }, 'addToDepth'),
          w = o(function (Oe, ye) {
            var Be = q1(Oe),
              He = Be.depth,
              ze = Be.index
            ;(b[He][ze] = null), Oe.isChildless() && S(Oe, ye)
          }, 'changeDepth')
        i.bfs({
          roots: f,
          directed: t.directed,
          visit: o(function (Oe, ye, Be, He, ze) {
            var Le = Oe[0],
              Ie = Le.id()
            Le.isChildless() && S(Le, ze), (T[Ie] = !0)
          }, 'visit')
        })
        for (var E = [], _ = 0; _ < n.length; _++) {
          var C = n[_]
          T[C.id()] || E.push(C)
        }
        var D = o(function (Oe) {
            for (var ye = b[Oe], Be = 0; Be < ye.length; Be++) {
              var He = ye[Be]
              if (He == null) {
                ye.splice(Be, 1), Be--
                continue
              }
              Nme(He, { depth: Oe, index: Be })
            }
          }, 'assignDepthsAt'),
          O = o(function (Oe, ye) {
            for (
              var Be = q1(Oe),
                He = Oe.incomers().filter(function (ie) {
                  return ie.isNode() && r.has(ie)
                }),
                ze = -1,
                Le = Oe.id(),
                Ie = 0;
              Ie < He.length;
              Ie++
            ) {
              var xe = He[Ie],
                q = q1(xe)
              ze = Math.max(ze, q.depth)
            }
            if (Be.depth <= ze) {
              if (!t.acyclic && ye[Le]) return null
              var de = ze + 1
              return w(Oe, de), (ye[Le] = de), !0
            }
            return !1
          }, 'adjustMaximally')
        if (a && s) {
          var R = [],
            k = {},
            L = o(function (Oe) {
              return R.push(Oe)
            }, 'enqueue'),
            A = o(function () {
              return R.shift()
            }, 'dequeue')
          for (
            n.forEach(function (ae) {
              return R.push(ae)
            });
            R.length > 0;

          ) {
            var I = A(),
              M = O(I, k)
            if (M)
              I.outgoers()
                .filter(function (ae) {
                  return ae.isNode() && r.has(ae)
                })
                .forEach(L)
            else if (M === null) {
              hn('Detected double maximal shift for node `' + I.id() + '`.  Bailing maximal adjustment due to cycle.  Use `options.maximal: true` only on DAGs.')
              break
            }
          }
        }
        var P = 0
        if (t.avoidOverlap)
          for (var B = 0; B < n.length; B++) {
            var F = n[B],
              z = F.layoutDimensions(t),
              $ = z.w,
              U = z.h
            P = Math.max(P, $, U)
          }
        var K = {},
          ee = o(function (Oe) {
            if (K[Oe.id()]) return K[Oe.id()]
            for (var ye = q1(Oe).depth, Be = Oe.neighborhood(), He = 0, ze = 0, Le = 0; Le < Be.length; Le++) {
              var Ie = Be[Le]
              if (!(Ie.isEdge() || Ie.isParent() || !n.has(Ie))) {
                var xe = q1(Ie)
                if (xe != null) {
                  var q = xe.index,
                    de = xe.depth
                  if (!(q == null || de == null)) {
                    var ie = b[de].length
                    de < ye && ((He += q / ie), ze++)
                  }
                }
              }
            }
            return (ze = Math.max(1, ze)), (He = He / ze), ze === 0 && (He = 0), (K[Oe.id()] = He), He
          }, 'getWeightedPercent'),
          Y = o(function (Oe, ye) {
            var Be = ee(Oe),
              He = ee(ye),
              ze = Be - He
            return ze === 0 ? uge(Oe.id(), ye.id()) : ze
          }, 'sortFn')
        t.depthSort !== void 0 && (Y = t.depthSort)
        for (var ce = b.length, Z = 0; Z < ce; Z++) b[Z].sort(Y), D(Z)
        for (var ue = [], Q = 0; Q < E.length; Q++) ue.push(E[Q])
        var j = o(function () {
          for (var Oe = 0; Oe < ce; Oe++) D(Oe)
        }, 'assignDepths')
        ue.length && (b.unshift(ue), (ce = b.length), j())
        for (var ne = 0, te = 0; te < ce; te++) ne = Math.max(b[te].length, ne)
        var he = { x: h.x1 + h.w / 2, y: h.y1 + h.h / 2 },
          le = n.reduce(
            function (ae, Oe) {
              return (function (ye) {
                return { w: ae.w === -1 ? ye.w : (ae.w + ye.w) / 2, h: ae.h === -1 ? ye.h : (ae.h + ye.h) / 2 }
              })(Oe.boundingBox({ includeLabels: t.nodeDimensionsIncludeLabels }))
            },
            { w: -1, h: -1 }
          ),
          J = Math.max(ce === 1 ? 0 : l ? (h.h - t.padding * 2 - le.h) / (ce - 1) : (h.h - t.padding * 2 - le.h) / (ce + 1), P),
          Se = b.reduce(function (ae, Oe) {
            return Math.max(ae, Oe.length)
          }, 0),
          se = o(function (Oe) {
            var ye = q1(Oe),
              Be = ye.depth,
              He = ye.index
            if (t.circle) {
              var ze = Math.min(h.w / 2 / ce, h.h / 2 / ce)
              ze = Math.max(ze, P)
              var Le = ze * Be + ze - (ce > 0 && b[0].length <= 3 ? ze / 2 : 0),
                Ie = ((2 * Math.PI) / b[Be].length) * He
              return Be === 0 && b[0].length === 1 && (Le = 1), { x: he.x + Le * Math.cos(Ie), y: he.y + Le * Math.sin(Ie) }
            } else {
              var xe = b[Be].length,
                q = Math.max(xe === 1 ? 0 : l ? (h.w - t.padding * 2 - le.w) / ((t.grid ? Se : xe) - 1) : (h.w - t.padding * 2 - le.w) / ((t.grid ? Se : xe) + 1), P),
                de = { x: he.x + (He + 1 - (xe + 1) / 2) * q, y: he.y + (Be + 1 - (ce + 1) / 2) * J }
              return de
            }
          }, 'getPosition')
        return r.nodes().layoutPositions(this, t, se), this
      }
      TZe = {
        fit: !0,
        padding: 30,
        boundingBox: void 0,
        avoidOverlap: !0,
        nodeDimensionsIncludeLabels: !1,
        spacingFactor: void 0,
        radius: void 0,
        startAngle: (3 / 2) * Math.PI,
        sweep: void 0,
        clockwise: !0,
        sort: void 0,
        animate: !1,
        animationDuration: 500,
        animationEasing: void 0,
        animateFilter: o(function (e, r) {
          return !0
        }, 'animateFilter'),
        ready: void 0,
        stop: void 0,
        transform: o(function (e, r) {
          return r
        }, 'transform')
      }
      o(f1e, 'CircleLayout')
      f1e.prototype.run = function () {
        var t = this.options,
          e = t,
          r = t.cy,
          n = e.eles,
          i = e.counterclockwise !== void 0 ? !e.counterclockwise : e.clockwise,
          a = n.nodes().not(':parent')
        e.sort && (a = a.sort(e.sort))
        for (
          var s = Ys(e.boundingBox ? e.boundingBox : { x1: 0, y1: 0, w: r.width(), h: r.height() }),
            l = { x: s.x1 + s.w / 2, y: s.y1 + s.h / 2 },
            u = e.sweep === void 0 ? 2 * Math.PI - (2 * Math.PI) / a.length : e.sweep,
            h = u / Math.max(1, a.length - 1),
            f,
            d = 0,
            p = 0;
          p < a.length;
          p++
        ) {
          var m = a[p],
            g = m.layoutDimensions(e),
            y = g.w,
            v = g.h
          d = Math.max(d, y, v)
        }
        if ((_t(e.radius) ? (f = e.radius) : a.length <= 1 ? (f = 0) : (f = Math.min(s.h, s.w) / 2 - d), a.length > 1 && e.avoidOverlap)) {
          d *= 1.75
          var x = Math.cos(h) - Math.cos(0),
            b = Math.sin(h) - Math.sin(0),
            T = Math.sqrt((d * d) / (x * x + b * b))
          f = Math.max(T, f)
        }
        var S = o(function (E, _) {
          var C = e.startAngle + _ * h * (i ? 1 : -1),
            D = f * Math.cos(C),
            O = f * Math.sin(C),
            R = { x: l.x + D, y: l.y + O }
          return R
        }, 'getPos')
        return n.nodes().layoutPositions(this, e, S), this
      }
      wZe = {
        fit: !0,
        padding: 30,
        startAngle: (3 / 2) * Math.PI,
        sweep: void 0,
        clockwise: !0,
        equidistant: !1,
        minNodeSpacing: 10,
        boundingBox: void 0,
        avoidOverlap: !0,
        nodeDimensionsIncludeLabels: !1,
        height: void 0,
        width: void 0,
        spacingFactor: void 0,
        concentric: o(function (e) {
          return e.degree()
        }, 'concentric'),
        levelWidth: o(function (e) {
          return e.maxDegree() / 4
        }, 'levelWidth'),
        animate: !1,
        animationDuration: 500,
        animationEasing: void 0,
        animateFilter: o(function (e, r) {
          return !0
        }, 'animateFilter'),
        ready: void 0,
        stop: void 0,
        transform: o(function (e, r) {
          return r
        }, 'transform')
      }
      o(d1e, 'ConcentricLayout')
      d1e.prototype.run = function () {
        for (
          var t = this.options,
            e = t,
            r = e.counterclockwise !== void 0 ? !e.counterclockwise : e.clockwise,
            n = t.cy,
            i = e.eles,
            a = i.nodes().not(':parent'),
            s = Ys(e.boundingBox ? e.boundingBox : { x1: 0, y1: 0, w: n.width(), h: n.height() }),
            l = { x: s.x1 + s.w / 2, y: s.y1 + s.h / 2 },
            u = [],
            h = 0,
            f = 0;
          f < a.length;
          f++
        ) {
          var d = a[f],
            p = void 0
          ;(p = e.concentric(d)), u.push({ value: p, node: d }), (d._private.scratch.concentric = p)
        }
        a.updateStyle()
        for (var m = 0; m < a.length; m++) {
          var g = a[m],
            y = g.layoutDimensions(e)
          h = Math.max(h, y.w, y.h)
        }
        u.sort(function (le, J) {
          return J.value - le.value
        })
        for (var v = e.levelWidth(a), x = [[]], b = x[0], T = 0; T < u.length; T++) {
          var S = u[T]
          if (b.length > 0) {
            var w = Math.abs(b[0].value - S.value)
            w >= v && ((b = []), x.push(b))
          }
          b.push(S)
        }
        var E = h + e.minNodeSpacing
        if (!e.avoidOverlap) {
          var _ = x.length > 0 && x[0].length > 1,
            C = Math.min(s.w, s.h) / 2 - E,
            D = C / (x.length + _ ? 1 : 0)
          E = Math.min(E, D)
        }
        for (var O = 0, R = 0; R < x.length; R++) {
          var k = x[R],
            L = e.sweep === void 0 ? 2 * Math.PI - (2 * Math.PI) / k.length : e.sweep,
            A = (k.dTheta = L / Math.max(1, k.length - 1))
          if (k.length > 1 && e.avoidOverlap) {
            var I = Math.cos(A) - Math.cos(0),
              M = Math.sin(A) - Math.sin(0),
              P = Math.sqrt((E * E) / (I * I + M * M))
            O = Math.max(P, O)
          }
          ;(k.r = O), (O += E)
        }
        if (e.equidistant) {
          for (var B = 0, F = 0, z = 0; z < x.length; z++) {
            var $ = x[z],
              U = $.r - F
            B = Math.max(B, U)
          }
          F = 0
          for (var K = 0; K < x.length; K++) {
            var ee = x[K]
            K === 0 && (F = ee.r), (ee.r = F), (F += B)
          }
        }
        for (var Y = {}, ce = 0; ce < x.length; ce++)
          for (var Z = x[ce], ue = Z.dTheta, Q = Z.r, j = 0; j < Z.length; j++) {
            var ne = Z[j],
              te = e.startAngle + (r ? 1 : -1) * ue * j,
              he = { x: l.x + Q * Math.cos(te), y: l.y + Q * Math.sin(te) }
            Y[ne.node.id()] = he
          }
        return (
          i.nodes().layoutPositions(this, e, function (le) {
            var J = le.id()
            return Y[J]
          }),
          this
        )
      }
      kZe = {
        ready: o(function () {}, 'ready'),
        stop: o(function () {}, 'stop'),
        animate: !0,
        animationEasing: void 0,
        animationDuration: void 0,
        animateFilter: o(function (e, r) {
          return !0
        }, 'animateFilter'),
        animationThreshold: 250,
        refresh: 20,
        fit: !0,
        padding: 30,
        boundingBox: void 0,
        nodeDimensionsIncludeLabels: !1,
        randomize: !1,
        componentSpacing: 40,
        nodeRepulsion: o(function (e) {
          return 2048
        }, 'nodeRepulsion'),
        nodeOverlap: 4,
        idealEdgeLength: o(function (e) {
          return 32
        }, 'idealEdgeLength'),
        edgeElasticity: o(function (e) {
          return 32
        }, 'edgeElasticity'),
        nestingFactor: 1.2,
        gravity: 1,
        numIter: 1e3,
        initialTemp: 1e3,
        coolingFactor: 0.99,
        minTemp: 1
      }
      o(uC, 'CoseLayout')
      uC.prototype.run = function () {
        var t = this.options,
          e = t.cy,
          r = this
        ;(r.stopped = !1), (t.animate === !0 || t.animate === !1) && r.emit({ type: 'layoutstart', layout: r }), t.debug === !0 ? (fB = !0) : (fB = !1)
        var n = EZe(e, r, t)
        fB && AZe(n), t.randomize && _Ze(n)
        var i = nh(),
          a = o(function () {
            DZe(n, e, t), t.fit === !0 && e.fit(t.padding)
          }, 'refresh'),
          s = o(function (p) {
            return !(r.stopped || p >= t.numIter || (LZe(n, t), (n.temperature = n.temperature * t.coolingFactor), n.temperature < t.minTemp))
          }, 'mainLoop'),
          l = o(function () {
            if (t.animate === !0 || t.animate === !1) a(), r.one('layoutstop', t.stop), r.emit({ type: 'layoutstop', layout: r })
            else {
              var p = t.eles.nodes(),
                m = p1e(n, t, p)
              p.layoutPositions(r, t, m)
            }
          }, 'done'),
          u = 0,
          h = !0
        if (t.animate === !0) {
          var f = o(function d() {
            for (var p = 0; h && p < t.refresh; ) (h = s(u)), u++, p++
            if (!h) Ime(n, t), l()
            else {
              var m = nh()
              m - i >= t.animationThreshold && a(), $6(d)
            }
          }, 'frame')
          f()
        } else {
          for (; h; ) (h = s(u)), u++
          Ime(n, t), l()
        }
        return this
      }
      uC.prototype.stop = function () {
        return (this.stopped = !0), this.thread && this.thread.stop(), this.emit('layoutstop'), this
      }
      uC.prototype.destroy = function () {
        return this.thread && this.thread.stop(), this
      }
      ;(EZe = o(function (e, r, n) {
        for (
          var i = n.eles.edges(),
            a = n.eles.nodes(),
            s = Ys(n.boundingBox ? n.boundingBox : { x1: 0, y1: 0, w: e.width(), h: e.height() }),
            l = {
              isCompound: e.hasCompoundNodes(),
              layoutNodes: [],
              idToIndex: {},
              nodeSize: a.size(),
              graphSet: [],
              indexToGraph: [],
              layoutEdges: [],
              edgeSize: i.size(),
              temperature: n.initialTemp,
              clientWidth: s.w,
              clientHeight: s.h,
              boundingBox: s
            },
            u = n.eles.components(),
            h = {},
            f = 0;
          f < u.length;
          f++
        )
          for (var d = u[f], p = 0; p < d.length; p++) {
            var m = d[p]
            h[m.id()] = f
          }
        for (var f = 0; f < l.nodeSize; f++) {
          var g = a[f],
            y = g.layoutDimensions(n),
            v = {}
          ;(v.isLocked = g.locked()),
            (v.id = g.data('id')),
            (v.parentId = g.data('parent')),
            (v.cmptId = h[g.id()]),
            (v.children = []),
            (v.positionX = g.position('x')),
            (v.positionY = g.position('y')),
            (v.offsetX = 0),
            (v.offsetY = 0),
            (v.height = y.w),
            (v.width = y.h),
            (v.maxX = v.positionX + v.width / 2),
            (v.minX = v.positionX - v.width / 2),
            (v.maxY = v.positionY + v.height / 2),
            (v.minY = v.positionY - v.height / 2),
            (v.padLeft = parseFloat(g.style('padding'))),
            (v.padRight = parseFloat(g.style('padding'))),
            (v.padTop = parseFloat(g.style('padding'))),
            (v.padBottom = parseFloat(g.style('padding'))),
            (v.nodeRepulsion = li(n.nodeRepulsion) ? n.nodeRepulsion(g) : n.nodeRepulsion),
            l.layoutNodes.push(v),
            (l.idToIndex[v.id] = f)
        }
        for (var x = [], b = 0, T = -1, S = [], f = 0; f < l.nodeSize; f++) {
          var g = l.layoutNodes[f],
            w = g.parentId
          w != null ? l.layoutNodes[l.idToIndex[w]].children.push(g.id) : ((x[++T] = g.id), S.push(g.id))
        }
        for (l.graphSet.push(S); b <= T; ) {
          var E = x[b++],
            _ = l.idToIndex[E],
            m = l.layoutNodes[_],
            C = m.children
          if (C.length > 0) {
            l.graphSet.push(C)
            for (var f = 0; f < C.length; f++) x[++T] = C[f]
          }
        }
        for (var f = 0; f < l.graphSet.length; f++)
          for (var D = l.graphSet[f], p = 0; p < D.length; p++) {
            var O = l.idToIndex[D[p]]
            l.indexToGraph[O] = f
          }
        for (var f = 0; f < l.edgeSize; f++) {
          var R = i[f],
            k = {}
          ;(k.id = R.data('id')), (k.sourceId = R.data('source')), (k.targetId = R.data('target'))
          var L = li(n.idealEdgeLength) ? n.idealEdgeLength(R) : n.idealEdgeLength,
            A = li(n.edgeElasticity) ? n.edgeElasticity(R) : n.edgeElasticity,
            I = l.idToIndex[k.sourceId],
            M = l.idToIndex[k.targetId],
            P = l.indexToGraph[I],
            B = l.indexToGraph[M]
          if (P != B) {
            for (var F = SZe(k.sourceId, k.targetId, l), z = l.graphSet[F], $ = 0, v = l.layoutNodes[I]; z.indexOf(v.id) === -1; ) (v = l.layoutNodes[l.idToIndex[v.parentId]]), $++
            for (v = l.layoutNodes[M]; z.indexOf(v.id) === -1; ) (v = l.layoutNodes[l.idToIndex[v.parentId]]), $++
            L *= $ * n.nestingFactor
          }
          ;(k.idealLength = L), (k.elasticity = A), l.layoutEdges.push(k)
        }
        return l
      }, 'createLayoutInfo')),
        (SZe = o(function (e, r, n) {
          var i = CZe(e, r, 0, n)
          return 2 > i.count ? 0 : i.graph
        }, 'findLCA')),
        (CZe = o(function t(e, r, n, i) {
          var a = i.graphSet[n]
          if (-1 < a.indexOf(e) && -1 < a.indexOf(r)) return { count: 2, graph: n }
          for (var s = 0, l = 0; l < a.length; l++) {
            var u = a[l],
              h = i.idToIndex[u],
              f = i.layoutNodes[h].children
            if (f.length !== 0) {
              var d = i.indexToGraph[i.idToIndex[f[0]]],
                p = t(e, r, d, i)
              if (p.count !== 0)
                if (p.count === 1) {
                  if ((s++, s === 2)) break
                } else return p
            }
          }
          return { count: s, graph: n }
        }, 'findLCA_aux')),
        (_Ze = o(function (e, r) {
          for (var n = e.clientWidth, i = e.clientHeight, a = 0; a < e.nodeSize; a++) {
            var s = e.layoutNodes[a]
            s.children.length === 0 && !s.isLocked && ((s.positionX = Math.random() * n), (s.positionY = Math.random() * i))
          }
        }, 'randomizePositions')),
        (p1e = o(function (e, r, n) {
          var i = e.boundingBox,
            a = { x1: 1 / 0, x2: -1 / 0, y1: 1 / 0, y2: -1 / 0 }
          return (
            r.boundingBox &&
              (n.forEach(function (s) {
                var l = e.layoutNodes[e.idToIndex[s.data('id')]]
                ;(a.x1 = Math.min(a.x1, l.positionX)), (a.x2 = Math.max(a.x2, l.positionX)), (a.y1 = Math.min(a.y1, l.positionY)), (a.y2 = Math.max(a.y2, l.positionY))
              }),
              (a.w = a.x2 - a.x1),
              (a.h = a.y2 - a.y1)),
            function (s, l) {
              var u = e.layoutNodes[e.idToIndex[s.data('id')]]
              if (r.boundingBox) {
                var h = (u.positionX - a.x1) / a.w,
                  f = (u.positionY - a.y1) / a.h
                return { x: i.x1 + h * i.w, y: i.y1 + f * i.h }
              } else return { x: u.positionX, y: u.positionY }
            }
          )
        }, 'getScaleInBoundsFn')),
        (DZe = o(function (e, r, n) {
          var i = n.layout,
            a = n.eles.nodes(),
            s = p1e(e, n, a)
          a.positions(s), e.ready !== !0 && ((e.ready = !0), i.one('layoutready', n.ready), i.emit({ type: 'layoutready', layout: this }))
        }, 'refreshPositions')),
        (LZe = o(function (e, r, n) {
          RZe(e, r), IZe(e), OZe(e, r), PZe(e), BZe(e)
        }, 'step')),
        (RZe = o(function (e, r) {
          for (var n = 0; n < e.graphSet.length; n++)
            for (var i = e.graphSet[n], a = i.length, s = 0; s < a; s++)
              for (var l = e.layoutNodes[e.idToIndex[i[s]]], u = s + 1; u < a; u++) {
                var h = e.layoutNodes[e.idToIndex[i[u]]]
                NZe(l, h, e, r)
              }
        }, 'calculateNodeForces')),
        (Mme = o(function (e) {
          return -e + 2 * e * Math.random()
        }, 'randomDistance')),
        (NZe = o(function (e, r, n, i) {
          var a = e.cmptId,
            s = r.cmptId
          if (!(a !== s && !n.isCompound)) {
            var l = r.positionX - e.positionX,
              u = r.positionY - e.positionY,
              h = 1
            l === 0 && u === 0 && ((l = Mme(h)), (u = Mme(h)))
            var f = MZe(e, r, l, u)
            if (f > 0)
              var d = i.nodeOverlap * f,
                p = Math.sqrt(l * l + u * u),
                m = (d * l) / p,
                g = (d * u) / p
            else
              var y = q6(e, l, u),
                v = q6(r, -1 * l, -1 * u),
                x = v.x - y.x,
                b = v.y - y.y,
                T = x * x + b * b,
                p = Math.sqrt(T),
                d = (e.nodeRepulsion + r.nodeRepulsion) / T,
                m = (d * x) / p,
                g = (d * b) / p
            e.isLocked || ((e.offsetX -= m), (e.offsetY -= g)), r.isLocked || ((r.offsetX += m), (r.offsetY += g))
          }
        }, 'nodeRepulsion')),
        (MZe = o(function (e, r, n, i) {
          if (n > 0) var a = e.maxX - r.minX
          else var a = r.maxX - e.minX
          if (i > 0) var s = e.maxY - r.minY
          else var s = r.maxY - e.minY
          return a >= 0 && s >= 0 ? Math.sqrt(a * a + s * s) : 0
        }, 'nodesOverlap')),
        (q6 = o(function (e, r, n) {
          var i = e.positionX,
            a = e.positionY,
            s = e.height || 1,
            l = e.width || 1,
            u = n / r,
            h = s / l,
            f = {}
          return (r === 0 && 0 < n) || (r === 0 && 0 > n)
            ? ((f.x = i), (f.y = a + s / 2), f)
            : 0 < r && -1 * h <= u && u <= h
              ? ((f.x = i + l / 2), (f.y = a + (l * n) / 2 / r), f)
              : 0 > r && -1 * h <= u && u <= h
                ? ((f.x = i - l / 2), (f.y = a - (l * n) / 2 / r), f)
                : 0 < n && (u <= -1 * h || u >= h)
                  ? ((f.x = i + (s * r) / 2 / n), (f.y = a + s / 2), f)
                  : (0 > n && (u <= -1 * h || u >= h) && ((f.x = i - (s * r) / 2 / n), (f.y = a - s / 2)), f)
        }, 'findClippingPoint')),
        (IZe = o(function (e, r) {
          for (var n = 0; n < e.edgeSize; n++) {
            var i = e.layoutEdges[n],
              a = e.idToIndex[i.sourceId],
              s = e.layoutNodes[a],
              l = e.idToIndex[i.targetId],
              u = e.layoutNodes[l],
              h = u.positionX - s.positionX,
              f = u.positionY - s.positionY
            if (!(h === 0 && f === 0)) {
              var d = q6(s, h, f),
                p = q6(u, -1 * h, -1 * f),
                m = p.x - d.x,
                g = p.y - d.y,
                y = Math.sqrt(m * m + g * g),
                v = Math.pow(i.idealLength - y, 2) / i.elasticity
              if (y !== 0)
                var x = (v * m) / y,
                  b = (v * g) / y
              else
                var x = 0,
                  b = 0
              s.isLocked || ((s.offsetX += x), (s.offsetY += b)), u.isLocked || ((u.offsetX -= x), (u.offsetY -= b))
            }
          }
        }, 'calculateEdgeForces')),
        (OZe = o(function (e, r) {
          if (r.gravity !== 0)
            for (var n = 1, i = 0; i < e.graphSet.length; i++) {
              var a = e.graphSet[i],
                s = a.length
              if (i === 0)
                var l = e.clientHeight / 2,
                  u = e.clientWidth / 2
              else
                var h = e.layoutNodes[e.idToIndex[a[0]]],
                  f = e.layoutNodes[e.idToIndex[h.parentId]],
                  l = f.positionX,
                  u = f.positionY
              for (var d = 0; d < s; d++) {
                var p = e.layoutNodes[e.idToIndex[a[d]]]
                if (!p.isLocked) {
                  var m = l - p.positionX,
                    g = u - p.positionY,
                    y = Math.sqrt(m * m + g * g)
                  if (y > n) {
                    var v = (r.gravity * m) / y,
                      x = (r.gravity * g) / y
                    ;(p.offsetX += v), (p.offsetY += x)
                  }
                }
              }
            }
        }, 'calculateGravityForces')),
        (PZe = o(function (e, r) {
          var n = [],
            i = 0,
            a = -1
          for (n.push.apply(n, e.graphSet[0]), a += e.graphSet[0].length; i <= a; ) {
            var s = n[i++],
              l = e.idToIndex[s],
              u = e.layoutNodes[l],
              h = u.children
            if (0 < h.length && !u.isLocked) {
              for (var f = u.offsetX, d = u.offsetY, p = 0; p < h.length; p++) {
                var m = e.layoutNodes[e.idToIndex[h[p]]]
                ;(m.offsetX += f), (m.offsetY += d), (n[++a] = h[p])
              }
              ;(u.offsetX = 0), (u.offsetY = 0)
            }
          }
        }, 'propagateForces')),
        (BZe = o(function (e, r) {
          for (var n = 0; n < e.nodeSize; n++) {
            var i = e.layoutNodes[n]
            0 < i.children.length && ((i.maxX = void 0), (i.minX = void 0), (i.maxY = void 0), (i.minY = void 0))
          }
          for (var n = 0; n < e.nodeSize; n++) {
            var i = e.layoutNodes[n]
            if (!(0 < i.children.length || i.isLocked)) {
              var a = FZe(i.offsetX, i.offsetY, e.temperature)
              ;(i.positionX += a.x),
                (i.positionY += a.y),
                (i.offsetX = 0),
                (i.offsetY = 0),
                (i.minX = i.positionX - i.width),
                (i.maxX = i.positionX + i.width),
                (i.minY = i.positionY - i.height),
                (i.maxY = i.positionY + i.height),
                $Ze(i, e)
            }
          }
          for (var n = 0; n < e.nodeSize; n++) {
            var i = e.layoutNodes[n]
            0 < i.children.length &&
              !i.isLocked &&
              ((i.positionX = (i.maxX + i.minX) / 2), (i.positionY = (i.maxY + i.minY) / 2), (i.width = i.maxX - i.minX), (i.height = i.maxY - i.minY))
          }
        }, 'updatePositions')),
        (FZe = o(function (e, r, n) {
          var i = Math.sqrt(e * e + r * r)
          if (i > n) var a = { x: (n * e) / i, y: (n * r) / i }
          else var a = { x: e, y: r }
          return a
        }, 'limitForce')),
        ($Ze = o(function t(e, r) {
          var n = e.parentId
          if (n != null) {
            var i = r.layoutNodes[r.idToIndex[n]],
              a = !1
            if (
              ((i.maxX == null || e.maxX + i.padRight > i.maxX) && ((i.maxX = e.maxX + i.padRight), (a = !0)),
              (i.minX == null || e.minX - i.padLeft < i.minX) && ((i.minX = e.minX - i.padLeft), (a = !0)),
              (i.maxY == null || e.maxY + i.padBottom > i.maxY) && ((i.maxY = e.maxY + i.padBottom), (a = !0)),
              (i.minY == null || e.minY - i.padTop < i.minY) && ((i.minY = e.minY - i.padTop), (a = !0)),
              a)
            )
              return t(i, r)
          }
        }, 'updateAncestryBoundaries')),
        (Ime = o(function (e, r) {
          for (var n = e.layoutNodes, i = [], a = 0; a < n.length; a++) {
            var s = n[a],
              l = s.cmptId,
              u = (i[l] = i[l] || [])
            u.push(s)
          }
          for (var h = 0, a = 0; a < i.length; a++) {
            var f = i[a]
            if (f) {
              ;(f.x1 = 1 / 0), (f.x2 = -1 / 0), (f.y1 = 1 / 0), (f.y2 = -1 / 0)
              for (var d = 0; d < f.length; d++) {
                var p = f[d]
                ;(f.x1 = Math.min(f.x1, p.positionX - p.width / 2)),
                  (f.x2 = Math.max(f.x2, p.positionX + p.width / 2)),
                  (f.y1 = Math.min(f.y1, p.positionY - p.height / 2)),
                  (f.y2 = Math.max(f.y2, p.positionY + p.height / 2))
              }
              ;(f.w = f.x2 - f.x1), (f.h = f.y2 - f.y1), (h += f.w * f.h)
            }
          }
          i.sort(function (b, T) {
            return T.w * T.h - b.w * b.h
          })
          for (var m = 0, g = 0, y = 0, v = 0, x = (Math.sqrt(h) * e.clientWidth) / e.clientHeight, a = 0; a < i.length; a++) {
            var f = i[a]
            if (f) {
              for (var d = 0; d < f.length; d++) {
                var p = f[d]
                p.isLocked || ((p.positionX += m - f.x1), (p.positionY += g - f.y1))
              }
              ;(m += f.w + r.componentSpacing), (y += f.w + r.componentSpacing), (v = Math.max(v, f.h)), y > x && ((g += v + r.componentSpacing), (m = 0), (y = 0), (v = 0))
            }
          }
        }, 'separateComponents')),
        (zZe = {
          fit: !0,
          padding: 30,
          boundingBox: void 0,
          avoidOverlap: !0,
          avoidOverlapPadding: 10,
          nodeDimensionsIncludeLabels: !1,
          spacingFactor: void 0,
          condense: !1,
          rows: void 0,
          cols: void 0,
          position: o(function (e) {}, 'position'),
          sort: void 0,
          animate: !1,
          animationDuration: 500,
          animationEasing: void 0,
          animateFilter: o(function (e, r) {
            return !0
          }, 'animateFilter'),
          ready: void 0,
          stop: void 0,
          transform: o(function (e, r) {
            return r
          }, 'transform')
        })
      o(m1e, 'GridLayout')
      m1e.prototype.run = function () {
        var t = this.options,
          e = t,
          r = t.cy,
          n = e.eles,
          i = n.nodes().not(':parent')
        e.sort && (i = i.sort(e.sort))
        var a = Ys(e.boundingBox ? e.boundingBox : { x1: 0, y1: 0, w: r.width(), h: r.height() })
        if (a.h === 0 || a.w === 0)
          n.nodes().layoutPositions(this, e, function (K) {
            return { x: a.x1, y: a.y1 }
          })
        else {
          var s = i.size(),
            l = Math.sqrt((s * a.h) / a.w),
            u = Math.round(l),
            h = Math.round((a.w / a.h) * l),
            f = o(function (ee) {
              if (ee == null) return Math.min(u, h)
              var Y = Math.min(u, h)
              Y == u ? (u = ee) : (h = ee)
            }, 'small'),
            d = o(function (ee) {
              if (ee == null) return Math.max(u, h)
              var Y = Math.max(u, h)
              Y == u ? (u = ee) : (h = ee)
            }, 'large'),
            p = e.rows,
            m = e.cols != null ? e.cols : e.columns
          if (p != null && m != null) (u = p), (h = m)
          else if (p != null && m == null) (u = p), (h = Math.ceil(s / u))
          else if (p == null && m != null) (h = m), (u = Math.ceil(s / h))
          else if (h * u > s) {
            var g = f(),
              y = d()
            ;(g - 1) * y >= s ? f(g - 1) : (y - 1) * g >= s && d(y - 1)
          } else
            for (; h * u < s; ) {
              var v = f(),
                x = d()
              ;(x + 1) * v >= s ? d(x + 1) : f(v + 1)
            }
          var b = a.w / h,
            T = a.h / u
          if ((e.condense && ((b = 0), (T = 0)), e.avoidOverlap))
            for (var S = 0; S < i.length; S++) {
              var w = i[S],
                E = w._private.position
              ;(E.x == null || E.y == null) && ((E.x = 0), (E.y = 0))
              var _ = w.layoutDimensions(e),
                C = e.avoidOverlapPadding,
                D = _.w + C,
                O = _.h + C
              ;(b = Math.max(b, D)), (T = Math.max(T, O))
            }
          for (
            var R = {},
              k = o(function (ee, Y) {
                return !!R['c-' + ee + '-' + Y]
              }, 'used'),
              L = o(function (ee, Y) {
                R['c-' + ee + '-' + Y] = !0
              }, 'use'),
              A = 0,
              I = 0,
              M = o(function () {
                I++, I >= h && ((I = 0), A++)
              }, 'moveToNextCell'),
              P = {},
              B = 0;
            B < i.length;
            B++
          ) {
            var F = i[B],
              z = e.position(F)
            if (z && (z.row !== void 0 || z.col !== void 0)) {
              var $ = { row: z.row, col: z.col }
              if ($.col === void 0) for ($.col = 0; k($.row, $.col); ) $.col++
              else if ($.row === void 0) for ($.row = 0; k($.row, $.col); ) $.row++
              ;(P[F.id()] = $), L($.row, $.col)
            }
          }
          var U = o(function (ee, Y) {
            var ce, Z
            if (ee.locked() || ee.isParent()) return !1
            var ue = P[ee.id()]
            if (ue) (ce = ue.col * b + b / 2 + a.x1), (Z = ue.row * T + T / 2 + a.y1)
            else {
              for (; k(A, I); ) M()
              ;(ce = I * b + b / 2 + a.x1), (Z = A * T + T / 2 + a.y1), L(A, I), M()
            }
            return { x: ce, y: Z }
          }, 'getPos')
          i.layoutPositions(this, e, U)
        }
        return this
      }
      GZe = { ready: o(function () {}, 'ready'), stop: o(function () {}, 'stop') }
      o(eF, 'NullLayout')
      eF.prototype.run = function () {
        var t = this.options,
          e = t.eles,
          r = this
        return (
          t.cy,
          r.emit('layoutstart'),
          e.nodes().positions(function () {
            return { x: 0, y: 0 }
          }),
          r.one('layoutready', t.ready),
          r.emit('layoutready'),
          r.one('layoutstop', t.stop),
          r.emit('layoutstop'),
          this
        )
      }
      eF.prototype.stop = function () {
        return this
      }
      VZe = {
        positions: void 0,
        zoom: void 0,
        pan: void 0,
        fit: !0,
        padding: 30,
        spacingFactor: void 0,
        animate: !1,
        animationDuration: 500,
        animationEasing: void 0,
        animateFilter: o(function (e, r) {
          return !0
        }, 'animateFilter'),
        ready: void 0,
        stop: void 0,
        transform: o(function (e, r) {
          return r
        }, 'transform')
      }
      o(g1e, 'PresetLayout')
      g1e.prototype.run = function () {
        var t = this.options,
          e = t.eles,
          r = e.nodes(),
          n = li(t.positions)
        function i(a) {
          if (t.positions == null) return qYe(a.position())
          if (n) return t.positions(a)
          var s = t.positions[a._private.data.id]
          return s ?? null
        }
        return (
          o(i, 'getPosition'),
          r.layoutPositions(this, t, function (a, s) {
            var l = i(a)
            return a.locked() || l == null ? !1 : l
          }),
          this
        )
      }
      UZe = {
        fit: !0,
        padding: 30,
        boundingBox: void 0,
        animate: !1,
        animationDuration: 500,
        animationEasing: void 0,
        animateFilter: o(function (e, r) {
          return !0
        }, 'animateFilter'),
        ready: void 0,
        stop: void 0,
        transform: o(function (e, r) {
          return r
        }, 'transform')
      }
      o(y1e, 'RandomLayout')
      y1e.prototype.run = function () {
        var t = this.options,
          e = t.cy,
          r = t.eles,
          n = Ys(t.boundingBox ? t.boundingBox : { x1: 0, y1: 0, w: e.width(), h: e.height() }),
          i = o(function (s, l) {
            return { x: n.x1 + Math.round(Math.random() * n.w), y: n.y1 + Math.round(Math.random() * n.h) }
          }, 'getPos')
        return r.nodes().layoutPositions(this, t, i), this
      }
      HZe = [
        { name: 'breadthfirst', impl: h1e },
        { name: 'circle', impl: f1e },
        { name: 'concentric', impl: d1e },
        { name: 'cose', impl: uC },
        { name: 'grid', impl: m1e },
        { name: 'null', impl: eF },
        { name: 'preset', impl: g1e },
        { name: 'random', impl: y1e }
      ]
      o(v1e, 'NullRenderer')
      ;(Ome = o(function () {}, 'noop')),
        (Pme = o(function () {
          throw new Error('A headless instance can not render images')
        }, 'throwImgErr'))
      v1e.prototype = {
        recalculateRenderedStyle: Ome,
        notify: o(function () {
          this.notifications++
        }, 'notify'),
        init: Ome,
        isHeadless: o(function () {
          return !0
        }, 'isHeadless'),
        png: Pme,
        jpg: Pme
      }
      tF = {}
      tF.arrowShapeWidth = 0.3
      tF.registerArrowShapes = function () {
        var t = (this.arrowShapes = {}),
          e = this,
          r = o(function (h, f, d, p, m, g, y) {
            var v = m.x - d / 2 - y,
              x = m.x + d / 2 + y,
              b = m.y - d / 2 - y,
              T = m.y + d / 2 + y,
              S = v <= h && h <= x && b <= f && f <= T
            return S
          }, 'bbCollide'),
          n = o(function (h, f, d, p, m) {
            var g = h * Math.cos(p) - f * Math.sin(p),
              y = h * Math.sin(p) + f * Math.cos(p),
              v = g * d,
              x = y * d,
              b = v + m.x,
              T = x + m.y
            return { x: b, y: T }
          }, 'transform'),
          i = o(function (h, f, d, p) {
            for (var m = [], g = 0; g < h.length; g += 2) {
              var y = h[g],
                v = h[g + 1]
              m.push(n(y, v, f, d, p))
            }
            return m
          }, 'transformPoints'),
          a = o(function (h) {
            for (var f = [], d = 0; d < h.length; d++) {
              var p = h[d]
              f.push(p.x, p.y)
            }
            return f
          }, 'pointsToArr'),
          s = o(function (h) {
            return h.pstyle('width').pfValue * h.pstyle('arrow-scale').pfValue * 2
          }, 'standardGap'),
          l = o(function (h, f) {
            Zt(f) && (f = t[f]),
              (t[h] = ir(
                {
                  name: h,
                  points: [-0.15, -0.3, 0.15, -0.3, 0.15, 0.3, -0.15, 0.3],
                  collide: o(function (p, m, g, y, v, x) {
                    var b = a(i(this.points, g + 2 * x, y, v)),
                      T = qs(p, m, b)
                    return T
                  }, 'collide'),
                  roughCollide: r,
                  draw: o(function (p, m, g, y) {
                    var v = i(this.points, m, g, y)
                    e.arrowShapeImpl('polygon')(p, v)
                  }, 'draw'),
                  spacing: o(function (p) {
                    return 0
                  }, 'spacing'),
                  gap: s
                },
                f
              ))
          }, 'defineArrowShape')
        l('none', { collide: z6, roughCollide: z6, draw: zB, spacing: q0e, gap: q0e }),
          l('triangle', { points: [-0.15, -0.3, 0, 0, 0.15, -0.3] }),
          l('arrow', 'triangle'),
          l('triangle-backcurve', {
            points: t.triangle.points,
            controlPoint: [0, -0.15],
            roughCollide: r,
            draw: o(function (h, f, d, p, m) {
              var g = i(this.points, f, d, p),
                y = this.controlPoint,
                v = n(y[0], y[1], f, d, p)
              e.arrowShapeImpl(this.name)(h, g, v)
            }, 'draw'),
            gap: o(function (h) {
              return s(h) * 0.8
            }, 'gap')
          }),
          l('triangle-tee', {
            points: [0, 0, 0.15, -0.3, -0.15, -0.3, 0, 0],
            pointsTee: [-0.15, -0.4, -0.15, -0.5, 0.15, -0.5, 0.15, -0.4],
            collide: o(function (h, f, d, p, m, g, y) {
              var v = a(i(this.points, d + 2 * y, p, m)),
                x = a(i(this.pointsTee, d + 2 * y, p, m)),
                b = qs(h, f, v) || qs(h, f, x)
              return b
            }, 'collide'),
            draw: o(function (h, f, d, p, m) {
              var g = i(this.points, f, d, p),
                y = i(this.pointsTee, f, d, p)
              e.arrowShapeImpl(this.name)(h, g, y)
            }, 'draw')
          }),
          l('circle-triangle', {
            radius: 0.15,
            pointsTr: [0, -0.15, 0.15, -0.45, -0.15, -0.45, 0, -0.15],
            collide: o(function (h, f, d, p, m, g, y) {
              var v = m,
                x = Math.pow(v.x - h, 2) + Math.pow(v.y - f, 2) <= Math.pow((d + 2 * y) * this.radius, 2),
                b = a(i(this.points, d + 2 * y, p, m))
              return qs(h, f, b) || x
            }, 'collide'),
            draw: o(function (h, f, d, p, m) {
              var g = i(this.pointsTr, f, d, p)
              e.arrowShapeImpl(this.name)(h, g, p.x, p.y, this.radius * f)
            }, 'draw'),
            spacing: o(function (h) {
              return e.getArrowWidth(h.pstyle('width').pfValue, h.pstyle('arrow-scale').value) * this.radius
            }, 'spacing')
          }),
          l('triangle-cross', {
            points: [0, 0, 0.15, -0.3, -0.15, -0.3, 0, 0],
            baseCrossLinePts: [-0.15, -0.4, -0.15, -0.4, 0.15, -0.4, 0.15, -0.4],
            crossLinePts: o(function (h, f) {
              var d = this.baseCrossLinePts.slice(),
                p = f / h,
                m = 3,
                g = 5
              return (d[m] = d[m] - p), (d[g] = d[g] - p), d
            }, 'crossLinePts'),
            collide: o(function (h, f, d, p, m, g, y) {
              var v = a(i(this.points, d + 2 * y, p, m)),
                x = a(i(this.crossLinePts(d, g), d + 2 * y, p, m)),
                b = qs(h, f, v) || qs(h, f, x)
              return b
            }, 'collide'),
            draw: o(function (h, f, d, p, m) {
              var g = i(this.points, f, d, p),
                y = i(this.crossLinePts(f, m), f, d, p)
              e.arrowShapeImpl(this.name)(h, g, y)
            }, 'draw')
          }),
          l('vee', {
            points: [-0.15, -0.3, 0, 0, 0.15, -0.3, 0, -0.15],
            gap: o(function (h) {
              return s(h) * 0.525
            }, 'gap')
          }),
          l('circle', {
            radius: 0.15,
            collide: o(function (h, f, d, p, m, g, y) {
              var v = m,
                x = Math.pow(v.x - h, 2) + Math.pow(v.y - f, 2) <= Math.pow((d + 2 * y) * this.radius, 2)
              return x
            }, 'collide'),
            draw: o(function (h, f, d, p, m) {
              e.arrowShapeImpl(this.name)(h, p.x, p.y, this.radius * f)
            }, 'draw'),
            spacing: o(function (h) {
              return e.getArrowWidth(h.pstyle('width').pfValue, h.pstyle('arrow-scale').value) * this.radius
            }, 'spacing')
          }),
          l('tee', {
            points: [-0.15, 0, -0.15, -0.1, 0.15, -0.1, 0.15, 0],
            spacing: o(function (h) {
              return 1
            }, 'spacing'),
            gap: o(function (h) {
              return 1
            }, 'gap')
          }),
          l('square', { points: [-0.15, 0, 0.15, 0, 0.15, -0.3, -0.15, -0.3] }),
          l('diamond', {
            points: [-0.15, -0.15, 0, -0.3, 0.15, -0.15, 0, 0],
            gap: o(function (h) {
              return h.pstyle('width').pfValue * h.pstyle('arrow-scale').value
            }, 'gap')
          }),
          l('chevron', {
            points: [0, 0, -0.15, -0.15, -0.1, -0.2, 0, -0.1, 0.1, -0.2, 0.15, -0.15],
            gap: o(function (h) {
              return 0.95 * h.pstyle('width').pfValue * h.pstyle('arrow-scale').value
            }, 'gap')
          })
      }
      r0 = {}
      r0.projectIntoViewport = function (t, e) {
        var r = this.cy,
          n = this.findContainerClientCoords(),
          i = n[0],
          a = n[1],
          s = n[4],
          l = r.pan(),
          u = r.zoom(),
          h = ((t - i) / s - l.x) / u,
          f = ((e - a) / s - l.y) / u
        return [h, f]
      }
      r0.findContainerClientCoords = function () {
        if (this.containerBB) return this.containerBB
        var t = this.container,
          e = t.getBoundingClientRect(),
          r = this.cy.window().getComputedStyle(t),
          n = o(function (x) {
            return parseFloat(r.getPropertyValue(x))
          }, 'styleValue'),
          i = { left: n('padding-left'), right: n('padding-right'), top: n('padding-top'), bottom: n('padding-bottom') },
          a = { left: n('border-left-width'), right: n('border-right-width'), top: n('border-top-width'), bottom: n('border-bottom-width') },
          s = t.clientWidth,
          l = t.clientHeight,
          u = i.left + i.right,
          h = i.top + i.bottom,
          f = a.left + a.right,
          d = e.width / (s + f),
          p = s - u,
          m = l - h,
          g = e.left + i.left + a.left,
          y = e.top + i.top + a.top
        return (this.containerBB = [g, y, p, m, d])
      }
      r0.invalidateContainerClientCoordsCache = function () {
        this.containerBB = null
      }
      r0.findNearestElement = function (t, e, r, n) {
        return this.findNearestElements(t, e, r, n)[0]
      }
      r0.findNearestElements = function (t, e, r, n) {
        var i = this,
          a = this,
          s = a.getCachedZSortedEles(),
          l = [],
          u = a.cy.zoom(),
          h = a.cy.hasCompoundNodes(),
          f = (n ? 24 : 8) / u,
          d = (n ? 8 : 2) / u,
          p = (n ? 8 : 2) / u,
          m = 1 / 0,
          g,
          y
        r && (s = s.interactive)
        function v(_, C) {
          if (_.isNode()) {
            if (y) return
            ;(y = _), l.push(_)
          }
          if (_.isEdge() && (C == null || C < m))
            if (g) {
              if (g.pstyle('z-compound-depth').value === _.pstyle('z-compound-depth').value && g.pstyle('z-compound-depth').value === _.pstyle('z-compound-depth').value) {
                for (var D = 0; D < l.length; D++)
                  if (l[D].isEdge()) {
                    ;(l[D] = _), (g = _), (m = C ?? m)
                    break
                  }
              }
            } else l.push(_), (g = _), (m = C ?? m)
        }
        o(v, 'addEle')
        function x(_) {
          var C = _.outerWidth() + 2 * d,
            D = _.outerHeight() + 2 * d,
            O = C / 2,
            R = D / 2,
            k = _.position(),
            L = _.pstyle('corner-radius').value === 'auto' ? 'auto' : _.pstyle('corner-radius').pfValue,
            A = _._private.rscratch
          if (k.x - O <= t && t <= k.x + O && k.y - R <= e && e <= k.y + R) {
            var I = a.nodeShapes[i.getNodeShape(_)]
            if (I.checkPoint(t, e, 0, C, D, k.x, k.y, L, A)) return v(_, 0), !0
          }
        }
        o(x, 'checkNode')
        function b(_) {
          var C = _._private,
            D = C.rscratch,
            O = _.pstyle('width').pfValue,
            R = _.pstyle('arrow-scale').value,
            k = O / 2 + f,
            L = k * k,
            A = k * 2,
            B = C.source,
            F = C.target,
            I
          if (D.edgeType === 'segments' || D.edgeType === 'straight' || D.edgeType === 'haystack') {
            for (var M = D.allpts, P = 0; P + 3 < M.length; P += 2)
              if (aXe(t, e, M[P], M[P + 1], M[P + 2], M[P + 3], A) && L > (I = uXe(t, e, M[P], M[P + 1], M[P + 2], M[P + 3]))) return v(_, I), !0
          } else if (D.edgeType === 'bezier' || D.edgeType === 'multibezier' || D.edgeType === 'self' || D.edgeType === 'compound') {
            for (var M = D.allpts, P = 0; P + 5 < D.allpts.length; P += 4)
              if (sXe(t, e, M[P], M[P + 1], M[P + 2], M[P + 3], M[P + 4], M[P + 5], A) && L > (I = cXe(t, e, M[P], M[P + 1], M[P + 2], M[P + 3], M[P + 4], M[P + 5])))
                return v(_, I), !0
          }
          for (
            var B = B || C.source,
              F = F || C.target,
              z = i.getArrowWidth(O, R),
              $ = [
                { name: 'source', x: D.arrowStartX, y: D.arrowStartY, angle: D.srcArrowAngle },
                { name: 'target', x: D.arrowEndX, y: D.arrowEndY, angle: D.tgtArrowAngle },
                { name: 'mid-source', x: D.midX, y: D.midY, angle: D.midsrcArrowAngle },
                { name: 'mid-target', x: D.midX, y: D.midY, angle: D.midtgtArrowAngle }
              ],
              P = 0;
            P < $.length;
            P++
          ) {
            var U = $[P],
              K = a.arrowShapes[_.pstyle(U.name + '-arrow-shape').value],
              ee = _.pstyle('width').pfValue
            if (K.roughCollide(t, e, z, U.angle, { x: U.x, y: U.y }, ee, f) && K.collide(t, e, z, U.angle, { x: U.x, y: U.y }, ee, f)) return v(_), !0
          }
          h && l.length > 0 && (x(B), x(F))
        }
        o(b, 'checkEdge')
        function T(_, C, D) {
          return Wl(_, C, D)
        }
        o(T, 'preprop')
        function S(_, C) {
          var D = _._private,
            O = p,
            R
          C ? (R = C + '-') : (R = ''), _.boundingBox()
          var k = D.labelBounds[C || 'main'],
            L = _.pstyle(R + 'label').value,
            A = _.pstyle('text-events').strValue === 'yes'
          if (!(!A || !L)) {
            var I = T(D.rscratch, 'labelX', C),
              M = T(D.rscratch, 'labelY', C),
              P = T(D.rscratch, 'labelAngle', C),
              B = _.pstyle(R + 'text-margin-x').pfValue,
              F = _.pstyle(R + 'text-margin-y').pfValue,
              z = k.x1 - O - B,
              $ = k.x2 + O - B,
              U = k.y1 - O - F,
              K = k.y2 + O - F
            if (P) {
              var ee = Math.cos(P),
                Y = Math.sin(P),
                ce = o(function (he, le) {
                  return (he = he - I), (le = le - M), { x: he * ee - le * Y + I, y: he * Y + le * ee + M }
                }, 'rotate'),
                Z = ce(z, U),
                ue = ce(z, K),
                Q = ce($, U),
                j = ce($, K),
                ne = [Z.x + B, Z.y + F, Q.x + B, Q.y + F, j.x + B, j.y + F, ue.x + B, ue.y + F]
              if (qs(t, e, ne)) return v(_), !0
            } else if (ry(k, t, e)) return v(_), !0
          }
        }
        o(S, 'checkLabel')
        for (var w = s.length - 1; w >= 0; w--) {
          var E = s[w]
          E.isNode() ? x(E) || S(E) : b(E) || S(E) || S(E, 'source') || S(E, 'target')
        }
        return l
      }
      r0.getAllInBox = function (t, e, r, n) {
        var i = this.getCachedZSortedEles().interactive,
          a = [],
          s = Math.min(t, r),
          l = Math.max(t, r),
          u = Math.min(e, n),
          h = Math.max(e, n)
        ;(t = s), (r = l), (e = u), (n = h)
        for (var f = Ys({ x1: t, y1: e, x2: r, y2: n }), d = 0; d < i.length; d++) {
          var p = i[d]
          if (p.isNode()) {
            var m = p,
              g = m.boundingBox({ includeNodes: !0, includeEdges: !1, includeLabels: !1 })
            UB(f, g) && !Age(g, f) && a.push(m)
          } else {
            var y = p,
              v = y._private,
              x = v.rscratch
            if ((x.startX != null && x.startY != null && !ry(f, x.startX, x.startY)) || (x.endX != null && x.endY != null && !ry(f, x.endX, x.endY))) continue
            if (
              x.edgeType === 'bezier' ||
              x.edgeType === 'multibezier' ||
              x.edgeType === 'self' ||
              x.edgeType === 'compound' ||
              x.edgeType === 'segments' ||
              x.edgeType === 'haystack'
            ) {
              for (var b = v.rstyle.bezierPts || v.rstyle.linePts || v.rstyle.haystackPts, T = !0, S = 0; S < b.length; S++)
                if (!iXe(f, b[S])) {
                  T = !1
                  break
                }
              T && a.push(y)
            } else (x.edgeType === 'haystack' || x.edgeType === 'straight') && a.push(y)
          }
        }
        return a
      }
      Y6 = {}
      Y6.calculateArrowAngles = function (t) {
        var e = t._private.rscratch,
          r = e.edgeType === 'haystack',
          n = e.edgeType === 'bezier',
          i = e.edgeType === 'multibezier',
          a = e.edgeType === 'segments',
          s = e.edgeType === 'compound',
          l = e.edgeType === 'self',
          u,
          h,
          f,
          d,
          p,
          m,
          x,
          b
        if (
          (r
            ? ((f = e.haystackPts[0]), (d = e.haystackPts[1]), (p = e.haystackPts[2]), (m = e.haystackPts[3]))
            : ((f = e.arrowStartX), (d = e.arrowStartY), (p = e.arrowEndX), (m = e.arrowEndY)),
          (x = e.midX),
          (b = e.midY),
          a)
        )
          (u = f - e.segpts[0]), (h = d - e.segpts[1])
        else if (i || s || l || n) {
          var g = e.allpts,
            y = sa(g[0], g[2], g[4], 0.1),
            v = sa(g[1], g[3], g[5], 0.1)
          ;(u = f - y), (h = d - v)
        } else (u = f - x), (h = d - b)
        e.srcArrowAngle = g6(u, h)
        var x = e.midX,
          b = e.midY
        if ((r && ((x = (f + p) / 2), (b = (d + m) / 2)), (u = p - f), (h = m - d), a)) {
          var g = e.allpts
          if ((g.length / 2) % 2 === 0) {
            var T = g.length / 2,
              S = T - 2
            ;(u = g[T] - g[S]), (h = g[T + 1] - g[S + 1])
          } else if (e.isRound) (u = e.midVector[1]), (h = -e.midVector[0])
          else {
            var T = g.length / 2 - 1,
              S = T - 2
            ;(u = g[T] - g[S]), (h = g[T + 1] - g[S + 1])
          }
        } else if (i || s || l) {
          var g = e.allpts,
            w = e.ctrlpts,
            E,
            _,
            C,
            D
          if ((w.length / 2) % 2 === 0) {
            var O = g.length / 2 - 1,
              R = O + 2,
              k = R + 2
            ;(E = sa(g[O], g[R], g[k], 0)), (_ = sa(g[O + 1], g[R + 1], g[k + 1], 0)), (C = sa(g[O], g[R], g[k], 1e-4)), (D = sa(g[O + 1], g[R + 1], g[k + 1], 1e-4))
          } else {
            var R = g.length / 2 - 1,
              O = R - 2,
              k = R + 2
            ;(E = sa(g[O], g[R], g[k], 0.4999)), (_ = sa(g[O + 1], g[R + 1], g[k + 1], 0.4999)), (C = sa(g[O], g[R], g[k], 0.5)), (D = sa(g[O + 1], g[R + 1], g[k + 1], 0.5))
          }
          ;(u = C - E), (h = D - _)
        }
        if (((e.midtgtArrowAngle = g6(u, h)), (e.midDispX = u), (e.midDispY = h), (u *= -1), (h *= -1), a)) {
          var g = e.allpts
          if ((g.length / 2) % 2 !== 0) {
            if (!e.isRound) {
              var T = g.length / 2 - 1,
                L = T + 2
              ;(u = -(g[L] - g[T])), (h = -(g[L + 1] - g[T + 1]))
            }
          }
        }
        if (((e.midsrcArrowAngle = g6(u, h)), a)) (u = p - e.segpts[e.segpts.length - 2]), (h = m - e.segpts[e.segpts.length - 1])
        else if (i || s || l || n) {
          var g = e.allpts,
            A = g.length,
            y = sa(g[A - 6], g[A - 4], g[A - 2], 0.9),
            v = sa(g[A - 5], g[A - 3], g[A - 1], 0.9)
          ;(u = p - y), (h = m - v)
        } else (u = p - x), (h = m - b)
        e.tgtArrowAngle = g6(u, h)
      }
      Y6.getArrowWidth = Y6.getArrowHeight = function (t, e) {
        var r = (this.arrowWidthCache = this.arrowWidthCache || {}),
          n = r[t + ', ' + e]
        return n || ((n = Math.max(Math.pow(t * 13.37, 0.9), 29) * e), (r[t + ', ' + e] = n), n)
      }
      ;(Kc = {}),
        (nl = {}),
        (zme = o(function (e, r, n) {
          ;(n.x = r.x - e.x), (n.y = r.y - e.y), (n.len = Math.sqrt(n.x * n.x + n.y * n.y)), (n.nx = n.x / n.len), (n.ny = n.y / n.len), (n.ang = Math.atan2(n.ny, n.nx))
        }, 'asVec')),
        (WZe = o(function (e, r) {
          ;(r.x = e.x * -1), (r.y = e.y * -1), (r.nx = e.nx * -1), (r.ny = e.ny * -1), (r.ang = e.ang > 0 ? -(Math.PI - e.ang) : Math.PI + e.ang)
        }, 'invertVec')),
        (qZe = o(function (e, r, n, i, a) {
          if (
            (e !== $me ? zme(r, e, Kc) : WZe(nl, Kc),
            zme(r, n, nl),
            (Bme = Kc.nx * nl.ny - Kc.ny * nl.nx),
            (Fme = Kc.nx * nl.nx - Kc.ny * -nl.ny),
            (rh = Math.asin(Math.max(-1, Math.min(1, Bme)))),
            Math.abs(rh) < 1e-6)
          ) {
            ;(_B = r.x), (DB = r.y), (Yp = Y1 = 0)
            return
          }
          ;(Xp = 1),
            (P6 = !1),
            Fme < 0 ? (rh < 0 ? (rh = Math.PI + rh) : ((rh = Math.PI - rh), (Xp = -1), (P6 = !0))) : rh > 0 && ((Xp = -1), (P6 = !0)),
            r.radius !== void 0 ? (Y1 = r.radius) : (Y1 = i),
            (Up = rh / 2),
            (S6 = Math.min(Kc.len / 2, nl.len / 2)),
            a
              ? ((jc = Math.abs((Math.cos(Up) * Y1) / Math.sin(Up))), jc > S6 ? ((jc = S6), (Yp = Math.abs((jc * Math.sin(Up)) / Math.cos(Up)))) : (Yp = Y1))
              : ((jc = Math.min(S6, Y1)), (Yp = Math.abs((jc * Math.sin(Up)) / Math.cos(Up)))),
            (LB = r.x + nl.nx * jc),
            (RB = r.y + nl.ny * jc),
            (_B = LB - nl.ny * Yp * Xp),
            (DB = RB + nl.nx * Yp * Xp),
            (x1e = r.x + Kc.nx * jc),
            (b1e = r.y + Kc.ny * jc),
            ($me = r)
        }, 'calcCornerArc'))
      o(T1e, 'drawPreparedRoundCorner')
      o(rF, 'getRoundCorner')
      Ya = {}
      Ya.findMidptPtsEtc = function (t, e) {
        var r = e.posPts,
          n = e.intersectionPts,
          i = e.vectorNormInverse,
          a,
          s = t.pstyle('source-endpoint'),
          l = t.pstyle('target-endpoint'),
          u = s.units != null && l.units != null,
          h = o(function (w, E, _, C) {
            var D = C - E,
              O = _ - w,
              R = Math.sqrt(O * O + D * D)
            return { x: -D / R, y: O / R }
          }, 'recalcVectorNormInverse'),
          f = t.pstyle('edge-distances').value
        switch (f) {
          case 'node-position':
            a = r
            break
          case 'intersection':
            a = n
            break
          case 'endpoints': {
            if (u) {
              var d = this.manualEndptToPx(t.source()[0], s),
                p = Ri(d, 2),
                m = p[0],
                g = p[1],
                y = this.manualEndptToPx(t.target()[0], l),
                v = Ri(y, 2),
                x = v[0],
                b = v[1],
                T = { x1: m, y1: g, x2: x, y2: b }
              ;(i = h(m, g, x, b)), (a = T)
            } else
              hn(
                'Edge '.concat(
                  t.id(),
                  ' has edge-distances:endpoints specified without manual endpoints specified via source-endpoint and target-endpoint.  Falling back on edge-distances:intersection (default).'
                )
              ),
                (a = n)
            break
          }
        }
        return { midptPts: a, vectorNormInverse: i }
      }
      Ya.findHaystackPoints = function (t) {
        for (var e = 0; e < t.length; e++) {
          var r = t[e],
            n = r._private,
            i = n.rscratch
          if (!i.haystack) {
            var a = Math.random() * 2 * Math.PI
            ;(i.source = { x: Math.cos(a), y: Math.sin(a) }), (a = Math.random() * 2 * Math.PI), (i.target = { x: Math.cos(a), y: Math.sin(a) })
          }
          var s = n.source,
            l = n.target,
            u = s.position(),
            h = l.position(),
            f = s.width(),
            d = l.width(),
            p = s.height(),
            m = l.height(),
            g = r.pstyle('haystack-radius').value,
            y = g / 2
          ;(i.haystackPts = i.allpts = [i.source.x * f * y + u.x, i.source.y * p * y + u.y, i.target.x * d * y + h.x, i.target.y * m * y + h.y]),
            (i.midX = (i.allpts[0] + i.allpts[2]) / 2),
            (i.midY = (i.allpts[1] + i.allpts[3]) / 2),
            (i.edgeType = 'haystack'),
            (i.haystack = !0),
            this.storeEdgeProjections(r),
            this.calculateArrowAngles(r),
            this.recalculateEdgeLabelProjections(r),
            this.calculateLabelAngles(r)
        }
      }
      Ya.findSegmentsPoints = function (t, e) {
        var r = t._private.rscratch,
          n = t.pstyle('segment-weights'),
          i = t.pstyle('segment-distances'),
          a = t.pstyle('segment-radii'),
          s = t.pstyle('radius-type'),
          l = Math.min(n.pfValue.length, i.pfValue.length),
          u = a.pfValue[a.pfValue.length - 1],
          h = s.pfValue[s.pfValue.length - 1]
        ;(r.edgeType = 'segments'), (r.segpts = []), (r.radii = []), (r.isArcRadius = [])
        for (var f = 0; f < l; f++) {
          var d = n.pfValue[f],
            p = i.pfValue[f],
            m = 1 - d,
            g = d,
            y = this.findMidptPtsEtc(t, e),
            v = y.midptPts,
            x = y.vectorNormInverse,
            b = { x: v.x1 * m + v.x2 * g, y: v.y1 * m + v.y2 * g }
          r.segpts.push(b.x + x.x * p, b.y + x.y * p),
            r.radii.push(a.pfValue[f] !== void 0 ? a.pfValue[f] : u),
            r.isArcRadius.push((s.pfValue[f] !== void 0 ? s.pfValue[f] : h) === 'arc-radius')
        }
      }
      Ya.findLoopPoints = function (t, e, r, n) {
        var i = t._private.rscratch,
          a = e.dirCounts,
          s = e.srcPos,
          l = t.pstyle('control-point-distances'),
          u = l ? l.pfValue[0] : void 0,
          h = t.pstyle('loop-direction').pfValue,
          f = t.pstyle('loop-sweep').pfValue,
          d = t.pstyle('control-point-step-size').pfValue
        i.edgeType = 'self'
        var p = r,
          m = d
        n && ((p = 0), (m = u))
        var g = h - Math.PI / 2,
          y = g - f / 2,
          v = g + f / 2,
          x = h + '_' + f
        ;(p = a[x] === void 0 ? (a[x] = 0) : ++a[x]),
          (i.ctrlpts = [
            s.x + Math.cos(y) * 1.4 * m * (p / 3 + 1),
            s.y + Math.sin(y) * 1.4 * m * (p / 3 + 1),
            s.x + Math.cos(v) * 1.4 * m * (p / 3 + 1),
            s.y + Math.sin(v) * 1.4 * m * (p / 3 + 1)
          ])
      }
      Ya.findCompoundLoopPoints = function (t, e, r, n) {
        var i = t._private.rscratch
        i.edgeType = 'compound'
        var a = e.srcPos,
          s = e.tgtPos,
          l = e.srcW,
          u = e.srcH,
          h = e.tgtW,
          f = e.tgtH,
          d = t.pstyle('control-point-step-size').pfValue,
          p = t.pstyle('control-point-distances'),
          m = p ? p.pfValue[0] : void 0,
          g = r,
          y = d
        n && ((g = 0), (y = m))
        var v = 50,
          x = { x: a.x - l / 2, y: a.y - u / 2 },
          b = { x: s.x - h / 2, y: s.y - f / 2 },
          T = { x: Math.min(x.x, b.x), y: Math.min(x.y, b.y) },
          S = 0.5,
          w = Math.max(S, Math.log(l * 0.01)),
          E = Math.max(S, Math.log(h * 0.01))
        i.ctrlpts = [T.x, T.y - (1 + Math.pow(v, 1.12) / 100) * y * (g / 3 + 1) * w, T.x - (1 + Math.pow(v, 1.12) / 100) * y * (g / 3 + 1) * E, T.y]
      }
      Ya.findStraightEdgePoints = function (t) {
        t._private.rscratch.edgeType = 'straight'
      }
      Ya.findBezierPoints = function (t, e, r, n, i) {
        var a = t._private.rscratch,
          s = t.pstyle('control-point-step-size').pfValue,
          l = t.pstyle('control-point-distances'),
          u = t.pstyle('control-point-weights'),
          h = l && u ? Math.min(l.value.length, u.value.length) : 1,
          f = l ? l.pfValue[0] : void 0,
          d = u.value[0],
          p = n
        ;(a.edgeType = p ? 'multibezier' : 'bezier'), (a.ctrlpts = [])
        for (var m = 0; m < h; m++) {
          var g = (0.5 - e.eles.length / 2 + r) * s * (i ? -1 : 1),
            y = void 0,
            v = Sge(g)
          p && ((f = l ? l.pfValue[m] : s), (d = u.value[m])), n ? (y = f) : (y = f !== void 0 ? v * f : void 0)
          var x = y !== void 0 ? y : g,
            b = 1 - d,
            T = d,
            S = this.findMidptPtsEtc(t, e),
            w = S.midptPts,
            E = S.vectorNormInverse,
            _ = { x: w.x1 * b + w.x2 * T, y: w.y1 * b + w.y2 * T }
          a.ctrlpts.push(_.x + E.x * x, _.y + E.y * x)
        }
      }
      Ya.findTaxiPoints = function (t, e) {
        var r = t._private.rscratch
        r.edgeType = 'segments'
        var n = 'vertical',
          i = 'horizontal',
          a = 'leftward',
          s = 'rightward',
          l = 'downward',
          u = 'upward',
          h = 'auto',
          f = e.posPts,
          d = e.srcW,
          p = e.srcH,
          m = e.tgtW,
          g = e.tgtH,
          y = t.pstyle('edge-distances').value,
          v = y !== 'node-position',
          x = t.pstyle('taxi-direction').value,
          b = x,
          T = t.pstyle('taxi-turn'),
          S = T.units === '%',
          w = T.pfValue,
          E = w < 0,
          _ = t.pstyle('taxi-turn-min-distance').pfValue,
          C = v ? (d + m) / 2 : 0,
          D = v ? (p + g) / 2 : 0,
          O = f.x2 - f.x1,
          R = f.y2 - f.y1,
          k = o(function (W, pe) {
            return W > 0 ? Math.max(W - pe, 0) : Math.min(W + pe, 0)
          }, 'subDWH'),
          L = k(O, C),
          A = k(R, D),
          I = !1
        b === h ? (x = Math.abs(L) > Math.abs(A) ? i : n) : b === u || b === l ? ((x = n), (I = !0)) : (b === a || b === s) && ((x = i), (I = !0))
        var M = x === n,
          P = M ? A : L,
          B = M ? R : O,
          F = Sge(B),
          z = !1
        !(I && (S || E)) && ((b === l && B < 0) || (b === u && B > 0) || (b === a && B > 0) || (b === s && B < 0)) && ((F *= -1), (P = F * Math.abs(P)), (z = !0))
        var $
        if (S) {
          var U = w < 0 ? 1 + w : w
          $ = U * P
        } else {
          var K = w < 0 ? P : 0
          $ = K + w * F
        }
        var ee = o(function (W) {
            return Math.abs(W) < _ || Math.abs(W) >= Math.abs(P)
          }, 'getIsTooClose'),
          Y = ee($),
          ce = ee(Math.abs(P) - Math.abs($)),
          Z = Y || ce
        if (Z && !z)
          if (M) {
            var ue = Math.abs(B) <= p / 2,
              Q = Math.abs(O) <= m / 2
            if (ue) {
              var j = (f.x1 + f.x2) / 2,
                ne = f.y1,
                te = f.y2
              r.segpts = [j, ne, j, te]
            } else if (Q) {
              var he = (f.y1 + f.y2) / 2,
                le = f.x1,
                J = f.x2
              r.segpts = [le, he, J, he]
            } else r.segpts = [f.x1, f.y2]
          } else {
            var Se = Math.abs(B) <= d / 2,
              se = Math.abs(R) <= g / 2
            if (Se) {
              var ae = (f.y1 + f.y2) / 2,
                Oe = f.x1,
                ye = f.x2
              r.segpts = [Oe, ae, ye, ae]
            } else if (se) {
              var Be = (f.x1 + f.x2) / 2,
                He = f.y1,
                ze = f.y2
              r.segpts = [Be, He, Be, ze]
            } else r.segpts = [f.x2, f.y1]
          }
        else if (M) {
          var Le = f.y1 + $ + (v ? (p / 2) * F : 0),
            Ie = f.x1,
            xe = f.x2
          r.segpts = [Ie, Le, xe, Le]
        } else {
          var q = f.x1 + $ + (v ? (d / 2) * F : 0),
            de = f.y1,
            ie = f.y2
          r.segpts = [q, de, q, ie]
        }
        if (r.isRound) {
          var oe = t.pstyle('taxi-radius').value,
            V = t.pstyle('radius-type').value[0] === 'arc-radius'
          ;(r.radii = new Array(r.segpts.length / 2).fill(oe)), (r.isArcRadius = new Array(r.segpts.length / 2).fill(V))
        }
      }
      Ya.tryToCorrectInvalidPoints = function (t, e) {
        var r = t._private.rscratch
        if (r.edgeType === 'bezier') {
          var n = e.srcPos,
            i = e.tgtPos,
            a = e.srcW,
            s = e.srcH,
            l = e.tgtW,
            u = e.tgtH,
            h = e.srcShape,
            f = e.tgtShape,
            d = e.srcCornerRadius,
            p = e.tgtCornerRadius,
            m = e.srcRs,
            g = e.tgtRs,
            y = !_t(r.startX) || !_t(r.startY),
            v = !_t(r.arrowStartX) || !_t(r.arrowStartY),
            x = !_t(r.endX) || !_t(r.endY),
            b = !_t(r.arrowEndX) || !_t(r.arrowEndY),
            T = 3,
            S = this.getArrowWidth(t.pstyle('width').pfValue, t.pstyle('arrow-scale').value) * this.arrowShapeWidth,
            w = T * S,
            E = Qp({ x: r.ctrlpts[0], y: r.ctrlpts[1] }, { x: r.startX, y: r.startY }),
            _ = E < w,
            C = Qp({ x: r.ctrlpts[0], y: r.ctrlpts[1] }, { x: r.endX, y: r.endY }),
            D = C < w,
            O = !1
          if (y || v || _) {
            O = !0
            var R = { x: r.ctrlpts[0] - n.x, y: r.ctrlpts[1] - n.y },
              k = Math.sqrt(R.x * R.x + R.y * R.y),
              L = { x: R.x / k, y: R.y / k },
              A = Math.max(a, s),
              I = { x: r.ctrlpts[0] + L.x * 2 * A, y: r.ctrlpts[1] + L.y * 2 * A },
              M = h.intersectLine(n.x, n.y, a, s, I.x, I.y, 0, d, m)
            _ ? ((r.ctrlpts[0] = r.ctrlpts[0] + L.x * (w - E)), (r.ctrlpts[1] = r.ctrlpts[1] + L.y * (w - E))) : ((r.ctrlpts[0] = M[0] + L.x * w), (r.ctrlpts[1] = M[1] + L.y * w))
          }
          if (x || b || D) {
            O = !0
            var P = { x: r.ctrlpts[0] - i.x, y: r.ctrlpts[1] - i.y },
              B = Math.sqrt(P.x * P.x + P.y * P.y),
              F = { x: P.x / B, y: P.y / B },
              z = Math.max(a, s),
              $ = { x: r.ctrlpts[0] + F.x * 2 * z, y: r.ctrlpts[1] + F.y * 2 * z },
              U = f.intersectLine(i.x, i.y, l, u, $.x, $.y, 0, p, g)
            D ? ((r.ctrlpts[0] = r.ctrlpts[0] + F.x * (w - C)), (r.ctrlpts[1] = r.ctrlpts[1] + F.y * (w - C))) : ((r.ctrlpts[0] = U[0] + F.x * w), (r.ctrlpts[1] = U[1] + F.y * w))
          }
          O && this.findEndpoints(t)
        }
      }
      Ya.storeAllpts = function (t) {
        var e = t._private.rscratch
        if (e.edgeType === 'multibezier' || e.edgeType === 'bezier' || e.edgeType === 'self' || e.edgeType === 'compound') {
          ;(e.allpts = []), e.allpts.push(e.startX, e.startY)
          for (var r = 0; r + 1 < e.ctrlpts.length; r += 2)
            e.allpts.push(e.ctrlpts[r], e.ctrlpts[r + 1]),
              r + 3 < e.ctrlpts.length && e.allpts.push((e.ctrlpts[r] + e.ctrlpts[r + 2]) / 2, (e.ctrlpts[r + 1] + e.ctrlpts[r + 3]) / 2)
          e.allpts.push(e.endX, e.endY)
          var n, i
          ;(e.ctrlpts.length / 2) % 2 === 0
            ? ((n = e.allpts.length / 2 - 1), (e.midX = e.allpts[n]), (e.midY = e.allpts[n + 1]))
            : ((n = e.allpts.length / 2 - 3),
              (i = 0.5),
              (e.midX = sa(e.allpts[n], e.allpts[n + 2], e.allpts[n + 4], i)),
              (e.midY = sa(e.allpts[n + 1], e.allpts[n + 3], e.allpts[n + 5], i)))
        } else if (e.edgeType === 'straight')
          (e.allpts = [e.startX, e.startY, e.endX, e.endY]),
            (e.midX = (e.startX + e.endX + e.arrowStartX + e.arrowEndX) / 4),
            (e.midY = (e.startY + e.endY + e.arrowStartY + e.arrowEndY) / 4)
        else if (e.edgeType === 'segments') {
          if (((e.allpts = []), e.allpts.push(e.startX, e.startY), e.allpts.push.apply(e.allpts, e.segpts), e.allpts.push(e.endX, e.endY), e.isRound)) {
            e.roundCorners = []
            for (var a = 2; a + 3 < e.allpts.length; a += 2) {
              var s = e.radii[a / 2 - 1],
                l = e.isArcRadius[a / 2 - 1]
              e.roundCorners.push(
                rF({ x: e.allpts[a - 2], y: e.allpts[a - 1] }, { x: e.allpts[a], y: e.allpts[a + 1], radius: s }, { x: e.allpts[a + 2], y: e.allpts[a + 3] }, s, l)
              )
            }
          }
          if (e.segpts.length % 4 === 0) {
            var u = e.segpts.length / 2,
              h = u - 2
            ;(e.midX = (e.segpts[h] + e.segpts[u]) / 2), (e.midY = (e.segpts[h + 1] + e.segpts[u + 1]) / 2)
          } else {
            var f = e.segpts.length / 2 - 1
            if (!e.isRound) (e.midX = e.segpts[f]), (e.midY = e.segpts[f + 1])
            else {
              var d = { x: e.segpts[f], y: e.segpts[f + 1] },
                p = e.roundCorners[f / 2],
                m = [d.x - p.cx, d.y - p.cy],
                g = p.radius / Math.sqrt(Math.pow(m[0], 2) + Math.pow(m[1], 2))
              ;(m = m.map(function (y) {
                return y * g
              })),
                (e.midX = p.cx + m[0]),
                (e.midY = p.cy + m[1]),
                (e.midVector = m)
            }
          }
        }
      }
      Ya.checkForInvalidEdgeWarning = function (t) {
        var e = t[0]._private.rscratch
        e.nodesOverlap || (_t(e.startX) && _t(e.startY) && _t(e.endX) && _t(e.endY))
          ? (e.loggedErr = !1)
          : e.loggedErr ||
            ((e.loggedErr = !0),
            hn(
              'Edge `' +
                t.id() +
                '` has invalid endpoints and so it is impossible to draw.  Adjust your edge style (e.g. control points) accordingly or use an alternative edge type.  This is expected behaviour when the source node and the target node overlap.'
            ))
      }
      Ya.findEdgeControlPoints = function (t) {
        var e = this
        if (!(!t || t.length === 0)) {
          for (
            var r = this,
              n = r.cy,
              i = n.hasCompoundNodes(),
              a = {
                map: new Zc(),
                get: o(function (_) {
                  var C = this.map.get(_[0])
                  return C != null ? C.get(_[1]) : null
                }, 'get'),
                set: o(function (_, C) {
                  var D = this.map.get(_[0])
                  D == null && ((D = new Zc()), this.map.set(_[0], D)), D.set(_[1], C)
                }, 'set')
              },
              s = [],
              l = [],
              u = 0;
            u < t.length;
            u++
          ) {
            var h = t[u],
              f = h._private,
              d = h.pstyle('curve-style').value
            if (!(h.removed() || !h.takesUpSpace())) {
              if (d === 'haystack') {
                l.push(h)
                continue
              }
              var p = d === 'unbundled-bezier' || d.endsWith('segments') || d === 'straight' || d === 'straight-triangle' || d.endsWith('taxi'),
                m = d === 'unbundled-bezier' || d === 'bezier',
                g = f.source,
                y = f.target,
                v = g.poolIndex(),
                x = y.poolIndex(),
                b = [v, x].sort(),
                T = a.get(b)
              T == null && ((T = { eles: [] }), a.set(b, T), s.push(b)), T.eles.push(h), p && (T.hasUnbundled = !0), m && (T.hasBezier = !0)
            }
          }
          for (
            var S = o(function (_) {
                var C = s[_],
                  D = a.get(C),
                  O = void 0
                if (!D.hasUnbundled) {
                  var R = D.eles[0].parallelEdges().filter(function (q) {
                    return q.isBundledBezier()
                  })
                  GB(D.eles),
                    R.forEach(function (q) {
                      return D.eles.push(q)
                    }),
                    D.eles.sort(function (q, de) {
                      return q.poolIndex() - de.poolIndex()
                    })
                }
                var k = D.eles[0],
                  L = k.source(),
                  A = k.target()
                if (L.poolIndex() > A.poolIndex()) {
                  var I = L
                  ;(L = A), (A = I)
                }
                var M = (D.srcPos = L.position()),
                  P = (D.tgtPos = A.position()),
                  B = (D.srcW = L.outerWidth()),
                  F = (D.srcH = L.outerHeight()),
                  z = (D.tgtW = A.outerWidth()),
                  $ = (D.tgtH = A.outerHeight()),
                  U = (D.srcShape = r.nodeShapes[e.getNodeShape(L)]),
                  K = (D.tgtShape = r.nodeShapes[e.getNodeShape(A)]),
                  ee = (D.srcCornerRadius = L.pstyle('corner-radius').value === 'auto' ? 'auto' : L.pstyle('corner-radius').pfValue),
                  Y = (D.tgtCornerRadius = A.pstyle('corner-radius').value === 'auto' ? 'auto' : A.pstyle('corner-radius').pfValue),
                  ce = (D.tgtRs = A._private.rscratch),
                  Z = (D.srcRs = L._private.rscratch)
                D.dirCounts = { north: 0, west: 0, south: 0, east: 0, northwest: 0, southwest: 0, northeast: 0, southeast: 0 }
                for (var ue = 0; ue < D.eles.length; ue++) {
                  var Q = D.eles[ue],
                    j = Q[0]._private.rscratch,
                    ne = Q.pstyle('curve-style').value,
                    te = ne === 'unbundled-bezier' || ne.endsWith('segments') || ne.endsWith('taxi'),
                    he = !L.same(Q.source())
                  if (!D.calculatedIntersection && L !== A && (D.hasBezier || D.hasUnbundled)) {
                    D.calculatedIntersection = !0
                    var le = U.intersectLine(M.x, M.y, B, F, P.x, P.y, 0, ee, Z),
                      J = (D.srcIntn = le),
                      Se = K.intersectLine(P.x, P.y, z, $, M.x, M.y, 0, Y, ce),
                      se = (D.tgtIntn = Se),
                      ae = (D.intersectionPts = { x1: le[0], x2: Se[0], y1: le[1], y2: Se[1] }),
                      Oe = (D.posPts = { x1: M.x, x2: P.x, y1: M.y, y2: P.y }),
                      ye = Se[1] - le[1],
                      Be = Se[0] - le[0],
                      He = Math.sqrt(Be * Be + ye * ye),
                      ze = (D.vector = { x: Be, y: ye }),
                      Le = (D.vectorNorm = { x: ze.x / He, y: ze.y / He }),
                      Ie = { x: -Le.y, y: Le.x }
                    ;(D.nodesOverlap = !_t(He) || K.checkPoint(le[0], le[1], 0, z, $, P.x, P.y, Y, ce) || U.checkPoint(Se[0], Se[1], 0, B, F, M.x, M.y, ee, Z)),
                      (D.vectorNormInverse = Ie),
                      (O = {
                        nodesOverlap: D.nodesOverlap,
                        dirCounts: D.dirCounts,
                        calculatedIntersection: !0,
                        hasBezier: D.hasBezier,
                        hasUnbundled: D.hasUnbundled,
                        eles: D.eles,
                        srcPos: P,
                        srcRs: ce,
                        tgtPos: M,
                        tgtRs: Z,
                        srcW: z,
                        srcH: $,
                        tgtW: B,
                        tgtH: F,
                        srcIntn: se,
                        tgtIntn: J,
                        srcShape: K,
                        tgtShape: U,
                        posPts: { x1: Oe.x2, y1: Oe.y2, x2: Oe.x1, y2: Oe.y1 },
                        intersectionPts: { x1: ae.x2, y1: ae.y2, x2: ae.x1, y2: ae.y1 },
                        vector: { x: -ze.x, y: -ze.y },
                        vectorNorm: { x: -Le.x, y: -Le.y },
                        vectorNormInverse: { x: -Ie.x, y: -Ie.y }
                      })
                  }
                  var xe = he ? O : D
                  ;(j.nodesOverlap = xe.nodesOverlap),
                    (j.srcIntn = xe.srcIntn),
                    (j.tgtIntn = xe.tgtIntn),
                    (j.isRound = ne.startsWith('round')),
                    i && (L.isParent() || L.isChild() || A.isParent() || A.isChild()) && (L.parents().anySame(A) || A.parents().anySame(L) || (L.same(A) && L.isParent()))
                      ? e.findCompoundLoopPoints(Q, xe, ue, te)
                      : L === A
                        ? e.findLoopPoints(Q, xe, ue, te)
                        : ne.endsWith('segments')
                          ? e.findSegmentsPoints(Q, xe)
                          : ne.endsWith('taxi')
                            ? e.findTaxiPoints(Q, xe)
                            : ne === 'straight' || (!te && D.eles.length % 2 === 1 && ue === Math.floor(D.eles.length / 2))
                              ? e.findStraightEdgePoints(Q)
                              : e.findBezierPoints(Q, xe, ue, te, he),
                    e.findEndpoints(Q),
                    e.tryToCorrectInvalidPoints(Q, xe),
                    e.checkForInvalidEdgeWarning(Q),
                    e.storeAllpts(Q),
                    e.storeEdgeProjections(Q),
                    e.calculateArrowAngles(Q),
                    e.recalculateEdgeLabelProjections(Q),
                    e.calculateLabelAngles(Q)
                }
              }, '_loop'),
              w = 0;
            w < s.length;
            w++
          )
            S(w)
          this.findHaystackPoints(l)
        }
      }
      o(w1e, 'getPts')
      Ya.getSegmentPoints = function (t) {
        var e = t[0]._private.rscratch
        this.recalculateRenderedStyle(t)
        var r = e.edgeType
        if (r === 'segments') return w1e(e.segpts)
      }
      Ya.getControlPoints = function (t) {
        var e = t[0]._private.rscratch
        this.recalculateRenderedStyle(t)
        var r = e.edgeType
        if (r === 'bezier' || r === 'multibezier' || r === 'self' || r === 'compound') return w1e(e.ctrlpts)
      }
      Ya.getEdgeMidpoint = function (t) {
        var e = t[0]._private.rscratch
        return this.recalculateRenderedStyle(t), { x: e.midX, y: e.midY }
      }
      v4 = {}
      v4.manualEndptToPx = function (t, e) {
        var r = this,
          n = t.position(),
          i = t.outerWidth(),
          a = t.outerHeight(),
          s = t._private.rscratch
        if (e.value.length === 2) {
          var l = [e.pfValue[0], e.pfValue[1]]
          return e.units[0] === '%' && (l[0] = l[0] * i), e.units[1] === '%' && (l[1] = l[1] * a), (l[0] += n.x), (l[1] += n.y), l
        } else {
          var u = e.pfValue[0]
          u = -Math.PI / 2 + u
          var h = 2 * Math.max(i, a),
            f = [n.x + Math.cos(u) * h, n.y + Math.sin(u) * h]
          return r.nodeShapes[this.getNodeShape(t)].intersectLine(
            n.x,
            n.y,
            i,
            a,
            f[0],
            f[1],
            0,
            t.pstyle('corner-radius').value === 'auto' ? 'auto' : t.pstyle('corner-radius').pfValue,
            s
          )
        }
      }
      v4.findEndpoints = function (t) {
        var e = this,
          r,
          n = t.source()[0],
          i = t.target()[0],
          a = n.position(),
          s = i.position(),
          l = t.pstyle('target-arrow-shape').value,
          u = t.pstyle('source-arrow-shape').value,
          h = t.pstyle('target-distance-from-node').pfValue,
          f = t.pstyle('source-distance-from-node').pfValue,
          d = n._private.rscratch,
          p = i._private.rscratch,
          m = t.pstyle('curve-style').value,
          g = t._private.rscratch,
          y = g.edgeType,
          v = m === 'taxi',
          x = y === 'self' || y === 'compound',
          b = y === 'bezier' || y === 'multibezier' || x,
          T = y !== 'bezier',
          S = y === 'straight' || y === 'segments',
          w = y === 'segments',
          E = b || T || S,
          _ = x || v,
          C = t.pstyle('source-endpoint'),
          D = _ ? 'outside-to-node' : C.value,
          O = n.pstyle('corner-radius').value === 'auto' ? 'auto' : n.pstyle('corner-radius').pfValue,
          R = t.pstyle('target-endpoint'),
          k = _ ? 'outside-to-node' : R.value,
          L = i.pstyle('corner-radius').value === 'auto' ? 'auto' : i.pstyle('corner-radius').pfValue
        ;(g.srcManEndpt = C), (g.tgtManEndpt = R)
        var A, I, M, P
        if (b) {
          var B = [g.ctrlpts[0], g.ctrlpts[1]],
            F = T ? [g.ctrlpts[g.ctrlpts.length - 2], g.ctrlpts[g.ctrlpts.length - 1]] : B
          ;(A = F), (I = B)
        } else if (S) {
          var z = w ? g.segpts.slice(0, 2) : [s.x, s.y],
            $ = w ? g.segpts.slice(g.segpts.length - 2) : [a.x, a.y]
          ;(A = $), (I = z)
        }
        if (k === 'inside-to-node') r = [s.x, s.y]
        else if (R.units) r = this.manualEndptToPx(i, R)
        else if (k === 'outside-to-line') r = g.tgtIntn
        else if (
          (k === 'outside-to-node' || k === 'outside-to-node-or-label' ? (M = A) : (k === 'outside-to-line' || k === 'outside-to-line-or-label') && (M = [a.x, a.y]),
          (r = e.nodeShapes[this.getNodeShape(i)].intersectLine(s.x, s.y, i.outerWidth(), i.outerHeight(), M[0], M[1], 0, L, p)),
          k === 'outside-to-node-or-label' || k === 'outside-to-line-or-label')
        ) {
          var U = i._private.rscratch,
            K = U.labelWidth,
            ee = U.labelHeight,
            Y = U.labelX,
            ce = U.labelY,
            Z = K / 2,
            ue = ee / 2,
            Q = i.pstyle('text-valign').value
          Q === 'top' ? (ce -= ue) : Q === 'bottom' && (ce += ue)
          var j = i.pstyle('text-halign').value
          j === 'left' ? (Y -= Z) : j === 'right' && (Y += Z)
          var ne = a4(M[0], M[1], [Y - Z, ce - ue, Y + Z, ce - ue, Y + Z, ce + ue, Y - Z, ce + ue], s.x, s.y)
          if (ne.length > 0) {
            var te = a,
              he = Wp(te, j1(r)),
              le = Wp(te, j1(ne)),
              J = he
            if ((le < he && ((r = ne), (J = le)), ne.length > 2)) {
              var Se = Wp(te, { x: ne[2], y: ne[3] })
              Se < J && (r = [ne[2], ne[3]])
            }
          }
        }
        var se = y6(r, A, e.arrowShapes[l].spacing(t) + h),
          ae = y6(r, A, e.arrowShapes[l].gap(t) + h)
        if (((g.endX = ae[0]), (g.endY = ae[1]), (g.arrowEndX = se[0]), (g.arrowEndY = se[1]), D === 'inside-to-node')) r = [a.x, a.y]
        else if (C.units) r = this.manualEndptToPx(n, C)
        else if (D === 'outside-to-line') r = g.srcIntn
        else if (
          (D === 'outside-to-node' || D === 'outside-to-node-or-label' ? (P = I) : (D === 'outside-to-line' || D === 'outside-to-line-or-label') && (P = [s.x, s.y]),
          (r = e.nodeShapes[this.getNodeShape(n)].intersectLine(a.x, a.y, n.outerWidth(), n.outerHeight(), P[0], P[1], 0, O, d)),
          D === 'outside-to-node-or-label' || D === 'outside-to-line-or-label')
        ) {
          var Oe = n._private.rscratch,
            ye = Oe.labelWidth,
            Be = Oe.labelHeight,
            He = Oe.labelX,
            ze = Oe.labelY,
            Le = ye / 2,
            Ie = Be / 2,
            xe = n.pstyle('text-valign').value
          xe === 'top' ? (ze -= Ie) : xe === 'bottom' && (ze += Ie)
          var q = n.pstyle('text-halign').value
          q === 'left' ? (He -= Le) : q === 'right' && (He += Le)
          var de = a4(P[0], P[1], [He - Le, ze - Ie, He + Le, ze - Ie, He + Le, ze + Ie, He - Le, ze + Ie], a.x, a.y)
          if (de.length > 0) {
            var ie = s,
              oe = Wp(ie, j1(r)),
              V = Wp(ie, j1(de)),
              Te = oe
            if ((V < oe && ((r = [de[0], de[1]]), (Te = V)), de.length > 2)) {
              var W = Wp(ie, { x: de[2], y: de[3] })
              W < Te && (r = [de[2], de[3]])
            }
          }
        }
        var pe = y6(r, I, e.arrowShapes[u].spacing(t) + f),
          ve = y6(r, I, e.arrowShapes[u].gap(t) + f)
        ;(g.startX = ve[0]),
          (g.startY = ve[1]),
          (g.arrowStartX = pe[0]),
          (g.arrowStartY = pe[1]),
          E && (!_t(g.startX) || !_t(g.startY) || !_t(g.endX) || !_t(g.endY) ? (g.badLine = !0) : (g.badLine = !1))
      }
      v4.getSourceEndpoint = function (t) {
        var e = t[0]._private.rscratch
        switch ((this.recalculateRenderedStyle(t), e.edgeType)) {
          case 'haystack':
            return { x: e.haystackPts[0], y: e.haystackPts[1] }
          default:
            return { x: e.arrowStartX, y: e.arrowStartY }
        }
      }
      v4.getTargetEndpoint = function (t) {
        var e = t[0]._private.rscratch
        switch ((this.recalculateRenderedStyle(t), e.edgeType)) {
          case 'haystack':
            return { x: e.haystackPts[2], y: e.haystackPts[3] }
          default:
            return { x: e.arrowEndX, y: e.arrowEndY }
        }
      }
      nF = {}
      o(YZe, 'pushBezierPts')
      nF.storeEdgeProjections = function (t) {
        var e = t._private,
          r = e.rscratch,
          n = r.edgeType
        if (((e.rstyle.bezierPts = null), (e.rstyle.linePts = null), (e.rstyle.haystackPts = null), n === 'multibezier' || n === 'bezier' || n === 'self' || n === 'compound')) {
          e.rstyle.bezierPts = []
          for (var i = 0; i + 5 < r.allpts.length; i += 4) YZe(this, t, r.allpts.slice(i, i + 6))
        } else if (n === 'segments') for (var a = (e.rstyle.linePts = []), i = 0; i + 1 < r.allpts.length; i += 2) a.push({ x: r.allpts[i], y: r.allpts[i + 1] })
        else if (n === 'haystack') {
          var s = r.haystackPts
          e.rstyle.haystackPts = [
            { x: s[0], y: s[1] },
            { x: s[2], y: s[3] }
          ]
        }
        e.rstyle.arrowWidth = this.getArrowWidth(t.pstyle('width').pfValue, t.pstyle('arrow-scale').value) * this.arrowShapeWidth
      }
      nF.recalculateEdgeProjections = function (t) {
        this.findEdgeControlPoints(t)
      }
      eu = {}
      eu.recalculateNodeLabelProjection = function (t) {
        var e = t.pstyle('label').strValue
        if (!Pf(e)) {
          var r,
            n,
            i = t._private,
            a = t.width(),
            s = t.height(),
            l = t.padding(),
            u = t.position(),
            h = t.pstyle('text-halign').strValue,
            f = t.pstyle('text-valign').strValue,
            d = i.rscratch,
            p = i.rstyle
          switch (h) {
            case 'left':
              r = u.x - a / 2 - l
              break
            case 'right':
              r = u.x + a / 2 + l
              break
            default:
              r = u.x
          }
          switch (f) {
            case 'top':
              n = u.y - s / 2 - l
              break
            case 'bottom':
              n = u.y + s / 2 + l
              break
            default:
              n = u.y
          }
          ;(d.labelX = r), (d.labelY = n), (p.labelX = r), (p.labelY = n), this.calculateLabelAngles(t), this.applyLabelDimensions(t)
        }
      }
      ;(k1e = o(function (e, r) {
        var n = Math.atan(r / e)
        return e === 0 && n < 0 && (n = n * -1), n
      }, 'lineAngleFromDelta')),
        (E1e = o(function (e, r) {
          var n = r.x - e.x,
            i = r.y - e.y
          return k1e(n, i)
        }, 'lineAngle')),
        (XZe = o(function (e, r, n, i) {
          var a = i4(0, i - 0.001, 1),
            s = i4(0, i + 0.001, 1),
            l = Q1(e, r, n, a),
            u = Q1(e, r, n, s)
          return E1e(l, u)
        }, 'bezierAngle'))
      eu.recalculateEdgeLabelProjections = function (t) {
        var e,
          r = t._private,
          n = r.rscratch,
          i = this,
          a = { mid: t.pstyle('label').strValue, source: t.pstyle('source-label').strValue, target: t.pstyle('target-label').strValue }
        if (a.mid || a.source || a.target) {
          e = { x: n.midX, y: n.midY }
          var s = o(function (d, p, m) {
            Nf(r.rscratch, d, p, m), Nf(r.rstyle, d, p, m)
          }, 'setRs')
          s('labelX', null, e.x), s('labelY', null, e.y)
          var l = k1e(n.midDispX, n.midDispY)
          s('labelAutoAngle', null, l)
          var u = o(function f() {
              if (f.cache) return f.cache
              for (var d = [], p = 0; p + 5 < n.allpts.length; p += 4) {
                var m = { x: n.allpts[p], y: n.allpts[p + 1] },
                  g = { x: n.allpts[p + 2], y: n.allpts[p + 3] },
                  y = { x: n.allpts[p + 4], y: n.allpts[p + 5] }
                d.push({ p0: m, p1: g, p2: y, startDist: 0, length: 0, segments: [] })
              }
              var v = r.rstyle.bezierPts,
                x = i.bezierProjPcts.length
              function b(_, C, D, O, R) {
                var k = Qp(C, D),
                  L = _.segments[_.segments.length - 1],
                  A = { p0: C, p1: D, t0: O, t1: R, startDist: L ? L.startDist + L.length : 0, length: k }
                _.segments.push(A), (_.length += k)
              }
              o(b, 'addSegment')
              for (var T = 0; T < d.length; T++) {
                var S = d[T],
                  w = d[T - 1]
                w && (S.startDist = w.startDist + w.length), b(S, S.p0, v[T * x], 0, i.bezierProjPcts[0])
                for (var E = 0; E < x - 1; E++) b(S, v[T * x + E], v[T * x + E + 1], i.bezierProjPcts[E], i.bezierProjPcts[E + 1])
                b(S, v[T * x + x - 1], S.p2, i.bezierProjPcts[x - 1], 1)
              }
              return (f.cache = d)
            }, 'createControlPointInfo'),
            h = o(function (d) {
              var p,
                m = d === 'source'
              if (a[d]) {
                var g = t.pstyle(d + '-text-offset').pfValue
                switch (n.edgeType) {
                  case 'self':
                  case 'compound':
                  case 'bezier':
                  case 'multibezier': {
                    for (var y = u(), v, x = 0, b = 0, T = 0; T < y.length; T++) {
                      for (var S = y[m ? T : y.length - 1 - T], w = 0; w < S.segments.length; w++) {
                        var E = S.segments[m ? w : S.segments.length - 1 - w],
                          _ = T === y.length - 1 && w === S.segments.length - 1
                        if (((x = b), (b += E.length), b >= g || _)) {
                          v = { cp: S, segment: E }
                          break
                        }
                      }
                      if (v) break
                    }
                    var C = v.cp,
                      D = v.segment,
                      O = (g - x) / D.length,
                      R = D.t1 - D.t0,
                      k = m ? D.t0 + R * O : D.t1 - R * O
                    ;(k = i4(0, k, 1)), (e = Q1(C.p0, C.p1, C.p2, k)), (p = XZe(C.p0, C.p1, C.p2, k))
                    break
                  }
                  case 'straight':
                  case 'segments':
                  case 'haystack': {
                    for (
                      var L = 0, A, I, M, P, B = n.allpts.length, F = 0;
                      F + 3 < B &&
                      (m
                        ? ((M = { x: n.allpts[F], y: n.allpts[F + 1] }), (P = { x: n.allpts[F + 2], y: n.allpts[F + 3] }))
                        : ((M = { x: n.allpts[B - 2 - F], y: n.allpts[B - 1 - F] }), (P = { x: n.allpts[B - 4 - F], y: n.allpts[B - 3 - F] })),
                      (A = Qp(M, P)),
                      (I = L),
                      (L += A),
                      !(L >= g));
                      F += 2
                    );
                    var z = g - I,
                      $ = z / A
                    ;($ = i4(0, $, 1)), (e = JYe(M, P, $)), (p = E1e(M, P))
                    break
                  }
                }
                s('labelX', d, e.x), s('labelY', d, e.y), s('labelAutoAngle', d, p)
              }
            }, 'calculateEndProjection')
          h('source'), h('target'), this.applyLabelDimensions(t)
        }
      }
      eu.applyLabelDimensions = function (t) {
        this.applyPrefixedLabelDimensions(t), t.isEdge() && (this.applyPrefixedLabelDimensions(t, 'source'), this.applyPrefixedLabelDimensions(t, 'target'))
      }
      eu.applyPrefixedLabelDimensions = function (t, e) {
        var r = t._private,
          n = this.getLabelText(t, e),
          i = this.calculateLabelDimensions(t, n),
          a = t.pstyle('line-height').pfValue,
          s = t.pstyle('text-wrap').strValue,
          l = Wl(r.rscratch, 'labelWrapCachedLines', e) || [],
          u = s !== 'wrap' ? 1 : Math.max(l.length, 1),
          h = i.height / u,
          f = h * a,
          d = i.width,
          p = i.height + (u - 1) * (a - 1) * h
        Nf(r.rstyle, 'labelWidth', e, d),
          Nf(r.rscratch, 'labelWidth', e, d),
          Nf(r.rstyle, 'labelHeight', e, p),
          Nf(r.rscratch, 'labelHeight', e, p),
          Nf(r.rscratch, 'labelLineHeight', e, f)
      }
      eu.getLabelText = function (t, e) {
        var r = t._private,
          n = e ? e + '-' : '',
          i = t.pstyle(n + 'label').strValue,
          a = t.pstyle('text-transform').value,
          s = o(function (K, ee) {
            return ee ? (Nf(r.rscratch, K, e, ee), ee) : Wl(r.rscratch, K, e)
          }, 'rscratch')
        if (!i) return ''
        a == 'none' || (a == 'uppercase' ? (i = i.toUpperCase()) : a == 'lowercase' && (i = i.toLowerCase()))
        var l = t.pstyle('text-wrap').value
        if (l === 'wrap') {
          var u = s('labelKey')
          if (u != null && s('labelWrapKey') === u) return s('labelWrapCachedText')
          for (
            var h = '\u200B',
              f = i.split(`
`),
              d = t.pstyle('text-max-width').pfValue,
              p = t.pstyle('text-overflow-wrap').value,
              m = p === 'anywhere',
              g = [],
              y = /[\s\u200b]+|$/g,
              v = 0;
            v < f.length;
            v++
          ) {
            var x = f[v],
              b = this.calculateLabelDimensions(t, x),
              T = b.width
            if (m) {
              var S = x.split('').join(h)
              x = S
            }
            if (T > d) {
              var w = x.matchAll(y),
                E = '',
                _ = 0,
                C = vo(w),
                D
              try {
                for (C.s(); !(D = C.n()).done; ) {
                  var O = D.value,
                    R = O[0],
                    k = x.substring(_, O.index)
                  _ = O.index + R.length
                  var L = E.length === 0 ? k : E + k + R,
                    A = this.calculateLabelDimensions(t, L),
                    I = A.width
                  I <= d ? (E += k + R) : (E && g.push(E), (E = k + R))
                }
              } catch (U) {
                C.e(U)
              } finally {
                C.f()
              }
              E.match(/^[\s\u200b]+$/) || g.push(E)
            } else g.push(x)
          }
          s('labelWrapCachedLines', g),
            (i = s(
              'labelWrapCachedText',
              g.join(`
`)
            )),
            s('labelWrapKey', u)
        } else if (l === 'ellipsis') {
          var M = t.pstyle('text-max-width').pfValue,
            P = '',
            B = '\u2026',
            F = !1
          if (this.calculateLabelDimensions(t, i).width < M) return i
          for (var z = 0; z < i.length; z++) {
            var $ = this.calculateLabelDimensions(t, P + i[z] + B).width
            if ($ > M) break
            ;(P += i[z]), z === i.length - 1 && (F = !0)
          }
          return F || (P += B), P
        }
        return i
      }
      eu.getLabelJustification = function (t) {
        var e = t.pstyle('text-justification').strValue,
          r = t.pstyle('text-halign').strValue
        if (e === 'auto')
          if (t.isNode())
            switch (r) {
              case 'left':
                return 'right'
              case 'right':
                return 'left'
              default:
                return 'center'
            }
          else return 'center'
        else return e
      }
      eu.calculateLabelDimensions = function (t, e) {
        var r = this,
          n = r.cy.window(),
          i = n.document,
          a = Bf(e, t._private.labelDimsKey),
          s = r.labelDimCache || (r.labelDimCache = []),
          l = s[a]
        if (l != null) return l
        var u = 0,
          h = t.pstyle('font-style').strValue,
          f = t.pstyle('font-size').pfValue,
          d = t.pstyle('font-family').strValue,
          p = t.pstyle('font-weight').strValue,
          m = this.labelCalcCanvas,
          g = this.labelCalcCanvasContext
        if (!m) {
          ;(m = this.labelCalcCanvas = i.createElement('canvas')), (g = this.labelCalcCanvasContext = m.getContext('2d'))
          var y = m.style
          ;(y.position = 'absolute'), (y.left = '-9999px'), (y.top = '-9999px'), (y.zIndex = '-1'), (y.visibility = 'hidden'), (y.pointerEvents = 'none')
        }
        g.font = ''.concat(h, ' ').concat(p, ' ').concat(f, 'px ').concat(d)
        for (
          var v = 0,
            x = 0,
            b = e.split(`
`),
            T = 0;
          T < b.length;
          T++
        ) {
          var S = b[T],
            w = g.measureText(S),
            E = Math.ceil(w.width),
            _ = f
          ;(v = Math.max(E, v)), (x += _)
        }
        return (v += u), (x += u), (s[a] = { width: v, height: x })
      }
      eu.calculateLabelAngle = function (t, e) {
        var r = t._private,
          n = r.rscratch,
          i = t.isEdge(),
          a = e ? e + '-' : '',
          s = t.pstyle(a + 'text-rotation'),
          l = s.strValue
        return l === 'none' ? 0 : i && l === 'autorotate' ? n.labelAutoAngle : l === 'autorotate' ? 0 : s.pfValue
      }
      eu.calculateLabelAngles = function (t) {
        var e = this,
          r = t.isEdge(),
          n = t._private,
          i = n.rscratch
        ;(i.labelAngle = e.calculateLabelAngle(t)), r && ((i.sourceLabelAngle = e.calculateLabelAngle(t, 'source')), (i.targetLabelAngle = e.calculateLabelAngle(t, 'target')))
      }
      ;(S1e = {}), (Gme = 28), (Vme = !1)
      S1e.getNodeShape = function (t) {
        var e = this,
          r = t.pstyle('shape').value
        if (r === 'cutrectangle' && (t.width() < Gme || t.height() < Gme))
          return Vme || (hn('The `cutrectangle` node shape can not be used at small sizes so `rectangle` is used instead'), (Vme = !0)), 'rectangle'
        if (t.isParent())
          return r === 'rectangle' || r === 'roundrectangle' || r === 'round-rectangle' || r === 'cutrectangle' || r === 'cut-rectangle' || r === 'barrel' ? r : 'rectangle'
        if (r === 'polygon') {
          var n = t.pstyle('shape-polygon-points').value
          return e.nodeShapes.makePolygon(n).name
        }
        return r
      }
      hC = {}
      hC.registerCalculationListeners = function () {
        var t = this.cy,
          e = t.collection(),
          r = this,
          n = o(function (s) {
            var l = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !0
            if ((e.merge(s), l))
              for (var u = 0; u < s.length; u++) {
                var h = s[u],
                  f = h._private,
                  d = f.rstyle
                ;(d.clean = !1), (d.cleanConnected = !1)
              }
          }, 'enqueue')
        r.binder(t)
          .on(
            'bounds.* dirty.*',
            o(function (s) {
              var l = s.target
              n(l)
            }, 'onDirtyBounds')
          )
          .on(
            'style.* background.*',
            o(function (s) {
              var l = s.target
              n(l, !1)
            }, 'onDirtyStyle')
          )
        var i = o(function (s) {
          if (s) {
            var l = r.onUpdateEleCalcsFns
            e.cleanStyle()
            for (var u = 0; u < e.length; u++) {
              var h = e[u],
                f = h._private.rstyle
              h.isNode() && !f.cleanConnected && (n(h.connectedEdges()), (f.cleanConnected = !0))
            }
            if (l)
              for (var d = 0; d < l.length; d++) {
                var p = l[d]
                p(s, e)
              }
            r.recalculateRenderedStyle(e), (e = t.collection())
          }
        }, 'updateEleCalcs')
        ;(r.flushRenderedStyleQueue = function () {
          i(!0)
        }),
          r.beforeRender(i, r.beforeRenderPriorities.eleCalcs)
      }
      hC.onUpdateEleCalcs = function (t) {
        var e = (this.onUpdateEleCalcsFns = this.onUpdateEleCalcsFns || [])
        e.push(t)
      }
      hC.recalculateRenderedStyle = function (t, e) {
        var r = o(function (S) {
            return S._private.rstyle.cleanConnected
          }, 'isCleanConnected'),
          n = [],
          i = []
        if (!this.destroyed) {
          e === void 0 && (e = !0)
          for (var a = 0; a < t.length; a++) {
            var s = t[a],
              l = s._private,
              u = l.rstyle
            s.isEdge() && (!r(s.source()) || !r(s.target())) && (u.clean = !1),
              !((e && u.clean) || s.removed()) && s.pstyle('display').value !== 'none' && (l.group === 'nodes' ? i.push(s) : n.push(s), (u.clean = !0))
          }
          for (var h = 0; h < i.length; h++) {
            var f = i[h],
              d = f._private,
              p = d.rstyle,
              m = f.position()
            this.recalculateNodeLabelProjection(f), (p.nodeX = m.x), (p.nodeY = m.y), (p.nodeW = f.pstyle('width').pfValue), (p.nodeH = f.pstyle('height').pfValue)
          }
          this.recalculateEdgeProjections(n)
          for (var g = 0; g < n.length; g++) {
            var y = n[g],
              v = y._private,
              x = v.rstyle,
              b = v.rscratch
            ;(x.srcX = b.arrowStartX),
              (x.srcY = b.arrowStartY),
              (x.tgtX = b.arrowEndX),
              (x.tgtY = b.arrowEndY),
              (x.midX = b.midX),
              (x.midY = b.midY),
              (x.labelAngle = b.labelAngle),
              (x.sourceLabelAngle = b.sourceLabelAngle),
              (x.targetLabelAngle = b.targetLabelAngle)
          }
        }
      }
      fC = {}
      fC.updateCachedGrabbedEles = function () {
        var t = this.cachedZSortedEles
        if (t) {
          ;(t.drag = []), (t.nondrag = [])
          for (var e = [], r = 0; r < t.length; r++) {
            var n = t[r],
              i = n._private.rscratch
            n.grabbed() && !n.isParent() ? e.push(n) : i.inDragLayer ? t.drag.push(n) : t.nondrag.push(n)
          }
          for (var r = 0; r < e.length; r++) {
            var n = e[r]
            t.drag.push(n)
          }
        }
      }
      fC.invalidateCachedZSortedEles = function () {
        this.cachedZSortedEles = null
      }
      fC.getCachedZSortedEles = function (t) {
        if (t || !this.cachedZSortedEles) {
          var e = this.cy.mutableElements().toArray()
          e.sort(l1e),
            (e.interactive = e.filter(function (r) {
              return r.interactive()
            })),
            (this.cachedZSortedEles = e),
            this.updateCachedGrabbedEles()
        } else e = this.cachedZSortedEles
        return e
      }
      C1e = {}
      ;[r0, Y6, Ya, v4, nF, eu, S1e, hC, fC].forEach(function (t) {
        ir(C1e, t)
      })
      A1e = {}
      A1e.getCachedImage = function (t, e, r) {
        var n = this,
          i = (n.imageCache = n.imageCache || {}),
          a = i[t]
        if (a) return a.image.complete || a.image.addEventListener('load', r), a.image
        a = i[t] = i[t] || {}
        var s = (a.image = new Image())
        s.addEventListener('load', r),
          s.addEventListener('error', function () {
            s.error = !0
          })
        var l = 'data:',
          u = t.substring(0, l.length).toLowerCase() === l
        return u || ((e = e === 'null' ? null : e), (s.crossOrigin = e)), (s.src = t), s
      }
      fy = {}
      fy.registerBinding = function (t, e, r, n) {
        var i = Array.prototype.slice.apply(arguments, [1])
        if (Array.isArray(t)) {
          for (var a = [], s = 0; s < t.length; s++) {
            var l = t[s]
            if (l !== void 0) {
              var u = this.binder(l)
              a.push(u.on.apply(u, i))
            }
          }
          return a
        }
        var u = this.binder(t)
        return u.on.apply(u, i)
      }
      fy.binder = function (t) {
        var e = this,
          r = e.cy.window(),
          n = t === r || t === r.document || t === r.document.body || bqe(t)
        if (e.supportsPassiveEvents == null) {
          var i = !1
          try {
            var a = Object.defineProperty({}, 'passive', {
              get: o(function () {
                return (i = !0), !0
              }, 'get')
            })
            r.addEventListener('test', null, a)
          } catch {}
          e.supportsPassiveEvents = i
        }
        var s = o(function (u, h, f) {
          var d = Array.prototype.slice.call(arguments)
          return (
            n && e.supportsPassiveEvents && (d[2] = { capture: f ?? !1, passive: !1, once: !1 }),
            e.bindings.push({ target: t, args: d }),
            (t.addEventListener || t.on).apply(t, d),
            this
          )
        }, 'on')
        return { on: s, addEventListener: s, addListener: s, bind: s }
      }
      fy.nodeIsDraggable = function (t) {
        return t && t.isNode() && !t.locked() && t.grabbable()
      }
      fy.nodeIsGrabbable = function (t) {
        return this.nodeIsDraggable(t) && t.interactive()
      }
      fy.load = function () {
        var t = this,
          e = t.cy.window(),
          r = o(function (q) {
            return q.selected()
          }, 'isSelected'),
          n = o(function (q) {
            var de = q.getRootNode()
            if (de && de.nodeType === 11 && de.host !== void 0) return de
          }, 'getShadowRoot'),
          i = o(function (q, de, ie, oe) {
            q == null && (q = t.cy)
            for (var V = 0; V < de.length; V++) {
              var Te = de[V]
              q.emit({ originalEvent: ie, type: Te, position: oe })
            }
          }, 'triggerEvents'),
          a = o(function (q) {
            return q.shiftKey || q.metaKey || q.ctrlKey
          }, 'isMultSelKeyDown'),
          s = o(function (q, de) {
            var ie = !0
            if (t.cy.hasCompoundNodes() && q && q.pannable())
              for (var oe = 0; de && oe < de.length; oe++) {
                var q = de[oe]
                if (q.isNode() && q.isParent() && !q.pannable()) {
                  ie = !1
                  break
                }
              }
            else ie = !0
            return ie
          }, 'allowPanningPassthrough'),
          l = o(function (q) {
            q[0]._private.grabbed = !0
          }, 'setGrabbed'),
          u = o(function (q) {
            q[0]._private.grabbed = !1
          }, 'setFreed'),
          h = o(function (q) {
            q[0]._private.rscratch.inDragLayer = !0
          }, 'setInDragLayer'),
          f = o(function (q) {
            q[0]._private.rscratch.inDragLayer = !1
          }, 'setOutDragLayer'),
          d = o(function (q) {
            q[0]._private.rscratch.isGrabTarget = !0
          }, 'setGrabTarget'),
          p = o(function (q) {
            q[0]._private.rscratch.isGrabTarget = !1
          }, 'removeGrabTarget'),
          m = o(function (q, de) {
            var ie = de.addToList,
              oe = ie.has(q)
            !oe && q.grabbable() && !q.locked() && (ie.merge(q), l(q))
          }, 'addToDragList'),
          g = o(function (q, de) {
            if (q.cy().hasCompoundNodes() && !(de.inDragLayer == null && de.addToList == null)) {
              var ie = q.descendants()
              de.inDragLayer && (ie.forEach(h), ie.connectedEdges().forEach(h)), de.addToList && m(ie, de)
            }
          }, 'addDescendantsToDrag'),
          y = o(function (q, de) {
            de = de || {}
            var ie = q.cy().hasCompoundNodes()
            de.inDragLayer &&
              (q.forEach(h),
              q
                .neighborhood()
                .stdFilter(function (oe) {
                  return !ie || oe.isEdge()
                })
                .forEach(h)),
              de.addToList &&
                q.forEach(function (oe) {
                  m(oe, de)
                }),
              g(q, de),
              b(q, { inDragLayer: de.inDragLayer }),
              t.updateCachedGrabbedEles()
          }, 'addNodesToDrag'),
          v = y,
          x = o(function (q) {
            q &&
              (t.getCachedZSortedEles().forEach(function (de) {
                u(de), f(de), p(de)
              }),
              t.updateCachedGrabbedEles())
          }, 'freeDraggedElements'),
          b = o(function (q, de) {
            if (!(de.inDragLayer == null && de.addToList == null) && q.cy().hasCompoundNodes()) {
              var ie = q.ancestors().orphans()
              if (!ie.same(q)) {
                var oe = ie.descendants().spawnSelf().merge(ie).unmerge(q).unmerge(q.descendants()),
                  V = oe.connectedEdges()
                de.inDragLayer && (V.forEach(h), oe.forEach(h)),
                  de.addToList &&
                    oe.forEach(function (Te) {
                      m(Te, de)
                    })
              }
            }
          }, 'updateAncestorsInDragLayer'),
          T = o(function () {
            document.activeElement != null && document.activeElement.blur != null && document.activeElement.blur()
          }, 'blurActiveDomElement'),
          S = typeof MutationObserver < 'u',
          w = typeof ResizeObserver < 'u'
        S
          ? ((t.removeObserver = new MutationObserver(function (xe) {
              for (var q = 0; q < xe.length; q++) {
                var de = xe[q],
                  ie = de.removedNodes
                if (ie)
                  for (var oe = 0; oe < ie.length; oe++) {
                    var V = ie[oe]
                    if (V === t.container) {
                      t.destroy()
                      break
                    }
                  }
              }
            })),
            t.container.parentNode && t.removeObserver.observe(t.container.parentNode, { childList: !0 }))
          : t.registerBinding(t.container, 'DOMNodeRemoved', function (xe) {
              t.destroy()
            })
        var E = p4(function () {
          t.cy.resize()
        }, 100)
        S && ((t.styleObserver = new MutationObserver(E)), t.styleObserver.observe(t.container, { attributes: !0 })),
          t.registerBinding(e, 'resize', E),
          w && ((t.resizeObserver = new ResizeObserver(E)), t.resizeObserver.observe(t.container))
        var _ = o(function (q, de) {
            for (; q != null; ) de(q), (q = q.parentNode)
          }, 'forEachUp'),
          C = o(function () {
            t.invalidateContainerClientCoordsCache()
          }, 'invalidateCoords')
        _(t.container, function (xe) {
          t.registerBinding(xe, 'transitionend', C), t.registerBinding(xe, 'animationend', C), t.registerBinding(xe, 'scroll', C)
        }),
          t.registerBinding(t.container, 'contextmenu', function (xe) {
            xe.preventDefault()
          })
        var D = o(function () {
            return t.selection[4] !== 0
          }, 'inBoxSelection'),
          O = o(function (q) {
            for (var de = t.findContainerClientCoords(), ie = de[0], oe = de[1], V = de[2], Te = de[3], W = q.touches ? q.touches : [q], pe = !1, ve = 0; ve < W.length; ve++) {
              var Pe = W[ve]
              if (ie <= Pe.clientX && Pe.clientX <= ie + V && oe <= Pe.clientY && Pe.clientY <= oe + Te) {
                pe = !0
                break
              }
            }
            if (!pe) return !1
            for (var _e = t.container, be = q.target, Ve = be.parentNode, De = !1; Ve; ) {
              if (Ve === _e) {
                De = !0
                break
              }
              Ve = Ve.parentNode
            }
            return !!De
          }, 'eventInContainer')
        t.registerBinding(
          t.container,
          'mousedown',
          o(function (q) {
            if (O(q) && !(t.hoverData.which === 1 && q.which !== 1)) {
              q.preventDefault(), T(), (t.hoverData.capture = !0), (t.hoverData.which = q.which)
              var de = t.cy,
                ie = [q.clientX, q.clientY],
                oe = t.projectIntoViewport(ie[0], ie[1]),
                V = t.selection,
                Te = t.findNearestElements(oe[0], oe[1], !0, !1),
                W = Te[0],
                pe = t.dragData.possibleDragElements
              ;(t.hoverData.mdownPos = oe), (t.hoverData.mdownGPos = ie)
              var ve = o(function () {
                ;(t.hoverData.tapholdCancelled = !1),
                  clearTimeout(t.hoverData.tapholdTimeout),
                  (t.hoverData.tapholdTimeout = setTimeout(function () {
                    if (!t.hoverData.tapholdCancelled) {
                      var qe = t.hoverData.down
                      qe
                        ? qe.emit({ originalEvent: q, type: 'taphold', position: { x: oe[0], y: oe[1] } })
                        : de.emit({ originalEvent: q, type: 'taphold', position: { x: oe[0], y: oe[1] } })
                    }
                  }, t.tapholdDuration))
              }, 'checkForTaphold')
              if (q.which == 3) {
                t.hoverData.cxtStarted = !0
                var Pe = { originalEvent: q, type: 'cxttapstart', position: { x: oe[0], y: oe[1] } }
                W ? (W.activate(), W.emit(Pe), (t.hoverData.down = W)) : de.emit(Pe), (t.hoverData.downTime = new Date().getTime()), (t.hoverData.cxtDragged = !1)
              } else if (q.which == 1) {
                W && W.activate()
                {
                  if (W != null && t.nodeIsGrabbable(W)) {
                    var _e = o(function (qe) {
                        return { originalEvent: q, type: qe, position: { x: oe[0], y: oe[1] } }
                      }, 'makeEvent'),
                      be = o(function (qe) {
                        qe.emit(_e('grab'))
                      }, 'triggerGrab')
                    if ((d(W), !W.selected())) (pe = t.dragData.possibleDragElements = de.collection()), v(W, { addToList: pe }), W.emit(_e('grabon')).emit(_e('grab'))
                    else {
                      pe = t.dragData.possibleDragElements = de.collection()
                      var Ve = de.$(function (De) {
                        return De.isNode() && De.selected() && t.nodeIsGrabbable(De)
                      })
                      y(Ve, { addToList: pe }), W.emit(_e('grabon')), Ve.forEach(be)
                    }
                    t.redrawHint('eles', !0), t.redrawHint('drag', !0)
                  }
                  ;(t.hoverData.down = W), (t.hoverData.downs = Te), (t.hoverData.downTime = new Date().getTime())
                }
                i(W, ['mousedown', 'tapstart', 'vmousedown'], q, { x: oe[0], y: oe[1] }),
                  W == null ? ((V[4] = 1), (t.data.bgActivePosistion = { x: oe[0], y: oe[1] }), t.redrawHint('select', !0), t.redraw()) : W.pannable() && (V[4] = 1),
                  ve()
              }
              ;(V[0] = V[2] = oe[0]), (V[1] = V[3] = oe[1])
            }
          }, 'mousedownHandler'),
          !1
        )
        var R = n(t.container)
        t.registerBinding(
          [e, R],
          'mousemove',
          o(function (q) {
            var de = t.hoverData.capture
            if (!(!de && !O(q))) {
              var ie = !1,
                oe = t.cy,
                V = oe.zoom(),
                Te = [q.clientX, q.clientY],
                W = t.projectIntoViewport(Te[0], Te[1]),
                pe = t.hoverData.mdownPos,
                ve = t.hoverData.mdownGPos,
                Pe = t.selection,
                _e = null
              !t.hoverData.draggingEles && !t.hoverData.dragging && !t.hoverData.selecting && (_e = t.findNearestElement(W[0], W[1], !0, !1))
              var be = t.hoverData.last,
                Ve = t.hoverData.down,
                De = [W[0] - Pe[2], W[1] - Pe[3]],
                qe = t.dragData.possibleDragElements,
                at
              if (ve) {
                var Rt = Te[0] - ve[0],
                  st = Rt * Rt,
                  Ue = Te[1] - ve[1],
                  ct = Ue * Ue,
                  We = st + ct
                t.hoverData.isOverThresholdDrag = at = We >= t.desktopTapThreshold2
              }
              var ot = a(q)
              at && (t.hoverData.tapholdCancelled = !0)
              var Yt = o(function () {
                var kt = (t.hoverData.dragDelta = t.hoverData.dragDelta || [])
                kt.length === 0 ? (kt.push(De[0]), kt.push(De[1])) : ((kt[0] += De[0]), (kt[1] += De[1]))
              }, 'updateDragDelta')
              ;(ie = !0), i(_e, ['mousemove', 'vmousemove', 'tapdrag'], q, { x: W[0], y: W[1] })
              var Tt = o(function () {
                ;(t.data.bgActivePosistion = void 0),
                  t.hoverData.selecting || oe.emit({ originalEvent: q, type: 'boxstart', position: { x: W[0], y: W[1] } }),
                  (Pe[4] = 1),
                  (t.hoverData.selecting = !0),
                  t.redrawHint('select', !0),
                  t.redraw()
              }, 'goIntoBoxMode')
              if (t.hoverData.which === 3) {
                if (at) {
                  var Mt = { originalEvent: q, type: 'cxtdrag', position: { x: W[0], y: W[1] } }
                  Ve ? Ve.emit(Mt) : oe.emit(Mt),
                    (t.hoverData.cxtDragged = !0),
                    (!t.hoverData.cxtOver || _e !== t.hoverData.cxtOver) &&
                      (t.hoverData.cxtOver && t.hoverData.cxtOver.emit({ originalEvent: q, type: 'cxtdragout', position: { x: W[0], y: W[1] } }),
                      (t.hoverData.cxtOver = _e),
                      _e && _e.emit({ originalEvent: q, type: 'cxtdragover', position: { x: W[0], y: W[1] } }))
                }
              } else if (t.hoverData.dragging) {
                if (((ie = !0), oe.panningEnabled() && oe.userPanningEnabled())) {
                  var bt
                  if (t.hoverData.justStartedPan) {
                    var ut = t.hoverData.mdownPos
                    ;(bt = { x: (W[0] - ut[0]) * V, y: (W[1] - ut[1]) * V }), (t.hoverData.justStartedPan = !1)
                  } else bt = { x: De[0] * V, y: De[1] * V }
                  oe.panBy(bt), oe.emit('dragpan'), (t.hoverData.dragged = !0)
                }
                W = t.projectIntoViewport(q.clientX, q.clientY)
              } else if (Pe[4] == 1 && (Ve == null || Ve.pannable())) {
                if (at) {
                  if (!t.hoverData.dragging && oe.boxSelectionEnabled() && (ot || !oe.panningEnabled() || !oe.userPanningEnabled())) Tt()
                  else if (!t.hoverData.selecting && oe.panningEnabled() && oe.userPanningEnabled()) {
                    var St = s(Ve, t.hoverData.downs)
                    St && ((t.hoverData.dragging = !0), (t.hoverData.justStartedPan = !0), (Pe[4] = 0), (t.data.bgActivePosistion = j1(pe)), t.redrawHint('select', !0), t.redraw())
                  }
                  Ve && Ve.pannable() && Ve.active() && Ve.unactivate()
                }
              } else {
                if (
                  (Ve && Ve.pannable() && Ve.active() && Ve.unactivate(),
                  (!Ve || !Ve.grabbed()) &&
                    _e != be &&
                    (be && i(be, ['mouseout', 'tapdragout'], q, { x: W[0], y: W[1] }), _e && i(_e, ['mouseover', 'tapdragover'], q, { x: W[0], y: W[1] }), (t.hoverData.last = _e)),
                  Ve)
                )
                  if (at) {
                    if (oe.boxSelectionEnabled() && ot)
                      Ve && Ve.grabbed() && (x(qe), Ve.emit('freeon'), qe.emit('free'), t.dragData.didDrag && (Ve.emit('dragfreeon'), qe.emit('dragfree'))), Tt()
                    else if (Ve && Ve.grabbed() && t.nodeIsDraggable(Ve)) {
                      var ft = !t.dragData.didDrag
                      ft && t.redrawHint('eles', !0), (t.dragData.didDrag = !0), t.hoverData.draggingEles || y(qe, { inDragLayer: !0 })
                      var vt = { x: 0, y: 0 }
                      if (_t(De[0]) && _t(De[1]) && ((vt.x += De[0]), (vt.y += De[1]), ft)) {
                        var nt = t.hoverData.dragDelta
                        nt && _t(nt[0]) && _t(nt[1]) && ((vt.x += nt[0]), (vt.y += nt[1]))
                      }
                      ;(t.hoverData.draggingEles = !0), qe.silentShift(vt).emit('position drag'), t.redrawHint('drag', !0), t.redraw()
                    }
                  } else Yt()
                ie = !0
              }
              if (((Pe[2] = W[0]), (Pe[3] = W[1]), ie)) return q.stopPropagation && q.stopPropagation(), q.preventDefault && q.preventDefault(), !1
            }
          }, 'mousemoveHandler'),
          !1
        )
        var k, L, A
        t.registerBinding(
          e,
          'mouseup',
          o(function (q) {
            if (!(t.hoverData.which === 1 && q.which !== 1 && t.hoverData.capture)) {
              var de = t.hoverData.capture
              if (de) {
                t.hoverData.capture = !1
                var ie = t.cy,
                  oe = t.projectIntoViewport(q.clientX, q.clientY),
                  V = t.selection,
                  Te = t.findNearestElement(oe[0], oe[1], !0, !1),
                  W = t.dragData.possibleDragElements,
                  pe = t.hoverData.down,
                  ve = a(q)
                if (
                  (t.data.bgActivePosistion && (t.redrawHint('select', !0), t.redraw()),
                  (t.hoverData.tapholdCancelled = !0),
                  (t.data.bgActivePosistion = void 0),
                  pe && pe.unactivate(),
                  t.hoverData.which === 3)
                ) {
                  var Pe = { originalEvent: q, type: 'cxttapend', position: { x: oe[0], y: oe[1] } }
                  if ((pe ? pe.emit(Pe) : ie.emit(Pe), !t.hoverData.cxtDragged)) {
                    var _e = { originalEvent: q, type: 'cxttap', position: { x: oe[0], y: oe[1] } }
                    pe ? pe.emit(_e) : ie.emit(_e)
                  }
                  ;(t.hoverData.cxtDragged = !1), (t.hoverData.which = null)
                } else if (t.hoverData.which === 1) {
                  if (
                    (i(Te, ['mouseup', 'tapend', 'vmouseup'], q, { x: oe[0], y: oe[1] }),
                    !t.dragData.didDrag &&
                      !t.hoverData.dragged &&
                      !t.hoverData.selecting &&
                      !t.hoverData.isOverThresholdDrag &&
                      (i(pe, ['click', 'tap', 'vclick'], q, { x: oe[0], y: oe[1] }),
                      (L = !1),
                      q.timeStamp - A <= ie.multiClickDebounceTime()
                        ? (k && clearTimeout(k), (L = !0), (A = null), i(pe, ['dblclick', 'dbltap', 'vdblclick'], q, { x: oe[0], y: oe[1] }))
                        : ((k = setTimeout(function () {
                            L || i(pe, ['oneclick', 'onetap', 'voneclick'], q, { x: oe[0], y: oe[1] })
                          }, ie.multiClickDebounceTime())),
                          (A = q.timeStamp))),
                    pe == null &&
                      !t.dragData.didDrag &&
                      !t.hoverData.selecting &&
                      !t.hoverData.dragged &&
                      !a(q) &&
                      (ie.$(r).unselect(['tapunselect']), W.length > 0 && t.redrawHint('eles', !0), (t.dragData.possibleDragElements = W = ie.collection())),
                    Te == pe &&
                      !t.dragData.didDrag &&
                      !t.hoverData.selecting &&
                      Te != null &&
                      Te._private.selectable &&
                      (t.hoverData.dragging ||
                        (ie.selectionType() === 'additive' || ve
                          ? Te.selected()
                            ? Te.unselect(['tapunselect'])
                            : Te.select(['tapselect'])
                          : ve || (ie.$(r).unmerge(Te).unselect(['tapunselect']), Te.select(['tapselect']))),
                      t.redrawHint('eles', !0)),
                    t.hoverData.selecting)
                  ) {
                    var be = ie.collection(t.getAllInBox(V[0], V[1], V[2], V[3]))
                    t.redrawHint('select', !0), be.length > 0 && t.redrawHint('eles', !0), ie.emit({ type: 'boxend', originalEvent: q, position: { x: oe[0], y: oe[1] } })
                    var Ve = o(function (at) {
                      return at.selectable() && !at.selected()
                    }, 'eleWouldBeSelected')
                    ie.selectionType() === 'additive' || ve || ie.$(r).unmerge(be).unselect(), be.emit('box').stdFilter(Ve).select().emit('boxselect'), t.redraw()
                  }
                  if ((t.hoverData.dragging && ((t.hoverData.dragging = !1), t.redrawHint('select', !0), t.redrawHint('eles', !0), t.redraw()), !V[4])) {
                    t.redrawHint('drag', !0), t.redrawHint('eles', !0)
                    var De = pe && pe.grabbed()
                    x(W), De && (pe.emit('freeon'), W.emit('free'), t.dragData.didDrag && (pe.emit('dragfreeon'), W.emit('dragfree')))
                  }
                }
                ;(V[4] = 0),
                  (t.hoverData.down = null),
                  (t.hoverData.cxtStarted = !1),
                  (t.hoverData.draggingEles = !1),
                  (t.hoverData.selecting = !1),
                  (t.hoverData.isOverThresholdDrag = !1),
                  (t.dragData.didDrag = !1),
                  (t.hoverData.dragged = !1),
                  (t.hoverData.dragDelta = []),
                  (t.hoverData.mdownPos = null),
                  (t.hoverData.mdownGPos = null),
                  (t.hoverData.which = null)
              }
            }
          }, 'mouseupHandler'),
          !1
        )
        var I = o(function (q) {
          if (!t.scrollingPage) {
            var de = t.cy,
              ie = de.zoom(),
              oe = de.pan(),
              V = t.projectIntoViewport(q.clientX, q.clientY),
              Te = [V[0] * ie + oe.x, V[1] * ie + oe.y]
            if (t.hoverData.draggingEles || t.hoverData.dragging || t.hoverData.cxtStarted || D()) {
              q.preventDefault()
              return
            }
            if (de.panningEnabled() && de.userPanningEnabled() && de.zoomingEnabled() && de.userZoomingEnabled()) {
              q.preventDefault(),
                (t.data.wheelZooming = !0),
                clearTimeout(t.data.wheelTimeout),
                (t.data.wheelTimeout = setTimeout(function () {
                  ;(t.data.wheelZooming = !1), t.redrawHint('eles', !0), t.redraw()
                }, 150))
              var W
              q.deltaY != null ? (W = q.deltaY / -250) : q.wheelDeltaY != null ? (W = q.wheelDeltaY / 1e3) : (W = q.wheelDelta / 1e3), (W = W * t.wheelSensitivity)
              var pe = q.deltaMode === 1
              pe && (W *= 33)
              var ve = de.zoom() * Math.pow(10, W)
              q.type === 'gesturechange' && (ve = t.gestureStartZoom * q.scale),
                de.zoom({ level: ve, renderedPosition: { x: Te[0], y: Te[1] } }),
                de.emit(q.type === 'gesturechange' ? 'pinchzoom' : 'scrollzoom')
            }
          }
        }, 'wheelHandler')
        t.registerBinding(t.container, 'wheel', I, !0),
          t.registerBinding(
            e,
            'scroll',
            o(function (q) {
              ;(t.scrollingPage = !0),
                clearTimeout(t.scrollingPageTimeout),
                (t.scrollingPageTimeout = setTimeout(function () {
                  t.scrollingPage = !1
                }, 250))
            }, 'scrollHandler'),
            !0
          ),
          t.registerBinding(
            t.container,
            'gesturestart',
            o(function (q) {
              ;(t.gestureStartZoom = t.cy.zoom()), t.hasTouchStarted || q.preventDefault()
            }, 'gestureStartHandler'),
            !0
          ),
          t.registerBinding(
            t.container,
            'gesturechange',
            function (xe) {
              t.hasTouchStarted || I(xe)
            },
            !0
          ),
          t.registerBinding(
            t.container,
            'mouseout',
            o(function (q) {
              var de = t.projectIntoViewport(q.clientX, q.clientY)
              t.cy.emit({ originalEvent: q, type: 'mouseout', position: { x: de[0], y: de[1] } })
            }, 'mouseOutHandler'),
            !1
          ),
          t.registerBinding(
            t.container,
            'mouseover',
            o(function (q) {
              var de = t.projectIntoViewport(q.clientX, q.clientY)
              t.cy.emit({ originalEvent: q, type: 'mouseover', position: { x: de[0], y: de[1] } })
            }, 'mouseOverHandler'),
            !1
          )
        var M,
          P,
          B,
          F,
          z,
          $,
          U,
          K,
          ee,
          Y,
          ce,
          Z,
          ue,
          Q = o(function (q, de, ie, oe) {
            return Math.sqrt((ie - q) * (ie - q) + (oe - de) * (oe - de))
          }, 'distance'),
          j = o(function (q, de, ie, oe) {
            return (ie - q) * (ie - q) + (oe - de) * (oe - de)
          }, 'distanceSq'),
          ne
        t.registerBinding(
          t.container,
          'touchstart',
          (ne = o(function (q) {
            if (((t.hasTouchStarted = !0), !!O(q))) {
              T(), (t.touchData.capture = !0), (t.data.bgActivePosistion = void 0)
              var de = t.cy,
                ie = t.touchData.now,
                oe = t.touchData.earlier
              if (q.touches[0]) {
                var V = t.projectIntoViewport(q.touches[0].clientX, q.touches[0].clientY)
                ;(ie[0] = V[0]), (ie[1] = V[1])
              }
              if (q.touches[1]) {
                var V = t.projectIntoViewport(q.touches[1].clientX, q.touches[1].clientY)
                ;(ie[2] = V[0]), (ie[3] = V[1])
              }
              if (q.touches[2]) {
                var V = t.projectIntoViewport(q.touches[2].clientX, q.touches[2].clientY)
                ;(ie[4] = V[0]), (ie[5] = V[1])
              }
              if (q.touches[1]) {
                ;(t.touchData.singleTouchMoved = !0), x(t.dragData.touchDragEles)
                var Te = t.findContainerClientCoords()
                ;(ee = Te[0]),
                  (Y = Te[1]),
                  (ce = Te[2]),
                  (Z = Te[3]),
                  (M = q.touches[0].clientX - ee),
                  (P = q.touches[0].clientY - Y),
                  (B = q.touches[1].clientX - ee),
                  (F = q.touches[1].clientY - Y),
                  (ue = 0 <= M && M <= ce && 0 <= B && B <= ce && 0 <= P && P <= Z && 0 <= F && F <= Z)
                var W = de.pan(),
                  pe = de.zoom()
                ;(z = Q(M, P, B, F)), ($ = j(M, P, B, F)), (U = [(M + B) / 2, (P + F) / 2]), (K = [(U[0] - W.x) / pe, (U[1] - W.y) / pe])
                var ve = 200,
                  Pe = ve * ve
                if ($ < Pe && !q.touches[2]) {
                  var _e = t.findNearestElement(ie[0], ie[1], !0, !0),
                    be = t.findNearestElement(ie[2], ie[3], !0, !0)
                  _e && _e.isNode()
                    ? (_e.activate().emit({ originalEvent: q, type: 'cxttapstart', position: { x: ie[0], y: ie[1] } }), (t.touchData.start = _e))
                    : be && be.isNode()
                      ? (be.activate().emit({ originalEvent: q, type: 'cxttapstart', position: { x: ie[0], y: ie[1] } }), (t.touchData.start = be))
                      : de.emit({ originalEvent: q, type: 'cxttapstart', position: { x: ie[0], y: ie[1] } }),
                    t.touchData.start && (t.touchData.start._private.grabbed = !1),
                    (t.touchData.cxt = !0),
                    (t.touchData.cxtDragged = !1),
                    (t.data.bgActivePosistion = void 0),
                    t.redraw()
                  return
                }
              }
              if (q.touches[2]) de.boxSelectionEnabled() && q.preventDefault()
              else if (!q.touches[1]) {
                if (q.touches[0]) {
                  var Ve = t.findNearestElements(ie[0], ie[1], !0, !0),
                    De = Ve[0]
                  if (De != null && (De.activate(), (t.touchData.start = De), (t.touchData.starts = Ve), t.nodeIsGrabbable(De))) {
                    var qe = (t.dragData.touchDragEles = de.collection()),
                      at = null
                    t.redrawHint('eles', !0),
                      t.redrawHint('drag', !0),
                      De.selected()
                        ? ((at = de.$(function (We) {
                            return We.selected() && t.nodeIsGrabbable(We)
                          })),
                          y(at, { addToList: qe }))
                        : v(De, { addToList: qe }),
                      d(De)
                    var Rt = o(function (ot) {
                      return { originalEvent: q, type: ot, position: { x: ie[0], y: ie[1] } }
                    }, 'makeEvent')
                    De.emit(Rt('grabon')),
                      at
                        ? at.forEach(function (We) {
                            We.emit(Rt('grab'))
                          })
                        : De.emit(Rt('grab'))
                  }
                  i(De, ['touchstart', 'tapstart', 'vmousedown'], q, { x: ie[0], y: ie[1] }),
                    De == null && ((t.data.bgActivePosistion = { x: V[0], y: V[1] }), t.redrawHint('select', !0), t.redraw()),
                    (t.touchData.singleTouchMoved = !1),
                    (t.touchData.singleTouchStartTime = +new Date()),
                    clearTimeout(t.touchData.tapholdTimeout),
                    (t.touchData.tapholdTimeout = setTimeout(function () {
                      t.touchData.singleTouchMoved === !1 && !t.pinching && !t.touchData.selecting && i(t.touchData.start, ['taphold'], q, { x: ie[0], y: ie[1] })
                    }, t.tapholdDuration))
                }
              }
              if (q.touches.length >= 1) {
                for (var st = (t.touchData.startPosition = [null, null, null, null, null, null]), Ue = 0; Ue < ie.length; Ue++) st[Ue] = oe[Ue] = ie[Ue]
                var ct = q.touches[0]
                t.touchData.startGPosition = [ct.clientX, ct.clientY]
              }
            }
          }, 'touchstartHandler')),
          !1
        )
        var te
        t.registerBinding(
          e,
          'touchmove',
          (te = o(function (q) {
            var de = t.touchData.capture
            if (!(!de && !O(q))) {
              var ie = t.selection,
                oe = t.cy,
                V = t.touchData.now,
                Te = t.touchData.earlier,
                W = oe.zoom()
              if (q.touches[0]) {
                var pe = t.projectIntoViewport(q.touches[0].clientX, q.touches[0].clientY)
                ;(V[0] = pe[0]), (V[1] = pe[1])
              }
              if (q.touches[1]) {
                var pe = t.projectIntoViewport(q.touches[1].clientX, q.touches[1].clientY)
                ;(V[2] = pe[0]), (V[3] = pe[1])
              }
              if (q.touches[2]) {
                var pe = t.projectIntoViewport(q.touches[2].clientX, q.touches[2].clientY)
                ;(V[4] = pe[0]), (V[5] = pe[1])
              }
              var ve = t.touchData.startGPosition,
                Pe
              if (de && q.touches[0] && ve) {
                for (var _e = [], be = 0; be < V.length; be++) _e[be] = V[be] - Te[be]
                var Ve = q.touches[0].clientX - ve[0],
                  De = Ve * Ve,
                  qe = q.touches[0].clientY - ve[1],
                  at = qe * qe,
                  Rt = De + at
                Pe = Rt >= t.touchTapThreshold2
              }
              if (de && t.touchData.cxt) {
                q.preventDefault()
                var st = q.touches[0].clientX - ee,
                  Ue = q.touches[0].clientY - Y,
                  ct = q.touches[1].clientX - ee,
                  We = q.touches[1].clientY - Y,
                  ot = j(st, Ue, ct, We),
                  Yt = ot / $,
                  Tt = 150,
                  Mt = Tt * Tt,
                  bt = 1.5,
                  ut = bt * bt
                if (Yt >= ut || ot >= Mt) {
                  ;(t.touchData.cxt = !1), (t.data.bgActivePosistion = void 0), t.redrawHint('select', !0)
                  var St = { originalEvent: q, type: 'cxttapend', position: { x: V[0], y: V[1] } }
                  t.touchData.start ? (t.touchData.start.unactivate().emit(St), (t.touchData.start = null)) : oe.emit(St)
                }
              }
              if (de && t.touchData.cxt) {
                var St = { originalEvent: q, type: 'cxtdrag', position: { x: V[0], y: V[1] } }
                ;(t.data.bgActivePosistion = void 0),
                  t.redrawHint('select', !0),
                  t.touchData.start ? t.touchData.start.emit(St) : oe.emit(St),
                  t.touchData.start && (t.touchData.start._private.grabbed = !1),
                  (t.touchData.cxtDragged = !0)
                var ft = t.findNearestElement(V[0], V[1], !0, !0)
                ;(!t.touchData.cxtOver || ft !== t.touchData.cxtOver) &&
                  (t.touchData.cxtOver && t.touchData.cxtOver.emit({ originalEvent: q, type: 'cxtdragout', position: { x: V[0], y: V[1] } }),
                  (t.touchData.cxtOver = ft),
                  ft && ft.emit({ originalEvent: q, type: 'cxtdragover', position: { x: V[0], y: V[1] } }))
              } else if (de && q.touches[2] && oe.boxSelectionEnabled())
                q.preventDefault(),
                  (t.data.bgActivePosistion = void 0),
                  (this.lastThreeTouch = +new Date()),
                  t.touchData.selecting || oe.emit({ originalEvent: q, type: 'boxstart', position: { x: V[0], y: V[1] } }),
                  (t.touchData.selecting = !0),
                  (t.touchData.didSelect = !0),
                  (ie[4] = 1),
                  !ie || ie.length === 0 || ie[0] === void 0
                    ? ((ie[0] = (V[0] + V[2] + V[4]) / 3), (ie[1] = (V[1] + V[3] + V[5]) / 3), (ie[2] = (V[0] + V[2] + V[4]) / 3 + 1), (ie[3] = (V[1] + V[3] + V[5]) / 3 + 1))
                    : ((ie[2] = (V[0] + V[2] + V[4]) / 3), (ie[3] = (V[1] + V[3] + V[5]) / 3)),
                  t.redrawHint('select', !0),
                  t.redraw()
              else if (de && q.touches[1] && !t.touchData.didSelect && oe.zoomingEnabled() && oe.panningEnabled() && oe.userZoomingEnabled() && oe.userPanningEnabled()) {
                q.preventDefault(), (t.data.bgActivePosistion = void 0), t.redrawHint('select', !0)
                var vt = t.dragData.touchDragEles
                if (vt) {
                  t.redrawHint('drag', !0)
                  for (var nt = 0; nt < vt.length; nt++) {
                    var pn = vt[nt]._private
                    ;(pn.grabbed = !1), (pn.rscratch.inDragLayer = !1)
                  }
                }
                var kt = t.touchData.start,
                  st = q.touches[0].clientX - ee,
                  Ue = q.touches[0].clientY - Y,
                  ct = q.touches[1].clientX - ee,
                  We = q.touches[1].clientY - Y,
                  On = Q(st, Ue, ct, We),
                  tn = On / z
                if (ue) {
                  var Mr = st - M,
                    Ir = Ue - P,
                    Pn = ct - B,
                    Dt = We - F,
                    Ce = (Mr + Pn) / 2,
                    tt = (Ir + Dt) / 2,
                    Ct = oe.zoom(),
                    gr = Ct * tn,
                    rn = oe.pan(),
                    yn = K[0] * Ct + rn.x,
                    Zr = K[1] * Ct + rn.y,
                    Oi = { x: (-gr / Ct) * (yn - rn.x - Ce) + yn, y: (-gr / Ct) * (Zr - rn.y - tt) + Zr }
                  if (kt && kt.active()) {
                    var vt = t.dragData.touchDragEles
                    x(vt),
                      t.redrawHint('drag', !0),
                      t.redrawHint('eles', !0),
                      kt.unactivate().emit('freeon'),
                      vt.emit('free'),
                      t.dragData.didDrag && (kt.emit('dragfreeon'), vt.emit('dragfree'))
                  }
                  oe.viewport({ zoom: gr, pan: Oi, cancelOnFailedZoom: !0 }), oe.emit('pinchzoom'), (z = On), (M = st), (P = Ue), (B = ct), (F = We), (t.pinching = !0)
                }
                if (q.touches[0]) {
                  var pe = t.projectIntoViewport(q.touches[0].clientX, q.touches[0].clientY)
                  ;(V[0] = pe[0]), (V[1] = pe[1])
                }
                if (q.touches[1]) {
                  var pe = t.projectIntoViewport(q.touches[1].clientX, q.touches[1].clientY)
                  ;(V[2] = pe[0]), (V[3] = pe[1])
                }
                if (q.touches[2]) {
                  var pe = t.projectIntoViewport(q.touches[2].clientX, q.touches[2].clientY)
                  ;(V[4] = pe[0]), (V[5] = pe[1])
                }
              } else if (q.touches[0] && !t.touchData.didSelect) {
                var ei = t.touchData.start,
                  Sn = t.touchData.last,
                  ft
                if (
                  (!t.hoverData.draggingEles && !t.swipePanning && (ft = t.findNearestElement(V[0], V[1], !0, !0)),
                  de && ei != null && q.preventDefault(),
                  de && ei != null && t.nodeIsDraggable(ei))
                )
                  if (Pe) {
                    var vt = t.dragData.touchDragEles,
                      Hr = !t.dragData.didDrag
                    Hr && y(vt, { inDragLayer: !0 }), (t.dragData.didDrag = !0)
                    var et = { x: 0, y: 0 }
                    if (_t(_e[0]) && _t(_e[1]) && ((et.x += _e[0]), (et.y += _e[1]), Hr)) {
                      t.redrawHint('eles', !0)
                      var gt = t.touchData.dragDelta
                      gt && _t(gt[0]) && _t(gt[1]) && ((et.x += gt[0]), (et.y += gt[1]))
                    }
                    ;(t.hoverData.draggingEles = !0),
                      vt.silentShift(et).emit('position drag'),
                      t.redrawHint('drag', !0),
                      t.touchData.startPosition[0] == Te[0] && t.touchData.startPosition[1] == Te[1] && t.redrawHint('eles', !0),
                      t.redraw()
                  } else {
                    var gt = (t.touchData.dragDelta = t.touchData.dragDelta || [])
                    gt.length === 0 ? (gt.push(_e[0]), gt.push(_e[1])) : ((gt[0] += _e[0]), (gt[1] += _e[1]))
                  }
                if (
                  (i(ei || ft, ['touchmove', 'tapdrag', 'vmousemove'], q, { x: V[0], y: V[1] }),
                  (!ei || !ei.grabbed()) &&
                    ft != Sn &&
                    (Sn && Sn.emit({ originalEvent: q, type: 'tapdragout', position: { x: V[0], y: V[1] } }),
                    ft && ft.emit({ originalEvent: q, type: 'tapdragover', position: { x: V[0], y: V[1] } })),
                  (t.touchData.last = ft),
                  de)
                )
                  for (var nt = 0; nt < V.length; nt++) V[nt] && t.touchData.startPosition[nt] && Pe && (t.touchData.singleTouchMoved = !0)
                if (de && (ei == null || ei.pannable()) && oe.panningEnabled() && oe.userPanningEnabled()) {
                  var Kt = s(ei, t.touchData.starts)
                  Kt &&
                    (q.preventDefault(),
                    t.data.bgActivePosistion || (t.data.bgActivePosistion = j1(t.touchData.startPosition)),
                    t.swipePanning
                      ? (oe.panBy({ x: _e[0] * W, y: _e[1] * W }), oe.emit('dragpan'))
                      : Pe &&
                        ((t.swipePanning = !0),
                        oe.panBy({ x: Ve * W, y: qe * W }),
                        oe.emit('dragpan'),
                        ei && (ei.unactivate(), t.redrawHint('select', !0), (t.touchData.start = null))))
                  var pe = t.projectIntoViewport(q.touches[0].clientX, q.touches[0].clientY)
                  ;(V[0] = pe[0]), (V[1] = pe[1])
                }
              }
              for (var be = 0; be < V.length; be++) Te[be] = V[be]
              de &&
                q.touches.length > 0 &&
                !t.hoverData.draggingEles &&
                !t.swipePanning &&
                t.data.bgActivePosistion != null &&
                ((t.data.bgActivePosistion = void 0), t.redrawHint('select', !0), t.redraw())
            }
          }, 'touchmoveHandler')),
          !1
        )
        var he
        t.registerBinding(
          e,
          'touchcancel',
          (he = o(function (q) {
            var de = t.touchData.start
            ;(t.touchData.capture = !1), de && de.unactivate()
          }, 'touchcancelHandler'))
        )
        var le, J, Se, se
        if (
          (t.registerBinding(
            e,
            'touchend',
            (le = o(function (q) {
              var de = t.touchData.start,
                ie = t.touchData.capture
              if (ie) q.touches.length === 0 && (t.touchData.capture = !1), q.preventDefault()
              else return
              var oe = t.selection
              ;(t.swipePanning = !1), (t.hoverData.draggingEles = !1)
              var V = t.cy,
                Te = V.zoom(),
                W = t.touchData.now,
                pe = t.touchData.earlier
              if (q.touches[0]) {
                var ve = t.projectIntoViewport(q.touches[0].clientX, q.touches[0].clientY)
                ;(W[0] = ve[0]), (W[1] = ve[1])
              }
              if (q.touches[1]) {
                var ve = t.projectIntoViewport(q.touches[1].clientX, q.touches[1].clientY)
                ;(W[2] = ve[0]), (W[3] = ve[1])
              }
              if (q.touches[2]) {
                var ve = t.projectIntoViewport(q.touches[2].clientX, q.touches[2].clientY)
                ;(W[4] = ve[0]), (W[5] = ve[1])
              }
              de && de.unactivate()
              var Pe
              if (t.touchData.cxt) {
                if (((Pe = { originalEvent: q, type: 'cxttapend', position: { x: W[0], y: W[1] } }), de ? de.emit(Pe) : V.emit(Pe), !t.touchData.cxtDragged)) {
                  var _e = { originalEvent: q, type: 'cxttap', position: { x: W[0], y: W[1] } }
                  de ? de.emit(_e) : V.emit(_e)
                }
                t.touchData.start && (t.touchData.start._private.grabbed = !1), (t.touchData.cxt = !1), (t.touchData.start = null), t.redraw()
                return
              }
              if (!q.touches[2] && V.boxSelectionEnabled() && t.touchData.selecting) {
                t.touchData.selecting = !1
                var be = V.collection(t.getAllInBox(oe[0], oe[1], oe[2], oe[3]))
                ;(oe[0] = void 0),
                  (oe[1] = void 0),
                  (oe[2] = void 0),
                  (oe[3] = void 0),
                  (oe[4] = 0),
                  t.redrawHint('select', !0),
                  V.emit({ type: 'boxend', originalEvent: q, position: { x: W[0], y: W[1] } })
                var Ve = o(function (Mt) {
                  return Mt.selectable() && !Mt.selected()
                }, 'eleWouldBeSelected')
                be.emit('box').stdFilter(Ve).select().emit('boxselect'), be.nonempty() && t.redrawHint('eles', !0), t.redraw()
              }
              if ((de?.unactivate(), q.touches[2])) (t.data.bgActivePosistion = void 0), t.redrawHint('select', !0)
              else if (!q.touches[1]) {
                if (!q.touches[0]) {
                  if (!q.touches[0]) {
                    ;(t.data.bgActivePosistion = void 0), t.redrawHint('select', !0)
                    var De = t.dragData.touchDragEles
                    if (de != null) {
                      var qe = de._private.grabbed
                      x(De),
                        t.redrawHint('drag', !0),
                        t.redrawHint('eles', !0),
                        qe && (de.emit('freeon'), De.emit('free'), t.dragData.didDrag && (de.emit('dragfreeon'), De.emit('dragfree'))),
                        i(de, ['touchend', 'tapend', 'vmouseup', 'tapdragout'], q, { x: W[0], y: W[1] }),
                        de.unactivate(),
                        (t.touchData.start = null)
                    } else {
                      var at = t.findNearestElement(W[0], W[1], !0, !0)
                      i(at, ['touchend', 'tapend', 'vmouseup', 'tapdragout'], q, { x: W[0], y: W[1] })
                    }
                    var Rt = t.touchData.startPosition[0] - W[0],
                      st = Rt * Rt,
                      Ue = t.touchData.startPosition[1] - W[1],
                      ct = Ue * Ue,
                      We = st + ct,
                      ot = We * Te * Te
                    t.touchData.singleTouchMoved ||
                      (de || V.$(':selected').unselect(['tapunselect']),
                      i(de, ['tap', 'vclick'], q, { x: W[0], y: W[1] }),
                      (J = !1),
                      q.timeStamp - se <= V.multiClickDebounceTime()
                        ? (Se && clearTimeout(Se), (J = !0), (se = null), i(de, ['dbltap', 'vdblclick'], q, { x: W[0], y: W[1] }))
                        : ((Se = setTimeout(function () {
                            J || i(de, ['onetap', 'voneclick'], q, { x: W[0], y: W[1] })
                          }, V.multiClickDebounceTime())),
                          (se = q.timeStamp))),
                      de != null &&
                        !t.dragData.didDrag &&
                        de._private.selectable &&
                        ot < t.touchTapThreshold2 &&
                        !t.pinching &&
                        (V.selectionType() === 'single'
                          ? (V.$(r).unmerge(de).unselect(['tapunselect']), de.select(['tapselect']))
                          : de.selected()
                            ? de.unselect(['tapunselect'])
                            : de.select(['tapselect']),
                        t.redrawHint('eles', !0)),
                      (t.touchData.singleTouchMoved = !0)
                  }
                }
              }
              for (var Yt = 0; Yt < W.length; Yt++) pe[Yt] = W[Yt]
              ;(t.dragData.didDrag = !1),
                q.touches.length === 0 &&
                  ((t.touchData.dragDelta = []),
                  (t.touchData.startPosition = [null, null, null, null, null, null]),
                  (t.touchData.startGPosition = null),
                  (t.touchData.didSelect = !1)),
                q.touches.length < 2 &&
                  (q.touches.length === 1 && (t.touchData.startGPosition = [q.touches[0].clientX, q.touches[0].clientY]), (t.pinching = !1), t.redrawHint('eles', !0), t.redraw())
            }, 'touchendHandler')),
            !1
          ),
          typeof TouchEvent > 'u')
        ) {
          var ae = [],
            Oe = o(function (q) {
              return {
                clientX: q.clientX,
                clientY: q.clientY,
                force: 1,
                identifier: q.pointerId,
                pageX: q.pageX,
                pageY: q.pageY,
                radiusX: q.width / 2,
                radiusY: q.height / 2,
                screenX: q.screenX,
                screenY: q.screenY,
                target: q.target
              }
            }, 'makeTouch'),
            ye = o(function (q) {
              return { event: q, touch: Oe(q) }
            }, 'makePointer'),
            Be = o(function (q) {
              ae.push(ye(q))
            }, 'addPointer'),
            He = o(function (q) {
              for (var de = 0; de < ae.length; de++) {
                var ie = ae[de]
                if (ie.event.pointerId === q.pointerId) {
                  ae.splice(de, 1)
                  return
                }
              }
            }, 'removePointer'),
            ze = o(function (q) {
              var de = ae.filter(function (ie) {
                return ie.event.pointerId === q.pointerId
              })[0]
              ;(de.event = q), (de.touch = Oe(q))
            }, 'updatePointer'),
            Le = o(function (q) {
              q.touches = ae.map(function (de) {
                return de.touch
              })
            }, 'addTouchesToEvent'),
            Ie = o(function (q) {
              return q.pointerType === 'mouse' || q.pointerType === 4
            }, 'pointerIsMouse')
          t.registerBinding(t.container, 'pointerdown', function (xe) {
            Ie(xe) || (xe.preventDefault(), Be(xe), Le(xe), ne(xe))
          }),
            t.registerBinding(t.container, 'pointerup', function (xe) {
              Ie(xe) || (He(xe), Le(xe), le(xe))
            }),
            t.registerBinding(t.container, 'pointercancel', function (xe) {
              Ie(xe) || (He(xe), Le(xe), he(xe))
            }),
            t.registerBinding(t.container, 'pointermove', function (xe) {
              Ie(xe) || (xe.preventDefault(), ze(xe), Le(xe), te(xe))
            })
        }
      }
      sh = {}
      sh.generatePolygon = function (t, e) {
        return (this.nodeShapes[t] = {
          renderer: this,
          name: t,
          points: e,
          draw: o(function (n, i, a, s, l, u) {
            this.renderer.nodeShapeImpl('polygon', n, i, a, s, l, this.points)
          }, 'draw'),
          intersectLine: o(function (n, i, a, s, l, u, h, f) {
            return a4(l, u, this.points, n, i, a / 2, s / 2, h)
          }, 'intersectLine'),
          checkPoint: o(function (n, i, a, s, l, u, h, f) {
            return ih(n, i, this.points, u, h, s, l, [0, -1], a)
          }, 'checkPoint')
        })
      }
      sh.generateEllipse = function () {
        return (this.nodeShapes.ellipse = {
          renderer: this,
          name: 'ellipse',
          draw: o(function (e, r, n, i, a, s) {
            this.renderer.nodeShapeImpl(this.name, e, r, n, i, a)
          }, 'draw'),
          intersectLine: o(function (e, r, n, i, a, s, l, u) {
            return fXe(a, s, e, r, n / 2 + l, i / 2 + l)
          }, 'intersectLine'),
          checkPoint: o(function (e, r, n, i, a, s, l, u) {
            return jp(e, r, i, a, s, l, n)
          }, 'checkPoint')
        })
      }
      sh.generateRoundPolygon = function (t, e) {
        return (this.nodeShapes[t] = {
          renderer: this,
          name: t,
          points: e,
          getOrCreateCorners: o(function (n, i, a, s, l, u, h) {
            if (u[h] !== void 0 && u[h + '-cx'] === n && u[h + '-cy'] === i) return u[h]
            ;(u[h] = new Array(e.length / 2)), (u[h + '-cx'] = n), (u[h + '-cy'] = i)
            var f = a / 2,
              d = s / 2
            l = l === 'auto' ? Lge(a, s) : l
            for (var p = new Array(e.length / 2), m = 0; m < e.length / 2; m++) p[m] = { x: n + f * e[m * 2], y: i + d * e[m * 2 + 1] }
            var g,
              y,
              v,
              x,
              b = p.length
            for (y = p[b - 1], g = 0; g < b; g++) (v = p[g % b]), (x = p[(g + 1) % b]), (u[h][g] = rF(y, v, x, l)), (y = v), (v = x)
            return u[h]
          }, 'getOrCreateCorners'),
          draw: o(function (n, i, a, s, l, u, h) {
            this.renderer.nodeShapeImpl('round-polygon', n, i, a, s, l, this.points, this.getOrCreateCorners(i, a, s, l, u, h, 'drawCorners'))
          }, 'draw'),
          intersectLine: o(function (n, i, a, s, l, u, h, f, d) {
            return dXe(l, u, this.points, n, i, a, s, h, this.getOrCreateCorners(n, i, a, s, f, d, 'corners'))
          }, 'intersectLine'),
          checkPoint: o(function (n, i, a, s, l, u, h, f, d) {
            return hXe(n, i, this.points, u, h, s, l, this.getOrCreateCorners(u, h, s, l, f, d, 'corners'))
          }, 'checkPoint')
        })
      }
      sh.generateRoundRectangle = function () {
        return (this.nodeShapes['round-rectangle'] = this.nodeShapes.roundrectangle =
          {
            renderer: this,
            name: 'round-rectangle',
            points: Ts(4, 0),
            draw: o(function (e, r, n, i, a, s) {
              this.renderer.nodeShapeImpl(this.name, e, r, n, i, a, this.points, s)
            }, 'draw'),
            intersectLine: o(function (e, r, n, i, a, s, l, u) {
              return _ge(a, s, e, r, n, i, l, u)
            }, 'intersectLine'),
            checkPoint: o(function (e, r, n, i, a, s, l, u) {
              var h = i / 2,
                f = a / 2
              ;(u = u === 'auto' ? Zp(i, a) : u), (u = Math.min(h, f, u))
              var d = u * 2
              return !!(
                ih(e, r, this.points, s, l, i, a - d, [0, -1], n) ||
                ih(e, r, this.points, s, l, i - d, a, [0, -1], n) ||
                jp(e, r, d, d, s - h + u, l - f + u, n) ||
                jp(e, r, d, d, s + h - u, l - f + u, n) ||
                jp(e, r, d, d, s + h - u, l + f - u, n) ||
                jp(e, r, d, d, s - h + u, l + f - u, n)
              )
            }, 'checkPoint')
          })
      }
      sh.generateCutRectangle = function () {
        return (this.nodeShapes['cut-rectangle'] = this.nodeShapes.cutrectangle =
          {
            renderer: this,
            name: 'cut-rectangle',
            cornerLength: HB(),
            points: Ts(4, 0),
            draw: o(function (e, r, n, i, a, s) {
              this.renderer.nodeShapeImpl(this.name, e, r, n, i, a, null, s)
            }, 'draw'),
            generateCutTrianglePts: o(function (e, r, n, i, a) {
              var s = a === 'auto' ? this.cornerLength : a,
                l = r / 2,
                u = e / 2,
                h = n - u,
                f = n + u,
                d = i - l,
                p = i + l
              return {
                topLeft: [h, d + s, h + s, d, h + s, d + s],
                topRight: [f - s, d, f, d + s, f - s, d + s],
                bottomRight: [f, p - s, f - s, p, f - s, p - s],
                bottomLeft: [h + s, p, h, p - s, h + s, p - s]
              }
            }, 'generateCutTrianglePts'),
            intersectLine: o(function (e, r, n, i, a, s, l, u) {
              var h = this.generateCutTrianglePts(n + 2 * l, i + 2 * l, e, r, u),
                f = [].concat.apply([], [h.topLeft.splice(0, 4), h.topRight.splice(0, 4), h.bottomRight.splice(0, 4), h.bottomLeft.splice(0, 4)])
              return a4(a, s, f, e, r)
            }, 'intersectLine'),
            checkPoint: o(function (e, r, n, i, a, s, l, u) {
              var h = u === 'auto' ? this.cornerLength : u
              if (ih(e, r, this.points, s, l, i, a - 2 * h, [0, -1], n) || ih(e, r, this.points, s, l, i - 2 * h, a, [0, -1], n)) return !0
              var f = this.generateCutTrianglePts(i, a, s, l)
              return qs(e, r, f.topLeft) || qs(e, r, f.topRight) || qs(e, r, f.bottomRight) || qs(e, r, f.bottomLeft)
            }, 'checkPoint')
          })
      }
      sh.generateBarrel = function () {
        return (this.nodeShapes.barrel = {
          renderer: this,
          name: 'barrel',
          points: Ts(4, 0),
          draw: o(function (e, r, n, i, a, s) {
            this.renderer.nodeShapeImpl(this.name, e, r, n, i, a)
          }, 'draw'),
          intersectLine: o(function (e, r, n, i, a, s, l, u) {
            var h = 0.15,
              f = 0.5,
              d = 0.85,
              p = this.generateBarrelBezierPts(n + 2 * l, i + 2 * l, e, r),
              m = o(function (v) {
                var x = Q1({ x: v[0], y: v[1] }, { x: v[2], y: v[3] }, { x: v[4], y: v[5] }, h),
                  b = Q1({ x: v[0], y: v[1] }, { x: v[2], y: v[3] }, { x: v[4], y: v[5] }, f),
                  T = Q1({ x: v[0], y: v[1] }, { x: v[2], y: v[3] }, { x: v[4], y: v[5] }, d)
                return [v[0], v[1], x.x, x.y, b.x, b.y, T.x, T.y, v[4], v[5]]
              }, 'approximateBarrelCurvePts'),
              g = [].concat(m(p.topLeft), m(p.topRight), m(p.bottomRight), m(p.bottomLeft))
            return a4(a, s, g, e, r)
          }, 'intersectLine'),
          generateBarrelBezierPts: o(function (e, r, n, i) {
            var a = r / 2,
              s = e / 2,
              l = n - s,
              u = n + s,
              h = i - a,
              f = i + a,
              d = TB(e, r),
              p = d.heightOffset,
              m = d.widthOffset,
              g = d.ctrlPtOffsetPct * e,
              y = {
                topLeft: [l, h + p, l + g, h, l + m, h],
                topRight: [u - m, h, u - g, h, u, h + p],
                bottomRight: [u, f - p, u - g, f, u - m, f],
                bottomLeft: [l + m, f, l + g, f, l, f - p]
              }
            return (y.topLeft.isTop = !0), (y.topRight.isTop = !0), (y.bottomLeft.isBottom = !0), (y.bottomRight.isBottom = !0), y
          }, 'generateBarrelBezierPts'),
          checkPoint: o(function (e, r, n, i, a, s, l, u) {
            var h = TB(i, a),
              f = h.heightOffset,
              d = h.widthOffset
            if (ih(e, r, this.points, s, l, i, a - 2 * f, [0, -1], n) || ih(e, r, this.points, s, l, i - 2 * d, a, [0, -1], n)) return !0
            for (
              var p = this.generateBarrelBezierPts(i, a, s, l),
                m = o(function (C, D, O) {
                  var R = O[4],
                    k = O[2],
                    L = O[0],
                    A = O[5],
                    I = O[1],
                    M = Math.min(R, L),
                    P = Math.max(R, L),
                    B = Math.min(A, I),
                    F = Math.max(A, I)
                  if (M <= C && C <= P && B <= D && D <= F) {
                    var z = pXe(R, k, L),
                      $ = oXe(z[0], z[1], z[2], C),
                      U = $.filter(function (K) {
                        return 0 <= K && K <= 1
                      })
                    if (U.length > 0) return U[0]
                  }
                  return null
                }, 'getCurveT'),
                g = Object.keys(p),
                y = 0;
              y < g.length;
              y++
            ) {
              var v = g[y],
                x = p[v],
                b = m(e, r, x)
              if (b != null) {
                var T = x[5],
                  S = x[3],
                  w = x[1],
                  E = sa(T, S, w, b)
                if ((x.isTop && E <= r) || (x.isBottom && r <= E)) return !0
              }
            }
            return !1
          }, 'checkPoint')
        })
      }
      sh.generateBottomRoundrectangle = function () {
        return (this.nodeShapes['bottom-round-rectangle'] = this.nodeShapes.bottomroundrectangle =
          {
            renderer: this,
            name: 'bottom-round-rectangle',
            points: Ts(4, 0),
            draw: o(function (e, r, n, i, a, s) {
              this.renderer.nodeShapeImpl(this.name, e, r, n, i, a, this.points, s)
            }, 'draw'),
            intersectLine: o(function (e, r, n, i, a, s, l, u) {
              var h = e - (n / 2 + l),
                f = r - (i / 2 + l),
                d = f,
                p = e + (n / 2 + l),
                m = Mf(a, s, e, r, h, f, p, d, !1)
              return m.length > 0 ? m : _ge(a, s, e, r, n, i, l, u)
            }, 'intersectLine'),
            checkPoint: o(function (e, r, n, i, a, s, l, u) {
              u = u === 'auto' ? Zp(i, a) : u
              var h = 2 * u
              if (ih(e, r, this.points, s, l, i, a - h, [0, -1], n) || ih(e, r, this.points, s, l, i - h, a, [0, -1], n)) return !0
              var f = i / 2 + 2 * n,
                d = a / 2 + 2 * n,
                p = [s - f, l - d, s - f, l, s + f, l, s + f, l - d]
              return !!(qs(e, r, p) || jp(e, r, h, h, s + i / 2 - u, l + a / 2 - u, n) || jp(e, r, h, h, s - i / 2 + u, l + a / 2 - u, n))
            }, 'checkPoint')
          })
      }
      sh.registerNodeShapes = function () {
        var t = (this.nodeShapes = {}),
          e = this
        this.generateEllipse(),
          this.generatePolygon('triangle', Ts(3, 0)),
          this.generateRoundPolygon('round-triangle', Ts(3, 0)),
          this.generatePolygon('rectangle', Ts(4, 0)),
          (t.square = t.rectangle),
          this.generateRoundRectangle(),
          this.generateCutRectangle(),
          this.generateBarrel(),
          this.generateBottomRoundrectangle()
        {
          var r = [0, 1, 1, 0, 0, -1, -1, 0]
          this.generatePolygon('diamond', r), this.generateRoundPolygon('round-diamond', r)
        }
        this.generatePolygon('pentagon', Ts(5, 0)),
          this.generateRoundPolygon('round-pentagon', Ts(5, 0)),
          this.generatePolygon('hexagon', Ts(6, 0)),
          this.generateRoundPolygon('round-hexagon', Ts(6, 0)),
          this.generatePolygon('heptagon', Ts(7, 0)),
          this.generateRoundPolygon('round-heptagon', Ts(7, 0)),
          this.generatePolygon('octagon', Ts(8, 0)),
          this.generateRoundPolygon('round-octagon', Ts(8, 0))
        var n = new Array(20)
        {
          var i = bB(5, 0),
            a = bB(5, Math.PI / 5),
            s = 0.5 * (3 - Math.sqrt(5))
          s *= 1.57
          for (var l = 0; l < a.length / 2; l++) (a[l * 2] *= s), (a[l * 2 + 1] *= s)
          for (var l = 0; l < 20 / 4; l++) (n[l * 4] = i[l * 2]), (n[l * 4 + 1] = i[l * 2 + 1]), (n[l * 4 + 2] = a[l * 2]), (n[l * 4 + 3] = a[l * 2 + 1])
        }
        ;(n = Dge(n)),
          this.generatePolygon('star', n),
          this.generatePolygon('vee', [-1, -1, 0, -0.333, 1, -1, 0, 1]),
          this.generatePolygon('rhomboid', [-1, -1, 0.333, -1, 1, 1, -0.333, 1]),
          this.generatePolygon('right-rhomboid', [-0.333, -1, 1, -1, 0.333, 1, -1, 1]),
          (this.nodeShapes.concavehexagon = this.generatePolygon('concave-hexagon', [-1, -0.95, -0.75, 0, -1, 0.95, 1, 0.95, 0.75, 0, 1, -0.95]))
        {
          var u = [-1, -1, 0.25, -1, 1, 0, 0.25, 1, -1, 1]
          this.generatePolygon('tag', u), this.generateRoundPolygon('round-tag', u)
        }
        t.makePolygon = function (h) {
          var f = h.join('$'),
            d = 'polygon-' + f,
            p
          return (p = this[d]) ? p : e.generatePolygon(d, h)
        }
      }
      x4 = {}
      x4.timeToRender = function () {
        return this.redrawTotalTime / this.redrawCount
      }
      x4.redraw = function (t) {
        t = t || kge()
        var e = this
        e.averageRedrawTime === void 0 && (e.averageRedrawTime = 0),
          e.lastRedrawTime === void 0 && (e.lastRedrawTime = 0),
          e.lastDrawTime === void 0 && (e.lastDrawTime = 0),
          (e.requestedFrame = !0),
          (e.renderOptions = t)
      }
      x4.beforeRender = function (t, e) {
        if (!this.destroyed) {
          e == null && oi('Priority is not optional for beforeRender')
          var r = this.beforeRenderCallbacks
          r.push({ fn: t, priority: e }),
            r.sort(function (n, i) {
              return i.priority - n.priority
            })
        }
      }
      Ume = o(function (e, r, n) {
        for (var i = e.beforeRenderCallbacks, a = 0; a < i.length; a++) i[a].fn(r, n)
      }, 'beforeRenderCallbacks')
      x4.startRenderLoop = function () {
        var t = this,
          e = t.cy
        if (!t.renderLoopStarted) {
          t.renderLoopStarted = !0
          var r = o(function n(i) {
            if (!t.destroyed) {
              if (!e.batching())
                if (t.requestedFrame && !t.skipFrame) {
                  Ume(t, !0, i)
                  var a = nh()
                  t.render(t.renderOptions)
                  var s = (t.lastDrawTime = nh())
                  t.averageRedrawTime === void 0 && (t.averageRedrawTime = s - a),
                    t.redrawCount === void 0 && (t.redrawCount = 0),
                    t.redrawCount++,
                    t.redrawTotalTime === void 0 && (t.redrawTotalTime = 0)
                  var l = s - a
                  ;(t.redrawTotalTime += l), (t.lastRedrawTime = l), (t.averageRedrawTime = t.averageRedrawTime / 2 + l / 2), (t.requestedFrame = !1)
                } else Ume(t, !1, i)
              ;(t.skipFrame = !1), $6(n)
            }
          }, 'renderFn')
          $6(r)
        }
      }
      ;(jZe = o(function (e) {
        this.init(e)
      }, 'BaseRenderer')),
        (_1e = jZe),
        (dy = _1e.prototype)
      dy.clientFunctions = ['redrawHint', 'render', 'renderTo', 'matchCanvasSize', 'nodeShapeImpl', 'arrowShapeImpl']
      dy.init = function (t) {
        var e = this
        ;(e.options = t), (e.cy = t.cy)
        var r = (e.container = t.cy.container()),
          n = e.cy.window()
        if (n) {
          var i = n.document,
            a = i.head,
            s = '__________cytoscape_stylesheet',
            l = '__________cytoscape_container',
            u = i.getElementById(s) != null
          if ((r.className.indexOf(l) < 0 && (r.className = (r.className || '') + ' ' + l), !u)) {
            var h = i.createElement('style')
            ;(h.id = s), (h.textContent = '.' + l + ' { position: relative; }'), a.insertBefore(h, a.children[0])
          }
          var f = n.getComputedStyle(r),
            d = f.getPropertyValue('position')
          d === 'static' && hn('A Cytoscape container has style position:static and so can not use UI extensions properly')
        }
        ;(e.selection = [void 0, void 0, void 0, void 0, 0]),
          (e.bezierProjPcts = [0.05, 0.225, 0.4, 0.5, 0.6, 0.775, 0.95]),
          (e.hoverData = { down: null, last: null, downTime: null, triggerMode: null, dragging: !1, initialPan: [null, null], capture: !1 }),
          (e.dragData = { possibleDragElements: [] }),
          (e.touchData = {
            start: null,
            capture: !1,
            startPosition: [null, null, null, null, null, null],
            singleTouchStartTime: null,
            singleTouchMoved: !0,
            now: [null, null, null, null, null, null],
            earlier: [null, null, null, null, null, null]
          }),
          (e.redraws = 0),
          (e.showFps = t.showFps),
          (e.debug = t.debug),
          (e.webgl = t.webgl),
          (e.hideEdgesOnViewport = t.hideEdgesOnViewport),
          (e.textureOnViewport = t.textureOnViewport),
          (e.wheelSensitivity = t.wheelSensitivity),
          (e.motionBlurEnabled = t.motionBlur),
          (e.forcedPixelRatio = _t(t.pixelRatio) ? t.pixelRatio : null),
          (e.motionBlur = t.motionBlur),
          (e.motionBlurOpacity = t.motionBlurOpacity),
          (e.motionBlurTransparency = 1 - e.motionBlurOpacity),
          (e.motionBlurPxRatio = 1),
          (e.mbPxRBlurry = 1),
          (e.minMbLowQualFrames = 4),
          (e.fullQualityMb = !1),
          (e.clearedForMotionBlur = []),
          (e.desktopTapThreshold = t.desktopTapThreshold),
          (e.desktopTapThreshold2 = t.desktopTapThreshold * t.desktopTapThreshold),
          (e.touchTapThreshold = t.touchTapThreshold),
          (e.touchTapThreshold2 = t.touchTapThreshold * t.touchTapThreshold),
          (e.tapholdDuration = 500),
          (e.bindings = []),
          (e.beforeRenderCallbacks = []),
          (e.beforeRenderPriorities = { animations: 400, eleCalcs: 300, eleTxrDeq: 200, lyrTxrDeq: 150, lyrTxrSkip: 100 }),
          e.registerNodeShapes(),
          e.registerArrowShapes(),
          e.registerCalculationListeners()
      }
      dy.notify = function (t, e) {
        var r = this,
          n = r.cy
        if (!this.destroyed) {
          if (t === 'init') {
            r.load()
            return
          }
          if (t === 'destroy') {
            r.destroy()
            return
          }
          ;(t === 'add' || t === 'remove' || (t === 'move' && n.hasCompoundNodes()) || t === 'load' || t === 'zorder' || t === 'mount') && r.invalidateCachedZSortedEles(),
            t === 'viewport' && r.redrawHint('select', !0),
            t === 'gc' && r.redrawHint('gc', !0),
            (t === 'load' || t === 'resize' || t === 'mount') && (r.invalidateContainerClientCoordsCache(), r.matchCanvasSize(r.container)),
            r.redrawHint('eles', !0),
            r.redrawHint('drag', !0),
            this.startRenderLoop(),
            this.redraw()
        }
      }
      dy.destroy = function () {
        var t = this
        ;(t.destroyed = !0), t.cy.stopAnimationLoop()
        for (var e = 0; e < t.bindings.length; e++) {
          var r = t.bindings[e],
            n = r,
            i = n.target
          ;(i.off || i.removeEventListener).apply(i, n.args)
        }
        if (
          ((t.bindings = []),
          (t.beforeRenderCallbacks = []),
          (t.onUpdateEleCalcsFns = []),
          t.removeObserver && t.removeObserver.disconnect(),
          t.styleObserver && t.styleObserver.disconnect(),
          t.resizeObserver && t.resizeObserver.disconnect(),
          t.labelCalcDiv)
        )
          try {
            document.body.removeChild(t.labelCalcDiv)
          } catch {}
      }
      dy.isHeadless = function () {
        return !1
      }
      ;[tF, C1e, A1e, fy, sh, x4].forEach(function (t) {
        ir(dy, t)
      })
      ;(dB = 1e3 / 60),
        (D1e = {
          setupDequeueing: o(function (e) {
            return o(function () {
              var n = this,
                i = this.renderer
              if (!n.dequeueingSetup) {
                n.dequeueingSetup = !0
                var a = p4(function () {
                    i.redrawHint('eles', !0), i.redrawHint('drag', !0), i.redraw()
                  }, e.deqRedrawThreshold),
                  s = o(function (h, f) {
                    var d = nh(),
                      p = i.averageRedrawTime,
                      m = i.lastRedrawTime,
                      g = [],
                      y = i.cy.extent(),
                      v = i.getPixelRatio()
                    for (h || i.flushRenderedStyleQueue(); ; ) {
                      var x = nh(),
                        b = x - d,
                        T = x - f
                      if (m < dB) {
                        var S = dB - (h ? p : 0)
                        if (T >= e.deqFastCost * S) break
                      } else if (h) {
                        if (b >= e.deqCost * m || b >= e.deqAvgCost * p) break
                      } else if (T >= e.deqNoDrawCost * dB) break
                      var w = e.deq(n, v, y)
                      if (w.length > 0) for (var E = 0; E < w.length; E++) g.push(w[E])
                      else break
                    }
                    g.length > 0 && (e.onDeqd(n, g), !h && e.shouldRedraw(n, g, v, y) && a())
                  }, 'dequeue'),
                  l = e.priority || zB
                i.beforeRender(s, l(n))
              }
            }, 'setupDequeueingImpl')
          }, 'setupDequeueing')
        }),
        (KZe = (function () {
          function t(e) {
            var r = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : z6
            Vf(this, t), (this.idsByKey = new Zc()), (this.keyForId = new Zc()), (this.cachesByLvl = new Zc()), (this.lvls = []), (this.getKey = e), (this.doesEleInvalidateKey = r)
          }
          return (
            o(t, 'ElementTextureCacheLookup'),
            Uf(t, [
              {
                key: 'getIdsFor',
                value: o(function (r) {
                  r == null && oi('Can not get id list for null key')
                  var n = this.idsByKey,
                    i = this.idsByKey.get(r)
                  return i || ((i = new ay()), n.set(r, i)), i
                }, 'getIdsFor')
              },
              {
                key: 'addIdForKey',
                value: o(function (r, n) {
                  r != null && this.getIdsFor(r).add(n)
                }, 'addIdForKey')
              },
              {
                key: 'deleteIdForKey',
                value: o(function (r, n) {
                  r != null && this.getIdsFor(r).delete(n)
                }, 'deleteIdForKey')
              },
              {
                key: 'getNumberOfIdsForKey',
                value: o(function (r) {
                  return r == null ? 0 : this.getIdsFor(r).size
                }, 'getNumberOfIdsForKey')
              },
              {
                key: 'updateKeyMappingFor',
                value: o(function (r) {
                  var n = r.id(),
                    i = this.keyForId.get(n),
                    a = this.getKey(r)
                  this.deleteIdForKey(i, n), this.addIdForKey(a, n), this.keyForId.set(n, a)
                }, 'updateKeyMappingFor')
              },
              {
                key: 'deleteKeyMappingFor',
                value: o(function (r) {
                  var n = r.id(),
                    i = this.keyForId.get(n)
                  this.deleteIdForKey(i, n), this.keyForId.delete(n)
                }, 'deleteKeyMappingFor')
              },
              {
                key: 'keyHasChangedFor',
                value: o(function (r) {
                  var n = r.id(),
                    i = this.keyForId.get(n),
                    a = this.getKey(r)
                  return i !== a
                }, 'keyHasChangedFor')
              },
              {
                key: 'isInvalid',
                value: o(function (r) {
                  return this.keyHasChangedFor(r) || this.doesEleInvalidateKey(r)
                }, 'isInvalid')
              },
              {
                key: 'getCachesAt',
                value: o(function (r) {
                  var n = this.cachesByLvl,
                    i = this.lvls,
                    a = n.get(r)
                  return a || ((a = new Zc()), n.set(r, a), i.push(r)), a
                }, 'getCachesAt')
              },
              {
                key: 'getCache',
                value: o(function (r, n) {
                  return this.getCachesAt(n).get(r)
                }, 'getCache')
              },
              {
                key: 'get',
                value: o(function (r, n) {
                  var i = this.getKey(r),
                    a = this.getCache(i, n)
                  return a != null && this.updateKeyMappingFor(r), a
                }, 'get')
              },
              {
                key: 'getForCachedKey',
                value: o(function (r, n) {
                  var i = this.keyForId.get(r.id()),
                    a = this.getCache(i, n)
                  return a
                }, 'getForCachedKey')
              },
              {
                key: 'hasCache',
                value: o(function (r, n) {
                  return this.getCachesAt(n).has(r)
                }, 'hasCache')
              },
              {
                key: 'has',
                value: o(function (r, n) {
                  var i = this.getKey(r)
                  return this.hasCache(i, n)
                }, 'has')
              },
              {
                key: 'setCache',
                value: o(function (r, n, i) {
                  ;(i.key = r), this.getCachesAt(n).set(r, i)
                }, 'setCache')
              },
              {
                key: 'set',
                value: o(function (r, n, i) {
                  var a = this.getKey(r)
                  this.setCache(a, n, i), this.updateKeyMappingFor(r)
                }, 'set')
              },
              {
                key: 'deleteCache',
                value: o(function (r, n) {
                  this.getCachesAt(n).delete(r)
                }, 'deleteCache')
              },
              {
                key: 'delete',
                value: o(function (r, n) {
                  var i = this.getKey(r)
                  this.deleteCache(i, n)
                }, '_delete')
              },
              {
                key: 'invalidateKey',
                value: o(function (r) {
                  var n = this
                  this.lvls.forEach(function (i) {
                    return n.deleteCache(r, i)
                  })
                }, 'invalidateKey')
              },
              {
                key: 'invalidate',
                value: o(function (r) {
                  var n = r.id(),
                    i = this.keyForId.get(n)
                  this.deleteKeyMappingFor(r)
                  var a = this.doesEleInvalidateKey(r)
                  return a && this.invalidateKey(i), a || this.getNumberOfIdsForKey(i) === 0
                }, 'invalidate')
              }
            ]),
            t
          )
        })()),
        (Hme = 25),
        (C6 = 50),
        (B6 = -4),
        (NB = 3),
        (L1e = 7.99),
        (QZe = 8),
        (ZZe = 1024),
        (JZe = 1024),
        (eJe = 1024),
        (tJe = 0.2),
        (rJe = 0.8),
        (nJe = 10),
        (iJe = 0.15),
        (aJe = 0.1),
        (sJe = 0.9),
        (oJe = 0.9),
        (lJe = 100),
        (cJe = 1),
        (K1 = { dequeue: 'dequeue', downscale: 'downscale', highQuality: 'highQuality' }),
        (uJe = oa({
          getKey: null,
          doesEleInvalidateKey: z6,
          drawElement: null,
          getBoundingBox: null,
          getRotationPoint: null,
          getRotationOffset: null,
          isVisible: bge,
          allowEdgeTxrCaching: !0,
          allowParentTxrCaching: !0
        })),
        (jb = o(function (e, r) {
          var n = this
          ;(n.renderer = e), (n.onDequeues = [])
          var i = uJe(r)
          ir(n, i), (n.lookup = new KZe(i.getKey, i.doesEleInvalidateKey)), n.setupDequeueing()
        }, 'ElementTextureCache')),
        (Yi = jb.prototype)
      Yi.reasons = K1
      Yi.getTextureQueue = function (t) {
        var e = this
        return (e.eleImgCaches = e.eleImgCaches || {}), (e.eleImgCaches[t] = e.eleImgCaches[t] || [])
      }
      Yi.getRetiredTextureQueue = function (t) {
        var e = this,
          r = (e.eleImgCaches.retired = e.eleImgCaches.retired || {}),
          n = (r[t] = r[t] || [])
        return n
      }
      Yi.getElementQueue = function () {
        var t = this,
          e = (t.eleCacheQueue =
            t.eleCacheQueue ||
            new m4(function (r, n) {
              return n.reqs - r.reqs
            }))
        return e
      }
      Yi.getElementKeyToQueue = function () {
        var t = this,
          e = (t.eleKeyToCacheQueue = t.eleKeyToCacheQueue || {})
        return e
      }
      Yi.getElement = function (t, e, r, n, i) {
        var a = this,
          s = this.renderer,
          l = s.cy.zoom(),
          u = this.lookup
        if (
          !e ||
          e.w === 0 ||
          e.h === 0 ||
          isNaN(e.w) ||
          isNaN(e.h) ||
          !t.visible() ||
          t.removed() ||
          (!a.allowEdgeTxrCaching && t.isEdge()) ||
          (!a.allowParentTxrCaching && t.isParent())
        )
          return null
        if ((n == null && (n = Math.ceil(VB(l * r))), n < B6)) n = B6
        else if (l >= L1e || n > NB) return null
        var h = Math.pow(2, n),
          f = e.h * h,
          d = e.w * h,
          p = s.eleTextBiggerThanMin(t, h)
        if (!this.isVisible(t, p)) return null
        var m = u.get(t, n)
        if ((m && m.invalidated && ((m.invalidated = !1), (m.texture.invalidatedWidth -= m.width)), m)) return m
        var g
        if ((f <= Hme ? (g = Hme) : f <= C6 ? (g = C6) : (g = Math.ceil(f / C6) * C6), f > eJe || d > JZe)) return null
        var y = a.getTextureQueue(g),
          v = y[y.length - 2],
          x = o(function () {
            return a.recycleTexture(g, d) || a.addTexture(g, d)
          }, 'addNewTxr')
        v || (v = y[y.length - 1]), v || (v = x()), v.width - v.usedWidth < d && (v = x())
        for (
          var b = o(function (M) {
              return M && M.scaledLabelShown === p
            }, 'scalableFrom'),
            T = i && i === K1.dequeue,
            S = i && i === K1.highQuality,
            w = i && i === K1.downscale,
            E,
            _ = n + 1;
          _ <= NB;
          _++
        ) {
          var C = u.get(t, _)
          if (C) {
            E = C
            break
          }
        }
        var D = E && E.level === n + 1 ? E : null,
          O = o(function () {
            v.context.drawImage(D.texture.canvas, D.x, 0, D.width, D.height, v.usedWidth, 0, d, f)
          }, 'downscale')
        if ((v.context.setTransform(1, 0, 0, 1, 0, 0), v.context.clearRect(v.usedWidth, 0, d, g), b(D))) O()
        else if (b(E))
          if (S) {
            for (var R = E.level; R > n; R--) D = a.getElement(t, e, r, R, K1.downscale)
            O()
          } else return a.queueElement(t, E.level - 1), E
        else {
          var k
          if (!T && !S && !w)
            for (var L = n - 1; L >= B6; L--) {
              var A = u.get(t, L)
              if (A) {
                k = A
                break
              }
            }
          if (b(k)) return a.queueElement(t, n), k
          v.context.translate(v.usedWidth, 0), v.context.scale(h, h), this.drawElement(v.context, t, e, p, !1), v.context.scale(1 / h, 1 / h), v.context.translate(-v.usedWidth, 0)
        }
        return (
          (m = { x: v.usedWidth, texture: v, level: n, scale: h, width: d, height: f, scaledLabelShown: p }),
          (v.usedWidth += Math.ceil(d + QZe)),
          v.eleCaches.push(m),
          u.set(t, n, m),
          a.checkTextureFullness(v),
          m
        )
      }
      Yi.invalidateElements = function (t) {
        for (var e = 0; e < t.length; e++) this.invalidateElement(t[e])
      }
      Yi.invalidateElement = function (t) {
        var e = this,
          r = e.lookup,
          n = [],
          i = r.isInvalid(t)
        if (i) {
          for (var a = B6; a <= NB; a++) {
            var s = r.getForCachedKey(t, a)
            s && n.push(s)
          }
          var l = r.invalidate(t)
          if (l)
            for (var u = 0; u < n.length; u++) {
              var h = n[u],
                f = h.texture
              ;(f.invalidatedWidth += h.width), (h.invalidated = !0), e.checkTextureUtility(f)
            }
          e.removeFromQueue(t)
        }
      }
      Yi.checkTextureUtility = function (t) {
        t.invalidatedWidth >= tJe * t.width && this.retireTexture(t)
      }
      Yi.checkTextureFullness = function (t) {
        var e = this,
          r = e.getTextureQueue(t.height)
        t.usedWidth / t.width > rJe && t.fullnessChecks >= nJe ? Ff(r, t) : t.fullnessChecks++
      }
      Yi.retireTexture = function (t) {
        var e = this,
          r = t.height,
          n = e.getTextureQueue(r),
          i = this.lookup
        Ff(n, t), (t.retired = !0)
        for (var a = t.eleCaches, s = 0; s < a.length; s++) {
          var l = a[s]
          i.deleteCache(l.key, l.level)
        }
        GB(a)
        var u = e.getRetiredTextureQueue(r)
        u.push(t)
      }
      Yi.addTexture = function (t, e) {
        var r = this,
          n = r.getTextureQueue(t),
          i = {}
        return (
          n.push(i),
          (i.eleCaches = []),
          (i.height = t),
          (i.width = Math.max(ZZe, e)),
          (i.usedWidth = 0),
          (i.invalidatedWidth = 0),
          (i.fullnessChecks = 0),
          (i.canvas = r.renderer.makeOffscreenCanvas(i.width, i.height)),
          (i.context = i.canvas.getContext('2d')),
          i
        )
      }
      Yi.recycleTexture = function (t, e) {
        for (var r = this, n = r.getTextureQueue(t), i = r.getRetiredTextureQueue(t), a = 0; a < i.length; a++) {
          var s = i[a]
          if (s.width >= e)
            return (
              (s.retired = !1),
              (s.usedWidth = 0),
              (s.invalidatedWidth = 0),
              (s.fullnessChecks = 0),
              GB(s.eleCaches),
              s.context.setTransform(1, 0, 0, 1, 0, 0),
              s.context.clearRect(0, 0, s.width, s.height),
              Ff(i, s),
              n.push(s),
              s
            )
        }
      }
      Yi.queueElement = function (t, e) {
        var r = this,
          n = r.getElementQueue(),
          i = r.getElementKeyToQueue(),
          a = this.getKey(t),
          s = i[a]
        if (s) (s.level = Math.max(s.level, e)), s.eles.merge(t), s.reqs++, n.updateItem(s)
        else {
          var l = { eles: t.spawn().merge(t), level: e, reqs: 1, key: a }
          n.push(l), (i[a] = l)
        }
      }
      Yi.dequeue = function (t) {
        for (var e = this, r = e.getElementQueue(), n = e.getElementKeyToQueue(), i = [], a = e.lookup, s = 0; s < cJe && r.size() > 0; s++) {
          var l = r.pop(),
            u = l.key,
            h = l.eles[0],
            f = a.hasCache(h, l.level)
          if (((n[u] = null), f)) continue
          i.push(l)
          var d = e.getBoundingBox(h)
          e.getElement(h, d, t, l.level, K1.dequeue)
        }
        return i
      }
      Yi.removeFromQueue = function (t) {
        var e = this,
          r = e.getElementQueue(),
          n = e.getElementKeyToQueue(),
          i = this.getKey(t),
          a = n[i]
        a != null && (a.eles.length === 1 ? ((a.reqs = $B), r.updateItem(a), r.pop(), (n[i] = null)) : a.eles.unmerge(t))
      }
      Yi.onDequeue = function (t) {
        this.onDequeues.push(t)
      }
      Yi.offDequeue = function (t) {
        Ff(this.onDequeues, t)
      }
      Yi.setupDequeueing = D1e.setupDequeueing({
        deqRedrawThreshold: lJe,
        deqCost: iJe,
        deqAvgCost: aJe,
        deqNoDrawCost: sJe,
        deqFastCost: oJe,
        deq: o(function (e, r, n) {
          return e.dequeue(r, n)
        }, 'deq'),
        onDeqd: o(function (e, r) {
          for (var n = 0; n < e.onDequeues.length; n++) {
            var i = e.onDequeues[n]
            i(r)
          }
        }, 'onDeqd'),
        shouldRedraw: o(function (e, r, n, i) {
          for (var a = 0; a < r.length; a++)
            for (var s = r[a].eles, l = 0; l < s.length; l++) {
              var u = s[l].boundingBox()
              if (UB(u, i)) return !0
            }
          return !1
        }, 'shouldRedraw'),
        priority: o(function (e) {
          return e.renderer.beforeRenderPriorities.eleTxrDeq
        }, 'priority')
      })
      ;(hJe = 1),
        (Qb = -4),
        (X6 = 2),
        (fJe = 3.99),
        (dJe = 50),
        (pJe = 50),
        (mJe = 0.15),
        (gJe = 0.1),
        (yJe = 0.9),
        (vJe = 0.9),
        (xJe = 1),
        (Wme = 250),
        (bJe = 4e3 * 4e3),
        (qme = 32767),
        (TJe = !0),
        (R1e = o(function (e) {
          var r = this,
            n = (r.renderer = e),
            i = n.cy
          ;(r.layersByLevel = {}),
            (r.firstGet = !0),
            (r.lastInvalidationTime = nh() - 2 * Wme),
            (r.skipping = !1),
            (r.eleTxrDeqs = i.collection()),
            (r.scheduleElementRefinement = p4(function () {
              r.refineElementTextures(r.eleTxrDeqs), r.eleTxrDeqs.unmerge(r.eleTxrDeqs)
            }, pJe)),
            n.beforeRender(function (s, l) {
              l - r.lastInvalidationTime <= Wme ? (r.skipping = !0) : (r.skipping = !1)
            }, n.beforeRenderPriorities.lyrTxrSkip)
          var a = o(function (l, u) {
            return u.reqs - l.reqs
          }, 'qSort')
          ;(r.layersQueue = new m4(a)), r.setupDequeueing()
        }, 'LayeredTextureCache')),
        (Ca = R1e.prototype),
        (Yme = 0),
        (wJe = Math.pow(2, 53) - 1)
      Ca.makeLayer = function (t, e) {
        var r = Math.pow(2, e),
          n = Math.ceil(t.w * r),
          i = Math.ceil(t.h * r),
          a = this.renderer.makeOffscreenCanvas(n, i),
          s = { id: (Yme = ++Yme % wJe), bb: t, level: e, width: n, height: i, canvas: a, context: a.getContext('2d'), eles: [], elesQueue: [], reqs: 0 },
          l = s.context,
          u = -s.bb.x1,
          h = -s.bb.y1
        return l.scale(r, r), l.translate(u, h), s
      }
      Ca.getLayers = function (t, e, r) {
        var n = this,
          i = n.renderer,
          a = i.cy,
          s = a.zoom(),
          l = n.firstGet
        if (((n.firstGet = !1), r == null)) {
          if (((r = Math.ceil(VB(s * e))), r < Qb)) r = Qb
          else if (s >= fJe || r > X6) return null
        }
        n.validateLayersElesOrdering(r, t)
        var u = n.layersByLevel,
          h = Math.pow(2, r),
          f = (u[r] = u[r] || []),
          d,
          p = n.levelIsComplete(r, t),
          m,
          g = o(function () {
            var O = o(function (I) {
                if ((n.validateLayersElesOrdering(I, t), n.levelIsComplete(I, t))) return (m = u[I]), !0
              }, 'canUseAsTmpLvl'),
              R = o(function (I) {
                if (!m) for (var M = r + I; Qb <= M && M <= X6 && !O(M); M += I);
              }, 'checkLvls')
            R(1), R(-1)
            for (var k = f.length - 1; k >= 0; k--) {
              var L = f[k]
              L.invalid && Ff(f, L)
            }
          }, 'checkTempLevels')
        if (!p) g()
        else return f
        var y = o(function () {
            if (!d) {
              d = Ys()
              for (var O = 0; O < t.length; O++) Cge(d, t[O].boundingBox())
            }
            return d
          }, 'getBb'),
          v = o(function (O) {
            O = O || {}
            var R = O.after
            y()
            var k = Math.ceil(d.w * h),
              L = Math.ceil(d.h * h)
            if (k > qme || L > qme) return null
            var A = k * L
            if (A > bJe) return null
            var I = n.makeLayer(d, r)
            if (R != null) {
              var M = f.indexOf(R) + 1
              f.splice(M, 0, I)
            } else (O.insert === void 0 || O.insert) && f.unshift(I)
            return I
          }, 'makeLayer')
        if (n.skipping && !l) return null
        for (var x = null, b = t.length / hJe, T = !l, S = 0; S < t.length; S++) {
          var w = t[S],
            E = w._private.rscratch,
            _ = (E.imgLayerCaches = E.imgLayerCaches || {}),
            C = _[r]
          if (C) {
            x = C
            continue
          }
          if ((!x || x.eles.length >= b || !Age(x.bb, w.boundingBox())) && ((x = v({ insert: !0, after: x })), !x)) return null
          m || T ? n.queueLayer(x, w) : n.drawEleInLayer(x, w, r, e), x.eles.push(w), (_[r] = x)
        }
        return m || (T ? null : f)
      }
      Ca.getEleLevelForLayerLevel = function (t, e) {
        return t
      }
      Ca.drawEleInLayer = function (t, e, r, n) {
        var i = this,
          a = this.renderer,
          s = t.context,
          l = e.boundingBox()
        l.w === 0 ||
          l.h === 0 ||
          !e.visible() ||
          ((r = i.getEleLevelForLayerLevel(r, n)), a.setImgSmoothing(s, !1), a.drawCachedElement(s, e, null, null, r, TJe), a.setImgSmoothing(s, !0))
      }
      Ca.levelIsComplete = function (t, e) {
        var r = this,
          n = r.layersByLevel[t]
        if (!n || n.length === 0) return !1
        for (var i = 0, a = 0; a < n.length; a++) {
          var s = n[a]
          if (s.reqs > 0 || s.invalid) return !1
          i += s.eles.length
        }
        return i === e.length
      }
      Ca.validateLayersElesOrdering = function (t, e) {
        var r = this.layersByLevel[t]
        if (r)
          for (var n = 0; n < r.length; n++) {
            for (var i = r[n], a = -1, s = 0; s < e.length; s++)
              if (i.eles[0] === e[s]) {
                a = s
                break
              }
            if (a < 0) {
              this.invalidateLayer(i)
              continue
            }
            for (var l = a, s = 0; s < i.eles.length; s++)
              if (i.eles[s] !== e[l + s]) {
                this.invalidateLayer(i)
                break
              }
          }
      }
      Ca.updateElementsInLayers = function (t, e) {
        for (var r = this, n = f4(t[0]), i = 0; i < t.length; i++)
          for (var a = n ? null : t[i], s = n ? t[i] : t[i].ele, l = s._private.rscratch, u = (l.imgLayerCaches = l.imgLayerCaches || {}), h = Qb; h <= X6; h++) {
            var f = u[h]
            f && ((a && r.getEleLevelForLayerLevel(f.level) !== a.level) || e(f, s, a))
          }
      }
      Ca.haveLayers = function () {
        for (var t = this, e = !1, r = Qb; r <= X6; r++) {
          var n = t.layersByLevel[r]
          if (n && n.length > 0) {
            e = !0
            break
          }
        }
        return e
      }
      Ca.invalidateElements = function (t) {
        var e = this
        t.length !== 0 &&
          ((e.lastInvalidationTime = nh()),
          !(t.length === 0 || !e.haveLayers()) &&
            e.updateElementsInLayers(
              t,
              o(function (n, i, a) {
                e.invalidateLayer(n)
              }, 'invalAssocLayers')
            ))
      }
      Ca.invalidateLayer = function (t) {
        if (((this.lastInvalidationTime = nh()), !t.invalid)) {
          var e = t.level,
            r = t.eles,
            n = this.layersByLevel[e]
          Ff(n, t), (t.elesQueue = []), (t.invalid = !0), t.replacement && (t.replacement.invalid = !0)
          for (var i = 0; i < r.length; i++) {
            var a = r[i]._private.rscratch.imgLayerCaches
            a && (a[e] = null)
          }
        }
      }
      Ca.refineElementTextures = function (t) {
        var e = this
        e.updateElementsInLayers(
          t,
          o(function (n, i, a) {
            var s = n.replacement
            if ((s || ((s = n.replacement = e.makeLayer(n.bb, n.level)), (s.replaces = n), (s.eles = n.eles)), !s.reqs))
              for (var l = 0; l < s.eles.length; l++) e.queueLayer(s, s.eles[l])
          }, 'refineEachEle')
        )
      }
      Ca.enqueueElementRefinement = function (t) {
        this.eleTxrDeqs.merge(t), this.scheduleElementRefinement()
      }
      Ca.queueLayer = function (t, e) {
        var r = this,
          n = r.layersQueue,
          i = t.elesQueue,
          a = (i.hasId = i.hasId || {})
        if (!t.replacement) {
          if (e) {
            if (a[e.id()]) return
            i.push(e), (a[e.id()] = !0)
          }
          t.reqs ? (t.reqs++, n.updateItem(t)) : ((t.reqs = 1), n.push(t))
        }
      }
      Ca.dequeue = function (t) {
        for (var e = this, r = e.layersQueue, n = [], i = 0; i < xJe && r.size() !== 0; ) {
          var a = r.peek()
          if (a.replacement) {
            r.pop()
            continue
          }
          if (a.replaces && a !== a.replaces.replacement) {
            r.pop()
            continue
          }
          if (a.invalid) {
            r.pop()
            continue
          }
          var s = a.elesQueue.shift()
          s && (e.drawEleInLayer(a, s, a.level, t), i++),
            n.length === 0 && n.push(!0),
            a.elesQueue.length === 0 && (r.pop(), (a.reqs = 0), a.replaces && e.applyLayerReplacement(a), e.requestRedraw())
        }
        return n
      }
      Ca.applyLayerReplacement = function (t) {
        var e = this,
          r = e.layersByLevel[t.level],
          n = t.replaces,
          i = r.indexOf(n)
        if (!(i < 0 || n.invalid)) {
          r[i] = t
          for (var a = 0; a < t.eles.length; a++) {
            var s = t.eles[a]._private,
              l = (s.imgLayerCaches = s.imgLayerCaches || {})
            l && (l[t.level] = t)
          }
          e.requestRedraw()
        }
      }
      Ca.requestRedraw = p4(function () {
        var t = this.renderer
        t.redrawHint('eles', !0), t.redrawHint('drag', !0), t.redraw()
      }, 100)
      Ca.setupDequeueing = D1e.setupDequeueing({
        deqRedrawThreshold: dJe,
        deqCost: mJe,
        deqAvgCost: gJe,
        deqNoDrawCost: yJe,
        deqFastCost: vJe,
        deq: o(function (e, r) {
          return e.dequeue(r)
        }, 'deq'),
        onDeqd: zB,
        shouldRedraw: bge,
        priority: o(function (e) {
          return e.renderer.beforeRenderPriorities.lyrTxrDeq
        }, 'priority')
      })
      N1e = {}
      o(kJe, 'polygon')
      o(EJe, 'triangleBackcurve')
      o(jme, 'triangleTee')
      o(SJe, 'circleTriangle')
      o(CJe, 'circle')
      N1e.arrowShapeImpl = function (t) {
        return (Xme || (Xme = { polygon: kJe, 'triangle-backcurve': EJe, 'triangle-tee': jme, 'circle-triangle': SJe, 'triangle-cross': jme, circle: CJe }))[t]
      }
      tu = {}
      tu.drawElement = function (t, e, r, n, i, a) {
        var s = this
        e.isNode() ? s.drawNode(t, e, r, n, i, a) : s.drawEdge(t, e, r, n, i, a)
      }
      tu.drawElementOverlay = function (t, e) {
        var r = this
        e.isNode() ? r.drawNodeOverlay(t, e) : r.drawEdgeOverlay(t, e)
      }
      tu.drawElementUnderlay = function (t, e) {
        var r = this
        e.isNode() ? r.drawNodeUnderlay(t, e) : r.drawEdgeUnderlay(t, e)
      }
      tu.drawCachedElementPortion = function (t, e, r, n, i, a, s, l) {
        var u = this,
          h = r.getBoundingBox(e)
        if (!(h.w === 0 || h.h === 0)) {
          var f = r.getElement(e, h, n, i, a)
          if (f != null) {
            var d = l(u, e)
            if (d === 0) return
            var p = s(u, e),
              m = h.x1,
              g = h.y1,
              y = h.w,
              v = h.h,
              x,
              b,
              T,
              S,
              w
            if (p !== 0) {
              var E = r.getRotationPoint(e)
              ;(T = E.x), (S = E.y), t.translate(T, S), t.rotate(p), (w = u.getImgSmoothing(t)), w || u.setImgSmoothing(t, !0)
              var _ = r.getRotationOffset(e)
              ;(x = _.x), (b = _.y)
            } else (x = m), (b = g)
            var C
            d !== 1 && ((C = t.globalAlpha), (t.globalAlpha = C * d)),
              t.drawImage(f.texture.canvas, f.x, 0, f.width, f.height, x, b, y, v),
              d !== 1 && (t.globalAlpha = C),
              p !== 0 && (t.rotate(-p), t.translate(-T, -S), w || u.setImgSmoothing(t, !1))
          } else r.drawElement(t, e)
        }
      }
      ;(AJe = o(function () {
        return 0
      }, 'getZeroRotation')),
        (_Je = o(function (e, r) {
          return e.getTextAngle(r, null)
        }, 'getLabelRotation')),
        (DJe = o(function (e, r) {
          return e.getTextAngle(r, 'source')
        }, 'getSourceLabelRotation')),
        (LJe = o(function (e, r) {
          return e.getTextAngle(r, 'target')
        }, 'getTargetLabelRotation')),
        (RJe = o(function (e, r) {
          return r.effectiveOpacity()
        }, 'getOpacity')),
        (pB = o(function (e, r) {
          return r.pstyle('text-opacity').pfValue * r.effectiveOpacity()
        }, 'getTextOpacity'))
      tu.drawCachedElement = function (t, e, r, n, i, a) {
        var s = this,
          l = s.data,
          u = l.eleTxrCache,
          h = l.lblTxrCache,
          f = l.slbTxrCache,
          d = l.tlbTxrCache,
          p = e.boundingBox(),
          m = a === !0 ? u.reasons.highQuality : null
        if (!(p.w === 0 || p.h === 0 || !e.visible()) && (!n || UB(p, n))) {
          var g = e.isEdge(),
            y = e.element()._private.rscratch.badLine
          s.drawElementUnderlay(t, e),
            s.drawCachedElementPortion(t, e, u, r, i, m, AJe, RJe),
            (!g || !y) && s.drawCachedElementPortion(t, e, h, r, i, m, _Je, pB),
            g && !y && (s.drawCachedElementPortion(t, e, f, r, i, m, DJe, pB), s.drawCachedElementPortion(t, e, d, r, i, m, LJe, pB)),
            s.drawElementOverlay(t, e)
        }
      }
      tu.drawElements = function (t, e) {
        for (var r = this, n = 0; n < e.length; n++) {
          var i = e[n]
          r.drawElement(t, i)
        }
      }
      tu.drawCachedElements = function (t, e, r, n) {
        for (var i = this, a = 0; a < e.length; a++) {
          var s = e[a]
          i.drawCachedElement(t, s, r, n)
        }
      }
      tu.drawCachedNodes = function (t, e, r, n) {
        for (var i = this, a = 0; a < e.length; a++) {
          var s = e[a]
          s.isNode() && i.drawCachedElement(t, s, r, n)
        }
      }
      tu.drawLayeredElements = function (t, e, r, n) {
        var i = this,
          a = i.data.lyrTxrCache.getLayers(e, r)
        if (a)
          for (var s = 0; s < a.length; s++) {
            var l = a[s],
              u = l.bb
            u.w === 0 || u.h === 0 || t.drawImage(l.canvas, u.x1, u.y1, u.w, u.h)
          }
        else i.drawCachedElements(t, e, r, n)
      }
      oh = {}
      oh.drawEdge = function (t, e, r) {
        var n = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : !0,
          i = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : !0,
          a = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : !0,
          s = this,
          l = e._private.rscratch
        if (!(a && !e.visible()) && !(l.badLine || l.allpts == null || isNaN(l.allpts[0]))) {
          var u
          r && ((u = r), t.translate(-u.x1, -u.y1))
          var h = a ? e.pstyle('opacity').value : 1,
            f = a ? e.pstyle('line-opacity').value : 1,
            d = e.pstyle('curve-style').value,
            p = e.pstyle('line-style').value,
            m = e.pstyle('width').pfValue,
            g = e.pstyle('line-cap').value,
            y = e.pstyle('line-outline-width').value,
            v = e.pstyle('line-outline-color').value,
            x = h * f,
            b = h * f,
            T = o(function () {
              var I = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : x
              d === 'straight-triangle'
                ? (s.eleStrokeStyle(t, e, I), s.drawEdgeTrianglePath(e, t, l.allpts))
                : ((t.lineWidth = m), (t.lineCap = g), s.eleStrokeStyle(t, e, I), s.drawEdgePath(e, t, l.allpts, p), (t.lineCap = 'butt'))
            }, 'drawLine'),
            S = o(function () {
              var I = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : x
              if (((t.lineWidth = m + y), (t.lineCap = g), y > 0)) s.colorStrokeStyle(t, v[0], v[1], v[2], I)
              else {
                t.lineCap = 'butt'
                return
              }
              d === 'straight-triangle' ? s.drawEdgeTrianglePath(e, t, l.allpts) : (s.drawEdgePath(e, t, l.allpts, p), (t.lineCap = 'butt'))
            }, 'drawLineOutline'),
            w = o(function () {
              i && s.drawEdgeOverlay(t, e)
            }, 'drawOverlay'),
            E = o(function () {
              i && s.drawEdgeUnderlay(t, e)
            }, 'drawUnderlay'),
            _ = o(function () {
              var I = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : b
              s.drawArrowheads(t, e, I)
            }, 'drawArrows'),
            C = o(function () {
              s.drawElementText(t, e, null, n)
            }, 'drawText')
          t.lineJoin = 'round'
          var D = e.pstyle('ghost').value === 'yes'
          if (D) {
            var O = e.pstyle('ghost-offset-x').pfValue,
              R = e.pstyle('ghost-offset-y').pfValue,
              k = e.pstyle('ghost-opacity').value,
              L = x * k
            t.translate(O, R), T(L), _(L), t.translate(-O, -R)
          } else S()
          E(), T(), _(), w(), C(), r && t.translate(u.x1, u.y1)
        }
      }
      M1e = o(function (e) {
        if (!['overlay', 'underlay'].includes(e)) throw new Error('Invalid state')
        return function (r, n) {
          if (n.visible()) {
            var i = n.pstyle(''.concat(e, '-opacity')).value
            if (i !== 0) {
              var a = this,
                s = a.usePaths(),
                l = n._private.rscratch,
                u = n.pstyle(''.concat(e, '-padding')).pfValue,
                h = 2 * u,
                f = n.pstyle(''.concat(e, '-color')).value
              ;(r.lineWidth = h),
                l.edgeType === 'self' && !s ? (r.lineCap = 'butt') : (r.lineCap = 'round'),
                a.colorStrokeStyle(r, f[0], f[1], f[2], i),
                a.drawEdgePath(n, r, l.allpts, 'solid')
            }
          }
        }
      }, 'drawEdgeOverlayUnderlay')
      oh.drawEdgeOverlay = M1e('overlay')
      oh.drawEdgeUnderlay = M1e('underlay')
      oh.drawEdgePath = function (t, e, r, n) {
        var i = t._private.rscratch,
          a = e,
          s,
          l = !1,
          u = this.usePaths(),
          h = t.pstyle('line-dash-pattern').pfValue,
          f = t.pstyle('line-dash-offset').pfValue
        if (u) {
          var d = r.join('$'),
            p = i.pathCacheKey && i.pathCacheKey === d
          p ? ((s = e = i.pathCache), (l = !0)) : ((s = e = new Path2D()), (i.pathCacheKey = d), (i.pathCache = s))
        }
        if (a.setLineDash)
          switch (n) {
            case 'dotted':
              a.setLineDash([1, 1])
              break
            case 'dashed':
              a.setLineDash(h), (a.lineDashOffset = f)
              break
            case 'solid':
              a.setLineDash([])
              break
          }
        if (!l && !i.badLine)
          switch ((e.beginPath && e.beginPath(), e.moveTo(r[0], r[1]), i.edgeType)) {
            case 'bezier':
            case 'self':
            case 'compound':
            case 'multibezier':
              for (var m = 2; m + 3 < r.length; m += 4) e.quadraticCurveTo(r[m], r[m + 1], r[m + 2], r[m + 3])
              break
            case 'straight':
            case 'haystack':
              for (var g = 2; g + 1 < r.length; g += 2) e.lineTo(r[g], r[g + 1])
              break
            case 'segments':
              if (i.isRound) {
                var y = vo(i.roundCorners),
                  v
                try {
                  for (y.s(); !(v = y.n()).done; ) {
                    var x = v.value
                    T1e(e, x)
                  }
                } catch (T) {
                  y.e(T)
                } finally {
                  y.f()
                }
                e.lineTo(r[r.length - 2], r[r.length - 1])
              } else for (var b = 2; b + 1 < r.length; b += 2) e.lineTo(r[b], r[b + 1])
              break
          }
        ;(e = a), u ? e.stroke(s) : e.stroke(), e.setLineDash && e.setLineDash([])
      }
      oh.drawEdgeTrianglePath = function (t, e, r) {
        e.fillStyle = e.strokeStyle
        for (var n = t.pstyle('width').pfValue, i = 0; i + 1 < r.length; i += 2) {
          var a = [r[i + 2] - r[i], r[i + 3] - r[i + 1]],
            s = Math.sqrt(a[0] * a[0] + a[1] * a[1]),
            l = [a[1] / s, -a[0] / s],
            u = [(l[0] * n) / 2, (l[1] * n) / 2]
          e.beginPath(), e.moveTo(r[i] - u[0], r[i + 1] - u[1]), e.lineTo(r[i] + u[0], r[i + 1] + u[1]), e.lineTo(r[i + 2], r[i + 3]), e.closePath(), e.fill()
        }
      }
      oh.drawArrowheads = function (t, e, r) {
        var n = e._private.rscratch,
          i = n.edgeType === 'haystack'
        i || this.drawArrowhead(t, e, 'source', n.arrowStartX, n.arrowStartY, n.srcArrowAngle, r),
          this.drawArrowhead(t, e, 'mid-target', n.midX, n.midY, n.midtgtArrowAngle, r),
          this.drawArrowhead(t, e, 'mid-source', n.midX, n.midY, n.midsrcArrowAngle, r),
          i || this.drawArrowhead(t, e, 'target', n.arrowEndX, n.arrowEndY, n.tgtArrowAngle, r)
      }
      oh.drawArrowhead = function (t, e, r, n, i, a, s) {
        if (!(isNaN(n) || n == null || isNaN(i) || i == null || isNaN(a) || a == null)) {
          var l = this,
            u = e.pstyle(r + '-arrow-shape').value
          if (u !== 'none') {
            var h = e.pstyle(r + '-arrow-fill').value === 'hollow' ? 'both' : 'filled',
              f = e.pstyle(r + '-arrow-fill').value,
              d = e.pstyle('width').pfValue,
              p = e.pstyle(r + '-arrow-width'),
              m = p.value === 'match-line' ? d : p.pfValue
            p.units === '%' && (m *= d)
            var g = e.pstyle('opacity').value
            s === void 0 && (s = g)
            var y = t.globalCompositeOperation
            ;(s !== 1 || f === 'hollow') &&
              ((t.globalCompositeOperation = 'destination-out'),
              l.colorFillStyle(t, 255, 255, 255, 1),
              l.colorStrokeStyle(t, 255, 255, 255, 1),
              l.drawArrowShape(e, t, h, d, u, m, n, i, a),
              (t.globalCompositeOperation = y))
            var v = e.pstyle(r + '-arrow-color').value
            l.colorFillStyle(t, v[0], v[1], v[2], s), l.colorStrokeStyle(t, v[0], v[1], v[2], s), l.drawArrowShape(e, t, f, d, u, m, n, i, a)
          }
        }
      }
      oh.drawArrowShape = function (t, e, r, n, i, a, s, l, u) {
        var h = this,
          f = this.usePaths() && i !== 'triangle-cross',
          d = !1,
          p,
          m = e,
          g = { x: s, y: l },
          y = t.pstyle('arrow-scale').value,
          v = this.getArrowWidth(n, y),
          x = h.arrowShapes[i]
        if (f) {
          var b = (h.arrowPathCache = h.arrowPathCache || []),
            T = Bf(i),
            S = b[T]
          S != null ? ((p = e = S), (d = !0)) : ((p = e = new Path2D()), (b[T] = p))
        }
        d || (e.beginPath && e.beginPath(), f ? x.draw(e, 1, 0, { x: 0, y: 0 }, 1) : x.draw(e, v, u, g, n), e.closePath && e.closePath()),
          (e = m),
          f && (e.translate(s, l), e.rotate(u), e.scale(v, v)),
          (r === 'filled' || r === 'both') && (f ? e.fill(p) : e.fill()),
          (r === 'hollow' || r === 'both') && ((e.lineWidth = a / (f ? v : 1)), (e.lineJoin = 'miter'), f ? e.stroke(p) : e.stroke()),
          f && (e.scale(1 / v, 1 / v), e.rotate(-u), e.translate(-s, -l))
      }
      iF = {}
      iF.safeDrawImage = function (t, e, r, n, i, a, s, l, u, h) {
        if (!(i <= 0 || a <= 0 || u <= 0 || h <= 0))
          try {
            t.drawImage(e, r, n, i, a, s, l, u, h)
          } catch (f) {
            hn(f)
          }
      }
      iF.drawInscribedImage = function (t, e, r, n, i) {
        var a = this,
          s = r.position(),
          l = s.x,
          u = s.y,
          h = r.cy().style(),
          f = h.getIndexedStyle.bind(h),
          d = f(r, 'background-fit', 'value', n),
          p = f(r, 'background-repeat', 'value', n),
          m = r.width(),
          g = r.height(),
          y = r.padding() * 2,
          v = m + (f(r, 'background-width-relative-to', 'value', n) === 'inner' ? 0 : y),
          x = g + (f(r, 'background-height-relative-to', 'value', n) === 'inner' ? 0 : y),
          b = r._private.rscratch,
          T = f(r, 'background-clip', 'value', n),
          S = T === 'node',
          w = f(r, 'background-image-opacity', 'value', n) * i,
          E = f(r, 'background-image-smoothing', 'value', n),
          _ = r.pstyle('corner-radius').value
        _ !== 'auto' && (_ = r.pstyle('corner-radius').pfValue)
        var C = e.width || e.cachedW,
          D = e.height || e.cachedH
        ;(C == null || D == null) &&
          (document.body.appendChild(e), (C = e.cachedW = e.width || e.offsetWidth), (D = e.cachedH = e.height || e.offsetHeight), document.body.removeChild(e))
        var O = C,
          R = D
        if (
          (f(r, 'background-width', 'value', n) !== 'auto' &&
            (f(r, 'background-width', 'units', n) === '%' ? (O = f(r, 'background-width', 'pfValue', n) * v) : (O = f(r, 'background-width', 'pfValue', n))),
          f(r, 'background-height', 'value', n) !== 'auto' &&
            (f(r, 'background-height', 'units', n) === '%' ? (R = f(r, 'background-height', 'pfValue', n) * x) : (R = f(r, 'background-height', 'pfValue', n))),
          !(O === 0 || R === 0))
        ) {
          if (d === 'contain') {
            var k = Math.min(v / O, x / R)
            ;(O *= k), (R *= k)
          } else if (d === 'cover') {
            var k = Math.max(v / O, x / R)
            ;(O *= k), (R *= k)
          }
          var L = l - v / 2,
            A = f(r, 'background-position-x', 'units', n),
            I = f(r, 'background-position-x', 'pfValue', n)
          A === '%' ? (L += (v - O) * I) : (L += I)
          var M = f(r, 'background-offset-x', 'units', n),
            P = f(r, 'background-offset-x', 'pfValue', n)
          M === '%' ? (L += (v - O) * P) : (L += P)
          var B = u - x / 2,
            F = f(r, 'background-position-y', 'units', n),
            z = f(r, 'background-position-y', 'pfValue', n)
          F === '%' ? (B += (x - R) * z) : (B += z)
          var $ = f(r, 'background-offset-y', 'units', n),
            U = f(r, 'background-offset-y', 'pfValue', n)
          $ === '%' ? (B += (x - R) * U) : (B += U), b.pathCache && ((L -= l), (B -= u), (l = 0), (u = 0))
          var K = t.globalAlpha
          t.globalAlpha = w
          var ee = a.getImgSmoothing(t),
            Y = !1
          if ((E === 'no' && ee ? (a.setImgSmoothing(t, !1), (Y = !0)) : E === 'yes' && !ee && (a.setImgSmoothing(t, !0), (Y = !0)), p === 'no-repeat'))
            S && (t.save(), b.pathCache ? t.clip(b.pathCache) : (a.nodeShapes[a.getNodeShape(r)].draw(t, l, u, v, x, _, b), t.clip())),
              a.safeDrawImage(t, e, 0, 0, C, D, L, B, O, R),
              S && t.restore()
          else {
            var ce = t.createPattern(e, p)
            ;(t.fillStyle = ce), a.nodeShapes[a.getNodeShape(r)].draw(t, l, u, v, x, _, b), t.translate(L, B), t.fill(), t.translate(-L, -B)
          }
          ;(t.globalAlpha = K), Y && a.setImgSmoothing(t, ee)
        }
      }
      n0 = {}
      n0.eleTextBiggerThanMin = function (t, e) {
        if (!e) {
          var r = t.cy().zoom(),
            n = this.getPixelRatio(),
            i = Math.ceil(VB(r * n))
          e = Math.pow(2, i)
        }
        var a = t.pstyle('font-size').pfValue * e,
          s = t.pstyle('min-zoomed-font-size').pfValue
        return !(a < s)
      }
      n0.drawElementText = function (t, e, r, n, i) {
        var a = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : !0,
          s = this
        if (n == null) {
          if (a && !s.eleTextBiggerThanMin(e)) return
        } else if (n === !1) return
        if (e.isNode()) {
          var l = e.pstyle('label')
          if (!l || !l.value) return
          var u = s.getLabelJustification(e)
          ;(t.textAlign = u), (t.textBaseline = 'bottom')
        } else {
          var h = e.element()._private.rscratch.badLine,
            f = e.pstyle('label'),
            d = e.pstyle('source-label'),
            p = e.pstyle('target-label')
          if (h || ((!f || !f.value) && (!d || !d.value) && (!p || !p.value))) return
          ;(t.textAlign = 'center'), (t.textBaseline = 'bottom')
        }
        var m = !r,
          g
        r && ((g = r), t.translate(-g.x1, -g.y1)),
          i == null ? (s.drawText(t, e, null, m, a), e.isEdge() && (s.drawText(t, e, 'source', m, a), s.drawText(t, e, 'target', m, a))) : s.drawText(t, e, i, m, a),
          r && t.translate(g.x1, g.y1)
      }
      n0.getFontCache = function (t) {
        var e
        this.fontCaches = this.fontCaches || []
        for (var r = 0; r < this.fontCaches.length; r++) if (((e = this.fontCaches[r]), e.context === t)) return e
        return (e = { context: t }), this.fontCaches.push(e), e
      }
      n0.setupTextStyle = function (t, e) {
        var r = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : !0,
          n = e.pstyle('font-style').strValue,
          i = e.pstyle('font-size').pfValue + 'px',
          a = e.pstyle('font-family').strValue,
          s = e.pstyle('font-weight').strValue,
          l = r ? e.effectiveOpacity() * e.pstyle('text-opacity').value : 1,
          u = e.pstyle('text-outline-opacity').value * l,
          h = e.pstyle('color').value,
          f = e.pstyle('text-outline-color').value
        ;(t.font = n + ' ' + s + ' ' + i + ' ' + a), (t.lineJoin = 'round'), this.colorFillStyle(t, h[0], h[1], h[2], l), this.colorStrokeStyle(t, f[0], f[1], f[2], u)
      }
      o(mB, 'roundRect')
      n0.getTextAngle = function (t, e) {
        var r,
          n = t._private,
          i = n.rscratch,
          a = e ? e + '-' : '',
          s = t.pstyle(a + 'text-rotation')
        if (s.strValue === 'autorotate') {
          var l = Wl(i, 'labelAngle', e)
          r = t.isEdge() ? l : 0
        } else s.strValue === 'none' ? (r = 0) : (r = s.pfValue)
        return r
      }
      n0.drawText = function (t, e, r) {
        var n = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : !0,
          i = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : !0,
          a = e._private,
          s = a.rscratch,
          l = i ? e.effectiveOpacity() : 1
        if (!(i && (l === 0 || e.pstyle('text-opacity').value === 0))) {
          r === 'main' && (r = null)
          var u = Wl(s, 'labelX', r),
            h = Wl(s, 'labelY', r),
            f,
            d,
            p = this.getLabelText(e, r)
          if (p != null && p !== '' && !isNaN(u) && !isNaN(h)) {
            this.setupTextStyle(t, e, i)
            var m = r ? r + '-' : '',
              g = Wl(s, 'labelWidth', r),
              y = Wl(s, 'labelHeight', r),
              v = e.pstyle(m + 'text-margin-x').pfValue,
              x = e.pstyle(m + 'text-margin-y').pfValue,
              b = e.isEdge(),
              T = e.pstyle('text-halign').value,
              S = e.pstyle('text-valign').value
            b && ((T = 'center'), (S = 'center')), (u += v), (h += x)
            var w
            switch ((n ? (w = this.getTextAngle(e, r)) : (w = 0), w !== 0 && ((f = u), (d = h), t.translate(f, d), t.rotate(w), (u = 0), (h = 0)), S)) {
              case 'top':
                break
              case 'center':
                h += y / 2
                break
              case 'bottom':
                h += y
                break
            }
            var E = e.pstyle('text-background-opacity').value,
              _ = e.pstyle('text-border-opacity').value,
              C = e.pstyle('text-border-width').pfValue,
              D = e.pstyle('text-background-padding').pfValue,
              O = e.pstyle('text-background-shape').strValue,
              R = O.indexOf('round') === 0,
              k = 2
            if (E > 0 || (C > 0 && _ > 0)) {
              var L = u - D
              switch (T) {
                case 'left':
                  L -= g
                  break
                case 'center':
                  L -= g / 2
                  break
              }
              var A = h - y - D,
                I = g + 2 * D,
                M = y + 2 * D
              if (E > 0) {
                var P = t.fillStyle,
                  B = e.pstyle('text-background-color').value
                ;(t.fillStyle = 'rgba(' + B[0] + ',' + B[1] + ',' + B[2] + ',' + E * l + ')'), R ? mB(t, L, A, I, M, k) : t.fillRect(L, A, I, M), (t.fillStyle = P)
              }
              if (C > 0 && _ > 0) {
                var F = t.strokeStyle,
                  z = t.lineWidth,
                  $ = e.pstyle('text-border-color').value,
                  U = e.pstyle('text-border-style').value
                if (((t.strokeStyle = 'rgba(' + $[0] + ',' + $[1] + ',' + $[2] + ',' + _ * l + ')'), (t.lineWidth = C), t.setLineDash))
                  switch (U) {
                    case 'dotted':
                      t.setLineDash([1, 1])
                      break
                    case 'dashed':
                      t.setLineDash([4, 2])
                      break
                    case 'double':
                      ;(t.lineWidth = C / 4), t.setLineDash([])
                      break
                    case 'solid':
                      t.setLineDash([])
                      break
                  }
                if ((R ? mB(t, L, A, I, M, k, 'stroke') : t.strokeRect(L, A, I, M), U === 'double')) {
                  var K = C / 2
                  R ? mB(t, L + K, A + K, I - K * 2, M - K * 2, k, 'stroke') : t.strokeRect(L + K, A + K, I - K * 2, M - K * 2)
                }
                t.setLineDash && t.setLineDash([]), (t.lineWidth = z), (t.strokeStyle = F)
              }
            }
            var ee = 2 * e.pstyle('text-outline-width').pfValue
            if ((ee > 0 && (t.lineWidth = ee), e.pstyle('text-wrap').value === 'wrap')) {
              var Y = Wl(s, 'labelWrapCachedLines', r),
                ce = Wl(s, 'labelLineHeight', r),
                Z = g / 2,
                ue = this.getLabelJustification(e)
              switch (
                (ue === 'auto' ||
                  (T === 'left'
                    ? ue === 'left'
                      ? (u += -g)
                      : ue === 'center' && (u += -Z)
                    : T === 'center'
                      ? ue === 'left'
                        ? (u += -Z)
                        : ue === 'right' && (u += Z)
                      : T === 'right' && (ue === 'center' ? (u += Z) : ue === 'right' && (u += g))),
                S)
              ) {
                case 'top':
                  h -= (Y.length - 1) * ce
                  break
                case 'center':
                case 'bottom':
                  h -= (Y.length - 1) * ce
                  break
              }
              for (var Q = 0; Q < Y.length; Q++) ee > 0 && t.strokeText(Y[Q], u, h), t.fillText(Y[Q], u, h), (h += ce)
            } else ee > 0 && t.strokeText(p, u, h), t.fillText(p, u, h)
            w !== 0 && (t.rotate(-w), t.translate(-f, -d))
          }
        }
      }
      py = {}
      py.drawNode = function (t, e, r) {
        var n = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : !0,
          i = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : !0,
          a = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : !0,
          s = this,
          l,
          u,
          h = e._private,
          f = h.rscratch,
          d = e.position()
        if (!(!_t(d.x) || !_t(d.y)) && !(a && !e.visible())) {
          var p = a ? e.effectiveOpacity() : 1,
            m = s.usePaths(),
            g,
            y = !1,
            v = e.padding()
          ;(l = e.width() + 2 * v), (u = e.height() + 2 * v)
          var x
          r && ((x = r), t.translate(-x.x1, -x.y1))
          for (var b = e.pstyle('background-image'), T = b.value, S = new Array(T.length), w = new Array(T.length), E = 0, _ = 0; _ < T.length; _++) {
            var C = T[_],
              D = (S[_] = C != null && C !== 'none')
            if (D) {
              var O = e.cy().style().getIndexedStyle(e, 'background-image-crossorigin', 'value', _)
              E++,
                (w[_] = s.getCachedImage(C, O, function () {
                  ;(h.backgroundTimestamp = Date.now()), e.emitAndNotify('background')
                }))
            }
          }
          var R = e.pstyle('background-blacken').value,
            k = e.pstyle('border-width').pfValue,
            L = e.pstyle('background-opacity').value * p,
            A = e.pstyle('border-color').value,
            I = e.pstyle('border-style').value,
            M = e.pstyle('border-join').value,
            P = e.pstyle('border-cap').value,
            B = e.pstyle('border-position').value,
            F = e.pstyle('border-dash-pattern').pfValue,
            z = e.pstyle('border-dash-offset').pfValue,
            $ = e.pstyle('border-opacity').value * p,
            U = e.pstyle('outline-width').pfValue,
            K = e.pstyle('outline-color').value,
            ee = e.pstyle('outline-style').value,
            Y = e.pstyle('outline-opacity').value * p,
            ce = e.pstyle('outline-offset').value,
            Z = e.pstyle('corner-radius').value
          Z !== 'auto' && (Z = e.pstyle('corner-radius').pfValue)
          var ue = o(function () {
              var oe = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : L
              s.eleFillStyle(t, e, oe)
            }, 'setupShapeColor'),
            Q = o(function () {
              var oe = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : $
              s.colorStrokeStyle(t, A[0], A[1], A[2], oe)
            }, 'setupBorderColor'),
            j = o(function () {
              var oe = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : Y
              s.colorStrokeStyle(t, K[0], K[1], K[2], oe)
            }, 'setupOutlineColor'),
            ne = o(function (oe, V, Te, W) {
              var pe = (s.nodePathCache = s.nodePathCache || []),
                ve = xge(Te === 'polygon' ? Te + ',' + W.join(',') : Te, '' + V, '' + oe, '' + Z),
                Pe = pe[ve],
                _e,
                be = !1
              return Pe != null ? ((_e = Pe), (be = !0), (f.pathCache = _e)) : ((_e = new Path2D()), (pe[ve] = f.pathCache = _e)), { path: _e, cacheHit: be }
            }, 'getPath'),
            te = e.pstyle('shape').strValue,
            he = e.pstyle('shape-polygon-points').pfValue
          if (m) {
            t.translate(d.x, d.y)
            var le = ne(l, u, te, he)
            ;(g = le.path), (y = le.cacheHit)
          }
          var J = o(function () {
              if (!y) {
                var oe = d
                m && (oe = { x: 0, y: 0 }), s.nodeShapes[s.getNodeShape(e)].draw(g || t, oe.x, oe.y, l, u, Z, f)
              }
              m ? t.fill(g) : t.fill()
            }, 'drawShape'),
            Se = o(function () {
              for (
                var oe = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : p,
                  V = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !0,
                  Te = h.backgrounding,
                  W = 0,
                  pe = 0;
                pe < w.length;
                pe++
              ) {
                var ve = e.cy().style().getIndexedStyle(e, 'background-image-containment', 'value', pe)
                if ((V && ve === 'over') || (!V && ve === 'inside')) {
                  W++
                  continue
                }
                S[pe] && w[pe].complete && !w[pe].error && (W++, s.drawInscribedImage(t, w[pe], e, pe, oe))
              }
              ;(h.backgrounding = W !== E), Te !== h.backgrounding && e.updateStyle(!1)
            }, 'drawImages'),
            se = o(function () {
              var oe = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : !1,
                V = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : p
              s.hasPie(e) && (s.drawPie(t, e, V), oe && (m || s.nodeShapes[s.getNodeShape(e)].draw(t, d.x, d.y, l, u, Z, f)))
            }, 'drawPie'),
            ae = o(function () {
              var oe = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : p,
                V = (R > 0 ? R : -R) * oe,
                Te = R > 0 ? 0 : 255
              R !== 0 && (s.colorFillStyle(t, Te, Te, Te, V), m ? t.fill(g) : t.fill())
            }, 'darken'),
            Oe = o(function () {
              if (k > 0) {
                if (((t.lineWidth = k), (t.lineCap = P), (t.lineJoin = M), t.setLineDash))
                  switch (I) {
                    case 'dotted':
                      t.setLineDash([1, 1])
                      break
                    case 'dashed':
                      t.setLineDash(F), (t.lineDashOffset = z)
                      break
                    case 'solid':
                    case 'double':
                      t.setLineDash([])
                      break
                  }
                if (B !== 'center') {
                  if ((t.save(), (t.lineWidth *= 2), B === 'inside')) m ? t.clip(g) : t.clip()
                  else {
                    var oe = new Path2D()
                    oe.rect(-l / 2 - k, -u / 2 - k, l + 2 * k, u + 2 * k), oe.addPath(g), t.clip(oe, 'evenodd')
                  }
                  m ? t.stroke(g) : t.stroke(), t.restore()
                } else m ? t.stroke(g) : t.stroke()
                if (I === 'double') {
                  t.lineWidth = k / 3
                  var V = t.globalCompositeOperation
                  ;(t.globalCompositeOperation = 'destination-out'), m ? t.stroke(g) : t.stroke(), (t.globalCompositeOperation = V)
                }
                t.setLineDash && t.setLineDash([])
              }
            }, 'drawBorder'),
            ye = o(function () {
              if (U > 0) {
                if (((t.lineWidth = U), (t.lineCap = 'butt'), t.setLineDash))
                  switch (ee) {
                    case 'dotted':
                      t.setLineDash([1, 1])
                      break
                    case 'dashed':
                      t.setLineDash([4, 2])
                      break
                    case 'solid':
                    case 'double':
                      t.setLineDash([])
                      break
                  }
                var oe = d
                m && (oe = { x: 0, y: 0 })
                var V = s.getNodeShape(e),
                  Te = k
                B === 'inside' && (Te = 0), B === 'outside' && (Te *= 2)
                var W = (l + Te + (U + ce)) / l,
                  pe = (u + Te + (U + ce)) / u,
                  ve = l * W,
                  Pe = u * pe,
                  _e = s.nodeShapes[V].points,
                  be
                if (m) {
                  var Ve = ne(ve, Pe, V, _e)
                  be = Ve.path
                }
                if (V === 'ellipse') s.drawEllipsePath(be || t, oe.x, oe.y, ve, Pe)
                else if (['round-diamond', 'round-heptagon', 'round-hexagon', 'round-octagon', 'round-pentagon', 'round-polygon', 'round-triangle', 'round-tag'].includes(V)) {
                  var De = 0,
                    qe = 0,
                    at = 0
                  V === 'round-diamond'
                    ? (De = (Te + ce + U) * 1.4)
                    : V === 'round-heptagon'
                      ? ((De = (Te + ce + U) * 1.075), (at = -(Te / 2 + ce + U) / 35))
                      : V === 'round-hexagon'
                        ? (De = (Te + ce + U) * 1.12)
                        : V === 'round-pentagon'
                          ? ((De = (Te + ce + U) * 1.13), (at = -(Te / 2 + ce + U) / 15))
                          : V === 'round-tag'
                            ? ((De = (Te + ce + U) * 1.12), (qe = (Te / 2 + U + ce) * 0.07))
                            : V === 'round-triangle' && ((De = (Te + ce + U) * (Math.PI / 2)), (at = -(Te + ce / 2 + U) / Math.PI)),
                    De !== 0 && ((W = (l + De) / l), (ve = l * W), ['round-hexagon', 'round-tag'].includes(V) || ((pe = (u + De) / u), (Pe = u * pe))),
                    (Z = Z === 'auto' ? Lge(ve, Pe) : Z)
                  for (var Rt = ve / 2, st = Pe / 2, Ue = Z + (Te + U + ce) / 2, ct = new Array(_e.length / 2), We = new Array(_e.length / 2), ot = 0; ot < _e.length / 2; ot++)
                    ct[ot] = { x: oe.x + qe + Rt * _e[ot * 2], y: oe.y + at + st * _e[ot * 2 + 1] }
                  var Yt,
                    Tt,
                    Mt,
                    bt,
                    ut = ct.length
                  for (Tt = ct[ut - 1], Yt = 0; Yt < ut; Yt++) (Mt = ct[Yt % ut]), (bt = ct[(Yt + 1) % ut]), (We[Yt] = rF(Tt, Mt, bt, Ue)), (Tt = Mt), (Mt = bt)
                  s.drawRoundPolygonPath(be || t, oe.x + qe, oe.y + at, l * W, u * pe, _e, We)
                } else if (['roundrectangle', 'round-rectangle'].includes(V))
                  (Z = Z === 'auto' ? Zp(ve, Pe) : Z), s.drawRoundRectanglePath(be || t, oe.x, oe.y, ve, Pe, Z + (Te + U + ce) / 2)
                else if (['cutrectangle', 'cut-rectangle'].includes(V))
                  (Z = Z === 'auto' ? HB() : Z), s.drawCutRectanglePath(be || t, oe.x, oe.y, ve, Pe, null, Z + (Te + U + ce) / 4)
                else if (['bottomroundrectangle', 'bottom-round-rectangle'].includes(V))
                  (Z = Z === 'auto' ? Zp(ve, Pe) : Z), s.drawBottomRoundRectanglePath(be || t, oe.x, oe.y, ve, Pe, Z + (Te + U + ce) / 2)
                else if (V === 'barrel') s.drawBarrelPath(be || t, oe.x, oe.y, ve, Pe)
                else if (V.startsWith('polygon') || ['rhomboid', 'right-rhomboid', 'round-tag', 'tag', 'vee'].includes(V)) {
                  var St = (Te + U + ce) / l
                  ;(_e = G6(V6(_e, St))), s.drawPolygonPath(be || t, oe.x, oe.y, l, u, _e)
                } else {
                  var ft = (Te + U + ce) / l
                  ;(_e = G6(V6(_e, -ft))), s.drawPolygonPath(be || t, oe.x, oe.y, l, u, _e)
                }
                if ((m ? t.stroke(be) : t.stroke(), ee === 'double')) {
                  t.lineWidth = Te / 3
                  var vt = t.globalCompositeOperation
                  ;(t.globalCompositeOperation = 'destination-out'), m ? t.stroke(be) : t.stroke(), (t.globalCompositeOperation = vt)
                }
                t.setLineDash && t.setLineDash([])
              }
            }, 'drawOutline'),
            Be = o(function () {
              i && s.drawNodeOverlay(t, e, d, l, u)
            }, 'drawOverlay'),
            He = o(function () {
              i && s.drawNodeUnderlay(t, e, d, l, u)
            }, 'drawUnderlay'),
            ze = o(function () {
              s.drawElementText(t, e, null, n)
            }, 'drawText'),
            Le = e.pstyle('ghost').value === 'yes'
          if (Le) {
            var Ie = e.pstyle('ghost-offset-x').pfValue,
              xe = e.pstyle('ghost-offset-y').pfValue,
              q = e.pstyle('ghost-opacity').value,
              de = q * p
            t.translate(Ie, xe), j(), ye(), ue(q * L), J(), Se(de, !0), Q(q * $), Oe(), se(R !== 0 || k !== 0), Se(de, !1), ae(de), t.translate(-Ie, -xe)
          }
          m && t.translate(-d.x, -d.y),
            He(),
            m && t.translate(d.x, d.y),
            j(),
            ye(),
            ue(),
            J(),
            Se(p, !0),
            Q(),
            Oe(),
            se(R !== 0 || k !== 0),
            Se(p, !1),
            ae(),
            m && t.translate(-d.x, -d.y),
            ze(),
            Be(),
            r && t.translate(x.x1, x.y1)
        }
      }
      I1e = o(function (e) {
        if (!['overlay', 'underlay'].includes(e)) throw new Error('Invalid state')
        return function (r, n, i, a, s) {
          var l = this
          if (n.visible()) {
            var u = n.pstyle(''.concat(e, '-padding')).pfValue,
              h = n.pstyle(''.concat(e, '-opacity')).value,
              f = n.pstyle(''.concat(e, '-color')).value,
              d = n.pstyle(''.concat(e, '-shape')).value,
              p = n.pstyle(''.concat(e, '-corner-radius')).value
            if (h > 0) {
              if (((i = i || n.position()), a == null || s == null)) {
                var m = n.padding()
                ;(a = n.width() + 2 * m), (s = n.height() + 2 * m)
              }
              l.colorFillStyle(r, f[0], f[1], f[2], h), l.nodeShapes[d].draw(r, i.x, i.y, a + u * 2, s + u * 2, p), r.fill()
            }
          }
        }
      }, 'drawNodeOverlayUnderlay')
      py.drawNodeOverlay = I1e('overlay')
      py.drawNodeUnderlay = I1e('underlay')
      py.hasPie = function (t) {
        return (t = t[0]), t._private.hasPie
      }
      py.drawPie = function (t, e, r, n) {
        ;(e = e[0]), (n = n || e.position())
        var i = e.cy().style(),
          a = e.pstyle('pie-size'),
          s = n.x,
          l = n.y,
          u = e.width(),
          h = e.height(),
          f = Math.min(u, h) / 2,
          d = 0,
          p = this.usePaths()
        p && ((s = 0), (l = 0)), a.units === '%' ? (f = f * a.pfValue) : a.pfValue !== void 0 && (f = a.pfValue / 2)
        for (var m = 1; m <= i.pieBackgroundN; m++) {
          var g = e.pstyle('pie-' + m + '-background-size').value,
            y = e.pstyle('pie-' + m + '-background-color').value,
            v = e.pstyle('pie-' + m + '-background-opacity').value * r,
            x = g / 100
          x + d > 1 && (x = 1 - d)
          var b = 1.5 * Math.PI + 2 * Math.PI * d,
            T = 2 * Math.PI * x,
            S = b + T
          g === 0 || d >= 1 || d + x > 1 || (t.beginPath(), t.moveTo(s, l), t.arc(s, l, f, b, S), t.closePath(), this.colorFillStyle(t, y[0], y[1], y[2], v), t.fill(), (d += x))
        }
      }
      ;(ws = {}), (NJe = 100)
      ws.getPixelRatio = function () {
        var t = this.data.contexts[0]
        if (this.forcedPixelRatio != null) return this.forcedPixelRatio
        var e = this.cy.window(),
          r =
            t.backingStorePixelRatio ||
            t.webkitBackingStorePixelRatio ||
            t.mozBackingStorePixelRatio ||
            t.msBackingStorePixelRatio ||
            t.oBackingStorePixelRatio ||
            t.backingStorePixelRatio ||
            1
        return (e.devicePixelRatio || 1) / r
      }
      ws.paintCache = function (t) {
        for (var e = (this.paintCaches = this.paintCaches || []), r = !0, n, i = 0; i < e.length; i++)
          if (((n = e[i]), n.context === t)) {
            r = !1
            break
          }
        return r && ((n = { context: t }), e.push(n)), n
      }
      ws.createGradientStyleFor = function (t, e, r, n, i) {
        var a,
          s = this.usePaths(),
          l = r.pstyle(e + '-gradient-stop-colors').value,
          u = r.pstyle(e + '-gradient-stop-positions').pfValue
        if (n === 'radial-gradient')
          if (r.isEdge()) {
            var h = r.sourceEndpoint(),
              f = r.targetEndpoint(),
              d = r.midpoint(),
              p = Qp(h, d),
              m = Qp(f, d)
            a = t.createRadialGradient(d.x, d.y, 0, d.x, d.y, Math.max(p, m))
          } else {
            var g = s ? { x: 0, y: 0 } : r.position(),
              y = r.paddedWidth(),
              v = r.paddedHeight()
            a = t.createRadialGradient(g.x, g.y, 0, g.x, g.y, Math.max(y, v))
          }
        else if (r.isEdge()) {
          var x = r.sourceEndpoint(),
            b = r.targetEndpoint()
          a = t.createLinearGradient(x.x, x.y, b.x, b.y)
        } else {
          var T = s ? { x: 0, y: 0 } : r.position(),
            S = r.paddedWidth(),
            w = r.paddedHeight(),
            E = S / 2,
            _ = w / 2,
            C = r.pstyle('background-gradient-direction').value
          switch (C) {
            case 'to-bottom':
              a = t.createLinearGradient(T.x, T.y - _, T.x, T.y + _)
              break
            case 'to-top':
              a = t.createLinearGradient(T.x, T.y + _, T.x, T.y - _)
              break
            case 'to-left':
              a = t.createLinearGradient(T.x + E, T.y, T.x - E, T.y)
              break
            case 'to-right':
              a = t.createLinearGradient(T.x - E, T.y, T.x + E, T.y)
              break
            case 'to-bottom-right':
            case 'to-right-bottom':
              a = t.createLinearGradient(T.x - E, T.y - _, T.x + E, T.y + _)
              break
            case 'to-top-right':
            case 'to-right-top':
              a = t.createLinearGradient(T.x - E, T.y + _, T.x + E, T.y - _)
              break
            case 'to-bottom-left':
            case 'to-left-bottom':
              a = t.createLinearGradient(T.x + E, T.y - _, T.x - E, T.y + _)
              break
            case 'to-top-left':
            case 'to-left-top':
              a = t.createLinearGradient(T.x + E, T.y + _, T.x - E, T.y - _)
              break
          }
        }
        if (!a) return null
        for (var D = u.length === l.length, O = l.length, R = 0; R < O; R++)
          a.addColorStop(D ? u[R] : R / (O - 1), 'rgba(' + l[R][0] + ',' + l[R][1] + ',' + l[R][2] + ',' + i + ')')
        return a
      }
      ws.gradientFillStyle = function (t, e, r, n) {
        var i = this.createGradientStyleFor(t, 'background', e, r, n)
        if (!i) return null
        t.fillStyle = i
      }
      ws.colorFillStyle = function (t, e, r, n, i) {
        t.fillStyle = 'rgba(' + e + ',' + r + ',' + n + ',' + i + ')'
      }
      ws.eleFillStyle = function (t, e, r) {
        var n = e.pstyle('background-fill').value
        if (n === 'linear-gradient' || n === 'radial-gradient') this.gradientFillStyle(t, e, n, r)
        else {
          var i = e.pstyle('background-color').value
          this.colorFillStyle(t, i[0], i[1], i[2], r)
        }
      }
      ws.gradientStrokeStyle = function (t, e, r, n) {
        var i = this.createGradientStyleFor(t, 'line', e, r, n)
        if (!i) return null
        t.strokeStyle = i
      }
      ws.colorStrokeStyle = function (t, e, r, n, i) {
        t.strokeStyle = 'rgba(' + e + ',' + r + ',' + n + ',' + i + ')'
      }
      ws.eleStrokeStyle = function (t, e, r) {
        var n = e.pstyle('line-fill').value
        if (n === 'linear-gradient' || n === 'radial-gradient') this.gradientStrokeStyle(t, e, n, r)
        else {
          var i = e.pstyle('line-color').value
          this.colorStrokeStyle(t, i[0], i[1], i[2], r)
        }
      }
      ws.matchCanvasSize = function (t) {
        var e = this,
          r = e.data,
          n = e.findContainerClientCoords(),
          i = n[2],
          a = n[3],
          s = e.getPixelRatio(),
          l = e.motionBlurPxRatio
        ;(t === e.data.bufferCanvases[e.MOTIONBLUR_BUFFER_NODE] || t === e.data.bufferCanvases[e.MOTIONBLUR_BUFFER_DRAG]) && (s = l)
        var u = i * s,
          h = a * s,
          f
        if (!(u === e.canvasWidth && h === e.canvasHeight)) {
          e.fontCaches = null
          var d = r.canvasContainer
          ;(d.style.width = i + 'px'), (d.style.height = a + 'px')
          for (var p = 0; p < e.CANVAS_LAYERS; p++) (f = r.canvases[p]), (f.width = u), (f.height = h), (f.style.width = i + 'px'), (f.style.height = a + 'px')
          for (var p = 0; p < e.BUFFER_COUNT; p++) (f = r.bufferCanvases[p]), (f.width = u), (f.height = h), (f.style.width = i + 'px'), (f.style.height = a + 'px')
          ;(e.textureMult = 1),
            s <= 1 && ((f = r.bufferCanvases[e.TEXTURE_BUFFER]), (e.textureMult = 2), (f.width = u * e.textureMult), (f.height = h * e.textureMult)),
            (e.canvasWidth = u),
            (e.canvasHeight = h),
            (e.pixelRatio = s)
        }
      }
      ws.renderTo = function (t, e, r, n) {
        this.render({ forcedContext: t, forcedZoom: e, forcedPan: r, drawAllLayers: !0, forcedPxRatio: n })
      }
      ws.clearCanvas = function () {
        var t = this,
          e = t.data
        function r(n) {
          n.clearRect(0, 0, t.canvasWidth, t.canvasHeight)
        }
        o(r, 'clear'), r(e.contexts[t.NODE]), r(e.contexts[t.DRAG])
      }
      ws.render = function (t) {
        var e = this
        t = t || kge()
        var r = e.cy,
          n = t.forcedContext,
          i = t.drawAllLayers,
          a = t.drawOnlyNodeLayer,
          s = t.forcedZoom,
          l = t.forcedPan,
          u = t.forcedPxRatio === void 0 ? this.getPixelRatio() : t.forcedPxRatio,
          h = e.data,
          f = h.canvasNeedsRedraw,
          d = e.textureOnViewport && !n && (e.pinching || e.hoverData.dragging || e.swipePanning || e.data.wheelZooming),
          p = t.motionBlur !== void 0 ? t.motionBlur : e.motionBlur,
          m = e.motionBlurPxRatio,
          g = r.hasCompoundNodes(),
          y = e.hoverData.draggingEles,
          v = !!(e.hoverData.selecting || e.touchData.selecting)
        p = p && !n && e.motionBlurEnabled && !v
        var x = p
        n ||
          (e.prevPxRatio !== u && (e.invalidateContainerClientCoordsCache(), e.matchCanvasSize(e.container), e.redrawHint('eles', !0), e.redrawHint('drag', !0)),
          (e.prevPxRatio = u)),
          !n && e.motionBlurTimeout && clearTimeout(e.motionBlurTimeout),
          p && (e.mbFrames == null && (e.mbFrames = 0), e.mbFrames++, e.mbFrames < 3 && (x = !1), e.mbFrames > e.minMbLowQualFrames && (e.motionBlurPxRatio = e.mbPxRBlurry)),
          e.clearingMotionBlur && (e.motionBlurPxRatio = 1),
          e.textureDrawLastFrame && !d && ((f[e.NODE] = !0), (f[e.SELECT_BOX] = !0))
        var b = r.style(),
          T = r.zoom(),
          S = s !== void 0 ? s : T,
          w = r.pan(),
          E = { x: w.x, y: w.y },
          _ = { zoom: T, pan: { x: w.x, y: w.y } },
          C = e.prevViewport,
          D = C === void 0 || _.zoom !== C.zoom || _.pan.x !== C.pan.x || _.pan.y !== C.pan.y
        !D && !(y && !g) && (e.motionBlurPxRatio = 1), l && (E = l), (S *= u), (E.x *= u), (E.y *= u)
        var O = e.getCachedZSortedEles()
        function R(Q, j, ne, te, he) {
          var le = Q.globalCompositeOperation
          ;(Q.globalCompositeOperation = 'destination-out'),
            e.colorFillStyle(Q, 255, 255, 255, e.motionBlurTransparency),
            Q.fillRect(j, ne, te, he),
            (Q.globalCompositeOperation = le)
        }
        o(R, 'mbclear')
        function k(Q, j) {
          var ne, te, he, le
          !e.clearingMotionBlur && (Q === h.bufferContexts[e.MOTIONBLUR_BUFFER_NODE] || Q === h.bufferContexts[e.MOTIONBLUR_BUFFER_DRAG])
            ? ((ne = { x: w.x * m, y: w.y * m }), (te = T * m), (he = e.canvasWidth * m), (le = e.canvasHeight * m))
            : ((ne = E), (te = S), (he = e.canvasWidth), (le = e.canvasHeight)),
            Q.setTransform(1, 0, 0, 1, 0, 0),
            j === 'motionBlur' ? R(Q, 0, 0, he, le) : !n && (j === void 0 || j) && Q.clearRect(0, 0, he, le),
            i || (Q.translate(ne.x, ne.y), Q.scale(te, te)),
            l && Q.translate(l.x, l.y),
            s && Q.scale(s, s)
        }
        if ((o(k, 'setContextTransform'), d || (e.textureDrawLastFrame = !1), d)) {
          if (((e.textureDrawLastFrame = !0), !e.textureCache)) {
            ;(e.textureCache = {}), (e.textureCache.bb = r.mutableElements().boundingBox()), (e.textureCache.texture = e.data.bufferCanvases[e.TEXTURE_BUFFER])
            var L = e.data.bufferContexts[e.TEXTURE_BUFFER]
            L.setTransform(1, 0, 0, 1, 0, 0),
              L.clearRect(0, 0, e.canvasWidth * e.textureMult, e.canvasHeight * e.textureMult),
              e.render({ forcedContext: L, drawOnlyNodeLayer: !0, forcedPxRatio: u * e.textureMult })
            var _ = (e.textureCache.viewport = { zoom: r.zoom(), pan: r.pan(), width: e.canvasWidth, height: e.canvasHeight })
            _.mpan = { x: (0 - _.pan.x) / _.zoom, y: (0 - _.pan.y) / _.zoom }
          }
          ;(f[e.DRAG] = !1), (f[e.NODE] = !1)
          var A = h.contexts[e.NODE],
            I = e.textureCache.texture,
            _ = e.textureCache.viewport
          A.setTransform(1, 0, 0, 1, 0, 0), p ? R(A, 0, 0, _.width, _.height) : A.clearRect(0, 0, _.width, _.height)
          var M = b.core('outside-texture-bg-color').value,
            P = b.core('outside-texture-bg-opacity').value
          e.colorFillStyle(A, M[0], M[1], M[2], P), A.fillRect(0, 0, _.width, _.height)
          var T = r.zoom()
          k(A, !1), A.clearRect(_.mpan.x, _.mpan.y, _.width / _.zoom / u, _.height / _.zoom / u), A.drawImage(I, _.mpan.x, _.mpan.y, _.width / _.zoom / u, _.height / _.zoom / u)
        } else e.textureOnViewport && !n && (e.textureCache = null)
        var B = r.extent(),
          F = e.pinching || e.hoverData.dragging || e.swipePanning || e.data.wheelZooming || e.hoverData.draggingEles || e.cy.animated(),
          z = e.hideEdgesOnViewport && F,
          $ = []
        if (
          (($[e.NODE] = (!f[e.NODE] && p && !e.clearedForMotionBlur[e.NODE]) || e.clearingMotionBlur),
          $[e.NODE] && (e.clearedForMotionBlur[e.NODE] = !0),
          ($[e.DRAG] = (!f[e.DRAG] && p && !e.clearedForMotionBlur[e.DRAG]) || e.clearingMotionBlur),
          $[e.DRAG] && (e.clearedForMotionBlur[e.DRAG] = !0),
          f[e.NODE] || i || a || $[e.NODE])
        ) {
          var U = p && !$[e.NODE] && m !== 1,
            A = n || (U ? e.data.bufferContexts[e.MOTIONBLUR_BUFFER_NODE] : h.contexts[e.NODE]),
            K = p && !U ? 'motionBlur' : void 0
          k(A, K), z ? e.drawCachedNodes(A, O.nondrag, u, B) : e.drawLayeredElements(A, O.nondrag, u, B), e.debug && e.drawDebugPoints(A, O.nondrag), !i && !p && (f[e.NODE] = !1)
        }
        if (!a && (f[e.DRAG] || i || $[e.DRAG])) {
          var U = p && !$[e.DRAG] && m !== 1,
            A = n || (U ? e.data.bufferContexts[e.MOTIONBLUR_BUFFER_DRAG] : h.contexts[e.DRAG])
          k(A, p && !U ? 'motionBlur' : void 0),
            z ? e.drawCachedNodes(A, O.drag, u, B) : e.drawCachedElements(A, O.drag, u, B),
            e.debug && e.drawDebugPoints(A, O.drag),
            !i && !p && (f[e.DRAG] = !1)
        }
        if ((this.drawSelectionRectangle(t, k), p && m !== 1)) {
          var ee = h.contexts[e.NODE],
            Y = e.data.bufferCanvases[e.MOTIONBLUR_BUFFER_NODE],
            ce = h.contexts[e.DRAG],
            Z = e.data.bufferCanvases[e.MOTIONBLUR_BUFFER_DRAG],
            ue = o(function (j, ne, te) {
              j.setTransform(1, 0, 0, 1, 0, 0), te || !x ? j.clearRect(0, 0, e.canvasWidth, e.canvasHeight) : R(j, 0, 0, e.canvasWidth, e.canvasHeight)
              var he = m
              j.drawImage(ne, 0, 0, e.canvasWidth * he, e.canvasHeight * he, 0, 0, e.canvasWidth, e.canvasHeight)
            }, 'drawMotionBlur')
          ;(f[e.NODE] || $[e.NODE]) && (ue(ee, Y, $[e.NODE]), (f[e.NODE] = !1)), (f[e.DRAG] || $[e.DRAG]) && (ue(ce, Z, $[e.DRAG]), (f[e.DRAG] = !1))
        }
        ;(e.prevViewport = _),
          e.clearingMotionBlur && ((e.clearingMotionBlur = !1), (e.motionBlurCleared = !0), (e.motionBlur = !0)),
          p &&
            (e.motionBlurTimeout = setTimeout(function () {
              ;(e.motionBlurTimeout = null),
                (e.clearedForMotionBlur[e.NODE] = !1),
                (e.clearedForMotionBlur[e.DRAG] = !1),
                (e.motionBlur = !1),
                (e.clearingMotionBlur = !d),
                (e.mbFrames = 0),
                (f[e.NODE] = !0),
                (f[e.DRAG] = !0),
                e.redraw()
            }, NJe)),
          n || r.emit('render')
      }
      ws.drawSelectionRectangle = function (t, e) {
        var r = this,
          n = r.cy,
          i = r.data,
          a = n.style(),
          s = t.drawOnlyNodeLayer,
          l = t.drawAllLayers,
          u = i.canvasNeedsRedraw,
          h = t.forcedContext
        if (r.showFps || (!s && u[r.SELECT_BOX] && !l)) {
          var f = h || i.contexts[r.SELECT_BOX]
          if ((e(f), r.selection[4] == 1 && (r.hoverData.selecting || r.touchData.selecting))) {
            var d = r.cy.zoom(),
              p = a.core('selection-box-border-width').value / d
            ;(f.lineWidth = p),
              (f.fillStyle =
                'rgba(' +
                a.core('selection-box-color').value[0] +
                ',' +
                a.core('selection-box-color').value[1] +
                ',' +
                a.core('selection-box-color').value[2] +
                ',' +
                a.core('selection-box-opacity').value +
                ')'),
              f.fillRect(r.selection[0], r.selection[1], r.selection[2] - r.selection[0], r.selection[3] - r.selection[1]),
              p > 0 &&
                ((f.strokeStyle =
                  'rgba(' +
                  a.core('selection-box-border-color').value[0] +
                  ',' +
                  a.core('selection-box-border-color').value[1] +
                  ',' +
                  a.core('selection-box-border-color').value[2] +
                  ',' +
                  a.core('selection-box-opacity').value +
                  ')'),
                f.strokeRect(r.selection[0], r.selection[1], r.selection[2] - r.selection[0], r.selection[3] - r.selection[1]))
          }
          if (i.bgActivePosistion && !r.hoverData.selecting) {
            var d = r.cy.zoom(),
              m = i.bgActivePosistion
            ;(f.fillStyle =
              'rgba(' +
              a.core('active-bg-color').value[0] +
              ',' +
              a.core('active-bg-color').value[1] +
              ',' +
              a.core('active-bg-color').value[2] +
              ',' +
              a.core('active-bg-opacity').value +
              ')'),
              f.beginPath(),
              f.arc(m.x, m.y, a.core('active-bg-size').pfValue / d, 0, 2 * Math.PI),
              f.fill()
          }
          var g = r.lastRedrawTime
          if (r.showFps && g) {
            g = Math.round(g)
            var y = Math.round(1e3 / g),
              v = '1 frame = ' + g + ' ms = ' + y + ' fps'
            if ((f.setTransform(1, 0, 0, 1, 0, 0), (f.fillStyle = 'rgba(255, 0, 0, 0.75)'), (f.strokeStyle = 'rgba(255, 0, 0, 0.75)'), (f.font = '30px Arial'), !Ub)) {
              var x = f.measureText(v)
              Ub = x.actualBoundingBoxAscent
            }
            f.fillText(v, 0, Ub)
            var b = 60
            f.strokeRect(0, Ub + 10, 250, 20), f.fillRect(0, Ub + 10, 250 * Math.min(y / b, 1), 20)
          }
          l || (u[r.SELECT_BOX] = !1)
        }
      }
      o(Kme, 'compileShader')
      o(MJe, 'createProgram')
      o(IJe, 'createTextureCanvas')
      o(aF, 'getEffectivePanZoom')
      o(gB, 'modelToRenderedPosition')
      o(A6, 'toWebGLColor')
      o(_6, 'indexToVec4')
      o(OJe, 'vec4ToIndex')
      o(PJe, 'createTexture')
      o(O1e, 'getTypeInfo')
      o(P1e, 'createTypedArray')
      o(BJe, 'createTypedArrayView')
      o(FJe, 'createBufferStaticDraw')
      o(yo, 'createBufferDynamicDraw')
      o($Je, 'createPickingFrameBuffer')
      Qme = typeof Float32Array < 'u' ? Float32Array : Array
      Math.hypot ||
        (Math.hypot = function () {
          for (var t = 0, e = arguments.length; e--; ) t += arguments[e] * arguments[e]
          return Math.sqrt(t)
        })
      o(Zb, 'create')
      o(B1e, 'identity')
      o(zJe, 'multiply')
      o(j6, 'translate')
      o(F1e, 'rotate')
      o(sF, 'scale')
      o(GJe, 'projection')
      ;(Jb = { SCREEN: { name: 'screen', screen: !0 }, PICKING: { name: 'picking', picking: !0 } }),
        (Hb = oa({ getKey: null, drawElement: null, getBoundingBox: null, getRotation: null, getRotationPoint: null, getRotationOffset: null, isVisible: null, getPadding: null })),
        (VJe = (function () {
          function t(e, r) {
            Vf(this, t),
              (this.debugID = Math.floor(Math.random() * 1e4)),
              (this.r = e),
              (this.atlasSize = r.webglTexSize),
              (this.rows = r.webglTexRows),
              (this.enableWrapping = r.enableWrapping),
              (this.texHeight = Math.floor(this.atlasSize / this.rows)),
              (this.maxTexWidth = this.atlasSize),
              (this.texture = null),
              (this.canvas = null),
              (this.needsBuffer = !0),
              (this.freePointer = { x: 0, row: 0 }),
              (this.keyToLocation = new Map()),
              (this.canvas = r.createTextureCanvas(e, this.atlasSize, this.atlasSize)),
              (this.scratch = r.createTextureCanvas(e, this.atlasSize, this.texHeight, 'scratch'))
          }
          return (
            o(t, 'Atlas'),
            Uf(t, [
              {
                key: 'getKeys',
                value: o(function () {
                  return new Set(this.keyToLocation.keys())
                }, 'getKeys')
              },
              {
                key: 'getScale',
                value: o(function (r) {
                  var n = r.w,
                    i = r.h,
                    a = this.texHeight,
                    s = this.maxTexWidth,
                    l = a / i,
                    u = n * l,
                    h = i * l
                  return u > s && ((l = s / n), (u = n * l), (h = i * l)), { scale: l, texW: u, texH: h }
                }, 'getScale')
              },
              {
                key: 'draw',
                value: o(function (r, n, i) {
                  var a = this,
                    s = this.atlasSize,
                    l = this.rows,
                    u = this.texHeight,
                    h = this.getScale(n),
                    f = h.scale,
                    d = h.texW,
                    p = h.texH,
                    m = [null, null],
                    g = o(function (T, S) {
                      if (i && S) {
                        var w = S.context,
                          E = T.x,
                          _ = T.row,
                          C = E,
                          D = u * _
                        w.save(), w.translate(C, D), w.scale(f, f), i(w, n), w.restore()
                      }
                    }, 'drawAt'),
                    y = o(function () {
                      g(a.freePointer, a.canvas),
                        (m[0] = { x: a.freePointer.x, y: a.freePointer.row * u, w: d, h: p }),
                        (m[1] = { x: a.freePointer.x + d, y: a.freePointer.row * u, w: 0, h: p }),
                        (a.freePointer.x += d),
                        a.freePointer.x == s && ((a.freePointer.x = 0), a.freePointer.row++)
                    }, 'drawNormal'),
                    v = o(function () {
                      var T = a.scratch,
                        S = a.canvas
                      T.clear(), g({ x: 0, row: 0 }, T)
                      var w = s - a.freePointer.x,
                        E = d - w,
                        _ = u
                      {
                        var C = a.freePointer.x,
                          D = a.freePointer.row * u,
                          O = w
                        S.context.drawImage(T, 0, 0, O, _, C, D, O, _), (m[0] = { x: C, y: D, w: O, h: p })
                      }
                      {
                        var R = w,
                          k = (a.freePointer.row + 1) * u,
                          L = E
                        S && S.context.drawImage(T, R, 0, L, _, 0, k, L, _), (m[1] = { x: 0, y: k, w: L, h: p })
                      }
                      ;(a.freePointer.x = E), a.freePointer.row++
                    }, 'drawWrapped'),
                    x = o(function () {
                      ;(a.freePointer.x = 0), a.freePointer.row++
                    }, 'moveToStartOfNextRow')
                  if (this.freePointer.x + d <= s) y()
                  else {
                    if (this.freePointer.row >= l - 1) return !1
                    this.freePointer.x === s ? (x(), y()) : this.enableWrapping ? v() : (x(), y())
                  }
                  return this.keyToLocation.set(r, m), (this.needsBuffer = !0), m
                }, 'draw')
              },
              {
                key: 'getOffsets',
                value: o(function (r) {
                  return this.keyToLocation.get(r)
                }, 'getOffsets')
              },
              {
                key: 'isEmpty',
                value: o(function () {
                  return this.freePointer.x === 0 && this.freePointer.row === 0
                }, 'isEmpty')
              },
              {
                key: 'canFit',
                value: o(function (r) {
                  var n = this.atlasSize,
                    i = this.rows,
                    a = this.getScale(r),
                    s = a.texW
                  return this.freePointer.x + s > n ? this.freePointer.row < i - 1 : !0
                }, 'canFit')
              },
              {
                key: 'bufferIfNeeded',
                value: o(function (r) {
                  this.texture || (this.texture = PJe(r, this.debugID)), this.needsBuffer && (this.texture.buffer(this.canvas), (this.needsBuffer = !1))
                }, 'bufferIfNeeded')
              },
              {
                key: 'dispose',
                value: o(function () {
                  this.texture && (this.texture.deleteTexture(), (this.texture = null), (this.needsBuffer = !0))
                }, 'dispose')
              }
            ]),
            t
          )
        })()),
        (UJe = (function () {
          function t(e, r) {
            Vf(this, t),
              (this.r = e),
              (this.opts = r),
              (this.keyToIds = new Map()),
              (this.idToKey = new Map()),
              (this.atlases = []),
              (this.styleKeyToAtlas = new Map()),
              (this.styleKeyNeedsRedraw = new Set()),
              (this.forceGC = !1)
          }
          return (
            o(t, 'AtlasCollection'),
            Uf(t, [
              {
                key: 'getKeys',
                value: o(function () {
                  return new Set(this.styleKeyToAtlas.keys())
                }, 'getKeys')
              },
              {
                key: 'getIdsFor',
                value: o(function (r) {
                  var n = this.keyToIds.get(r)
                  return n || ((n = new Set()), this.keyToIds.set(r, n)), n
                }, 'getIdsFor')
              },
              {
                key: '_createAtlas',
                value: o(function () {
                  var r = this.r,
                    n = this.opts
                  return new VJe(r, n)
                }, '_createAtlas')
              },
              {
                key: '_getScratchCanvas',
                value: o(function () {
                  if (!this.scratch) {
                    var r = this.r,
                      n = this.opts,
                      i = n.webglTexSize,
                      a = Math.floor(i / n.webglTexRows)
                    this.scratch = n.createTextureCanvas(r, i, a, 'scratch')
                  }
                  return this.scratch
                }, '_getScratchCanvas')
              },
              {
                key: 'draw',
                value: o(function (r, n, i, a) {
                  if (this.styleKeyNeedsRedraw.has(n)) {
                    this.styleKeyNeedsRedraw.delete(n), this.deleteKey(r, n)
                    var s = this.styleKeyToAtlas.get(n)
                    s && (s.forceGC = !0), this.styleKeyToAtlas.delete(n)
                  }
                  var l = this.styleKeyToAtlas.get(n)
                  return (
                    l ||
                      ((l = this.atlases[this.atlases.length - 1]),
                      (!l || !l.canFit(i)) && ((l = this._createAtlas()), this.atlases.push(l)),
                      l.draw(n, i, a),
                      this.styleKeyToAtlas.set(n, l),
                      this.getIdsFor(n).add(r),
                      this.idToKey.set(r, n)),
                    l
                  )
                }, 'draw')
              },
              {
                key: 'getAtlas',
                value: o(function (r) {
                  return this.styleKeyToAtlas.get(r)
                }, 'getAtlas')
              },
              {
                key: 'hasAtlas',
                value: o(function (r) {
                  return this.styleKeyToAtlas.has(r)
                }, 'hasAtlas')
              },
              {
                key: 'deleteKey',
                value: o(function (r, n) {
                  this.idToKey.delete(r), this.getIdsFor(n).delete(r)
                }, 'deleteKey')
              },
              {
                key: 'checkKeyIsInvalid',
                value: o(function (r, n) {
                  if (!this.idToKey.has(r)) return !1
                  var i = this.idToKey.get(r)
                  return i != n ? (this.deleteKey(r, i), !0) : !1
                }, 'checkKeyIsInvalid')
              },
              {
                key: '_getKeysToCollect',
                value: o(function () {
                  var r = new Set(),
                    n = vo(this.styleKeyToAtlas.keys()),
                    i
                  try {
                    for (n.s(); !(i = n.n()).done; ) {
                      var a = i.value
                      this.getIdsFor(a).size == 0 && r.add(a)
                    }
                  } catch (s) {
                    n.e(s)
                  } finally {
                    n.f()
                  }
                  return r
                }, '_getKeysToCollect')
              },
              {
                key: 'gc',
                value: o(function () {
                  var r = this,
                    n = this.atlases.some(function (p) {
                      return p.forceGC
                    }),
                    i = this._getKeysToCollect()
                  if (i.size === 0 && !n) {
                    console.log('nothing to garbage collect')
                    return
                  }
                  var a = [],
                    s = new Map(),
                    l = null,
                    u = vo(this.atlases),
                    h
                  try {
                    var f = o(function () {
                      var m = h.value,
                        g = m.getKeys(),
                        y = HJe(i, g)
                      if (y.size === 0 && !m.forceGC)
                        return (
                          a.push(m),
                          g.forEach(function (_) {
                            return s.set(_, m)
                          }),
                          'continue'
                        )
                      l || ((l = r._createAtlas()), a.push(l))
                      var v = vo(g),
                        x
                      try {
                        for (v.s(); !(x = v.n()).done; ) {
                          var b = x.value
                          if (!y.has(b)) {
                            var T = m.getOffsets(b),
                              S = Ri(T, 2),
                              w = S[0],
                              E = S[1]
                            l.canFit({ w: w.w + E.w, h: w.h }) || ((l = r._createAtlas()), a.push(l)), r._copyTextureToNewAtlas(b, m, l), s.set(b, l)
                          }
                        }
                      } catch (_) {
                        v.e(_)
                      } finally {
                        v.f()
                      }
                    }, '_loop')
                    for (u.s(); !(h = u.n()).done; ) var d = f()
                  } catch (p) {
                    u.e(p)
                  } finally {
                    u.f()
                  }
                  ;(this.atlases = a), (this.styleKeyToAtlas = s)
                }, 'gc')
              },
              {
                key: '_copyTextureToNewAtlas',
                value: o(function (r, n, i) {
                  var a = n.getOffsets(r),
                    s = Ri(a, 2),
                    l = s[0],
                    u = s[1]
                  if (u.w === 0)
                    i.draw(r, l, function (p) {
                      p.drawImage(n.canvas, l.x, l.y, l.w, l.h, 0, 0, l.w, l.h)
                    })
                  else {
                    var h = this._getScratchCanvas()
                    h.clear(), h.context.drawImage(n.canvas, l.x, l.y, l.w, l.h, 0, 0, l.w, l.h), h.context.drawImage(n.canvas, u.x, u.y, u.w, u.h, l.w, 0, u.w, u.h)
                    var f = l.w + u.w,
                      d = l.h
                    i.draw(r, { w: f, h: d }, function (p) {
                      p.drawImage(h, 0, 0, f, d, 0, 0, f, d)
                    })
                  }
                }, '_copyTextureToNewAtlas')
              },
              {
                key: 'getCounts',
                value: o(function () {
                  return { keyCount: this.styleKeyToAtlas.size, atlasCount: new Set(this.styleKeyToAtlas.values()).size }
                }, 'getCounts')
              }
            ]),
            t
          )
        })())
      o(HJe, 'intersection')
      ;(WJe = (function () {
        function t(e, r) {
          Vf(this, t), (this.r = e)
          var n = r
          ;(this.globalOptions = n),
            (this.maxAtlases = n.webglTexPerBatch),
            (this.atlasSize = n.webglTexSize),
            (this.renderTypes = new Map()),
            (this.maxAtlasesPerBatch = r.webglTexPerBatch),
            (this.batchAtlases = []),
            this._cacheScratchCanvas(n)
        }
        return (
          o(t, 'AtlasManager'),
          Uf(t, [
            {
              key: '_cacheScratchCanvas',
              value: o(function (r) {
                var n = -1,
                  i = -1,
                  a = null,
                  s = r.createTextureCanvas
                r.createTextureCanvas = function (l, u, h, f) {
                  return f ? ((!a || u != n || h != i) && ((n = u), (i = h), (a = s(l, u, h))), a) : s(l, u, h)
                }
              }, '_cacheScratchCanvas')
            },
            {
              key: 'addRenderType',
              value: o(function (r, n) {
                var i = new UJe(this.r, this.globalOptions),
                  a = n
                this.renderTypes.set(r, ir({ type: r, atlasCollection: i }, a))
              }, 'addRenderType')
            },
            {
              key: 'getRenderTypes',
              value: o(function () {
                return age(this.renderTypes.values())
              }, 'getRenderTypes')
            },
            {
              key: 'getRenderTypeOpts',
              value: o(function (r) {
                return this.renderTypes.get(r)
              }, 'getRenderTypeOpts')
            },
            {
              key: 'invalidate',
              value: o(function (r) {
                var n = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {},
                  i = n.forceRedraw,
                  a = i === void 0 ? !1 : i,
                  s = n.filterEle,
                  l =
                    s === void 0
                      ? function () {
                          return !0
                        }
                      : s,
                  u = n.filterType,
                  h =
                    u === void 0
                      ? function () {
                          return !0
                        }
                      : u,
                  f = !1,
                  d = vo(r),
                  p
                try {
                  for (d.s(); !(p = d.n()).done; ) {
                    var m = p.value
                    if (l(m)) {
                      var g = m.id(),
                        y = vo(this.getRenderTypes()),
                        v
                      try {
                        for (y.s(); !(v = y.n()).done; ) {
                          var x = v.value
                          if (h(x.type)) {
                            var b = x.getKey(m)
                            a ? (x.atlasCollection.deleteKey(g, b), x.atlasCollection.styleKeyNeedsRedraw.add(b), (f = !0)) : (f |= x.atlasCollection.checkKeyIsInvalid(g, b))
                          }
                        }
                      } catch (T) {
                        y.e(T)
                      } finally {
                        y.f()
                      }
                    }
                  }
                } catch (T) {
                  d.e(T)
                } finally {
                  d.f()
                }
                return f
              }, 'invalidate')
            },
            {
              key: 'gc',
              value: o(function () {
                var r = vo(this.getRenderTypes()),
                  n
                try {
                  for (r.s(); !(n = r.n()).done; ) {
                    var i = n.value
                    i.atlasCollection.gc()
                  }
                } catch (a) {
                  r.e(a)
                } finally {
                  r.f()
                }
              }, 'gc')
            },
            {
              key: 'isRenderable',
              value: o(function (r, n) {
                var i = this.getRenderTypeOpts(n)
                return i && i.isVisible(r)
              }, 'isRenderable')
            },
            {
              key: 'startBatch',
              value: o(function () {
                this.batchAtlases = []
              }, 'startBatch')
            },
            {
              key: 'getAtlasCount',
              value: o(function () {
                return this.batchAtlases.length
              }, 'getAtlasCount')
            },
            {
              key: 'getAtlases',
              value: o(function () {
                return this.batchAtlases
              }, 'getAtlases')
            },
            {
              key: 'getOrCreateAtlas',
              value: o(function (r, n, i) {
                var a = this.renderTypes.get(i),
                  s = a.getKey(r),
                  l = r.id()
                return a.atlasCollection.draw(l, s, n, function (u) {
                  a.drawElement(u, r, n, !0, !0)
                })
              }, 'getOrCreateAtlas')
            },
            {
              key: 'getAtlasIndexForBatch',
              value: o(function (r) {
                var n = this.batchAtlases.indexOf(r)
                if (n < 0) {
                  if (this.batchAtlases.length === this.maxAtlasesPerBatch) return
                  this.batchAtlases.push(r), (n = this.batchAtlases.length - 1)
                }
                return n
              }, 'getAtlasIndexForBatch')
            },
            {
              key: 'getIndexArray',
              value: o(function () {
                return Array.from({ length: this.maxAtlases }, function (r, n) {
                  return n
                })
              }, 'getIndexArray')
            },
            {
              key: 'getAtlasInfo',
              value: o(function (r, n) {
                var i = this.renderTypes.get(n),
                  a = i.getBoundingBox(r),
                  s = this.getOrCreateAtlas(r, a, n),
                  l = this.getAtlasIndexForBatch(s)
                if (l !== void 0) {
                  var u = i.getKey(r),
                    h = s.getOffsets(u),
                    f = Ri(h, 2),
                    d = f[0],
                    p = f[1]
                  return { atlasID: l, tex: d, tex1: d, tex2: p, bb: a, type: n, styleKey: u }
                }
              }, 'getAtlasInfo')
            },
            {
              key: 'canAddToCurrentBatch',
              value: o(function (r, n) {
                if (this.batchAtlases.length === this.maxAtlasesPerBatch) {
                  var i = this.renderTypes.get(n),
                    a = i.getKey(r),
                    s = i.atlasCollection.getAtlas(a)
                  return s && this.batchAtlases.includes(s)
                }
                return !0
              }, 'canAddToCurrentBatch')
            },
            {
              key: 'setTransformMatrix',
              value: o(function (r, n, i) {
                var a = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : !0,
                  s = n.bb,
                  l = n.type,
                  u = n.tex1,
                  h = n.tex2,
                  f = this.getRenderTypeOpts(l),
                  d = f.getPadding ? f.getPadding(i) : 0,
                  p = u.w / (u.w + h.w)
                a || (p = 1 - p)
                var m = this.getAdjustedBB(s, d, a, p),
                  g,
                  y
                B1e(r)
                var v = f.getRotation ? f.getRotation(i) : 0
                if (v !== 0) {
                  var x = f.getRotationPoint(i),
                    b = x.x,
                    T = x.y
                  j6(r, r, [b, T]), F1e(r, r, v)
                  var S = f.getRotationOffset(i)
                  ;(g = S.x + m.xOffset), (y = S.y)
                } else (g = m.x1), (y = m.y1)
                j6(r, r, [g, y]), sF(r, r, [m.w, m.h])
              }, 'setTransformMatrix')
            },
            {
              key: 'getTransformMatrix',
              value: o(function (r, n) {
                var i = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : !0,
                  a = Zb()
                return this.setTransformMatrix(a, r, n, i), a
              }, 'getTransformMatrix')
            },
            {
              key: 'getAdjustedBB',
              value: o(function (r, n, i, a) {
                var s = r.x1,
                  l = r.y1,
                  u = r.w,
                  h = r.h
                n && ((s -= n), (l -= n), (u += 2 * n), (h += 2 * n))
                var f = 0,
                  d = u * a
                return i && a < 1 ? (u = d) : !i && a < 1 && ((f = u - d), (s += f), (u = d)), { x1: s, y1: l, w: u, h, xOffset: f }
              }, 'getAdjustedBB')
            },
            {
              key: 'getDebugInfo',
              value: o(function () {
                var r = [],
                  n = vo(this.renderTypes),
                  i
                try {
                  for (n.s(); !(i = n.n()).done; ) {
                    var a = Ri(i.value, 2),
                      s = a[0],
                      l = a[1],
                      u = l.atlasCollection.getCounts(),
                      h = u.keyCount,
                      f = u.atlasCount
                    r.push({ type: s, keyCount: h, atlasCount: f })
                  }
                } catch (d) {
                  n.e(d)
                } finally {
                  n.f()
                }
                return r
              }, 'getDebugInfo')
            }
          ]),
          t
        )
      })()),
        (yB = 0),
        (Zme = 1),
        (Jme = 2),
        (vB = 3),
        (qJe = (function () {
          function t(e, r, n) {
            Vf(this, t),
              (this.r = e),
              (this.gl = r),
              (this.maxInstances = n.webglBatchSize),
              (this.maxAtlases = n.webglTexPerBatch),
              (this.atlasSize = n.webglTexSize),
              (this.bgColor = n.bgColor),
              (n.enableWrapping = !0),
              (n.createTextureCanvas = IJe),
              (this.atlasManager = new WJe(e, n)),
              (this.program = this.createShaderProgram(Jb.SCREEN)),
              (this.pickingProgram = this.createShaderProgram(Jb.PICKING)),
              (this.vao = this.createVAO()),
              (this.debugInfo = [])
          }
          return (
            o(t, 'ElementDrawingWebGL'),
            Uf(t, [
              {
                key: 'addTextureRenderType',
                value: o(function (r, n) {
                  this.atlasManager.addRenderType(r, n)
                }, 'addTextureRenderType')
              },
              {
                key: 'invalidate',
                value: o(function (r) {
                  var n = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {},
                    i = n.type,
                    a = this.atlasManager
                  return i
                    ? a.invalidate(r, {
                        filterType: o(function (l) {
                          return l === i
                        }, 'filterType'),
                        forceRedraw: !0
                      })
                    : a.invalidate(r)
                }, 'invalidate')
              },
              {
                key: 'gc',
                value: o(function () {
                  this.atlasManager.gc()
                }, 'gc')
              },
              {
                key: 'createShaderProgram',
                value: o(function (r) {
                  var n = this.gl,
                    i = `#version 300 es
      precision highp float;

      uniform mat3 uPanZoomMatrix;
      uniform int  uAtlasSize;
      
      // instanced
      in vec2 aPosition; 

      // what are we rendering?
      in int aVertType;

      // for picking
      in vec4 aIndex;
      
      // For textures
      in int aAtlasId; // which shader unit/atlas to use
      in vec4 aTex1; // x/y/w/h of texture in atlas
      in vec4 aTex2; 

      // for any transforms that are needed
      in vec4 aScaleRotate1;  // vectors use fewer attributes than matrices
      in vec2 aTranslate1;
      in vec4 aScaleRotate2;
      in vec2 aTranslate2;

      // for edges
      in vec4 aPointAPointB;
      in vec4 aPointCPointD;
      in float aLineWidth;
      in vec4 aEdgeColor;

      out vec2 vTexCoord;
      out vec4 vEdgeColor;
      flat out int vAtlasId;
      flat out vec4 vIndex;
      flat out int vVertType;

      void main(void) {
        int vid = gl_VertexID;
        vec2 position = aPosition;

        if(aVertType == `
                      .concat(
                        yB,
                        `) {
          float texX;
          float texY;
          float texW;
          float texH;
          mat3  texMatrix;

          int vid = gl_VertexID;
          if(vid <= 5) {
            texX = aTex1.x;
            texY = aTex1.y;
            texW = aTex1.z;
            texH = aTex1.w;
            texMatrix = mat3(
              vec3(aScaleRotate1.xy, 0.0),
              vec3(aScaleRotate2.zw, 0.0),
              vec3(aTranslate1,      1.0)
            );
          } else {
            texX = aTex2.x;
            texY = aTex2.y;
            texW = aTex2.z;
            texH = aTex2.w;
            texMatrix = mat3(
              vec3(aScaleRotate2.xy, 0.0),
              vec3(aScaleRotate2.zw, 0.0),
              vec3(aTranslate2,      1.0)
            );
          }

          if(vid == 1 || vid == 2 || vid == 4 || vid == 7 || vid == 8 || vid == 10) {
            texX += texW;
          }
          if(vid == 2 || vid == 4 || vid == 5 || vid == 8 || vid == 10 || vid == 11) {
            texY += texH;
          }

          float d = float(uAtlasSize);
          vTexCoord = vec2(texX / d, texY / d); // tex coords must be between 0 and 1

          gl_Position = vec4(uPanZoomMatrix * texMatrix * vec3(position, 1.0), 1.0);
        } 
        else if(aVertType == `
                      )
                      .concat(
                        Zme,
                        ` && vid < 6) {
          vec2 source = aPointAPointB.xy;
          vec2 target = aPointAPointB.zw;

          // adjust the geometry so that the line is centered on the edge
          position.y = position.y - 0.5;

          vec2 xBasis = target - source;
          vec2 yBasis = normalize(vec2(-xBasis.y, xBasis.x));
          vec2 point = source + xBasis * position.x + yBasis * aLineWidth * position.y;

          gl_Position = vec4(uPanZoomMatrix * vec3(point, 1.0), 1.0);
          vEdgeColor = aEdgeColor;
        } 
        else if(aVertType == `
                      )
                      .concat(
                        Jme,
                        ` && vid < 6) {
          vec2 pointA = aPointAPointB.xy;
          vec2 pointB = aPointAPointB.zw;
          vec2 pointC = aPointCPointD.xy;
          vec2 pointD = aPointCPointD.zw;

          // adjust the geometry so that the line is centered on the edge
          position.y = position.y - 0.5;

          vec2 p0 = pointA;
          vec2 p1 = pointB;
          vec2 p2 = pointC;
          vec2 pos = position;
          if(position.x == 1.0) {
            p0 = pointD;
            p1 = pointC;
            p2 = pointB;
            pos = vec2(0.0, -position.y);
          }

          vec2 p01 = p1 - p0;
          vec2 p12 = p2 - p1;
          vec2 p21 = p1 - p2;

          // Find the normal vector.
          vec2 tangent = normalize(normalize(p12) + normalize(p01));
          vec2 normal = vec2(-tangent.y, tangent.x);

          // Find the vector perpendicular to p0 -> p1.
          vec2 p01Norm = normalize(vec2(-p01.y, p01.x));

          // Determine the bend direction.
          float sigma = sign(dot(p01 + p21, normal));
          float width = aLineWidth;

          if(sign(pos.y) == -sigma) {
            // This is an intersecting vertex. Adjust the position so that there's no overlap.
            vec2 point = 0.5 * width * normal * -sigma / dot(normal, p01Norm);
            gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0);
          } else {
            // This is a non-intersecting vertex. Treat it like a mitre join.
            vec2 point = 0.5 * width * normal * sigma * dot(normal, p01Norm);
            gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0);
          }

          vEdgeColor = aEdgeColor;
        } 
        else if(aVertType == `
                      )
                      .concat(
                        vB,
                        ` && vid < 3) {
          // massage the first triangle into an edge arrow
          if(vid == 0)
            position = vec2(-0.15, -0.3);
          if(vid == 1)
            position = vec2( 0.0,   0.0);
          if(vid == 2)
            position = vec2( 0.15, -0.3);

          mat3 transform = mat3(
            vec3(aScaleRotate1.xy, 0.0),
            vec3(aScaleRotate1.zw, 0.0),
            vec3(aTranslate1,      1.0)
          );
          gl_Position = vec4(uPanZoomMatrix * transform * vec3(position, 1.0), 1.0);
          vEdgeColor = aEdgeColor;
        } else {
          gl_Position = vec4(2.0, 0.0, 0.0, 1.0); // discard vertex by putting it outside webgl clip space
        }

        vAtlasId = aAtlasId;
        vIndex = aIndex;
        vVertType = aVertType;
      }
    `
                      ),
                    a = this.atlasManager.getIndexArray(),
                    s = `#version 300 es
      precision highp float;

      // define texture unit for each node in the batch
      `
                      .concat(
                        a.map(function (h) {
                          return 'uniform sampler2D uTexture'.concat(h, ';')
                        }).join(`
	`),
                        `

      uniform vec4 uBGColor;

      in vec2 vTexCoord;
      in vec4 vEdgeColor;
      flat in int vAtlasId;
      flat in vec4 vIndex;
      flat in int vVertType;

      out vec4 outColor;

      void main(void) {
        if(vVertType == `
                      )
                      .concat(
                        yB,
                        `) {
          `
                      )
                      .concat(
                        a.map(function (h) {
                          return 'if(vAtlasId == '.concat(h, ') outColor = texture(uTexture').concat(h, ', vTexCoord);')
                        }).join(`
	else `),
                        `
        } else if(vVertType == `
                      )
                      .concat(
                        vB,
                        `) {
          // blend arrow color with background (using premultiplied alpha)
          outColor.rgb = vEdgeColor.rgb + (uBGColor.rgb * (1.0 - vEdgeColor.a)); 
          outColor.a = 1.0; // make opaque, masks out line under arrow
        } else {
          outColor = vEdgeColor;
        }

        `
                      )
                      .concat(
                        r.picking
                          ? `if(outColor.a == 0.0) discard;
             else outColor = vIndex;`
                          : '',
                        `
      }
    `
                      ),
                    l = MJe(n, i, s)
                  ;(l.aPosition = n.getAttribLocation(l, 'aPosition')),
                    (l.aIndex = n.getAttribLocation(l, 'aIndex')),
                    (l.aVertType = n.getAttribLocation(l, 'aVertType')),
                    (l.aAtlasId = n.getAttribLocation(l, 'aAtlasId')),
                    (l.aTex1 = n.getAttribLocation(l, 'aTex1')),
                    (l.aTex2 = n.getAttribLocation(l, 'aTex2')),
                    (l.aScaleRotate1 = n.getAttribLocation(l, 'aScaleRotate1')),
                    (l.aTranslate1 = n.getAttribLocation(l, 'aTranslate1')),
                    (l.aScaleRotate2 = n.getAttribLocation(l, 'aScaleRotate2')),
                    (l.aTranslate2 = n.getAttribLocation(l, 'aTranslate2')),
                    (l.aPointAPointB = n.getAttribLocation(l, 'aPointAPointB')),
                    (l.aPointCPointD = n.getAttribLocation(l, 'aPointCPointD')),
                    (l.aLineWidth = n.getAttribLocation(l, 'aLineWidth')),
                    (l.aEdgeColor = n.getAttribLocation(l, 'aEdgeColor')),
                    (l.uPanZoomMatrix = n.getUniformLocation(l, 'uPanZoomMatrix')),
                    (l.uAtlasSize = n.getUniformLocation(l, 'uAtlasSize')),
                    (l.uBGColor = n.getUniformLocation(l, 'uBGColor')),
                    (l.uTextures = [])
                  for (var u = 0; u < this.atlasManager.maxAtlases; u++) l.uTextures.push(n.getUniformLocation(l, 'uTexture'.concat(u)))
                  return l
                }, 'createShaderProgram')
              },
              {
                key: 'createVAO',
                value: o(function () {
                  var r = [0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1],
                    n = [].concat(r, r)
                  this.vertexCount = n.length / 2
                  var i = this.maxInstances,
                    a = this.gl,
                    s = this.program,
                    l = a.createVertexArray()
                  return (
                    a.bindVertexArray(l),
                    FJe(a, 'vec2', s.aPosition, n),
                    (this.indexBuffer = yo(a, i, 'vec4', s.aIndex)),
                    (this.vertTypeBuffer = yo(a, i, 'int', s.aVertType)),
                    (this.atlasIdBuffer = yo(a, i, 'int', s.aAtlasId)),
                    (this.tex1Buffer = yo(a, i, 'vec4', s.aTex1)),
                    (this.tex2Buffer = yo(a, i, 'vec4', s.aTex2)),
                    (this.scaleRotate1Buffer = yo(a, i, 'vec4', s.aScaleRotate1)),
                    (this.translate1Buffer = yo(a, i, 'vec2', s.aTranslate1)),
                    (this.scaleRotate2Buffer = yo(a, i, 'vec4', s.aScaleRotate2)),
                    (this.translate2Buffer = yo(a, i, 'vec2', s.aTranslate2)),
                    (this.pointAPointBBuffer = yo(a, i, 'vec4', s.aPointAPointB)),
                    (this.pointCPointDBuffer = yo(a, i, 'vec4', s.aPointCPointD)),
                    (this.lineWidthBuffer = yo(a, i, 'float', s.aLineWidth)),
                    (this.edgeColorBuffer = yo(a, i, 'vec4', s.aEdgeColor)),
                    a.bindVertexArray(null),
                    l
                  )
                }, 'createVAO')
              },
              {
                key: 'buffers',
                get: o(function () {
                  var r = this
                  return (
                    this._buffers ||
                      (this._buffers = Object.keys(this)
                        .filter(function (n) {
                          return n.endsWith('Buffer')
                        })
                        .map(function (n) {
                          return r[n]
                        })),
                    this._buffers
                  )
                }, 'get')
              },
              {
                key: 'startFrame',
                value: o(function (r, n) {
                  var i = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : Jb.SCREEN
                  ;(this.panZoomMatrix = r), (this.debugInfo = n), (this.renderTarget = i), this.startBatch()
                }, 'startFrame')
              },
              {
                key: 'startBatch',
                value: o(function () {
                  ;(this.instanceCount = 0), this.atlasManager.startBatch()
                }, 'startBatch')
              },
              {
                key: 'endFrame',
                value: o(function () {
                  this.endBatch()
                }, 'endFrame')
              },
              {
                key: 'getTempMatrix',
                value: o(function () {
                  return (this.tempMatrix = this.tempMatrix || Zb())
                }, 'getTempMatrix')
              },
              {
                key: 'drawTexture',
                value: o(function (r, n, i) {
                  var a = this.atlasManager
                  if (a.isRenderable(r, i)) {
                    a.canAddToCurrentBatch(r, i) || this.endBatch()
                    var s = this.instanceCount
                    this.vertTypeBuffer.getView(s)[0] = yB
                    var l = this.indexBuffer.getView(s)
                    _6(n, l)
                    var u = a.getAtlasInfo(r, i, u),
                      h = u.atlasID,
                      f = u.tex1,
                      d = u.tex2,
                      p = this.atlasIdBuffer.getView(s)
                    p[0] = h
                    var m = this.tex1Buffer.getView(s)
                    ;(m[0] = f.x), (m[1] = f.y), (m[2] = f.w), (m[3] = f.h)
                    var g = this.tex2Buffer.getView(s)
                    ;(g[0] = d.x), (g[1] = d.y), (g[2] = d.w), (g[3] = d.h)
                    for (var y = this.getTempMatrix(), v = 0, x = [1, 2]; v < x.length; v++) {
                      var b = x[v]
                      a.setTransformMatrix(y, u, r, b === 1)
                      var T = this['scaleRotate'.concat(b, 'Buffer')].getView(s)
                      ;(T[0] = y[0]), (T[1] = y[1]), (T[2] = y[3]), (T[3] = y[4])
                      var S = this['translate'.concat(b, 'Buffer')].getView(s)
                      ;(S[0] = y[6]), (S[1] = y[7])
                    }
                    this.instanceCount++, this.instanceCount >= this.maxInstances && this.endBatch()
                  }
                }, 'drawTexture')
              },
              {
                key: 'drawEdgeArrow',
                value: o(function (r, n, i) {
                  var a = r._private.rscratch,
                    s,
                    l,
                    u
                  if (
                    (i === 'source' ? ((s = a.arrowStartX), (l = a.arrowStartY), (u = a.srcArrowAngle)) : ((s = a.arrowEndX), (l = a.arrowEndY), (u = a.tgtArrowAngle)),
                    !(isNaN(s) || s == null || isNaN(l) || l == null || isNaN(u) || u == null))
                  ) {
                    var h = r.pstyle(i + '-arrow-shape').value
                    if (h !== 'none') {
                      var f = r.pstyle(i + '-arrow-color').value,
                        d = r.pstyle('opacity').value,
                        p = r.pstyle('line-opacity').value,
                        m = d * p,
                        g = r.pstyle('width').pfValue,
                        y = r.pstyle('arrow-scale').value,
                        v = this.r.getArrowWidth(g, y),
                        x = this.getTempMatrix()
                      B1e(x), j6(x, x, [s, l]), sF(x, x, [v, v]), F1e(x, x, u)
                      var b = this.instanceCount
                      this.vertTypeBuffer.getView(b)[0] = vB
                      var T = this.indexBuffer.getView(b)
                      _6(n, T)
                      var S = this.edgeColorBuffer.getView(b)
                      A6(f, m, S)
                      var w = this.scaleRotate1Buffer.getView(b)
                      ;(w[0] = x[0]), (w[1] = x[1]), (w[2] = x[3]), (w[3] = x[4])
                      var E = this.translate1Buffer.getView(b)
                      ;(E[0] = x[6]), (E[1] = x[7]), this.instanceCount++, this.instanceCount >= this.maxInstances && this.endBatch()
                    }
                  }
                }, 'drawEdgeArrow')
              },
              {
                key: 'drawEdgeLine',
                value: o(function (r, n) {
                  var i = r.pstyle('opacity').value,
                    a = r.pstyle('line-opacity').value,
                    s = r.pstyle('width').pfValue,
                    l = r.pstyle('line-color').value,
                    u = i * a,
                    h = this.getEdgePoints(r)
                  if ((h.length / 2 + this.instanceCount > this.maxInstances && this.endBatch(), h.length == 4)) {
                    var f = this.instanceCount
                    this.vertTypeBuffer.getView(f)[0] = Zme
                    var d = this.indexBuffer.getView(f)
                    _6(n, d)
                    var p = this.edgeColorBuffer.getView(f)
                    A6(l, u, p)
                    var m = this.lineWidthBuffer.getView(f)
                    m[0] = s
                    var g = this.pointAPointBBuffer.getView(f)
                    ;(g[0] = h[0]), (g[1] = h[1]), (g[2] = h[2]), (g[3] = h[3]), this.instanceCount++, this.instanceCount >= this.maxInstances && this.endBatch()
                  } else
                    for (var y = 0; y < h.length - 2; y += 2) {
                      var v = this.instanceCount
                      this.vertTypeBuffer.getView(v)[0] = Jme
                      var x = this.indexBuffer.getView(v)
                      _6(n, x)
                      var b = this.edgeColorBuffer.getView(v)
                      A6(l, u, b)
                      var T = this.lineWidthBuffer.getView(v)
                      T[0] = s
                      var S = h[y - 2],
                        w = h[y - 1],
                        E = h[y],
                        _ = h[y + 1],
                        C = h[y + 2],
                        D = h[y + 3],
                        O = h[y + 4],
                        R = h[y + 5]
                      y == 0 && ((S = 2 * E - C + 0.001), (w = 2 * _ - D + 0.001)), y == h.length - 4 && ((O = 2 * C - E + 0.001), (R = 2 * D - _ + 0.001))
                      var k = this.pointAPointBBuffer.getView(v)
                      ;(k[0] = S), (k[1] = w), (k[2] = E), (k[3] = _)
                      var L = this.pointCPointDBuffer.getView(v)
                      ;(L[0] = C), (L[1] = D), (L[2] = O), (L[3] = R), this.instanceCount++, this.instanceCount >= this.maxInstances && this.endBatch()
                    }
                }, 'drawEdgeLine')
              },
              {
                key: 'getEdgePoints',
                value: o(function (r) {
                  var n = r._private.rscratch,
                    i = n.allpts
                  if (i.length == 4) return i
                  var a = this.getNumSegments(r)
                  return this.getCurveSegmentPoints(i, a)
                }, 'getEdgePoints')
              },
              {
                key: 'getNumSegments',
                value: o(function (r) {
                  var n = 15
                  return Math.min(Math.max(n, 5), this.maxInstances)
                }, 'getNumSegments')
              },
              {
                key: 'getCurveSegmentPoints',
                value: o(function (r, n) {
                  if (r.length == 4) return r
                  for (var i = Array((n + 1) * 2), a = 0; a <= n; a++)
                    if (a == 0) (i[0] = r[0]), (i[1] = r[1])
                    else if (a == n) (i[a * 2] = r[r.length - 2]), (i[a * 2 + 1] = r[r.length - 1])
                    else {
                      var s = a / n
                      this.setCurvePoint(r, s, i, a * 2)
                    }
                  return i
                }, 'getCurveSegmentPoints')
              },
              {
                key: 'setCurvePoint',
                value: o(function (r, n, i, a) {
                  if (r.length <= 2) (i[a] = r[0]), (i[a + 1] = r[1])
                  else {
                    for (var s = Array(r.length - 2), l = 0; l < s.length; l += 2) {
                      var u = (1 - n) * r[l] + n * r[l + 2],
                        h = (1 - n) * r[l + 1] + n * r[l + 3]
                      ;(s[l] = u), (s[l + 1] = h)
                    }
                    return this.setCurvePoint(s, n, i, a)
                  }
                }, 'setCurvePoint')
              },
              {
                key: 'endBatch',
                value: o(function () {
                  var r = this.gl,
                    n = this.vao,
                    i = this.vertexCount,
                    a = this.instanceCount
                  if (a !== 0) {
                    var s = this.renderTarget.picking ? this.pickingProgram : this.program
                    r.useProgram(s), r.bindVertexArray(n)
                    var l = vo(this.buffers),
                      u
                    try {
                      for (l.s(); !(u = l.n()).done; ) {
                        var h = u.value
                        h.bufferSubData(a)
                      }
                    } catch (g) {
                      l.e(g)
                    } finally {
                      l.f()
                    }
                    for (var f = this.atlasManager.getAtlases(), d = 0; d < f.length; d++) f[d].bufferIfNeeded(r)
                    for (var p = 0; p < f.length; p++) r.activeTexture(r.TEXTURE0 + p), r.bindTexture(r.TEXTURE_2D, f[p].texture), r.uniform1i(s.uTextures[p], p)
                    r.uniformMatrix3fv(s.uPanZoomMatrix, !1, this.panZoomMatrix), r.uniform1i(s.uAtlasSize, this.atlasManager.atlasSize)
                    var m = A6(this.bgColor, 1)
                    r.uniform4fv(s.uBGColor, m),
                      r.drawArraysInstanced(r.TRIANGLES, 0, i, a),
                      r.bindVertexArray(null),
                      r.bindTexture(r.TEXTURE_2D, null),
                      this.debugInfo && this.debugInfo.push({ count: a, atlasCount: f.length }),
                      this.startBatch()
                  }
                }, 'endBatch')
              },
              {
                key: 'getDebugInfo',
                value: o(function () {
                  return this.debugInfo
                }, 'getDebugInfo')
              },
              {
                key: 'getAtlasDebugInfo',
                value: o(function () {
                  return this.atlasManager.getDebugInfo()
                }, 'getAtlasDebugInfo')
              }
            ]),
            t
          )
        })())
      o(ege, 'fillStyle')
      YJe = (function () {
        function t(e) {
          Vf(this, t), (this.r = e)
        }
        return (
          o(t, 'OverlayUnderlayRenderer'),
          Uf(t, [
            {
              key: 'getStyleKey',
              value: o(function (r, n) {
                var i = this.getStyle(r, n),
                  a = i.shape,
                  s = i.opacity,
                  l = i.color
                if (!a) return null
                var u = n.width(),
                  h = n.height(),
                  f = ege(l, s)
                return Bf(''.concat(a, '-').concat(u, '-').concat(h, '-').concat(f))
              }, 'getStyleKey')
            },
            {
              key: 'isVisible',
              value: o(function (r, n) {
                var i = n.pstyle(''.concat(r, '-opacity')).value
                return i > 0
              }, 'isVisible')
            },
            {
              key: 'getStyle',
              value: o(function (r, n) {
                var i = n.pstyle(''.concat(r, '-opacity')).value,
                  a = n.pstyle(''.concat(r, '-color')).value,
                  s = n.pstyle(''.concat(r, '-shape')).value
                return { opacity: i, color: a, shape: s }
              }, 'getStyle')
            },
            {
              key: 'getPadding',
              value: o(function (r, n) {
                return n.pstyle(''.concat(r, '-padding')).pfValue
              }, 'getPadding')
            },
            {
              key: 'draw',
              value: o(function (r, n, i, a) {
                if (this.isVisible(r, i)) {
                  var s = this.r,
                    l = a.w,
                    u = a.h,
                    h = l / 2,
                    f = u / 2,
                    d = this.getStyle(r, i),
                    p = d.shape,
                    m = d.color,
                    g = d.opacity
                  n.save(),
                    (n.fillStyle = ege(m, g)),
                    p === 'round-rectangle' || p === 'roundrectangle' ? s.drawRoundRectanglePath(n, h, f, l, u, 'auto') : p === 'ellipse' && s.drawEllipsePath(n, h, f, l, u),
                    n.fill(),
                    n.restore()
                }
              }, 'draw')
            }
          ]),
          t
        )
      })()
      o(XJe, 'getBGColor')
      $1e = {}
      $1e.initWebgl = function (t, e) {
        var r = this,
          n = r.data.contexts[r.WEBGL],
          i = t.cy.container()
        ;(t.bgColor = XJe(i)),
          (t.webglTexSize = Math.min(t.webglTexSize, n.getParameter(n.MAX_TEXTURE_SIZE))),
          (t.webglTexRows = Math.min(t.webglTexRows, 54)),
          (t.webglBatchSize = Math.min(t.webglBatchSize, 16384)),
          (t.webglTexPerBatch = Math.min(t.webglTexPerBatch, n.getParameter(n.MAX_TEXTURE_IMAGE_UNITS))),
          (r.webglDebug = t.webglDebug),
          (r.webglDebugShowAtlases = t.webglDebugShowAtlases),
          console.log('max texture units', n.getParameter(n.MAX_TEXTURE_IMAGE_UNITS)),
          console.log('max texture size', n.getParameter(n.MAX_TEXTURE_SIZE)),
          console.log('webgl options', t),
          (r.pickingFrameBuffer = $Je(n)),
          (r.pickingFrameBuffer.needsDraw = !0)
        var a = o(function (f) {
            return r.getTextAngle(f, null)
          }, 'getLabelRotation'),
          s = o(function (f) {
            var d = f.pstyle('label')
            return d && d.value
          }, 'isLabelVisible')
        r.eleDrawing = new qJe(r, n, t)
        var l = new YJe(r)
        r.eleDrawing.addTextureRenderType(
          'node-body',
          Hb({
            getKey: e.getStyleKey,
            getBoundingBox: e.getElementBox,
            drawElement: e.drawElement,
            isVisible: o(function (f) {
              return f.visible()
            }, 'isVisible')
          })
        ),
          r.eleDrawing.addTextureRenderType(
            'node-label',
            Hb({
              getKey: e.getLabelKey,
              getBoundingBox: e.getLabelBox,
              drawElement: e.drawLabel,
              getRotation: a,
              getRotationPoint: e.getLabelRotationPoint,
              getRotationOffset: e.getLabelRotationOffset,
              isVisible: s
            })
          ),
          r.eleDrawing.addTextureRenderType(
            'node-overlay',
            Hb({
              getBoundingBox: e.getElementBox,
              getKey: o(function (f) {
                return l.getStyleKey('overlay', f)
              }, 'getKey'),
              drawElement: o(function (f, d, p) {
                return l.draw('overlay', f, d, p)
              }, 'drawElement'),
              isVisible: o(function (f) {
                return l.isVisible('overlay', f)
              }, 'isVisible'),
              getPadding: o(function (f) {
                return l.getPadding('overlay', f)
              }, 'getPadding')
            })
          ),
          r.eleDrawing.addTextureRenderType(
            'node-underlay',
            Hb({
              getBoundingBox: e.getElementBox,
              getKey: o(function (f) {
                return l.getStyleKey('underlay', f)
              }, 'getKey'),
              drawElement: o(function (f, d, p) {
                return l.draw('underlay', f, d, p)
              }, 'drawElement'),
              isVisible: o(function (f) {
                return l.isVisible('underlay', f)
              }, 'isVisible'),
              getPadding: o(function (f) {
                return l.getPadding('underlay', f)
              }, 'getPadding')
            })
          ),
          r.eleDrawing.addTextureRenderType(
            'edge-label',
            Hb({
              getKey: e.getLabelKey,
              getBoundingBox: e.getLabelBox,
              drawElement: e.drawLabel,
              getRotation: a,
              getRotationPoint: e.getLabelRotationPoint,
              getRotationOffset: e.getLabelRotationOffset,
              isVisible: s
            })
          )
        var u = p4(function () {
          console.log('garbage collect flag set'), (r.data.gc = !0)
        }, 1e4)
        r.onUpdateEleCalcs(function (h, f) {
          var d = !1
          f && f.length > 0 && (d |= r.eleDrawing.invalidate(f)), d && u()
        }),
          jJe(r)
      }
      o(jJe, 'overrideCanvasRendererFunctions')
      o(KJe, 'clearWebgl')
      o(QJe, 'clearCanvas')
      o(ZJe, 'createPanZoomMatrix')
      o(z1e, 'setContextTransform')
      o(JJe, 'drawSelectionRectangle')
      o(eet, 'drawAxes')
      o(tet, 'drawAtlases')
      o(ret, 'getPickingIndexes')
      o(net, 'findNearestElementsWebgl')
      o(G1e, 'renderWebgl')
      Wf = {}
      Wf.drawPolygonPath = function (t, e, r, n, i, a) {
        var s = n / 2,
          l = i / 2
        t.beginPath && t.beginPath(), t.moveTo(e + s * a[0], r + l * a[1])
        for (var u = 1; u < a.length / 2; u++) t.lineTo(e + s * a[u * 2], r + l * a[u * 2 + 1])
        t.closePath()
      }
      Wf.drawRoundPolygonPath = function (t, e, r, n, i, a, s) {
        s.forEach(function (l) {
          return T1e(t, l)
        }),
          t.closePath()
      }
      Wf.drawRoundRectanglePath = function (t, e, r, n, i, a) {
        var s = n / 2,
          l = i / 2,
          u = a === 'auto' ? Zp(n, i) : Math.min(a, l, s)
        t.beginPath && t.beginPath(),
          t.moveTo(e, r - l),
          t.arcTo(e + s, r - l, e + s, r, u),
          t.arcTo(e + s, r + l, e, r + l, u),
          t.arcTo(e - s, r + l, e - s, r, u),
          t.arcTo(e - s, r - l, e, r - l, u),
          t.lineTo(e, r - l),
          t.closePath()
      }
      Wf.drawBottomRoundRectanglePath = function (t, e, r, n, i, a) {
        var s = n / 2,
          l = i / 2,
          u = a === 'auto' ? Zp(n, i) : a
        t.beginPath && t.beginPath(),
          t.moveTo(e, r - l),
          t.lineTo(e + s, r - l),
          t.lineTo(e + s, r),
          t.arcTo(e + s, r + l, e, r + l, u),
          t.arcTo(e - s, r + l, e - s, r, u),
          t.lineTo(e - s, r - l),
          t.lineTo(e, r - l),
          t.closePath()
      }
      Wf.drawCutRectanglePath = function (t, e, r, n, i, a, s) {
        var l = n / 2,
          u = i / 2,
          h = s === 'auto' ? HB() : s
        t.beginPath && t.beginPath(),
          t.moveTo(e - l + h, r - u),
          t.lineTo(e + l - h, r - u),
          t.lineTo(e + l, r - u + h),
          t.lineTo(e + l, r + u - h),
          t.lineTo(e + l - h, r + u),
          t.lineTo(e - l + h, r + u),
          t.lineTo(e - l, r + u - h),
          t.lineTo(e - l, r - u + h),
          t.closePath()
      }
      Wf.drawBarrelPath = function (t, e, r, n, i) {
        var a = n / 2,
          s = i / 2,
          l = e - a,
          u = e + a,
          h = r - s,
          f = r + s,
          d = TB(n, i),
          p = d.widthOffset,
          m = d.heightOffset,
          g = d.ctrlPtOffsetPct * p
        t.beginPath && t.beginPath(),
          t.moveTo(l, h + m),
          t.lineTo(l, f - m),
          t.quadraticCurveTo(l + g, f, l + p, f),
          t.lineTo(u - p, f),
          t.quadraticCurveTo(u - g, f, u, f - m),
          t.lineTo(u, h + m),
          t.quadraticCurveTo(u - g, h, u - p, h),
          t.lineTo(l + p, h),
          t.quadraticCurveTo(l + g, h, l, h + m),
          t.closePath()
      }
      ;(tge = Math.sin(0)), (rge = Math.cos(0)), (MB = {}), (IB = {}), (V1e = Math.PI / 40)
      for (Hp = 0 * Math.PI; Hp < 2 * Math.PI; Hp += V1e) (MB[Hp] = Math.sin(Hp)), (IB[Hp] = Math.cos(Hp))
      Wf.drawEllipsePath = function (t, e, r, n, i) {
        if ((t.beginPath && t.beginPath(), t.ellipse)) t.ellipse(e, r, n / 2, i / 2, 0, 0, 2 * Math.PI)
        else
          for (var a, s, l = n / 2, u = i / 2, h = 0 * Math.PI; h < 2 * Math.PI; h += V1e)
            (a = e - l * MB[h] * tge + l * IB[h] * rge), (s = r + u * IB[h] * tge + u * MB[h] * rge), h === 0 ? t.moveTo(a, s) : t.lineTo(a, s)
        t.closePath()
      }
      b4 = {}
      b4.createBuffer = function (t, e) {
        var r = document.createElement('canvas')
        return (r.width = t), (r.height = e), [r, r.getContext('2d')]
      }
      b4.bufferCanvasImage = function (t) {
        var e = this.cy,
          r = e.mutableElements(),
          n = r.boundingBox(),
          i = this.findContainerClientCoords(),
          a = t.full ? Math.ceil(n.w) : i[2],
          s = t.full ? Math.ceil(n.h) : i[3],
          l = _t(t.maxWidth) || _t(t.maxHeight),
          u = this.getPixelRatio(),
          h = 1
        if (t.scale !== void 0) (a *= t.scale), (s *= t.scale), (h = t.scale)
        else if (l) {
          var f = 1 / 0,
            d = 1 / 0
          _t(t.maxWidth) && (f = (h * t.maxWidth) / a), _t(t.maxHeight) && (d = (h * t.maxHeight) / s), (h = Math.min(f, d)), (a *= h), (s *= h)
        }
        l || ((a *= u), (s *= u), (h *= u))
        var p = document.createElement('canvas')
        ;(p.width = a), (p.height = s), (p.style.width = a + 'px'), (p.style.height = s + 'px')
        var m = p.getContext('2d')
        if (a > 0 && s > 0) {
          m.clearRect(0, 0, a, s), (m.globalCompositeOperation = 'source-over')
          var g = this.getCachedZSortedEles()
          if (t.full) m.translate(-n.x1 * h, -n.y1 * h), m.scale(h, h), this.drawElements(m, g), m.scale(1 / h, 1 / h), m.translate(n.x1 * h, n.y1 * h)
          else {
            var y = e.pan(),
              v = { x: y.x * h, y: y.y * h }
            ;(h *= e.zoom()), m.translate(v.x, v.y), m.scale(h, h), this.drawElements(m, g), m.scale(1 / h, 1 / h), m.translate(-v.x, -v.y)
          }
          t.bg && ((m.globalCompositeOperation = 'destination-over'), (m.fillStyle = t.bg), m.rect(0, 0, a, s), m.fill())
        }
        return p
      }
      o(iet, 'b64ToBlob')
      o(nge, 'b64UriToB64')
      o(U1e, 'output')
      b4.png = function (t) {
        return U1e(t, this.bufferCanvasImage(t), 'image/png')
      }
      b4.jpg = function (t) {
        return U1e(t, this.bufferCanvasImage(t), 'image/jpeg')
      }
      H1e = {}
      H1e.nodeShapeImpl = function (t, e, r, n, i, a, s, l) {
        switch (t) {
          case 'ellipse':
            return this.drawEllipsePath(e, r, n, i, a)
          case 'polygon':
            return this.drawPolygonPath(e, r, n, i, a, s)
          case 'round-polygon':
            return this.drawRoundPolygonPath(e, r, n, i, a, s, l)
          case 'roundrectangle':
          case 'round-rectangle':
            return this.drawRoundRectanglePath(e, r, n, i, a, l)
          case 'cutrectangle':
          case 'cut-rectangle':
            return this.drawCutRectanglePath(e, r, n, i, a, s, l)
          case 'bottomroundrectangle':
          case 'bottom-round-rectangle':
            return this.drawBottomRoundRectanglePath(e, r, n, i, a, l)
          case 'barrel':
            return this.drawBarrelPath(e, r, n, i, a)
        }
      }
      ;(aet = W1e), (Sr = W1e.prototype)
      Sr.CANVAS_LAYERS = 3
      Sr.SELECT_BOX = 0
      Sr.DRAG = 1
      Sr.NODE = 2
      Sr.WEBGL = 3
      Sr.CANVAS_TYPES = ['2d', '2d', '2d', 'webgl2']
      Sr.BUFFER_COUNT = 3
      Sr.TEXTURE_BUFFER = 0
      Sr.MOTIONBLUR_BUFFER_NODE = 1
      Sr.MOTIONBLUR_BUFFER_DRAG = 2
      o(W1e, 'CanvasRenderer')
      Sr.redrawHint = function (t, e) {
        var r = this
        switch (t) {
          case 'eles':
            r.data.canvasNeedsRedraw[Sr.NODE] = e
            break
          case 'drag':
            r.data.canvasNeedsRedraw[Sr.DRAG] = e
            break
          case 'select':
            r.data.canvasNeedsRedraw[Sr.SELECT_BOX] = e
            break
          case 'gc':
            r.data.gc = !0
            break
        }
      }
      set = typeof Path2D < 'u'
      Sr.path2dEnabled = function (t) {
        if (t === void 0) return this.pathsEnabled
        this.pathsEnabled = !!t
      }
      Sr.usePaths = function () {
        return set && this.pathsEnabled
      }
      Sr.setImgSmoothing = function (t, e) {
        t.imageSmoothingEnabled != null ? (t.imageSmoothingEnabled = e) : ((t.webkitImageSmoothingEnabled = e), (t.mozImageSmoothingEnabled = e), (t.msImageSmoothingEnabled = e))
      }
      Sr.getImgSmoothing = function (t) {
        return t.imageSmoothingEnabled != null ? t.imageSmoothingEnabled : t.webkitImageSmoothingEnabled || t.mozImageSmoothingEnabled || t.msImageSmoothingEnabled
      }
      Sr.makeOffscreenCanvas = function (t, e) {
        var r
        if ((typeof OffscreenCanvas > 'u' ? 'undefined' : qi(OffscreenCanvas)) !== 'undefined') r = new OffscreenCanvas(t, e)
        else {
          var n = this.cy.window(),
            i = n.document
          ;(r = i.createElement('canvas')), (r.width = t), (r.height = e)
        }
        return r
      }
      ;[N1e, tu, oh, iF, n0, py, ws, $1e, Wf, b4, H1e].forEach(function (t) {
        ir(Sr, t)
      })
      ;(oet = [
        { name: 'null', impl: v1e },
        { name: 'base', impl: _1e },
        { name: 'canvas', impl: aet }
      ]),
        (cet = [
          { type: 'layout', extensions: HZe },
          { type: 'renderer', extensions: oet }
        ]),
        (q1e = {}),
        (Y1e = {})
      o(X1e, 'setExtension')
      o(j1e, 'getExtension')
      o(uet, 'setModule')
      o(het, 'getModule')
      OB = o(function () {
        if (arguments.length === 2) return j1e.apply(null, arguments)
        if (arguments.length === 3) return X1e.apply(null, arguments)
        if (arguments.length === 4) return het.apply(null, arguments)
        if (arguments.length === 5) return uet.apply(null, arguments)
        oi('Invalid extension access syntax')
      }, 'extension')
      u4.prototype.extension = OB
      cet.forEach(function (t) {
        t.extensions.forEach(function (e) {
          X1e(t.type, e.name, e.impl)
        })
      })
      ;(K1e = o(function t() {
        if (!(this instanceof t)) return new t()
        this.length = 0
      }, 'Stylesheet')),
        (t0 = K1e.prototype)
      t0.instanceString = function () {
        return 'stylesheet'
      }
      t0.selector = function (t) {
        var e = this.length++
        return (this[e] = { selector: t, properties: [] }), this
      }
      t0.css = function (t, e) {
        var r = this.length - 1
        if (Zt(t)) this[r].properties.push({ name: t, value: e })
        else if (Ur(t))
          for (var n = t, i = Object.keys(n), a = 0; a < i.length; a++) {
            var s = i[a],
              l = n[s]
            if (l != null) {
              var u = Ua.properties[s] || Ua.properties[K6(s)]
              if (u != null) {
                var h = u.name,
                  f = l
                this[r].properties.push({ name: h, value: f })
              }
            }
          }
        return this
      }
      t0.style = t0.css
      t0.generateStyle = function (t) {
        var e = new Ua(t)
        return this.appendToStyle(e)
      }
      t0.appendToStyle = function (t) {
        for (var e = 0; e < this.length; e++) {
          var r = this[e],
            n = r.selector,
            i = r.properties
          t.selector(n)
          for (var a = 0; a < i.length; a++) {
            var s = i[a]
            t.css(s.name, s.value)
          }
        }
        return t
      }
      ;(fet = '3.31.0'),
        (sl = o(function (e) {
          if ((e === void 0 && (e = {}), Ur(e))) return new u4(e)
          if (Zt(e)) return OB.apply(OB, arguments)
        }, 'cytoscape'))
      sl.use = function (t) {
        var e = Array.prototype.slice.call(arguments, 1)
        return e.unshift(sl), t.apply(null, e), this
      }
      sl.warnings = function (t) {
        return Tge(t)
      }
      sl.version = fet
      sl.stylesheet = sl.Stylesheet = K1e
    })
  var cF = Pi((T4, lF) => {
    'use strict'
    o(function (e, r) {
      typeof T4 == 'object' && typeof lF == 'object'
        ? (lF.exports = r())
        : typeof define == 'function' && define.amd
          ? define([], r)
          : typeof T4 == 'object'
            ? (T4.layoutBase = r())
            : (e.layoutBase = r())
    }, 'webpackUniversalModuleDefinition')(T4, function () {
      return (function (t) {
        var e = {}
        function r(n) {
          if (e[n]) return e[n].exports
          var i = (e[n] = { i: n, l: !1, exports: {} })
          return t[n].call(i.exports, i, i.exports, r), (i.l = !0), i.exports
        }
        return (
          o(r, '__webpack_require__'),
          (r.m = t),
          (r.c = e),
          (r.i = function (n) {
            return n
          }),
          (r.d = function (n, i, a) {
            r.o(n, i) || Object.defineProperty(n, i, { configurable: !1, enumerable: !0, get: a })
          }),
          (r.n = function (n) {
            var i =
              n && n.__esModule
                ? o(function () {
                    return n.default
                  }, 'getDefault')
                : o(function () {
                    return n
                  }, 'getModuleExports')
            return r.d(i, 'a', i), i
          }),
          (r.o = function (n, i) {
            return Object.prototype.hasOwnProperty.call(n, i)
          }),
          (r.p = ''),
          r((r.s = 26))
        )
      })([
        function (t, e, r) {
          'use strict'
          function n() {}
          o(n, 'LayoutConstants'),
            (n.QUALITY = 1),
            (n.DEFAULT_CREATE_BENDS_AS_NEEDED = !1),
            (n.DEFAULT_INCREMENTAL = !1),
            (n.DEFAULT_ANIMATION_ON_LAYOUT = !0),
            (n.DEFAULT_ANIMATION_DURING_LAYOUT = !1),
            (n.DEFAULT_ANIMATION_PERIOD = 50),
            (n.DEFAULT_UNIFORM_LEAF_NODE_SIZES = !1),
            (n.DEFAULT_GRAPH_MARGIN = 15),
            (n.NODE_DIMENSIONS_INCLUDE_LABELS = !1),
            (n.SIMPLE_NODE_SIZE = 40),
            (n.SIMPLE_NODE_HALF_SIZE = n.SIMPLE_NODE_SIZE / 2),
            (n.EMPTY_COMPOUND_NODE_SIZE = 40),
            (n.MIN_EDGE_LENGTH = 1),
            (n.WORLD_BOUNDARY = 1e6),
            (n.INITIAL_WORLD_BOUNDARY = n.WORLD_BOUNDARY / 1e3),
            (n.WORLD_CENTER_X = 1200),
            (n.WORLD_CENTER_Y = 900),
            (t.exports = n)
        },
        function (t, e, r) {
          'use strict'
          var n = r(2),
            i = r(8),
            a = r(9)
          function s(u, h, f) {
            n.call(this, f), (this.isOverlapingSourceAndTarget = !1), (this.vGraphObject = f), (this.bendpoints = []), (this.source = u), (this.target = h)
          }
          o(s, 'LEdge'), (s.prototype = Object.create(n.prototype))
          for (var l in n) s[l] = n[l]
          ;(s.prototype.getSource = function () {
            return this.source
          }),
            (s.prototype.getTarget = function () {
              return this.target
            }),
            (s.prototype.isInterGraph = function () {
              return this.isInterGraph
            }),
            (s.prototype.getLength = function () {
              return this.length
            }),
            (s.prototype.isOverlapingSourceAndTarget = function () {
              return this.isOverlapingSourceAndTarget
            }),
            (s.prototype.getBendpoints = function () {
              return this.bendpoints
            }),
            (s.prototype.getLca = function () {
              return this.lca
            }),
            (s.prototype.getSourceInLca = function () {
              return this.sourceInLca
            }),
            (s.prototype.getTargetInLca = function () {
              return this.targetInLca
            }),
            (s.prototype.getOtherEnd = function (u) {
              if (this.source === u) return this.target
              if (this.target === u) return this.source
              throw 'Node is not incident with this edge'
            }),
            (s.prototype.getOtherEndInGraph = function (u, h) {
              for (var f = this.getOtherEnd(u), d = h.getGraphManager().getRoot(); ; ) {
                if (f.getOwner() == h) return f
                if (f.getOwner() == d) break
                f = f.getOwner().getParent()
              }
              return null
            }),
            (s.prototype.updateLength = function () {
              var u = new Array(4)
              ;(this.isOverlapingSourceAndTarget = i.getIntersection(this.target.getRect(), this.source.getRect(), u)),
                this.isOverlapingSourceAndTarget ||
                  ((this.lengthX = u[0] - u[2]),
                  (this.lengthY = u[1] - u[3]),
                  Math.abs(this.lengthX) < 1 && (this.lengthX = a.sign(this.lengthX)),
                  Math.abs(this.lengthY) < 1 && (this.lengthY = a.sign(this.lengthY)),
                  (this.length = Math.sqrt(this.lengthX * this.lengthX + this.lengthY * this.lengthY)))
            }),
            (s.prototype.updateLengthSimple = function () {
              ;(this.lengthX = this.target.getCenterX() - this.source.getCenterX()),
                (this.lengthY = this.target.getCenterY() - this.source.getCenterY()),
                Math.abs(this.lengthX) < 1 && (this.lengthX = a.sign(this.lengthX)),
                Math.abs(this.lengthY) < 1 && (this.lengthY = a.sign(this.lengthY)),
                (this.length = Math.sqrt(this.lengthX * this.lengthX + this.lengthY * this.lengthY))
            }),
            (t.exports = s)
        },
        function (t, e, r) {
          'use strict'
          function n(i) {
            this.vGraphObject = i
          }
          o(n, 'LGraphObject'), (t.exports = n)
        },
        function (t, e, r) {
          'use strict'
          var n = r(2),
            i = r(10),
            a = r(13),
            s = r(0),
            l = r(16),
            u = r(4)
          function h(d, p, m, g) {
            m == null && g == null && (g = p),
              n.call(this, g),
              d.graphManager != null && (d = d.graphManager),
              (this.estimatedSize = i.MIN_VALUE),
              (this.inclusionTreeDepth = i.MAX_VALUE),
              (this.vGraphObject = g),
              (this.edges = []),
              (this.graphManager = d),
              m != null && p != null ? (this.rect = new a(p.x, p.y, m.width, m.height)) : (this.rect = new a())
          }
          o(h, 'LNode'), (h.prototype = Object.create(n.prototype))
          for (var f in n) h[f] = n[f]
          ;(h.prototype.getEdges = function () {
            return this.edges
          }),
            (h.prototype.getChild = function () {
              return this.child
            }),
            (h.prototype.getOwner = function () {
              return this.owner
            }),
            (h.prototype.getWidth = function () {
              return this.rect.width
            }),
            (h.prototype.setWidth = function (d) {
              this.rect.width = d
            }),
            (h.prototype.getHeight = function () {
              return this.rect.height
            }),
            (h.prototype.setHeight = function (d) {
              this.rect.height = d
            }),
            (h.prototype.getCenterX = function () {
              return this.rect.x + this.rect.width / 2
            }),
            (h.prototype.getCenterY = function () {
              return this.rect.y + this.rect.height / 2
            }),
            (h.prototype.getCenter = function () {
              return new u(this.rect.x + this.rect.width / 2, this.rect.y + this.rect.height / 2)
            }),
            (h.prototype.getLocation = function () {
              return new u(this.rect.x, this.rect.y)
            }),
            (h.prototype.getRect = function () {
              return this.rect
            }),
            (h.prototype.getDiagonal = function () {
              return Math.sqrt(this.rect.width * this.rect.width + this.rect.height * this.rect.height)
            }),
            (h.prototype.getHalfTheDiagonal = function () {
              return Math.sqrt(this.rect.height * this.rect.height + this.rect.width * this.rect.width) / 2
            }),
            (h.prototype.setRect = function (d, p) {
              ;(this.rect.x = d.x), (this.rect.y = d.y), (this.rect.width = p.width), (this.rect.height = p.height)
            }),
            (h.prototype.setCenter = function (d, p) {
              ;(this.rect.x = d - this.rect.width / 2), (this.rect.y = p - this.rect.height / 2)
            }),
            (h.prototype.setLocation = function (d, p) {
              ;(this.rect.x = d), (this.rect.y = p)
            }),
            (h.prototype.moveBy = function (d, p) {
              ;(this.rect.x += d), (this.rect.y += p)
            }),
            (h.prototype.getEdgeListToNode = function (d) {
              var p = [],
                m,
                g = this
              return (
                g.edges.forEach(function (y) {
                  if (y.target == d) {
                    if (y.source != g) throw 'Incorrect edge source!'
                    p.push(y)
                  }
                }),
                p
              )
            }),
            (h.prototype.getEdgesBetween = function (d) {
              var p = [],
                m,
                g = this
              return (
                g.edges.forEach(function (y) {
                  if (!(y.source == g || y.target == g)) throw 'Incorrect edge source and/or target'
                  ;(y.target == d || y.source == d) && p.push(y)
                }),
                p
              )
            }),
            (h.prototype.getNeighborsList = function () {
              var d = new Set(),
                p = this
              return (
                p.edges.forEach(function (m) {
                  if (m.source == p) d.add(m.target)
                  else {
                    if (m.target != p) throw 'Incorrect incidency!'
                    d.add(m.source)
                  }
                }),
                d
              )
            }),
            (h.prototype.withChildren = function () {
              var d = new Set(),
                p,
                m
              if ((d.add(this), this.child != null))
                for (var g = this.child.getNodes(), y = 0; y < g.length; y++)
                  (p = g[y]),
                    (m = p.withChildren()),
                    m.forEach(function (v) {
                      d.add(v)
                    })
              return d
            }),
            (h.prototype.getNoOfChildren = function () {
              var d = 0,
                p
              if (this.child == null) d = 1
              else for (var m = this.child.getNodes(), g = 0; g < m.length; g++) (p = m[g]), (d += p.getNoOfChildren())
              return d == 0 && (d = 1), d
            }),
            (h.prototype.getEstimatedSize = function () {
              if (this.estimatedSize == i.MIN_VALUE) throw 'assert failed'
              return this.estimatedSize
            }),
            (h.prototype.calcEstimatedSize = function () {
              return this.child == null
                ? (this.estimatedSize = (this.rect.width + this.rect.height) / 2)
                : ((this.estimatedSize = this.child.calcEstimatedSize()), (this.rect.width = this.estimatedSize), (this.rect.height = this.estimatedSize), this.estimatedSize)
            }),
            (h.prototype.scatter = function () {
              var d,
                p,
                m = -s.INITIAL_WORLD_BOUNDARY,
                g = s.INITIAL_WORLD_BOUNDARY
              d = s.WORLD_CENTER_X + l.nextDouble() * (g - m) + m
              var y = -s.INITIAL_WORLD_BOUNDARY,
                v = s.INITIAL_WORLD_BOUNDARY
              ;(p = s.WORLD_CENTER_Y + l.nextDouble() * (v - y) + y), (this.rect.x = d), (this.rect.y = p)
            }),
            (h.prototype.updateBounds = function () {
              if (this.getChild() == null) throw 'assert failed'
              if (this.getChild().getNodes().length != 0) {
                var d = this.getChild()
                if (
                  (d.updateBounds(!0),
                  (this.rect.x = d.getLeft()),
                  (this.rect.y = d.getTop()),
                  this.setWidth(d.getRight() - d.getLeft()),
                  this.setHeight(d.getBottom() - d.getTop()),
                  s.NODE_DIMENSIONS_INCLUDE_LABELS)
                ) {
                  var p = d.getRight() - d.getLeft(),
                    m = d.getBottom() - d.getTop()
                  this.labelWidth > p && ((this.rect.x -= (this.labelWidth - p) / 2), this.setWidth(this.labelWidth)),
                    this.labelHeight > m &&
                      (this.labelPos == 'center' ? (this.rect.y -= (this.labelHeight - m) / 2) : this.labelPos == 'top' && (this.rect.y -= this.labelHeight - m),
                      this.setHeight(this.labelHeight))
                }
              }
            }),
            (h.prototype.getInclusionTreeDepth = function () {
              if (this.inclusionTreeDepth == i.MAX_VALUE) throw 'assert failed'
              return this.inclusionTreeDepth
            }),
            (h.prototype.transform = function (d) {
              var p = this.rect.x
              p > s.WORLD_BOUNDARY ? (p = s.WORLD_BOUNDARY) : p < -s.WORLD_BOUNDARY && (p = -s.WORLD_BOUNDARY)
              var m = this.rect.y
              m > s.WORLD_BOUNDARY ? (m = s.WORLD_BOUNDARY) : m < -s.WORLD_BOUNDARY && (m = -s.WORLD_BOUNDARY)
              var g = new u(p, m),
                y = d.inverseTransformPoint(g)
              this.setLocation(y.x, y.y)
            }),
            (h.prototype.getLeft = function () {
              return this.rect.x
            }),
            (h.prototype.getRight = function () {
              return this.rect.x + this.rect.width
            }),
            (h.prototype.getTop = function () {
              return this.rect.y
            }),
            (h.prototype.getBottom = function () {
              return this.rect.y + this.rect.height
            }),
            (h.prototype.getParent = function () {
              return this.owner == null ? null : this.owner.getParent()
            }),
            (t.exports = h)
        },
        function (t, e, r) {
          'use strict'
          function n(i, a) {
            i == null && a == null ? ((this.x = 0), (this.y = 0)) : ((this.x = i), (this.y = a))
          }
          o(n, 'PointD'),
            (n.prototype.getX = function () {
              return this.x
            }),
            (n.prototype.getY = function () {
              return this.y
            }),
            (n.prototype.setX = function (i) {
              this.x = i
            }),
            (n.prototype.setY = function (i) {
              this.y = i
            }),
            (n.prototype.getDifference = function (i) {
              return new DimensionD(this.x - i.x, this.y - i.y)
            }),
            (n.prototype.getCopy = function () {
              return new n(this.x, this.y)
            }),
            (n.prototype.translate = function (i) {
              return (this.x += i.width), (this.y += i.height), this
            }),
            (t.exports = n)
        },
        function (t, e, r) {
          'use strict'
          var n = r(2),
            i = r(10),
            a = r(0),
            s = r(6),
            l = r(3),
            u = r(1),
            h = r(13),
            f = r(12),
            d = r(11)
          function p(g, y, v) {
            n.call(this, v),
              (this.estimatedSize = i.MIN_VALUE),
              (this.margin = a.DEFAULT_GRAPH_MARGIN),
              (this.edges = []),
              (this.nodes = []),
              (this.isConnected = !1),
              (this.parent = g),
              y != null && y instanceof s ? (this.graphManager = y) : y != null && y instanceof Layout && (this.graphManager = y.graphManager)
          }
          o(p, 'LGraph'), (p.prototype = Object.create(n.prototype))
          for (var m in n) p[m] = n[m]
          ;(p.prototype.getNodes = function () {
            return this.nodes
          }),
            (p.prototype.getEdges = function () {
              return this.edges
            }),
            (p.prototype.getGraphManager = function () {
              return this.graphManager
            }),
            (p.prototype.getParent = function () {
              return this.parent
            }),
            (p.prototype.getLeft = function () {
              return this.left
            }),
            (p.prototype.getRight = function () {
              return this.right
            }),
            (p.prototype.getTop = function () {
              return this.top
            }),
            (p.prototype.getBottom = function () {
              return this.bottom
            }),
            (p.prototype.isConnected = function () {
              return this.isConnected
            }),
            (p.prototype.add = function (g, y, v) {
              if (y == null && v == null) {
                var x = g
                if (this.graphManager == null) throw 'Graph has no graph mgr!'
                if (this.getNodes().indexOf(x) > -1) throw 'Node already in graph!'
                return (x.owner = this), this.getNodes().push(x), x
              } else {
                var b = g
                if (!(this.getNodes().indexOf(y) > -1 && this.getNodes().indexOf(v) > -1)) throw 'Source or target not in graph!'
                if (!(y.owner == v.owner && y.owner == this)) throw 'Both owners must be this graph!'
                return y.owner != v.owner ? null : ((b.source = y), (b.target = v), (b.isInterGraph = !1), this.getEdges().push(b), y.edges.push(b), v != y && v.edges.push(b), b)
              }
            }),
            (p.prototype.remove = function (g) {
              var y = g
              if (g instanceof l) {
                if (y == null) throw 'Node is null!'
                if (!(y.owner != null && y.owner == this)) throw 'Owner graph is invalid!'
                if (this.graphManager == null) throw 'Owner graph manager is invalid!'
                for (var v = y.edges.slice(), x, b = v.length, T = 0; T < b; T++) (x = v[T]), x.isInterGraph ? this.graphManager.remove(x) : x.source.owner.remove(x)
                var S = this.nodes.indexOf(y)
                if (S == -1) throw 'Node not in owner node list!'
                this.nodes.splice(S, 1)
              } else if (g instanceof u) {
                var x = g
                if (x == null) throw 'Edge is null!'
                if (!(x.source != null && x.target != null)) throw 'Source and/or target is null!'
                if (!(x.source.owner != null && x.target.owner != null && x.source.owner == this && x.target.owner == this)) throw 'Source and/or target owner is invalid!'
                var w = x.source.edges.indexOf(x),
                  E = x.target.edges.indexOf(x)
                if (!(w > -1 && E > -1)) throw "Source and/or target doesn't know this edge!"
                x.source.edges.splice(w, 1), x.target != x.source && x.target.edges.splice(E, 1)
                var S = x.source.owner.getEdges().indexOf(x)
                if (S == -1) throw "Not in owner's edge list!"
                x.source.owner.getEdges().splice(S, 1)
              }
            }),
            (p.prototype.updateLeftTop = function () {
              for (var g = i.MAX_VALUE, y = i.MAX_VALUE, v, x, b, T = this.getNodes(), S = T.length, w = 0; w < S; w++) {
                var E = T[w]
                ;(v = E.getTop()), (x = E.getLeft()), g > v && (g = v), y > x && (y = x)
              }
              return g == i.MAX_VALUE
                ? null
                : (T[0].getParent().paddingLeft != null ? (b = T[0].getParent().paddingLeft) : (b = this.margin),
                  (this.left = y - b),
                  (this.top = g - b),
                  new f(this.left, this.top))
            }),
            (p.prototype.updateBounds = function (g) {
              for (var y = i.MAX_VALUE, v = -i.MAX_VALUE, x = i.MAX_VALUE, b = -i.MAX_VALUE, T, S, w, E, _, C = this.nodes, D = C.length, O = 0; O < D; O++) {
                var R = C[O]
                g && R.child != null && R.updateBounds(),
                  (T = R.getLeft()),
                  (S = R.getRight()),
                  (w = R.getTop()),
                  (E = R.getBottom()),
                  y > T && (y = T),
                  v < S && (v = S),
                  x > w && (x = w),
                  b < E && (b = E)
              }
              var k = new h(y, x, v - y, b - x)
              y == i.MAX_VALUE &&
                ((this.left = this.parent.getLeft()), (this.right = this.parent.getRight()), (this.top = this.parent.getTop()), (this.bottom = this.parent.getBottom())),
                C[0].getParent().paddingLeft != null ? (_ = C[0].getParent().paddingLeft) : (_ = this.margin),
                (this.left = k.x - _),
                (this.right = k.x + k.width + _),
                (this.top = k.y - _),
                (this.bottom = k.y + k.height + _)
            }),
            (p.calculateBounds = function (g) {
              for (var y = i.MAX_VALUE, v = -i.MAX_VALUE, x = i.MAX_VALUE, b = -i.MAX_VALUE, T, S, w, E, _ = g.length, C = 0; C < _; C++) {
                var D = g[C]
                ;(T = D.getLeft()), (S = D.getRight()), (w = D.getTop()), (E = D.getBottom()), y > T && (y = T), v < S && (v = S), x > w && (x = w), b < E && (b = E)
              }
              var O = new h(y, x, v - y, b - x)
              return O
            }),
            (p.prototype.getInclusionTreeDepth = function () {
              return this == this.graphManager.getRoot() ? 1 : this.parent.getInclusionTreeDepth()
            }),
            (p.prototype.getEstimatedSize = function () {
              if (this.estimatedSize == i.MIN_VALUE) throw 'assert failed'
              return this.estimatedSize
            }),
            (p.prototype.calcEstimatedSize = function () {
              for (var g = 0, y = this.nodes, v = y.length, x = 0; x < v; x++) {
                var b = y[x]
                g += b.calcEstimatedSize()
              }
              return g == 0 ? (this.estimatedSize = a.EMPTY_COMPOUND_NODE_SIZE) : (this.estimatedSize = g / Math.sqrt(this.nodes.length)), this.estimatedSize
            }),
            (p.prototype.updateConnected = function () {
              var g = this
              if (this.nodes.length == 0) {
                this.isConnected = !0
                return
              }
              var y = new d(),
                v = new Set(),
                x = this.nodes[0],
                b,
                T,
                S = x.withChildren()
              for (
                S.forEach(function (O) {
                  y.push(O), v.add(O)
                });
                y.length !== 0;

              ) {
                ;(x = y.shift()), (b = x.getEdges())
                for (var w = b.length, E = 0; E < w; E++) {
                  var _ = b[E]
                  if (((T = _.getOtherEndInGraph(x, this)), T != null && !v.has(T))) {
                    var C = T.withChildren()
                    C.forEach(function (O) {
                      y.push(O), v.add(O)
                    })
                  }
                }
              }
              if (((this.isConnected = !1), v.size >= this.nodes.length)) {
                var D = 0
                v.forEach(function (O) {
                  O.owner == g && D++
                }),
                  D == this.nodes.length && (this.isConnected = !0)
              }
            }),
            (t.exports = p)
        },
        function (t, e, r) {
          'use strict'
          var n,
            i = r(1)
          function a(s) {
            ;(n = r(5)), (this.layout = s), (this.graphs = []), (this.edges = [])
          }
          o(a, 'LGraphManager'),
            (a.prototype.addRoot = function () {
              var s = this.layout.newGraph(),
                l = this.layout.newNode(null),
                u = this.add(s, l)
              return this.setRootGraph(u), this.rootGraph
            }),
            (a.prototype.add = function (s, l, u, h, f) {
              if (u == null && h == null && f == null) {
                if (s == null) throw 'Graph is null!'
                if (l == null) throw 'Parent node is null!'
                if (this.graphs.indexOf(s) > -1) throw 'Graph already in this graph mgr!'
                if ((this.graphs.push(s), s.parent != null)) throw 'Already has a parent!'
                if (l.child != null) throw 'Already has a child!'
                return (s.parent = l), (l.child = s), s
              } else {
                ;(f = u), (h = l), (u = s)
                var d = h.getOwner(),
                  p = f.getOwner()
                if (!(d != null && d.getGraphManager() == this)) throw 'Source not in this graph mgr!'
                if (!(p != null && p.getGraphManager() == this)) throw 'Target not in this graph mgr!'
                if (d == p) return (u.isInterGraph = !1), d.add(u, h, f)
                if (((u.isInterGraph = !0), (u.source = h), (u.target = f), this.edges.indexOf(u) > -1)) throw 'Edge already in inter-graph edge list!'
                if ((this.edges.push(u), !(u.source != null && u.target != null))) throw 'Edge source and/or target is null!'
                if (!(u.source.edges.indexOf(u) == -1 && u.target.edges.indexOf(u) == -1)) throw 'Edge already in source and/or target incidency list!'
                return u.source.edges.push(u), u.target.edges.push(u), u
              }
            }),
            (a.prototype.remove = function (s) {
              if (s instanceof n) {
                var l = s
                if (l.getGraphManager() != this) throw 'Graph not in this graph mgr'
                if (!(l == this.rootGraph || (l.parent != null && l.parent.graphManager == this))) throw 'Invalid parent node!'
                var u = []
                u = u.concat(l.getEdges())
                for (var h, f = u.length, d = 0; d < f; d++) (h = u[d]), l.remove(h)
                var p = []
                p = p.concat(l.getNodes())
                var m
                f = p.length
                for (var d = 0; d < f; d++) (m = p[d]), l.remove(m)
                l == this.rootGraph && this.setRootGraph(null)
                var g = this.graphs.indexOf(l)
                this.graphs.splice(g, 1), (l.parent = null)
              } else if (s instanceof i) {
                if (((h = s), h == null)) throw 'Edge is null!'
                if (!h.isInterGraph) throw 'Not an inter-graph edge!'
                if (!(h.source != null && h.target != null)) throw 'Source and/or target is null!'
                if (!(h.source.edges.indexOf(h) != -1 && h.target.edges.indexOf(h) != -1)) throw "Source and/or target doesn't know this edge!"
                var g = h.source.edges.indexOf(h)
                if (
                  (h.source.edges.splice(g, 1), (g = h.target.edges.indexOf(h)), h.target.edges.splice(g, 1), !(h.source.owner != null && h.source.owner.getGraphManager() != null))
                )
                  throw 'Edge owner graph or owner graph manager is null!'
                if (h.source.owner.getGraphManager().edges.indexOf(h) == -1) throw "Not in owner graph manager's edge list!"
                var g = h.source.owner.getGraphManager().edges.indexOf(h)
                h.source.owner.getGraphManager().edges.splice(g, 1)
              }
            }),
            (a.prototype.updateBounds = function () {
              this.rootGraph.updateBounds(!0)
            }),
            (a.prototype.getGraphs = function () {
              return this.graphs
            }),
            (a.prototype.getAllNodes = function () {
              if (this.allNodes == null) {
                for (var s = [], l = this.getGraphs(), u = l.length, h = 0; h < u; h++) s = s.concat(l[h].getNodes())
                this.allNodes = s
              }
              return this.allNodes
            }),
            (a.prototype.resetAllNodes = function () {
              this.allNodes = null
            }),
            (a.prototype.resetAllEdges = function () {
              this.allEdges = null
            }),
            (a.prototype.resetAllNodesToApplyGravitation = function () {
              this.allNodesToApplyGravitation = null
            }),
            (a.prototype.getAllEdges = function () {
              if (this.allEdges == null) {
                for (var s = [], l = this.getGraphs(), u = l.length, h = 0; h < l.length; h++) s = s.concat(l[h].getEdges())
                ;(s = s.concat(this.edges)), (this.allEdges = s)
              }
              return this.allEdges
            }),
            (a.prototype.getAllNodesToApplyGravitation = function () {
              return this.allNodesToApplyGravitation
            }),
            (a.prototype.setAllNodesToApplyGravitation = function (s) {
              if (this.allNodesToApplyGravitation != null) throw 'assert failed'
              this.allNodesToApplyGravitation = s
            }),
            (a.prototype.getRoot = function () {
              return this.rootGraph
            }),
            (a.prototype.setRootGraph = function (s) {
              if (s.getGraphManager() != this) throw 'Root not in this graph mgr!'
              ;(this.rootGraph = s), s.parent == null && (s.parent = this.layout.newNode('Root node'))
            }),
            (a.prototype.getLayout = function () {
              return this.layout
            }),
            (a.prototype.isOneAncestorOfOther = function (s, l) {
              if (!(s != null && l != null)) throw 'assert failed'
              if (s == l) return !0
              var u = s.getOwner(),
                h
              do {
                if (((h = u.getParent()), h == null)) break
                if (h == l) return !0
                if (((u = h.getOwner()), u == null)) break
              } while (!0)
              u = l.getOwner()
              do {
                if (((h = u.getParent()), h == null)) break
                if (h == s) return !0
                if (((u = h.getOwner()), u == null)) break
              } while (!0)
              return !1
            }),
            (a.prototype.calcLowestCommonAncestors = function () {
              for (var s, l, u, h, f, d = this.getAllEdges(), p = d.length, m = 0; m < p; m++) {
                if (((s = d[m]), (l = s.source), (u = s.target), (s.lca = null), (s.sourceInLca = l), (s.targetInLca = u), l == u)) {
                  s.lca = l.getOwner()
                  continue
                }
                for (h = l.getOwner(); s.lca == null; ) {
                  for (s.targetInLca = u, f = u.getOwner(); s.lca == null; ) {
                    if (f == h) {
                      s.lca = f
                      break
                    }
                    if (f == this.rootGraph) break
                    if (s.lca != null) throw 'assert failed'
                    ;(s.targetInLca = f.getParent()), (f = s.targetInLca.getOwner())
                  }
                  if (h == this.rootGraph) break
                  s.lca == null && ((s.sourceInLca = h.getParent()), (h = s.sourceInLca.getOwner()))
                }
                if (s.lca == null) throw 'assert failed'
              }
            }),
            (a.prototype.calcLowestCommonAncestor = function (s, l) {
              if (s == l) return s.getOwner()
              var u = s.getOwner()
              do {
                if (u == null) break
                var h = l.getOwner()
                do {
                  if (h == null) break
                  if (h == u) return h
                  h = h.getParent().getOwner()
                } while (!0)
                u = u.getParent().getOwner()
              } while (!0)
              return u
            }),
            (a.prototype.calcInclusionTreeDepths = function (s, l) {
              s == null && l == null && ((s = this.rootGraph), (l = 1))
              for (var u, h = s.getNodes(), f = h.length, d = 0; d < f; d++) (u = h[d]), (u.inclusionTreeDepth = l), u.child != null && this.calcInclusionTreeDepths(u.child, l + 1)
            }),
            (a.prototype.includesInvalidEdge = function () {
              for (var s, l = this.edges.length, u = 0; u < l; u++) if (((s = this.edges[u]), this.isOneAncestorOfOther(s.source, s.target))) return !0
              return !1
            }),
            (t.exports = a)
        },
        function (t, e, r) {
          'use strict'
          var n = r(0)
          function i() {}
          o(i, 'FDLayoutConstants')
          for (var a in n) i[a] = n[a]
          ;(i.MAX_ITERATIONS = 2500),
            (i.DEFAULT_EDGE_LENGTH = 50),
            (i.DEFAULT_SPRING_STRENGTH = 0.45),
            (i.DEFAULT_REPULSION_STRENGTH = 4500),
            (i.DEFAULT_GRAVITY_STRENGTH = 0.4),
            (i.DEFAULT_COMPOUND_GRAVITY_STRENGTH = 1),
            (i.DEFAULT_GRAVITY_RANGE_FACTOR = 3.8),
            (i.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = 1.5),
            (i.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION = !0),
            (i.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION = !0),
            (i.DEFAULT_COOLING_FACTOR_INCREMENTAL = 0.3),
            (i.COOLING_ADAPTATION_FACTOR = 0.33),
            (i.ADAPTATION_LOWER_NODE_LIMIT = 1e3),
            (i.ADAPTATION_UPPER_NODE_LIMIT = 5e3),
            (i.MAX_NODE_DISPLACEMENT_INCREMENTAL = 100),
            (i.MAX_NODE_DISPLACEMENT = i.MAX_NODE_DISPLACEMENT_INCREMENTAL * 3),
            (i.MIN_REPULSION_DIST = i.DEFAULT_EDGE_LENGTH / 10),
            (i.CONVERGENCE_CHECK_PERIOD = 100),
            (i.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = 0.1),
            (i.MIN_EDGE_LENGTH = 1),
            (i.GRID_CALCULATION_CHECK_PERIOD = 10),
            (t.exports = i)
        },
        function (t, e, r) {
          'use strict'
          var n = r(12)
          function i() {}
          o(i, 'IGeometry'),
            (i.calcSeparationAmount = function (a, s, l, u) {
              if (!a.intersects(s)) throw 'assert failed'
              var h = new Array(2)
              this.decideDirectionsForOverlappingNodes(a, s, h),
                (l[0] = Math.min(a.getRight(), s.getRight()) - Math.max(a.x, s.x)),
                (l[1] = Math.min(a.getBottom(), s.getBottom()) - Math.max(a.y, s.y)),
                a.getX() <= s.getX() && a.getRight() >= s.getRight()
                  ? (l[0] += Math.min(s.getX() - a.getX(), a.getRight() - s.getRight()))
                  : s.getX() <= a.getX() && s.getRight() >= a.getRight() && (l[0] += Math.min(a.getX() - s.getX(), s.getRight() - a.getRight())),
                a.getY() <= s.getY() && a.getBottom() >= s.getBottom()
                  ? (l[1] += Math.min(s.getY() - a.getY(), a.getBottom() - s.getBottom()))
                  : s.getY() <= a.getY() && s.getBottom() >= a.getBottom() && (l[1] += Math.min(a.getY() - s.getY(), s.getBottom() - a.getBottom()))
              var f = Math.abs((s.getCenterY() - a.getCenterY()) / (s.getCenterX() - a.getCenterX()))
              s.getCenterY() === a.getCenterY() && s.getCenterX() === a.getCenterX() && (f = 1)
              var d = f * l[0],
                p = l[1] / f
              l[0] < p ? (p = l[0]) : (d = l[1]), (l[0] = -1 * h[0] * (p / 2 + u)), (l[1] = -1 * h[1] * (d / 2 + u))
            }),
            (i.decideDirectionsForOverlappingNodes = function (a, s, l) {
              a.getCenterX() < s.getCenterX() ? (l[0] = -1) : (l[0] = 1), a.getCenterY() < s.getCenterY() ? (l[1] = -1) : (l[1] = 1)
            }),
            (i.getIntersection2 = function (a, s, l) {
              var u = a.getCenterX(),
                h = a.getCenterY(),
                f = s.getCenterX(),
                d = s.getCenterY()
              if (a.intersects(s)) return (l[0] = u), (l[1] = h), (l[2] = f), (l[3] = d), !0
              var p = a.getX(),
                m = a.getY(),
                g = a.getRight(),
                y = a.getX(),
                v = a.getBottom(),
                x = a.getRight(),
                b = a.getWidthHalf(),
                T = a.getHeightHalf(),
                S = s.getX(),
                w = s.getY(),
                E = s.getRight(),
                _ = s.getX(),
                C = s.getBottom(),
                D = s.getRight(),
                O = s.getWidthHalf(),
                R = s.getHeightHalf(),
                k = !1,
                L = !1
              if (u === f) {
                if (h > d) return (l[0] = u), (l[1] = m), (l[2] = f), (l[3] = C), !1
                if (h < d) return (l[0] = u), (l[1] = v), (l[2] = f), (l[3] = w), !1
              } else if (h === d) {
                if (u > f) return (l[0] = p), (l[1] = h), (l[2] = E), (l[3] = d), !1
                if (u < f) return (l[0] = g), (l[1] = h), (l[2] = S), (l[3] = d), !1
              } else {
                var A = a.height / a.width,
                  I = s.height / s.width,
                  M = (d - h) / (f - u),
                  P = void 0,
                  B = void 0,
                  F = void 0,
                  z = void 0,
                  $ = void 0,
                  U = void 0
                if (
                  (-A === M
                    ? u > f
                      ? ((l[0] = y), (l[1] = v), (k = !0))
                      : ((l[0] = g), (l[1] = m), (k = !0))
                    : A === M && (u > f ? ((l[0] = p), (l[1] = m), (k = !0)) : ((l[0] = x), (l[1] = v), (k = !0))),
                  -I === M
                    ? f > u
                      ? ((l[2] = _), (l[3] = C), (L = !0))
                      : ((l[2] = E), (l[3] = w), (L = !0))
                    : I === M && (f > u ? ((l[2] = S), (l[3] = w), (L = !0)) : ((l[2] = D), (l[3] = C), (L = !0))),
                  k && L)
                )
                  return !1
                if (
                  (u > f
                    ? h > d
                      ? ((P = this.getCardinalDirection(A, M, 4)), (B = this.getCardinalDirection(I, M, 2)))
                      : ((P = this.getCardinalDirection(-A, M, 3)), (B = this.getCardinalDirection(-I, M, 1)))
                    : h > d
                      ? ((P = this.getCardinalDirection(-A, M, 1)), (B = this.getCardinalDirection(-I, M, 3)))
                      : ((P = this.getCardinalDirection(A, M, 2)), (B = this.getCardinalDirection(I, M, 4))),
                  !k)
                )
                  switch (P) {
                    case 1:
                      ;(z = m), (F = u + -T / M), (l[0] = F), (l[1] = z)
                      break
                    case 2:
                      ;(F = x), (z = h + b * M), (l[0] = F), (l[1] = z)
                      break
                    case 3:
                      ;(z = v), (F = u + T / M), (l[0] = F), (l[1] = z)
                      break
                    case 4:
                      ;(F = y), (z = h + -b * M), (l[0] = F), (l[1] = z)
                      break
                  }
                if (!L)
                  switch (B) {
                    case 1:
                      ;(U = w), ($ = f + -R / M), (l[2] = $), (l[3] = U)
                      break
                    case 2:
                      ;($ = D), (U = d + O * M), (l[2] = $), (l[3] = U)
                      break
                    case 3:
                      ;(U = C), ($ = f + R / M), (l[2] = $), (l[3] = U)
                      break
                    case 4:
                      ;($ = _), (U = d + -O * M), (l[2] = $), (l[3] = U)
                      break
                  }
              }
              return !1
            }),
            (i.getCardinalDirection = function (a, s, l) {
              return a > s ? l : 1 + (l % 4)
            }),
            (i.getIntersection = function (a, s, l, u) {
              if (u == null) return this.getIntersection2(a, s, l)
              var h = a.x,
                f = a.y,
                d = s.x,
                p = s.y,
                m = l.x,
                g = l.y,
                y = u.x,
                v = u.y,
                x = void 0,
                b = void 0,
                T = void 0,
                S = void 0,
                w = void 0,
                E = void 0,
                _ = void 0,
                C = void 0,
                D = void 0
              return (
                (T = p - f),
                (w = h - d),
                (_ = d * f - h * p),
                (S = v - g),
                (E = m - y),
                (C = y * g - m * v),
                (D = T * E - S * w),
                D === 0 ? null : ((x = (w * C - E * _) / D), (b = (S * _ - T * C) / D), new n(x, b))
              )
            }),
            (i.angleOfVector = function (a, s, l, u) {
              var h = void 0
              return (
                a !== l ? ((h = Math.atan((u - s) / (l - a))), l < a ? (h += Math.PI) : u < s && (h += this.TWO_PI)) : u < s ? (h = this.ONE_AND_HALF_PI) : (h = this.HALF_PI), h
              )
            }),
            (i.doIntersect = function (a, s, l, u) {
              var h = a.x,
                f = a.y,
                d = s.x,
                p = s.y,
                m = l.x,
                g = l.y,
                y = u.x,
                v = u.y,
                x = (d - h) * (v - g) - (y - m) * (p - f)
              if (x === 0) return !1
              var b = ((v - g) * (y - h) + (m - y) * (v - f)) / x,
                T = ((f - p) * (y - h) + (d - h) * (v - f)) / x
              return 0 < b && b < 1 && 0 < T && T < 1
            }),
            (i.HALF_PI = 0.5 * Math.PI),
            (i.ONE_AND_HALF_PI = 1.5 * Math.PI),
            (i.TWO_PI = 2 * Math.PI),
            (i.THREE_PI = 3 * Math.PI),
            (t.exports = i)
        },
        function (t, e, r) {
          'use strict'
          function n() {}
          o(n, 'IMath'),
            (n.sign = function (i) {
              return i > 0 ? 1 : i < 0 ? -1 : 0
            }),
            (n.floor = function (i) {
              return i < 0 ? Math.ceil(i) : Math.floor(i)
            }),
            (n.ceil = function (i) {
              return i < 0 ? Math.floor(i) : Math.ceil(i)
            }),
            (t.exports = n)
        },
        function (t, e, r) {
          'use strict'
          function n() {}
          o(n, 'Integer'), (n.MAX_VALUE = 2147483647), (n.MIN_VALUE = -2147483648), (t.exports = n)
        },
        function (t, e, r) {
          'use strict'
          var n = (function () {
            function h(f, d) {
              for (var p = 0; p < d.length; p++) {
                var m = d[p]
                ;(m.enumerable = m.enumerable || !1), (m.configurable = !0), 'value' in m && (m.writable = !0), Object.defineProperty(f, m.key, m)
              }
            }
            return (
              o(h, 'defineProperties'),
              function (f, d, p) {
                return d && h(f.prototype, d), p && h(f, p), f
              }
            )
          })()
          function i(h, f) {
            if (!(h instanceof f)) throw new TypeError('Cannot call a class as a function')
          }
          o(i, '_classCallCheck')
          var a = o(function (f) {
              return { value: f, next: null, prev: null }
            }, 'nodeFrom'),
            s = o(function (f, d, p, m) {
              return f !== null ? (f.next = d) : (m.head = d), p !== null ? (p.prev = d) : (m.tail = d), (d.prev = f), (d.next = p), m.length++, d
            }, 'add'),
            l = o(function (f, d) {
              var p = f.prev,
                m = f.next
              return p !== null ? (p.next = m) : (d.head = m), m !== null ? (m.prev = p) : (d.tail = p), (f.prev = f.next = null), d.length--, f
            }, '_remove'),
            u = (function () {
              function h(f) {
                var d = this
                i(this, h),
                  (this.length = 0),
                  (this.head = null),
                  (this.tail = null),
                  f?.forEach(function (p) {
                    return d.push(p)
                  })
              }
              return (
                o(h, 'LinkedList'),
                n(h, [
                  {
                    key: 'size',
                    value: o(function () {
                      return this.length
                    }, 'size')
                  },
                  {
                    key: 'insertBefore',
                    value: o(function (d, p) {
                      return s(p.prev, a(d), p, this)
                    }, 'insertBefore')
                  },
                  {
                    key: 'insertAfter',
                    value: o(function (d, p) {
                      return s(p, a(d), p.next, this)
                    }, 'insertAfter')
                  },
                  {
                    key: 'insertNodeBefore',
                    value: o(function (d, p) {
                      return s(p.prev, d, p, this)
                    }, 'insertNodeBefore')
                  },
                  {
                    key: 'insertNodeAfter',
                    value: o(function (d, p) {
                      return s(p, d, p.next, this)
                    }, 'insertNodeAfter')
                  },
                  {
                    key: 'push',
                    value: o(function (d) {
                      return s(this.tail, a(d), null, this)
                    }, 'push')
                  },
                  {
                    key: 'unshift',
                    value: o(function (d) {
                      return s(null, a(d), this.head, this)
                    }, 'unshift')
                  },
                  {
                    key: 'remove',
                    value: o(function (d) {
                      return l(d, this)
                    }, 'remove')
                  },
                  {
                    key: 'pop',
                    value: o(function () {
                      return l(this.tail, this).value
                    }, 'pop')
                  },
                  {
                    key: 'popNode',
                    value: o(function () {
                      return l(this.tail, this)
                    }, 'popNode')
                  },
                  {
                    key: 'shift',
                    value: o(function () {
                      return l(this.head, this).value
                    }, 'shift')
                  },
                  {
                    key: 'shiftNode',
                    value: o(function () {
                      return l(this.head, this)
                    }, 'shiftNode')
                  },
                  {
                    key: 'get_object_at',
                    value: o(function (d) {
                      if (d <= this.length()) {
                        for (var p = 1, m = this.head; p < d; ) (m = m.next), p++
                        return m.value
                      }
                    }, 'get_object_at')
                  },
                  {
                    key: 'set_object_at',
                    value: o(function (d, p) {
                      if (d <= this.length()) {
                        for (var m = 1, g = this.head; m < d; ) (g = g.next), m++
                        g.value = p
                      }
                    }, 'set_object_at')
                  }
                ]),
                h
              )
            })()
          t.exports = u
        },
        function (t, e, r) {
          'use strict'
          function n(i, a, s) {
            ;(this.x = null),
              (this.y = null),
              i == null && a == null && s == null
                ? ((this.x = 0), (this.y = 0))
                : typeof i == 'number' && typeof a == 'number' && s == null
                  ? ((this.x = i), (this.y = a))
                  : i.constructor.name == 'Point' && a == null && s == null && ((s = i), (this.x = s.x), (this.y = s.y))
          }
          o(n, 'Point'),
            (n.prototype.getX = function () {
              return this.x
            }),
            (n.prototype.getY = function () {
              return this.y
            }),
            (n.prototype.getLocation = function () {
              return new n(this.x, this.y)
            }),
            (n.prototype.setLocation = function (i, a, s) {
              i.constructor.name == 'Point' && a == null && s == null
                ? ((s = i), this.setLocation(s.x, s.y))
                : typeof i == 'number' &&
                  typeof a == 'number' &&
                  s == null &&
                  (parseInt(i) == i && parseInt(a) == a ? this.move(i, a) : ((this.x = Math.floor(i + 0.5)), (this.y = Math.floor(a + 0.5))))
            }),
            (n.prototype.move = function (i, a) {
              ;(this.x = i), (this.y = a)
            }),
            (n.prototype.translate = function (i, a) {
              ;(this.x += i), (this.y += a)
            }),
            (n.prototype.equals = function (i) {
              if (i.constructor.name == 'Point') {
                var a = i
                return this.x == a.x && this.y == a.y
              }
              return this == i
            }),
            (n.prototype.toString = function () {
              return new n().constructor.name + '[x=' + this.x + ',y=' + this.y + ']'
            }),
            (t.exports = n)
        },
        function (t, e, r) {
          'use strict'
          function n(i, a, s, l) {
            ;(this.x = 0),
              (this.y = 0),
              (this.width = 0),
              (this.height = 0),
              i != null && a != null && s != null && l != null && ((this.x = i), (this.y = a), (this.width = s), (this.height = l))
          }
          o(n, 'RectangleD'),
            (n.prototype.getX = function () {
              return this.x
            }),
            (n.prototype.setX = function (i) {
              this.x = i
            }),
            (n.prototype.getY = function () {
              return this.y
            }),
            (n.prototype.setY = function (i) {
              this.y = i
            }),
            (n.prototype.getWidth = function () {
              return this.width
            }),
            (n.prototype.setWidth = function (i) {
              this.width = i
            }),
            (n.prototype.getHeight = function () {
              return this.height
            }),
            (n.prototype.setHeight = function (i) {
              this.height = i
            }),
            (n.prototype.getRight = function () {
              return this.x + this.width
            }),
            (n.prototype.getBottom = function () {
              return this.y + this.height
            }),
            (n.prototype.intersects = function (i) {
              return !(this.getRight() < i.x || this.getBottom() < i.y || i.getRight() < this.x || i.getBottom() < this.y)
            }),
            (n.prototype.getCenterX = function () {
              return this.x + this.width / 2
            }),
            (n.prototype.getMinX = function () {
              return this.getX()
            }),
            (n.prototype.getMaxX = function () {
              return this.getX() + this.width
            }),
            (n.prototype.getCenterY = function () {
              return this.y + this.height / 2
            }),
            (n.prototype.getMinY = function () {
              return this.getY()
            }),
            (n.prototype.getMaxY = function () {
              return this.getY() + this.height
            }),
            (n.prototype.getWidthHalf = function () {
              return this.width / 2
            }),
            (n.prototype.getHeightHalf = function () {
              return this.height / 2
            }),
            (t.exports = n)
        },
        function (t, e, r) {
          'use strict'
          var n =
            typeof Symbol == 'function' && typeof Symbol.iterator == 'symbol'
              ? function (a) {
                  return typeof a
                }
              : function (a) {
                  return a && typeof Symbol == 'function' && a.constructor === Symbol && a !== Symbol.prototype ? 'symbol' : typeof a
                }
          function i() {}
          o(i, 'UniqueIDGeneretor'),
            (i.lastID = 0),
            (i.createID = function (a) {
              return i.isPrimitive(a) ? a : (a.uniqueID != null || ((a.uniqueID = i.getString()), i.lastID++), a.uniqueID)
            }),
            (i.getString = function (a) {
              return a == null && (a = i.lastID), 'Object#' + a
            }),
            (i.isPrimitive = function (a) {
              var s = typeof a > 'u' ? 'undefined' : n(a)
              return a == null || (s != 'object' && s != 'function')
            }),
            (t.exports = i)
        },
        function (t, e, r) {
          'use strict'
          function n(m) {
            if (Array.isArray(m)) {
              for (var g = 0, y = Array(m.length); g < m.length; g++) y[g] = m[g]
              return y
            } else return Array.from(m)
          }
          o(n, '_toConsumableArray')
          var i = r(0),
            a = r(6),
            s = r(3),
            l = r(1),
            u = r(5),
            h = r(4),
            f = r(17),
            d = r(27)
          function p(m) {
            d.call(this),
              (this.layoutQuality = i.QUALITY),
              (this.createBendsAsNeeded = i.DEFAULT_CREATE_BENDS_AS_NEEDED),
              (this.incremental = i.DEFAULT_INCREMENTAL),
              (this.animationOnLayout = i.DEFAULT_ANIMATION_ON_LAYOUT),
              (this.animationDuringLayout = i.DEFAULT_ANIMATION_DURING_LAYOUT),
              (this.animationPeriod = i.DEFAULT_ANIMATION_PERIOD),
              (this.uniformLeafNodeSizes = i.DEFAULT_UNIFORM_LEAF_NODE_SIZES),
              (this.edgeToDummyNodes = new Map()),
              (this.graphManager = new a(this)),
              (this.isLayoutFinished = !1),
              (this.isSubLayout = !1),
              (this.isRemoteUse = !1),
              m != null && (this.isRemoteUse = m)
          }
          o(p, 'Layout'),
            (p.RANDOM_SEED = 1),
            (p.prototype = Object.create(d.prototype)),
            (p.prototype.getGraphManager = function () {
              return this.graphManager
            }),
            (p.prototype.getAllNodes = function () {
              return this.graphManager.getAllNodes()
            }),
            (p.prototype.getAllEdges = function () {
              return this.graphManager.getAllEdges()
            }),
            (p.prototype.getAllNodesToApplyGravitation = function () {
              return this.graphManager.getAllNodesToApplyGravitation()
            }),
            (p.prototype.newGraphManager = function () {
              var m = new a(this)
              return (this.graphManager = m), m
            }),
            (p.prototype.newGraph = function (m) {
              return new u(null, this.graphManager, m)
            }),
            (p.prototype.newNode = function (m) {
              return new s(this.graphManager, m)
            }),
            (p.prototype.newEdge = function (m) {
              return new l(null, null, m)
            }),
            (p.prototype.checkLayoutSuccess = function () {
              return this.graphManager.getRoot() == null || this.graphManager.getRoot().getNodes().length == 0 || this.graphManager.includesInvalidEdge()
            }),
            (p.prototype.runLayout = function () {
              ;(this.isLayoutFinished = !1), this.tilingPreLayout && this.tilingPreLayout(), this.initParameters()
              var m
              return (
                this.checkLayoutSuccess() ? (m = !1) : (m = this.layout()),
                i.ANIMATE === 'during' ? !1 : (m && (this.isSubLayout || this.doPostLayout()), this.tilingPostLayout && this.tilingPostLayout(), (this.isLayoutFinished = !0), m)
              )
            }),
            (p.prototype.doPostLayout = function () {
              this.incremental || this.transform(), this.update()
            }),
            (p.prototype.update2 = function () {
              if ((this.createBendsAsNeeded && (this.createBendpointsFromDummyNodes(), this.graphManager.resetAllEdges()), !this.isRemoteUse)) {
                for (var m, g = this.graphManager.getAllEdges(), y = 0; y < g.length; y++) m = g[y]
                for (var v, x = this.graphManager.getRoot().getNodes(), y = 0; y < x.length; y++) v = x[y]
                this.update(this.graphManager.getRoot())
              }
            }),
            (p.prototype.update = function (m) {
              if (m == null) this.update2()
              else if (m instanceof s) {
                var g = m
                if (g.getChild() != null) for (var y = g.getChild().getNodes(), v = 0; v < y.length; v++) update(y[v])
                if (g.vGraphObject != null) {
                  var x = g.vGraphObject
                  x.update(g)
                }
              } else if (m instanceof l) {
                var b = m
                if (b.vGraphObject != null) {
                  var T = b.vGraphObject
                  T.update(b)
                }
              } else if (m instanceof u) {
                var S = m
                if (S.vGraphObject != null) {
                  var w = S.vGraphObject
                  w.update(S)
                }
              }
            }),
            (p.prototype.initParameters = function () {
              this.isSubLayout ||
                ((this.layoutQuality = i.QUALITY),
                (this.animationDuringLayout = i.DEFAULT_ANIMATION_DURING_LAYOUT),
                (this.animationPeriod = i.DEFAULT_ANIMATION_PERIOD),
                (this.animationOnLayout = i.DEFAULT_ANIMATION_ON_LAYOUT),
                (this.incremental = i.DEFAULT_INCREMENTAL),
                (this.createBendsAsNeeded = i.DEFAULT_CREATE_BENDS_AS_NEEDED),
                (this.uniformLeafNodeSizes = i.DEFAULT_UNIFORM_LEAF_NODE_SIZES)),
                this.animationDuringLayout && (this.animationOnLayout = !1)
            }),
            (p.prototype.transform = function (m) {
              if (m == null) this.transform(new h(0, 0))
              else {
                var g = new f(),
                  y = this.graphManager.getRoot().updateLeftTop()
                if (y != null) {
                  g.setWorldOrgX(m.x), g.setWorldOrgY(m.y), g.setDeviceOrgX(y.x), g.setDeviceOrgY(y.y)
                  for (var v = this.getAllNodes(), x, b = 0; b < v.length; b++) (x = v[b]), x.transform(g)
                }
              }
            }),
            (p.prototype.positionNodesRandomly = function (m) {
              if (m == null) this.positionNodesRandomly(this.getGraphManager().getRoot()), this.getGraphManager().getRoot().updateBounds(!0)
              else
                for (var g, y, v = m.getNodes(), x = 0; x < v.length; x++)
                  (g = v[x]), (y = g.getChild()), y == null || y.getNodes().length == 0 ? g.scatter() : (this.positionNodesRandomly(y), g.updateBounds())
            }),
            (p.prototype.getFlatForest = function () {
              for (var m = [], g = !0, y = this.graphManager.getRoot().getNodes(), v = !0, x = 0; x < y.length; x++) y[x].getChild() != null && (v = !1)
              if (!v) return m
              var b = new Set(),
                T = [],
                S = new Map(),
                w = []
              for (w = w.concat(y); w.length > 0 && g; ) {
                for (T.push(w[0]); T.length > 0 && g; ) {
                  var E = T[0]
                  T.splice(0, 1), b.add(E)
                  for (var _ = E.getEdges(), x = 0; x < _.length; x++) {
                    var C = _[x].getOtherEnd(E)
                    if (S.get(E) != C)
                      if (!b.has(C)) T.push(C), S.set(C, E)
                      else {
                        g = !1
                        break
                      }
                  }
                }
                if (!g) m = []
                else {
                  var D = [].concat(n(b))
                  m.push(D)
                  for (var x = 0; x < D.length; x++) {
                    var O = D[x],
                      R = w.indexOf(O)
                    R > -1 && w.splice(R, 1)
                  }
                  ;(b = new Set()), (S = new Map())
                }
              }
              return m
            }),
            (p.prototype.createDummyNodesForBendpoints = function (m) {
              for (var g = [], y = m.source, v = this.graphManager.calcLowestCommonAncestor(m.source, m.target), x = 0; x < m.bendpoints.length; x++) {
                var b = this.newNode(null)
                b.setRect(new Point(0, 0), new Dimension(1, 1)), v.add(b)
                var T = this.newEdge(null)
                this.graphManager.add(T, y, b), g.add(b), (y = b)
              }
              var T = this.newEdge(null)
              return this.graphManager.add(T, y, m.target), this.edgeToDummyNodes.set(m, g), m.isInterGraph() ? this.graphManager.remove(m) : v.remove(m), g
            }),
            (p.prototype.createBendpointsFromDummyNodes = function () {
              var m = []
              ;(m = m.concat(this.graphManager.getAllEdges())), (m = [].concat(n(this.edgeToDummyNodes.keys())).concat(m))
              for (var g = 0; g < m.length; g++) {
                var y = m[g]
                if (y.bendpoints.length > 0) {
                  for (var v = this.edgeToDummyNodes.get(y), x = 0; x < v.length; x++) {
                    var b = v[x],
                      T = new h(b.getCenterX(), b.getCenterY()),
                      S = y.bendpoints.get(x)
                    ;(S.x = T.x), (S.y = T.y), b.getOwner().remove(b)
                  }
                  this.graphManager.add(y, y.source, y.target)
                }
              }
            }),
            (p.transform = function (m, g, y, v) {
              if (y != null && v != null) {
                var x = g
                if (m <= 50) {
                  var b = g / y
                  x -= ((g - b) / 50) * (50 - m)
                } else {
                  var T = g * v
                  x += ((T - g) / 50) * (m - 50)
                }
                return x
              } else {
                var S, w
                return m <= 50 ? ((S = (9 * g) / 500), (w = g / 10)) : ((S = (9 * g) / 50), (w = -8 * g)), S * m + w
              }
            }),
            (p.findCenterOfTree = function (m) {
              var g = []
              g = g.concat(m)
              var y = [],
                v = new Map(),
                x = !1,
                b = null
              ;(g.length == 1 || g.length == 2) && ((x = !0), (b = g[0]))
              for (var T = 0; T < g.length; T++) {
                var S = g[T],
                  w = S.getNeighborsList().size
                v.set(S, S.getNeighborsList().size), w == 1 && y.push(S)
              }
              var E = []
              for (E = E.concat(y); !x; ) {
                var _ = []
                ;(_ = _.concat(E)), (E = [])
                for (var T = 0; T < g.length; T++) {
                  var S = g[T],
                    C = g.indexOf(S)
                  C >= 0 && g.splice(C, 1)
                  var D = S.getNeighborsList()
                  D.forEach(function (k) {
                    if (y.indexOf(k) < 0) {
                      var L = v.get(k),
                        A = L - 1
                      A == 1 && E.push(k), v.set(k, A)
                    }
                  })
                }
                ;(y = y.concat(E)), (g.length == 1 || g.length == 2) && ((x = !0), (b = g[0]))
              }
              return b
            }),
            (p.prototype.setGraphManager = function (m) {
              this.graphManager = m
            }),
            (t.exports = p)
        },
        function (t, e, r) {
          'use strict'
          function n() {}
          o(n, 'RandomSeed'),
            (n.seed = 1),
            (n.x = 0),
            (n.nextDouble = function () {
              return (n.x = Math.sin(n.seed++) * 1e4), n.x - Math.floor(n.x)
            }),
            (t.exports = n)
        },
        function (t, e, r) {
          'use strict'
          var n = r(4)
          function i(a, s) {
            ;(this.lworldOrgX = 0),
              (this.lworldOrgY = 0),
              (this.ldeviceOrgX = 0),
              (this.ldeviceOrgY = 0),
              (this.lworldExtX = 1),
              (this.lworldExtY = 1),
              (this.ldeviceExtX = 1),
              (this.ldeviceExtY = 1)
          }
          o(i, 'Transform'),
            (i.prototype.getWorldOrgX = function () {
              return this.lworldOrgX
            }),
            (i.prototype.setWorldOrgX = function (a) {
              this.lworldOrgX = a
            }),
            (i.prototype.getWorldOrgY = function () {
              return this.lworldOrgY
            }),
            (i.prototype.setWorldOrgY = function (a) {
              this.lworldOrgY = a
            }),
            (i.prototype.getWorldExtX = function () {
              return this.lworldExtX
            }),
            (i.prototype.setWorldExtX = function (a) {
              this.lworldExtX = a
            }),
            (i.prototype.getWorldExtY = function () {
              return this.lworldExtY
            }),
            (i.prototype.setWorldExtY = function (a) {
              this.lworldExtY = a
            }),
            (i.prototype.getDeviceOrgX = function () {
              return this.ldeviceOrgX
            }),
            (i.prototype.setDeviceOrgX = function (a) {
              this.ldeviceOrgX = a
            }),
            (i.prototype.getDeviceOrgY = function () {
              return this.ldeviceOrgY
            }),
            (i.prototype.setDeviceOrgY = function (a) {
              this.ldeviceOrgY = a
            }),
            (i.prototype.getDeviceExtX = function () {
              return this.ldeviceExtX
            }),
            (i.prototype.setDeviceExtX = function (a) {
              this.ldeviceExtX = a
            }),
            (i.prototype.getDeviceExtY = function () {
              return this.ldeviceExtY
            }),
            (i.prototype.setDeviceExtY = function (a) {
              this.ldeviceExtY = a
            }),
            (i.prototype.transformX = function (a) {
              var s = 0,
                l = this.lworldExtX
              return l != 0 && (s = this.ldeviceOrgX + ((a - this.lworldOrgX) * this.ldeviceExtX) / l), s
            }),
            (i.prototype.transformY = function (a) {
              var s = 0,
                l = this.lworldExtY
              return l != 0 && (s = this.ldeviceOrgY + ((a - this.lworldOrgY) * this.ldeviceExtY) / l), s
            }),
            (i.prototype.inverseTransformX = function (a) {
              var s = 0,
                l = this.ldeviceExtX
              return l != 0 && (s = this.lworldOrgX + ((a - this.ldeviceOrgX) * this.lworldExtX) / l), s
            }),
            (i.prototype.inverseTransformY = function (a) {
              var s = 0,
                l = this.ldeviceExtY
              return l != 0 && (s = this.lworldOrgY + ((a - this.ldeviceOrgY) * this.lworldExtY) / l), s
            }),
            (i.prototype.inverseTransformPoint = function (a) {
              var s = new n(this.inverseTransformX(a.x), this.inverseTransformY(a.y))
              return s
            }),
            (t.exports = i)
        },
        function (t, e, r) {
          'use strict'
          function n(d) {
            if (Array.isArray(d)) {
              for (var p = 0, m = Array(d.length); p < d.length; p++) m[p] = d[p]
              return m
            } else return Array.from(d)
          }
          o(n, '_toConsumableArray')
          var i = r(15),
            a = r(7),
            s = r(0),
            l = r(8),
            u = r(9)
          function h() {
            i.call(this),
              (this.useSmartIdealEdgeLengthCalculation = a.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION),
              (this.idealEdgeLength = a.DEFAULT_EDGE_LENGTH),
              (this.springConstant = a.DEFAULT_SPRING_STRENGTH),
              (this.repulsionConstant = a.DEFAULT_REPULSION_STRENGTH),
              (this.gravityConstant = a.DEFAULT_GRAVITY_STRENGTH),
              (this.compoundGravityConstant = a.DEFAULT_COMPOUND_GRAVITY_STRENGTH),
              (this.gravityRangeFactor = a.DEFAULT_GRAVITY_RANGE_FACTOR),
              (this.compoundGravityRangeFactor = a.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR),
              (this.displacementThresholdPerNode = (3 * a.DEFAULT_EDGE_LENGTH) / 100),
              (this.coolingFactor = a.DEFAULT_COOLING_FACTOR_INCREMENTAL),
              (this.initialCoolingFactor = a.DEFAULT_COOLING_FACTOR_INCREMENTAL),
              (this.totalDisplacement = 0),
              (this.oldTotalDisplacement = 0),
              (this.maxIterations = a.MAX_ITERATIONS)
          }
          o(h, 'FDLayout'), (h.prototype = Object.create(i.prototype))
          for (var f in i) h[f] = i[f]
          ;(h.prototype.initParameters = function () {
            i.prototype.initParameters.call(this, arguments),
              (this.totalIterations = 0),
              (this.notAnimatedIterations = 0),
              (this.useFRGridVariant = a.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION),
              (this.grid = [])
          }),
            (h.prototype.calcIdealEdgeLengths = function () {
              for (var d, p, m, g, y, v, x = this.getGraphManager().getAllEdges(), b = 0; b < x.length; b++)
                (d = x[b]),
                  (d.idealLength = this.idealEdgeLength),
                  d.isInterGraph &&
                    ((m = d.getSource()),
                    (g = d.getTarget()),
                    (y = d.getSourceInLca().getEstimatedSize()),
                    (v = d.getTargetInLca().getEstimatedSize()),
                    this.useSmartIdealEdgeLengthCalculation && (d.idealLength += y + v - 2 * s.SIMPLE_NODE_SIZE),
                    (p = d.getLca().getInclusionTreeDepth()),
                    (d.idealLength += a.DEFAULT_EDGE_LENGTH * a.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR * (m.getInclusionTreeDepth() + g.getInclusionTreeDepth() - 2 * p)))
            }),
            (h.prototype.initSpringEmbedder = function () {
              var d = this.getAllNodes().length
              this.incremental
                ? (d > a.ADAPTATION_LOWER_NODE_LIMIT &&
                    (this.coolingFactor = Math.max(
                      this.coolingFactor * a.COOLING_ADAPTATION_FACTOR,
                      this.coolingFactor -
                        ((d - a.ADAPTATION_LOWER_NODE_LIMIT) / (a.ADAPTATION_UPPER_NODE_LIMIT - a.ADAPTATION_LOWER_NODE_LIMIT)) *
                          this.coolingFactor *
                          (1 - a.COOLING_ADAPTATION_FACTOR)
                    )),
                  (this.maxNodeDisplacement = a.MAX_NODE_DISPLACEMENT_INCREMENTAL))
                : (d > a.ADAPTATION_LOWER_NODE_LIMIT
                    ? (this.coolingFactor = Math.max(
                        a.COOLING_ADAPTATION_FACTOR,
                        1 - ((d - a.ADAPTATION_LOWER_NODE_LIMIT) / (a.ADAPTATION_UPPER_NODE_LIMIT - a.ADAPTATION_LOWER_NODE_LIMIT)) * (1 - a.COOLING_ADAPTATION_FACTOR)
                      ))
                    : (this.coolingFactor = 1),
                  (this.initialCoolingFactor = this.coolingFactor),
                  (this.maxNodeDisplacement = a.MAX_NODE_DISPLACEMENT)),
                (this.maxIterations = Math.max(this.getAllNodes().length * 5, this.maxIterations)),
                (this.totalDisplacementThreshold = this.displacementThresholdPerNode * this.getAllNodes().length),
                (this.repulsionRange = this.calcRepulsionRange())
            }),
            (h.prototype.calcSpringForces = function () {
              for (var d = this.getAllEdges(), p, m = 0; m < d.length; m++) (p = d[m]), this.calcSpringForce(p, p.idealLength)
            }),
            (h.prototype.calcRepulsionForces = function () {
              var d = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : !0,
                p = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !1,
                m,
                g,
                y,
                v,
                x = this.getAllNodes(),
                b
              if (this.useFRGridVariant)
                for (this.totalIterations % a.GRID_CALCULATION_CHECK_PERIOD == 1 && d && this.updateGrid(), b = new Set(), m = 0; m < x.length; m++)
                  (y = x[m]), this.calculateRepulsionForceOfANode(y, b, d, p), b.add(y)
              else for (m = 0; m < x.length; m++) for (y = x[m], g = m + 1; g < x.length; g++) (v = x[g]), y.getOwner() == v.getOwner() && this.calcRepulsionForce(y, v)
            }),
            (h.prototype.calcGravitationalForces = function () {
              for (var d, p = this.getAllNodesToApplyGravitation(), m = 0; m < p.length; m++) (d = p[m]), this.calcGravitationalForce(d)
            }),
            (h.prototype.moveNodes = function () {
              for (var d = this.getAllNodes(), p, m = 0; m < d.length; m++) (p = d[m]), p.move()
            }),
            (h.prototype.calcSpringForce = function (d, p) {
              var m = d.getSource(),
                g = d.getTarget(),
                y,
                v,
                x,
                b
              if (this.uniformLeafNodeSizes && m.getChild() == null && g.getChild() == null) d.updateLengthSimple()
              else if ((d.updateLength(), d.isOverlapingSourceAndTarget)) return
              ;(y = d.getLength()),
                y != 0 &&
                  ((v = this.springConstant * (y - p)),
                  (x = v * (d.lengthX / y)),
                  (b = v * (d.lengthY / y)),
                  (m.springForceX += x),
                  (m.springForceY += b),
                  (g.springForceX -= x),
                  (g.springForceY -= b))
            }),
            (h.prototype.calcRepulsionForce = function (d, p) {
              var m = d.getRect(),
                g = p.getRect(),
                y = new Array(2),
                v = new Array(4),
                x,
                b,
                T,
                S,
                w,
                E,
                _
              if (m.intersects(g)) {
                l.calcSeparationAmount(m, g, y, a.DEFAULT_EDGE_LENGTH / 2), (E = 2 * y[0]), (_ = 2 * y[1])
                var C = (d.noOfChildren * p.noOfChildren) / (d.noOfChildren + p.noOfChildren)
                ;(d.repulsionForceX -= C * E), (d.repulsionForceY -= C * _), (p.repulsionForceX += C * E), (p.repulsionForceY += C * _)
              } else
                this.uniformLeafNodeSizes && d.getChild() == null && p.getChild() == null
                  ? ((x = g.getCenterX() - m.getCenterX()), (b = g.getCenterY() - m.getCenterY()))
                  : (l.getIntersection(m, g, v), (x = v[2] - v[0]), (b = v[3] - v[1])),
                  Math.abs(x) < a.MIN_REPULSION_DIST && (x = u.sign(x) * a.MIN_REPULSION_DIST),
                  Math.abs(b) < a.MIN_REPULSION_DIST && (b = u.sign(b) * a.MIN_REPULSION_DIST),
                  (T = x * x + b * b),
                  (S = Math.sqrt(T)),
                  (w = (this.repulsionConstant * d.noOfChildren * p.noOfChildren) / T),
                  (E = (w * x) / S),
                  (_ = (w * b) / S),
                  (d.repulsionForceX -= E),
                  (d.repulsionForceY -= _),
                  (p.repulsionForceX += E),
                  (p.repulsionForceY += _)
            }),
            (h.prototype.calcGravitationalForce = function (d) {
              var p, m, g, y, v, x, b, T
              ;(p = d.getOwner()),
                (m = (p.getRight() + p.getLeft()) / 2),
                (g = (p.getTop() + p.getBottom()) / 2),
                (y = d.getCenterX() - m),
                (v = d.getCenterY() - g),
                (x = Math.abs(y) + d.getWidth() / 2),
                (b = Math.abs(v) + d.getHeight() / 2),
                d.getOwner() == this.graphManager.getRoot()
                  ? ((T = p.getEstimatedSize() * this.gravityRangeFactor),
                    (x > T || b > T) && ((d.gravitationForceX = -this.gravityConstant * y), (d.gravitationForceY = -this.gravityConstant * v)))
                  : ((T = p.getEstimatedSize() * this.compoundGravityRangeFactor),
                    (x > T || b > T) &&
                      ((d.gravitationForceX = -this.gravityConstant * y * this.compoundGravityConstant),
                      (d.gravitationForceY = -this.gravityConstant * v * this.compoundGravityConstant)))
            }),
            (h.prototype.isConverged = function () {
              var d,
                p = !1
              return (
                this.totalIterations > this.maxIterations / 3 && (p = Math.abs(this.totalDisplacement - this.oldTotalDisplacement) < 2),
                (d = this.totalDisplacement < this.totalDisplacementThreshold),
                (this.oldTotalDisplacement = this.totalDisplacement),
                d || p
              )
            }),
            (h.prototype.animate = function () {
              this.animationDuringLayout &&
                !this.isSubLayout &&
                (this.notAnimatedIterations == this.animationPeriod ? (this.update(), (this.notAnimatedIterations = 0)) : this.notAnimatedIterations++)
            }),
            (h.prototype.calcNoOfChildrenForAllNodes = function () {
              for (var d, p = this.graphManager.getAllNodes(), m = 0; m < p.length; m++) (d = p[m]), (d.noOfChildren = d.getNoOfChildren())
            }),
            (h.prototype.calcGrid = function (d) {
              var p = 0,
                m = 0
              ;(p = parseInt(Math.ceil((d.getRight() - d.getLeft()) / this.repulsionRange))), (m = parseInt(Math.ceil((d.getBottom() - d.getTop()) / this.repulsionRange)))
              for (var g = new Array(p), y = 0; y < p; y++) g[y] = new Array(m)
              for (var y = 0; y < p; y++) for (var v = 0; v < m; v++) g[y][v] = new Array()
              return g
            }),
            (h.prototype.addNodeToGrid = function (d, p, m) {
              var g = 0,
                y = 0,
                v = 0,
                x = 0
              ;(g = parseInt(Math.floor((d.getRect().x - p) / this.repulsionRange))),
                (y = parseInt(Math.floor((d.getRect().width + d.getRect().x - p) / this.repulsionRange))),
                (v = parseInt(Math.floor((d.getRect().y - m) / this.repulsionRange))),
                (x = parseInt(Math.floor((d.getRect().height + d.getRect().y - m) / this.repulsionRange)))
              for (var b = g; b <= y; b++) for (var T = v; T <= x; T++) this.grid[b][T].push(d), d.setGridCoordinates(g, y, v, x)
            }),
            (h.prototype.updateGrid = function () {
              var d,
                p,
                m = this.getAllNodes()
              for (this.grid = this.calcGrid(this.graphManager.getRoot()), d = 0; d < m.length; d++)
                (p = m[d]), this.addNodeToGrid(p, this.graphManager.getRoot().getLeft(), this.graphManager.getRoot().getTop())
            }),
            (h.prototype.calculateRepulsionForceOfANode = function (d, p, m, g) {
              if ((this.totalIterations % a.GRID_CALCULATION_CHECK_PERIOD == 1 && m) || g) {
                var y = new Set()
                d.surrounding = new Array()
                for (var v, x = this.grid, b = d.startX - 1; b < d.finishX + 2; b++)
                  for (var T = d.startY - 1; T < d.finishY + 2; T++)
                    if (!(b < 0 || T < 0 || b >= x.length || T >= x[0].length)) {
                      for (var S = 0; S < x[b][T].length; S++)
                        if (((v = x[b][T][S]), !(d.getOwner() != v.getOwner() || d == v) && !p.has(v) && !y.has(v))) {
                          var w = Math.abs(d.getCenterX() - v.getCenterX()) - (d.getWidth() / 2 + v.getWidth() / 2),
                            E = Math.abs(d.getCenterY() - v.getCenterY()) - (d.getHeight() / 2 + v.getHeight() / 2)
                          w <= this.repulsionRange && E <= this.repulsionRange && y.add(v)
                        }
                    }
                d.surrounding = [].concat(n(y))
              }
              for (b = 0; b < d.surrounding.length; b++) this.calcRepulsionForce(d, d.surrounding[b])
            }),
            (h.prototype.calcRepulsionRange = function () {
              return 0
            }),
            (t.exports = h)
        },
        function (t, e, r) {
          'use strict'
          var n = r(1),
            i = r(7)
          function a(l, u, h) {
            n.call(this, l, u, h), (this.idealLength = i.DEFAULT_EDGE_LENGTH)
          }
          o(a, 'FDLayoutEdge'), (a.prototype = Object.create(n.prototype))
          for (var s in n) a[s] = n[s]
          t.exports = a
        },
        function (t, e, r) {
          'use strict'
          var n = r(3)
          function i(s, l, u, h) {
            n.call(this, s, l, u, h),
              (this.springForceX = 0),
              (this.springForceY = 0),
              (this.repulsionForceX = 0),
              (this.repulsionForceY = 0),
              (this.gravitationForceX = 0),
              (this.gravitationForceY = 0),
              (this.displacementX = 0),
              (this.displacementY = 0),
              (this.startX = 0),
              (this.finishX = 0),
              (this.startY = 0),
              (this.finishY = 0),
              (this.surrounding = [])
          }
          o(i, 'FDLayoutNode'), (i.prototype = Object.create(n.prototype))
          for (var a in n) i[a] = n[a]
          ;(i.prototype.setGridCoordinates = function (s, l, u, h) {
            ;(this.startX = s), (this.finishX = l), (this.startY = u), (this.finishY = h)
          }),
            (t.exports = i)
        },
        function (t, e, r) {
          'use strict'
          function n(i, a) {
            ;(this.width = 0), (this.height = 0), i !== null && a !== null && ((this.height = a), (this.width = i))
          }
          o(n, 'DimensionD'),
            (n.prototype.getWidth = function () {
              return this.width
            }),
            (n.prototype.setWidth = function (i) {
              this.width = i
            }),
            (n.prototype.getHeight = function () {
              return this.height
            }),
            (n.prototype.setHeight = function (i) {
              this.height = i
            }),
            (t.exports = n)
        },
        function (t, e, r) {
          'use strict'
          var n = r(14)
          function i() {
            ;(this.map = {}), (this.keys = [])
          }
          o(i, 'HashMap'),
            (i.prototype.put = function (a, s) {
              var l = n.createID(a)
              this.contains(l) || ((this.map[l] = s), this.keys.push(a))
            }),
            (i.prototype.contains = function (a) {
              var s = n.createID(a)
              return this.map[a] != null
            }),
            (i.prototype.get = function (a) {
              var s = n.createID(a)
              return this.map[s]
            }),
            (i.prototype.keySet = function () {
              return this.keys
            }),
            (t.exports = i)
        },
        function (t, e, r) {
          'use strict'
          var n = r(14)
          function i() {
            this.set = {}
          }
          o(i, 'HashSet'),
            (i.prototype.add = function (a) {
              var s = n.createID(a)
              this.contains(s) || (this.set[s] = a)
            }),
            (i.prototype.remove = function (a) {
              delete this.set[n.createID(a)]
            }),
            (i.prototype.clear = function () {
              this.set = {}
            }),
            (i.prototype.contains = function (a) {
              return this.set[n.createID(a)] == a
            }),
            (i.prototype.isEmpty = function () {
              return this.size() === 0
            }),
            (i.prototype.size = function () {
              return Object.keys(this.set).length
            }),
            (i.prototype.addAllTo = function (a) {
              for (var s = Object.keys(this.set), l = s.length, u = 0; u < l; u++) a.push(this.set[s[u]])
            }),
            (i.prototype.size = function () {
              return Object.keys(this.set).length
            }),
            (i.prototype.addAll = function (a) {
              for (var s = a.length, l = 0; l < s; l++) {
                var u = a[l]
                this.add(u)
              }
            }),
            (t.exports = i)
        },
        function (t, e, r) {
          'use strict'
          var n = (function () {
            function l(u, h) {
              for (var f = 0; f < h.length; f++) {
                var d = h[f]
                ;(d.enumerable = d.enumerable || !1), (d.configurable = !0), 'value' in d && (d.writable = !0), Object.defineProperty(u, d.key, d)
              }
            }
            return (
              o(l, 'defineProperties'),
              function (u, h, f) {
                return h && l(u.prototype, h), f && l(u, f), u
              }
            )
          })()
          function i(l, u) {
            if (!(l instanceof u)) throw new TypeError('Cannot call a class as a function')
          }
          o(i, '_classCallCheck')
          var a = r(11),
            s = (function () {
              function l(u, h) {
                i(this, l), (h !== null || h !== void 0) && (this.compareFunction = this._defaultCompareFunction)
                var f = void 0
                u instanceof a ? (f = u.size()) : (f = u.length), this._quicksort(u, 0, f - 1)
              }
              return (
                o(l, 'Quicksort'),
                n(l, [
                  {
                    key: '_quicksort',
                    value: o(function (h, f, d) {
                      if (f < d) {
                        var p = this._partition(h, f, d)
                        this._quicksort(h, f, p), this._quicksort(h, p + 1, d)
                      }
                    }, '_quicksort')
                  },
                  {
                    key: '_partition',
                    value: o(function (h, f, d) {
                      for (var p = this._get(h, f), m = f, g = d; ; ) {
                        for (; this.compareFunction(p, this._get(h, g)); ) g--
                        for (; this.compareFunction(this._get(h, m), p); ) m++
                        if (m < g) this._swap(h, m, g), m++, g--
                        else return g
                      }
                    }, '_partition')
                  },
                  {
                    key: '_get',
                    value: o(function (h, f) {
                      return h instanceof a ? h.get_object_at(f) : h[f]
                    }, '_get')
                  },
                  {
                    key: '_set',
                    value: o(function (h, f, d) {
                      h instanceof a ? h.set_object_at(f, d) : (h[f] = d)
                    }, '_set')
                  },
                  {
                    key: '_swap',
                    value: o(function (h, f, d) {
                      var p = this._get(h, f)
                      this._set(h, f, this._get(h, d)), this._set(h, d, p)
                    }, '_swap')
                  },
                  {
                    key: '_defaultCompareFunction',
                    value: o(function (h, f) {
                      return f > h
                    }, '_defaultCompareFunction')
                  }
                ]),
                l
              )
            })()
          t.exports = s
        },
        function (t, e, r) {
          'use strict'
          var n = (function () {
            function s(l, u) {
              for (var h = 0; h < u.length; h++) {
                var f = u[h]
                ;(f.enumerable = f.enumerable || !1), (f.configurable = !0), 'value' in f && (f.writable = !0), Object.defineProperty(l, f.key, f)
              }
            }
            return (
              o(s, 'defineProperties'),
              function (l, u, h) {
                return u && s(l.prototype, u), h && s(l, h), l
              }
            )
          })()
          function i(s, l) {
            if (!(s instanceof l)) throw new TypeError('Cannot call a class as a function')
          }
          o(i, '_classCallCheck')
          var a = (function () {
            function s(l, u) {
              var h = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 1,
                f = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : -1,
                d = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : -1
              i(this, s),
                (this.sequence1 = l),
                (this.sequence2 = u),
                (this.match_score = h),
                (this.mismatch_penalty = f),
                (this.gap_penalty = d),
                (this.iMax = l.length + 1),
                (this.jMax = u.length + 1),
                (this.grid = new Array(this.iMax))
              for (var p = 0; p < this.iMax; p++) {
                this.grid[p] = new Array(this.jMax)
                for (var m = 0; m < this.jMax; m++) this.grid[p][m] = 0
              }
              this.tracebackGrid = new Array(this.iMax)
              for (var g = 0; g < this.iMax; g++) {
                this.tracebackGrid[g] = new Array(this.jMax)
                for (var y = 0; y < this.jMax; y++) this.tracebackGrid[g][y] = [null, null, null]
              }
              ;(this.alignments = []), (this.score = -1), this.computeGrids()
            }
            return (
              o(s, 'NeedlemanWunsch'),
              n(s, [
                {
                  key: 'getScore',
                  value: o(function () {
                    return this.score
                  }, 'getScore')
                },
                {
                  key: 'getAlignments',
                  value: o(function () {
                    return this.alignments
                  }, 'getAlignments')
                },
                {
                  key: 'computeGrids',
                  value: o(function () {
                    for (var u = 1; u < this.jMax; u++) (this.grid[0][u] = this.grid[0][u - 1] + this.gap_penalty), (this.tracebackGrid[0][u] = [!1, !1, !0])
                    for (var h = 1; h < this.iMax; h++) (this.grid[h][0] = this.grid[h - 1][0] + this.gap_penalty), (this.tracebackGrid[h][0] = [!1, !0, !1])
                    for (var f = 1; f < this.iMax; f++)
                      for (var d = 1; d < this.jMax; d++) {
                        var p = void 0
                        this.sequence1[f - 1] === this.sequence2[d - 1] ? (p = this.grid[f - 1][d - 1] + this.match_score) : (p = this.grid[f - 1][d - 1] + this.mismatch_penalty)
                        var m = this.grid[f - 1][d] + this.gap_penalty,
                          g = this.grid[f][d - 1] + this.gap_penalty,
                          y = [p, m, g],
                          v = this.arrayAllMaxIndexes(y)
                        ;(this.grid[f][d] = y[v[0]]), (this.tracebackGrid[f][d] = [v.includes(0), v.includes(1), v.includes(2)])
                      }
                    this.score = this.grid[this.iMax - 1][this.jMax - 1]
                  }, 'computeGrids')
                },
                {
                  key: 'alignmentTraceback',
                  value: o(function () {
                    var u = []
                    for (u.push({ pos: [this.sequence1.length, this.sequence2.length], seq1: '', seq2: '' }); u[0]; ) {
                      var h = u[0],
                        f = this.tracebackGrid[h.pos[0]][h.pos[1]]
                      f[0] && u.push({ pos: [h.pos[0] - 1, h.pos[1] - 1], seq1: this.sequence1[h.pos[0] - 1] + h.seq1, seq2: this.sequence2[h.pos[1] - 1] + h.seq2 }),
                        f[1] && u.push({ pos: [h.pos[0] - 1, h.pos[1]], seq1: this.sequence1[h.pos[0] - 1] + h.seq1, seq2: '-' + h.seq2 }),
                        f[2] && u.push({ pos: [h.pos[0], h.pos[1] - 1], seq1: '-' + h.seq1, seq2: this.sequence2[h.pos[1] - 1] + h.seq2 }),
                        h.pos[0] === 0 && h.pos[1] === 0 && this.alignments.push({ sequence1: h.seq1, sequence2: h.seq2 }),
                        u.shift()
                    }
                    return this.alignments
                  }, 'alignmentTraceback')
                },
                {
                  key: 'getAllIndexes',
                  value: o(function (u, h) {
                    for (var f = [], d = -1; (d = u.indexOf(h, d + 1)) !== -1; ) f.push(d)
                    return f
                  }, 'getAllIndexes')
                },
                {
                  key: 'arrayAllMaxIndexes',
                  value: o(function (u) {
                    return this.getAllIndexes(u, Math.max.apply(null, u))
                  }, 'arrayAllMaxIndexes')
                }
              ]),
              s
            )
          })()
          t.exports = a
        },
        function (t, e, r) {
          'use strict'
          var n = o(function () {}, 'layoutBase')
          ;(n.FDLayout = r(18)),
            (n.FDLayoutConstants = r(7)),
            (n.FDLayoutEdge = r(19)),
            (n.FDLayoutNode = r(20)),
            (n.DimensionD = r(21)),
            (n.HashMap = r(22)),
            (n.HashSet = r(23)),
            (n.IGeometry = r(8)),
            (n.IMath = r(9)),
            (n.Integer = r(10)),
            (n.Point = r(12)),
            (n.PointD = r(4)),
            (n.RandomSeed = r(16)),
            (n.RectangleD = r(13)),
            (n.Transform = r(17)),
            (n.UniqueIDGeneretor = r(14)),
            (n.Quicksort = r(24)),
            (n.LinkedList = r(11)),
            (n.LGraphObject = r(2)),
            (n.LGraph = r(5)),
            (n.LEdge = r(1)),
            (n.LGraphManager = r(6)),
            (n.LNode = r(3)),
            (n.Layout = r(15)),
            (n.LayoutConstants = r(0)),
            (n.NeedlemanWunsch = r(25)),
            (t.exports = n)
        },
        function (t, e, r) {
          'use strict'
          function n() {
            this.listeners = []
          }
          o(n, 'Emitter')
          var i = n.prototype
          ;(i.addListener = function (a, s) {
            this.listeners.push({ event: a, callback: s })
          }),
            (i.removeListener = function (a, s) {
              for (var l = this.listeners.length; l >= 0; l--) {
                var u = this.listeners[l]
                u.event === a && u.callback === s && this.listeners.splice(l, 1)
              }
            }),
            (i.emit = function (a, s) {
              for (var l = 0; l < this.listeners.length; l++) {
                var u = this.listeners[l]
                a === u.event && u.callback(s)
              }
            }),
            (t.exports = n)
        }
      ])
    })
  })
  var hF = Pi((w4, uF) => {
    'use strict'
    o(function (e, r) {
      typeof w4 == 'object' && typeof uF == 'object'
        ? (uF.exports = r(cF()))
        : typeof define == 'function' && define.amd
          ? define(['layout-base'], r)
          : typeof w4 == 'object'
            ? (w4.coseBase = r(cF()))
            : (e.coseBase = r(e.layoutBase))
    }, 'webpackUniversalModuleDefinition')(w4, function (t) {
      return (function (e) {
        var r = {}
        function n(i) {
          if (r[i]) return r[i].exports
          var a = (r[i] = { i, l: !1, exports: {} })
          return e[i].call(a.exports, a, a.exports, n), (a.l = !0), a.exports
        }
        return (
          o(n, '__webpack_require__'),
          (n.m = e),
          (n.c = r),
          (n.i = function (i) {
            return i
          }),
          (n.d = function (i, a, s) {
            n.o(i, a) || Object.defineProperty(i, a, { configurable: !1, enumerable: !0, get: s })
          }),
          (n.n = function (i) {
            var a =
              i && i.__esModule
                ? o(function () {
                    return i.default
                  }, 'getDefault')
                : o(function () {
                    return i
                  }, 'getModuleExports')
            return n.d(a, 'a', a), a
          }),
          (n.o = function (i, a) {
            return Object.prototype.hasOwnProperty.call(i, a)
          }),
          (n.p = ''),
          n((n.s = 7))
        )
      })([
        function (e, r) {
          e.exports = t
        },
        function (e, r, n) {
          'use strict'
          var i = n(0).FDLayoutConstants
          function a() {}
          o(a, 'CoSEConstants')
          for (var s in i) a[s] = i[s]
          ;(a.DEFAULT_USE_MULTI_LEVEL_SCALING = !1),
            (a.DEFAULT_RADIAL_SEPARATION = i.DEFAULT_EDGE_LENGTH),
            (a.DEFAULT_COMPONENT_SEPERATION = 60),
            (a.TILE = !0),
            (a.TILING_PADDING_VERTICAL = 10),
            (a.TILING_PADDING_HORIZONTAL = 10),
            (a.TREE_REDUCTION_ON_INCREMENTAL = !1),
            (e.exports = a)
        },
        function (e, r, n) {
          'use strict'
          var i = n(0).FDLayoutEdge
          function a(l, u, h) {
            i.call(this, l, u, h)
          }
          o(a, 'CoSEEdge'), (a.prototype = Object.create(i.prototype))
          for (var s in i) a[s] = i[s]
          e.exports = a
        },
        function (e, r, n) {
          'use strict'
          var i = n(0).LGraph
          function a(l, u, h) {
            i.call(this, l, u, h)
          }
          o(a, 'CoSEGraph'), (a.prototype = Object.create(i.prototype))
          for (var s in i) a[s] = i[s]
          e.exports = a
        },
        function (e, r, n) {
          'use strict'
          var i = n(0).LGraphManager
          function a(l) {
            i.call(this, l)
          }
          o(a, 'CoSEGraphManager'), (a.prototype = Object.create(i.prototype))
          for (var s in i) a[s] = i[s]
          e.exports = a
        },
        function (e, r, n) {
          'use strict'
          var i = n(0).FDLayoutNode,
            a = n(0).IMath
          function s(u, h, f, d) {
            i.call(this, u, h, f, d)
          }
          o(s, 'CoSENode'), (s.prototype = Object.create(i.prototype))
          for (var l in i) s[l] = i[l]
          ;(s.prototype.move = function () {
            var u = this.graphManager.getLayout()
            ;(this.displacementX = (u.coolingFactor * (this.springForceX + this.repulsionForceX + this.gravitationForceX)) / this.noOfChildren),
              (this.displacementY = (u.coolingFactor * (this.springForceY + this.repulsionForceY + this.gravitationForceY)) / this.noOfChildren),
              Math.abs(this.displacementX) > u.coolingFactor * u.maxNodeDisplacement && (this.displacementX = u.coolingFactor * u.maxNodeDisplacement * a.sign(this.displacementX)),
              Math.abs(this.displacementY) > u.coolingFactor * u.maxNodeDisplacement && (this.displacementY = u.coolingFactor * u.maxNodeDisplacement * a.sign(this.displacementY)),
              this.child == null
                ? this.moveBy(this.displacementX, this.displacementY)
                : this.child.getNodes().length == 0
                  ? this.moveBy(this.displacementX, this.displacementY)
                  : this.propogateDisplacementToChildren(this.displacementX, this.displacementY),
              (u.totalDisplacement += Math.abs(this.displacementX) + Math.abs(this.displacementY)),
              (this.springForceX = 0),
              (this.springForceY = 0),
              (this.repulsionForceX = 0),
              (this.repulsionForceY = 0),
              (this.gravitationForceX = 0),
              (this.gravitationForceY = 0),
              (this.displacementX = 0),
              (this.displacementY = 0)
          }),
            (s.prototype.propogateDisplacementToChildren = function (u, h) {
              for (var f = this.getChild().getNodes(), d, p = 0; p < f.length; p++)
                (d = f[p]), d.getChild() == null ? (d.moveBy(u, h), (d.displacementX += u), (d.displacementY += h)) : d.propogateDisplacementToChildren(u, h)
            }),
            (s.prototype.setPred1 = function (u) {
              this.pred1 = u
            }),
            (s.prototype.getPred1 = function () {
              return pred1
            }),
            (s.prototype.getPred2 = function () {
              return pred2
            }),
            (s.prototype.setNext = function (u) {
              this.next = u
            }),
            (s.prototype.getNext = function () {
              return next
            }),
            (s.prototype.setProcessed = function (u) {
              this.processed = u
            }),
            (s.prototype.isProcessed = function () {
              return processed
            }),
            (e.exports = s)
        },
        function (e, r, n) {
          'use strict'
          var i = n(0).FDLayout,
            a = n(4),
            s = n(3),
            l = n(5),
            u = n(2),
            h = n(1),
            f = n(0).FDLayoutConstants,
            d = n(0).LayoutConstants,
            p = n(0).Point,
            m = n(0).PointD,
            g = n(0).Layout,
            y = n(0).Integer,
            v = n(0).IGeometry,
            x = n(0).LGraph,
            b = n(0).Transform
          function T() {
            i.call(this), (this.toBeTiled = {})
          }
          o(T, 'CoSELayout'), (T.prototype = Object.create(i.prototype))
          for (var S in i) T[S] = i[S]
          ;(T.prototype.newGraphManager = function () {
            var w = new a(this)
            return (this.graphManager = w), w
          }),
            (T.prototype.newGraph = function (w) {
              return new s(null, this.graphManager, w)
            }),
            (T.prototype.newNode = function (w) {
              return new l(this.graphManager, w)
            }),
            (T.prototype.newEdge = function (w) {
              return new u(null, null, w)
            }),
            (T.prototype.initParameters = function () {
              i.prototype.initParameters.call(this, arguments),
                this.isSubLayout ||
                  (h.DEFAULT_EDGE_LENGTH < 10 ? (this.idealEdgeLength = 10) : (this.idealEdgeLength = h.DEFAULT_EDGE_LENGTH),
                  (this.useSmartIdealEdgeLengthCalculation = h.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION),
                  (this.springConstant = f.DEFAULT_SPRING_STRENGTH),
                  (this.repulsionConstant = f.DEFAULT_REPULSION_STRENGTH),
                  (this.gravityConstant = f.DEFAULT_GRAVITY_STRENGTH),
                  (this.compoundGravityConstant = f.DEFAULT_COMPOUND_GRAVITY_STRENGTH),
                  (this.gravityRangeFactor = f.DEFAULT_GRAVITY_RANGE_FACTOR),
                  (this.compoundGravityRangeFactor = f.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR),
                  (this.prunedNodesAll = []),
                  (this.growTreeIterations = 0),
                  (this.afterGrowthIterations = 0),
                  (this.isTreeGrowing = !1),
                  (this.isGrowthFinished = !1),
                  (this.coolingCycle = 0),
                  (this.maxCoolingCycle = this.maxIterations / f.CONVERGENCE_CHECK_PERIOD),
                  (this.finalTemperature = f.CONVERGENCE_CHECK_PERIOD / this.maxIterations),
                  (this.coolingAdjuster = 1))
            }),
            (T.prototype.layout = function () {
              var w = d.DEFAULT_CREATE_BENDS_AS_NEEDED
              return w && (this.createBendpoints(), this.graphManager.resetAllEdges()), (this.level = 0), this.classicLayout()
            }),
            (T.prototype.classicLayout = function () {
              if (
                ((this.nodesWithGravity = this.calculateNodesToApplyGravitationTo()),
                this.graphManager.setAllNodesToApplyGravitation(this.nodesWithGravity),
                this.calcNoOfChildrenForAllNodes(),
                this.graphManager.calcLowestCommonAncestors(),
                this.graphManager.calcInclusionTreeDepths(),
                this.graphManager.getRoot().calcEstimatedSize(),
                this.calcIdealEdgeLengths(),
                this.incremental)
              ) {
                if (h.TREE_REDUCTION_ON_INCREMENTAL) {
                  this.reduceTrees(), this.graphManager.resetAllNodesToApplyGravitation()
                  var E = new Set(this.getAllNodes()),
                    _ = this.nodesWithGravity.filter(function (O) {
                      return E.has(O)
                    })
                  this.graphManager.setAllNodesToApplyGravitation(_)
                }
              } else {
                var w = this.getFlatForest()
                if (w.length > 0) this.positionNodesRadially(w)
                else {
                  this.reduceTrees(), this.graphManager.resetAllNodesToApplyGravitation()
                  var E = new Set(this.getAllNodes()),
                    _ = this.nodesWithGravity.filter(function (C) {
                      return E.has(C)
                    })
                  this.graphManager.setAllNodesToApplyGravitation(_), this.positionNodesRandomly()
                }
              }
              return this.initSpringEmbedder(), this.runSpringEmbedder(), !0
            }),
            (T.prototype.tick = function () {
              if ((this.totalIterations++, this.totalIterations === this.maxIterations && !this.isTreeGrowing && !this.isGrowthFinished))
                if (this.prunedNodesAll.length > 0) this.isTreeGrowing = !0
                else return !0
              if (this.totalIterations % f.CONVERGENCE_CHECK_PERIOD == 0 && !this.isTreeGrowing && !this.isGrowthFinished) {
                if (this.isConverged())
                  if (this.prunedNodesAll.length > 0) this.isTreeGrowing = !0
                  else return !0
                this.coolingCycle++,
                  this.layoutQuality == 0 ? (this.coolingAdjuster = this.coolingCycle) : this.layoutQuality == 1 && (this.coolingAdjuster = this.coolingCycle / 3),
                  (this.coolingFactor = Math.max(
                    this.initialCoolingFactor -
                      (Math.pow(this.coolingCycle, Math.log(100 * (this.initialCoolingFactor - this.finalTemperature)) / Math.log(this.maxCoolingCycle)) / 100) *
                        this.coolingAdjuster,
                    this.finalTemperature
                  )),
                  (this.animationPeriod = Math.ceil(this.initialAnimationPeriod * Math.sqrt(this.coolingFactor)))
              }
              if (this.isTreeGrowing) {
                if (this.growTreeIterations % 10 == 0)
                  if (this.prunedNodesAll.length > 0) {
                    this.graphManager.updateBounds(), this.updateGrid(), this.growTree(this.prunedNodesAll), this.graphManager.resetAllNodesToApplyGravitation()
                    var w = new Set(this.getAllNodes()),
                      E = this.nodesWithGravity.filter(function (D) {
                        return w.has(D)
                      })
                    this.graphManager.setAllNodesToApplyGravitation(E),
                      this.graphManager.updateBounds(),
                      this.updateGrid(),
                      (this.coolingFactor = f.DEFAULT_COOLING_FACTOR_INCREMENTAL)
                  } else (this.isTreeGrowing = !1), (this.isGrowthFinished = !0)
                this.growTreeIterations++
              }
              if (this.isGrowthFinished) {
                if (this.isConverged()) return !0
                this.afterGrowthIterations % 10 == 0 && (this.graphManager.updateBounds(), this.updateGrid()),
                  (this.coolingFactor = f.DEFAULT_COOLING_FACTOR_INCREMENTAL * ((100 - this.afterGrowthIterations) / 100)),
                  this.afterGrowthIterations++
              }
              var _ = !this.isTreeGrowing && !this.isGrowthFinished,
                C = (this.growTreeIterations % 10 == 1 && this.isTreeGrowing) || (this.afterGrowthIterations % 10 == 1 && this.isGrowthFinished)
              return (
                (this.totalDisplacement = 0),
                this.graphManager.updateBounds(),
                this.calcSpringForces(),
                this.calcRepulsionForces(_, C),
                this.calcGravitationalForces(),
                this.moveNodes(),
                this.animate(),
                !1
              )
            }),
            (T.prototype.getPositionsData = function () {
              for (var w = this.graphManager.getAllNodes(), E = {}, _ = 0; _ < w.length; _++) {
                var C = w[_].rect,
                  D = w[_].id
                E[D] = { id: D, x: C.getCenterX(), y: C.getCenterY(), w: C.width, h: C.height }
              }
              return E
            }),
            (T.prototype.runSpringEmbedder = function () {
              ;(this.initialAnimationPeriod = 25), (this.animationPeriod = this.initialAnimationPeriod)
              var w = !1
              if (f.ANIMATE === 'during') this.emit('layoutstarted')
              else {
                for (; !w; ) w = this.tick()
                this.graphManager.updateBounds()
              }
            }),
            (T.prototype.calculateNodesToApplyGravitationTo = function () {
              var w = [],
                E,
                _ = this.graphManager.getGraphs(),
                C = _.length,
                D
              for (D = 0; D < C; D++) (E = _[D]), E.updateConnected(), E.isConnected || (w = w.concat(E.getNodes()))
              return w
            }),
            (T.prototype.createBendpoints = function () {
              var w = []
              w = w.concat(this.graphManager.getAllEdges())
              var E = new Set(),
                _
              for (_ = 0; _ < w.length; _++) {
                var C = w[_]
                if (!E.has(C)) {
                  var D = C.getSource(),
                    O = C.getTarget()
                  if (D == O) C.getBendpoints().push(new m()), C.getBendpoints().push(new m()), this.createDummyNodesForBendpoints(C), E.add(C)
                  else {
                    var R = []
                    if (((R = R.concat(D.getEdgeListToNode(O))), (R = R.concat(O.getEdgeListToNode(D))), !E.has(R[0]))) {
                      if (R.length > 1) {
                        var k
                        for (k = 0; k < R.length; k++) {
                          var L = R[k]
                          L.getBendpoints().push(new m()), this.createDummyNodesForBendpoints(L)
                        }
                      }
                      R.forEach(function (A) {
                        E.add(A)
                      })
                    }
                  }
                }
                if (E.size == w.length) break
              }
            }),
            (T.prototype.positionNodesRadially = function (w) {
              for (var E = new p(0, 0), _ = Math.ceil(Math.sqrt(w.length)), C = 0, D = 0, O = 0, R = new m(0, 0), k = 0; k < w.length; k++) {
                k % _ == 0 && ((O = 0), (D = C), k != 0 && (D += h.DEFAULT_COMPONENT_SEPERATION), (C = 0))
                var L = w[k],
                  A = g.findCenterOfTree(L)
                ;(E.x = O), (E.y = D), (R = T.radialLayout(L, A, E)), R.y > C && (C = Math.floor(R.y)), (O = Math.floor(R.x + h.DEFAULT_COMPONENT_SEPERATION))
              }
              this.transform(new m(d.WORLD_CENTER_X - R.x / 2, d.WORLD_CENTER_Y - R.y / 2))
            }),
            (T.radialLayout = function (w, E, _) {
              var C = Math.max(this.maxDiagonalInTree(w), h.DEFAULT_RADIAL_SEPARATION)
              T.branchRadialLayout(E, null, 0, 359, 0, C)
              var D = x.calculateBounds(w),
                O = new b()
              O.setDeviceOrgX(D.getMinX()), O.setDeviceOrgY(D.getMinY()), O.setWorldOrgX(_.x), O.setWorldOrgY(_.y)
              for (var R = 0; R < w.length; R++) {
                var k = w[R]
                k.transform(O)
              }
              var L = new m(D.getMaxX(), D.getMaxY())
              return O.inverseTransformPoint(L)
            }),
            (T.branchRadialLayout = function (w, E, _, C, D, O) {
              var R = (C - _ + 1) / 2
              R < 0 && (R += 180)
              var k = (R + _) % 360,
                L = (k * v.TWO_PI) / 360,
                A = Math.cos(L),
                I = D * Math.cos(L),
                M = D * Math.sin(L)
              w.setCenter(I, M)
              var P = []
              P = P.concat(w.getEdges())
              var B = P.length
              E != null && B--
              for (var F = 0, z = P.length, $, U = w.getEdgesBetween(E); U.length > 1; ) {
                var K = U[0]
                U.splice(0, 1)
                var ee = P.indexOf(K)
                ee >= 0 && P.splice(ee, 1), z--, B--
              }
              E != null ? ($ = (P.indexOf(U[0]) + 1) % z) : ($ = 0)
              for (var Y = Math.abs(C - _) / B, ce = $; F != B; ce = ++ce % z) {
                var Z = P[ce].getOtherEnd(w)
                if (Z != E) {
                  var ue = (_ + F * Y) % 360,
                    Q = (ue + Y) % 360
                  T.branchRadialLayout(Z, w, ue, Q, D + O, O), F++
                }
              }
            }),
            (T.maxDiagonalInTree = function (w) {
              for (var E = y.MIN_VALUE, _ = 0; _ < w.length; _++) {
                var C = w[_],
                  D = C.getDiagonal()
                D > E && (E = D)
              }
              return E
            }),
            (T.prototype.calcRepulsionRange = function () {
              return 2 * (this.level + 1) * this.idealEdgeLength
            }),
            (T.prototype.groupZeroDegreeMembers = function () {
              var w = this,
                E = {}
              ;(this.memberGroups = {}), (this.idToDummyNode = {})
              for (var _ = [], C = this.graphManager.getAllNodes(), D = 0; D < C.length; D++) {
                var O = C[D],
                  R = O.getParent()
                this.getNodeDegreeWithChildren(O) === 0 && (R.id == null || !this.getToBeTiled(R)) && _.push(O)
              }
              for (var D = 0; D < _.length; D++) {
                var O = _[D],
                  k = O.getParent().id
                typeof E[k] > 'u' && (E[k] = []), (E[k] = E[k].concat(O))
              }
              Object.keys(E).forEach(function (L) {
                if (E[L].length > 1) {
                  var A = 'DummyCompound_' + L
                  w.memberGroups[A] = E[L]
                  var I = E[L][0].getParent(),
                    M = new l(w.graphManager)
                  ;(M.id = A),
                    (M.paddingLeft = I.paddingLeft || 0),
                    (M.paddingRight = I.paddingRight || 0),
                    (M.paddingBottom = I.paddingBottom || 0),
                    (M.paddingTop = I.paddingTop || 0),
                    (w.idToDummyNode[A] = M)
                  var P = w.getGraphManager().add(w.newGraph(), M),
                    B = I.getChild()
                  B.add(M)
                  for (var F = 0; F < E[L].length; F++) {
                    var z = E[L][F]
                    B.remove(z), P.add(z)
                  }
                }
              })
            }),
            (T.prototype.clearCompounds = function () {
              var w = {},
                E = {}
              this.performDFSOnCompounds()
              for (var _ = 0; _ < this.compoundOrder.length; _++)
                (E[this.compoundOrder[_].id] = this.compoundOrder[_]),
                  (w[this.compoundOrder[_].id] = [].concat(this.compoundOrder[_].getChild().getNodes())),
                  this.graphManager.remove(this.compoundOrder[_].getChild()),
                  (this.compoundOrder[_].child = null)
              this.graphManager.resetAllNodes(), this.tileCompoundMembers(w, E)
            }),
            (T.prototype.clearZeroDegreeMembers = function () {
              var w = this,
                E = (this.tiledZeroDegreePack = [])
              Object.keys(this.memberGroups).forEach(function (_) {
                var C = w.idToDummyNode[_]
                ;(E[_] = w.tileNodes(w.memberGroups[_], C.paddingLeft + C.paddingRight)), (C.rect.width = E[_].width), (C.rect.height = E[_].height)
              })
            }),
            (T.prototype.repopulateCompounds = function () {
              for (var w = this.compoundOrder.length - 1; w >= 0; w--) {
                var E = this.compoundOrder[w],
                  _ = E.id,
                  C = E.paddingLeft,
                  D = E.paddingTop
                this.adjustLocations(this.tiledMemberPack[_], E.rect.x, E.rect.y, C, D)
              }
            }),
            (T.prototype.repopulateZeroDegreeMembers = function () {
              var w = this,
                E = this.tiledZeroDegreePack
              Object.keys(E).forEach(function (_) {
                var C = w.idToDummyNode[_],
                  D = C.paddingLeft,
                  O = C.paddingTop
                w.adjustLocations(E[_], C.rect.x, C.rect.y, D, O)
              })
            }),
            (T.prototype.getToBeTiled = function (w) {
              var E = w.id
              if (this.toBeTiled[E] != null) return this.toBeTiled[E]
              var _ = w.getChild()
              if (_ == null) return (this.toBeTiled[E] = !1), !1
              for (var C = _.getNodes(), D = 0; D < C.length; D++) {
                var O = C[D]
                if (this.getNodeDegree(O) > 0) return (this.toBeTiled[E] = !1), !1
                if (O.getChild() == null) {
                  this.toBeTiled[O.id] = !1
                  continue
                }
                if (!this.getToBeTiled(O)) return (this.toBeTiled[E] = !1), !1
              }
              return (this.toBeTiled[E] = !0), !0
            }),
            (T.prototype.getNodeDegree = function (w) {
              for (var E = w.id, _ = w.getEdges(), C = 0, D = 0; D < _.length; D++) {
                var O = _[D]
                O.getSource().id !== O.getTarget().id && (C = C + 1)
              }
              return C
            }),
            (T.prototype.getNodeDegreeWithChildren = function (w) {
              var E = this.getNodeDegree(w)
              if (w.getChild() == null) return E
              for (var _ = w.getChild().getNodes(), C = 0; C < _.length; C++) {
                var D = _[C]
                E += this.getNodeDegreeWithChildren(D)
              }
              return E
            }),
            (T.prototype.performDFSOnCompounds = function () {
              ;(this.compoundOrder = []), this.fillCompexOrderByDFS(this.graphManager.getRoot().getNodes())
            }),
            (T.prototype.fillCompexOrderByDFS = function (w) {
              for (var E = 0; E < w.length; E++) {
                var _ = w[E]
                _.getChild() != null && this.fillCompexOrderByDFS(_.getChild().getNodes()), this.getToBeTiled(_) && this.compoundOrder.push(_)
              }
            }),
            (T.prototype.adjustLocations = function (w, E, _, C, D) {
              ;(E += C), (_ += D)
              for (var O = E, R = 0; R < w.rows.length; R++) {
                var k = w.rows[R]
                E = O
                for (var L = 0, A = 0; A < k.length; A++) {
                  var I = k[A]
                  ;(I.rect.x = E), (I.rect.y = _), (E += I.rect.width + w.horizontalPadding), I.rect.height > L && (L = I.rect.height)
                }
                _ += L + w.verticalPadding
              }
            }),
            (T.prototype.tileCompoundMembers = function (w, E) {
              var _ = this
              ;(this.tiledMemberPack = []),
                Object.keys(w).forEach(function (C) {
                  var D = E[C]
                  ;(_.tiledMemberPack[C] = _.tileNodes(w[C], D.paddingLeft + D.paddingRight)),
                    (D.rect.width = _.tiledMemberPack[C].width),
                    (D.rect.height = _.tiledMemberPack[C].height)
                })
            }),
            (T.prototype.tileNodes = function (w, E) {
              var _ = h.TILING_PADDING_VERTICAL,
                C = h.TILING_PADDING_HORIZONTAL,
                D = { rows: [], rowWidth: [], rowHeight: [], width: 0, height: E, verticalPadding: _, horizontalPadding: C }
              w.sort(function (k, L) {
                return k.rect.width * k.rect.height > L.rect.width * L.rect.height ? -1 : k.rect.width * k.rect.height < L.rect.width * L.rect.height ? 1 : 0
              })
              for (var O = 0; O < w.length; O++) {
                var R = w[O]
                D.rows.length == 0
                  ? this.insertNodeToRow(D, R, 0, E)
                  : this.canAddHorizontal(D, R.rect.width, R.rect.height)
                    ? this.insertNodeToRow(D, R, this.getShortestRowIndex(D), E)
                    : this.insertNodeToRow(D, R, D.rows.length, E),
                  this.shiftToLastRow(D)
              }
              return D
            }),
            (T.prototype.insertNodeToRow = function (w, E, _, C) {
              var D = C
              if (_ == w.rows.length) {
                var O = []
                w.rows.push(O), w.rowWidth.push(D), w.rowHeight.push(0)
              }
              var R = w.rowWidth[_] + E.rect.width
              w.rows[_].length > 0 && (R += w.horizontalPadding), (w.rowWidth[_] = R), w.width < R && (w.width = R)
              var k = E.rect.height
              _ > 0 && (k += w.verticalPadding)
              var L = 0
              k > w.rowHeight[_] && ((L = w.rowHeight[_]), (w.rowHeight[_] = k), (L = w.rowHeight[_] - L)), (w.height += L), w.rows[_].push(E)
            }),
            (T.prototype.getShortestRowIndex = function (w) {
              for (var E = -1, _ = Number.MAX_VALUE, C = 0; C < w.rows.length; C++) w.rowWidth[C] < _ && ((E = C), (_ = w.rowWidth[C]))
              return E
            }),
            (T.prototype.getLongestRowIndex = function (w) {
              for (var E = -1, _ = Number.MIN_VALUE, C = 0; C < w.rows.length; C++) w.rowWidth[C] > _ && ((E = C), (_ = w.rowWidth[C]))
              return E
            }),
            (T.prototype.canAddHorizontal = function (w, E, _) {
              var C = this.getShortestRowIndex(w)
              if (C < 0) return !0
              var D = w.rowWidth[C]
              if (D + w.horizontalPadding + E <= w.width) return !0
              var O = 0
              w.rowHeight[C] < _ && C > 0 && (O = _ + w.verticalPadding - w.rowHeight[C])
              var R
              w.width - D >= E + w.horizontalPadding ? (R = (w.height + O) / (D + E + w.horizontalPadding)) : (R = (w.height + O) / w.width), (O = _ + w.verticalPadding)
              var k
              return w.width < E ? (k = (w.height + O) / E) : (k = (w.height + O) / w.width), k < 1 && (k = 1 / k), R < 1 && (R = 1 / R), R < k
            }),
            (T.prototype.shiftToLastRow = function (w) {
              var E = this.getLongestRowIndex(w),
                _ = w.rowWidth.length - 1,
                C = w.rows[E],
                D = C[C.length - 1],
                O = D.width + w.horizontalPadding
              if (w.width - w.rowWidth[_] > O && E != _) {
                C.splice(-1, 1), w.rows[_].push(D), (w.rowWidth[E] = w.rowWidth[E] - O), (w.rowWidth[_] = w.rowWidth[_] + O), (w.width = w.rowWidth[instance.getLongestRowIndex(w)])
                for (var R = Number.MIN_VALUE, k = 0; k < C.length; k++) C[k].height > R && (R = C[k].height)
                E > 0 && (R += w.verticalPadding)
                var L = w.rowHeight[E] + w.rowHeight[_]
                ;(w.rowHeight[E] = R), w.rowHeight[_] < D.height + w.verticalPadding && (w.rowHeight[_] = D.height + w.verticalPadding)
                var A = w.rowHeight[E] + w.rowHeight[_]
                ;(w.height += A - L), this.shiftToLastRow(w)
              }
            }),
            (T.prototype.tilingPreLayout = function () {
              h.TILE && (this.groupZeroDegreeMembers(), this.clearCompounds(), this.clearZeroDegreeMembers())
            }),
            (T.prototype.tilingPostLayout = function () {
              h.TILE && (this.repopulateZeroDegreeMembers(), this.repopulateCompounds())
            }),
            (T.prototype.reduceTrees = function () {
              for (var w = [], E = !0, _; E; ) {
                var C = this.graphManager.getAllNodes(),
                  D = []
                E = !1
                for (var O = 0; O < C.length; O++)
                  (_ = C[O]), _.getEdges().length == 1 && !_.getEdges()[0].isInterGraph && _.getChild() == null && (D.push([_, _.getEdges()[0], _.getOwner()]), (E = !0))
                if (E == !0) {
                  for (var R = [], k = 0; k < D.length; k++) D[k][0].getEdges().length == 1 && (R.push(D[k]), D[k][0].getOwner().remove(D[k][0]))
                  w.push(R), this.graphManager.resetAllNodes(), this.graphManager.resetAllEdges()
                }
              }
              this.prunedNodesAll = w
            }),
            (T.prototype.growTree = function (w) {
              for (var E = w.length, _ = w[E - 1], C, D = 0; D < _.length; D++) (C = _[D]), this.findPlaceforPrunedNode(C), C[2].add(C[0]), C[2].add(C[1], C[1].source, C[1].target)
              w.splice(w.length - 1, 1), this.graphManager.resetAllNodes(), this.graphManager.resetAllEdges()
            }),
            (T.prototype.findPlaceforPrunedNode = function (w) {
              var E,
                _,
                C = w[0]
              C == w[1].source ? (_ = w[1].target) : (_ = w[1].source)
              var D = _.startX,
                O = _.finishX,
                R = _.startY,
                k = _.finishY,
                L = 0,
                A = 0,
                I = 0,
                M = 0,
                P = [L, I, A, M]
              if (R > 0) for (var B = D; B <= O; B++) P[0] += this.grid[B][R - 1].length + this.grid[B][R].length - 1
              if (O < this.grid.length - 1) for (var B = R; B <= k; B++) P[1] += this.grid[O + 1][B].length + this.grid[O][B].length - 1
              if (k < this.grid[0].length - 1) for (var B = D; B <= O; B++) P[2] += this.grid[B][k + 1].length + this.grid[B][k].length - 1
              if (D > 0) for (var B = R; B <= k; B++) P[3] += this.grid[D - 1][B].length + this.grid[D][B].length - 1
              for (var F = y.MAX_VALUE, z, $, U = 0; U < P.length; U++) P[U] < F ? ((F = P[U]), (z = 1), ($ = U)) : P[U] == F && z++
              if (z == 3 && F == 0)
                P[0] == 0 && P[1] == 0 && P[2] == 0
                  ? (E = 1)
                  : P[0] == 0 && P[1] == 0 && P[3] == 0
                    ? (E = 0)
                    : P[0] == 0 && P[2] == 0 && P[3] == 0
                      ? (E = 3)
                      : P[1] == 0 && P[2] == 0 && P[3] == 0 && (E = 2)
              else if (z == 2 && F == 0) {
                var K = Math.floor(Math.random() * 2)
                P[0] == 0 && P[1] == 0
                  ? K == 0
                    ? (E = 0)
                    : (E = 1)
                  : P[0] == 0 && P[2] == 0
                    ? K == 0
                      ? (E = 0)
                      : (E = 2)
                    : P[0] == 0 && P[3] == 0
                      ? K == 0
                        ? (E = 0)
                        : (E = 3)
                      : P[1] == 0 && P[2] == 0
                        ? K == 0
                          ? (E = 1)
                          : (E = 2)
                        : P[1] == 0 && P[3] == 0
                          ? K == 0
                            ? (E = 1)
                            : (E = 3)
                          : K == 0
                            ? (E = 2)
                            : (E = 3)
              } else if (z == 4 && F == 0) {
                var K = Math.floor(Math.random() * 4)
                E = K
              } else E = $
              E == 0
                ? C.setCenter(_.getCenterX(), _.getCenterY() - _.getHeight() / 2 - f.DEFAULT_EDGE_LENGTH - C.getHeight() / 2)
                : E == 1
                  ? C.setCenter(_.getCenterX() + _.getWidth() / 2 + f.DEFAULT_EDGE_LENGTH + C.getWidth() / 2, _.getCenterY())
                  : E == 2
                    ? C.setCenter(_.getCenterX(), _.getCenterY() + _.getHeight() / 2 + f.DEFAULT_EDGE_LENGTH + C.getHeight() / 2)
                    : C.setCenter(_.getCenterX() - _.getWidth() / 2 - f.DEFAULT_EDGE_LENGTH - C.getWidth() / 2, _.getCenterY())
            }),
            (e.exports = T)
        },
        function (e, r, n) {
          'use strict'
          var i = {}
          ;(i.layoutBase = n(0)),
            (i.CoSEConstants = n(1)),
            (i.CoSEEdge = n(2)),
            (i.CoSEGraph = n(3)),
            (i.CoSEGraphManager = n(4)),
            (i.CoSELayout = n(6)),
            (i.CoSENode = n(5)),
            (e.exports = i)
        }
      ])
    })
  })
  var Q1e = Pi((k4, fF) => {
    'use strict'
    o(function (e, r) {
      typeof k4 == 'object' && typeof fF == 'object'
        ? (fF.exports = r(hF()))
        : typeof define == 'function' && define.amd
          ? define(['cose-base'], r)
          : typeof k4 == 'object'
            ? (k4.cytoscapeCoseBilkent = r(hF()))
            : (e.cytoscapeCoseBilkent = r(e.coseBase))
    }, 'webpackUniversalModuleDefinition')(k4, function (t) {
      return (function (e) {
        var r = {}
        function n(i) {
          if (r[i]) return r[i].exports
          var a = (r[i] = { i, l: !1, exports: {} })
          return e[i].call(a.exports, a, a.exports, n), (a.l = !0), a.exports
        }
        return (
          o(n, '__webpack_require__'),
          (n.m = e),
          (n.c = r),
          (n.i = function (i) {
            return i
          }),
          (n.d = function (i, a, s) {
            n.o(i, a) || Object.defineProperty(i, a, { configurable: !1, enumerable: !0, get: s })
          }),
          (n.n = function (i) {
            var a =
              i && i.__esModule
                ? o(function () {
                    return i.default
                  }, 'getDefault')
                : o(function () {
                    return i
                  }, 'getModuleExports')
            return n.d(a, 'a', a), a
          }),
          (n.o = function (i, a) {
            return Object.prototype.hasOwnProperty.call(i, a)
          }),
          (n.p = ''),
          n((n.s = 1))
        )
      })([
        function (e, r) {
          e.exports = t
        },
        function (e, r, n) {
          'use strict'
          var i = n(0).layoutBase.LayoutConstants,
            a = n(0).layoutBase.FDLayoutConstants,
            s = n(0).CoSEConstants,
            l = n(0).CoSELayout,
            u = n(0).CoSENode,
            h = n(0).layoutBase.PointD,
            f = n(0).layoutBase.DimensionD,
            d = {
              ready: o(function () {}, 'ready'),
              stop: o(function () {}, 'stop'),
              quality: 'default',
              nodeDimensionsIncludeLabels: !1,
              refresh: 30,
              fit: !0,
              padding: 10,
              randomize: !0,
              nodeRepulsion: 4500,
              idealEdgeLength: 50,
              edgeElasticity: 0.45,
              nestingFactor: 0.1,
              gravity: 0.25,
              numIter: 2500,
              tile: !0,
              animate: 'end',
              animationDuration: 500,
              tilingPaddingVertical: 10,
              tilingPaddingHorizontal: 10,
              gravityRangeCompound: 1.5,
              gravityCompound: 1,
              gravityRange: 3.8,
              initialEnergyOnIncremental: 0.5
            }
          function p(v, x) {
            var b = {}
            for (var T in v) b[T] = v[T]
            for (var T in x) b[T] = x[T]
            return b
          }
          o(p, 'extend')
          function m(v) {
            ;(this.options = p(d, v)), g(this.options)
          }
          o(m, '_CoSELayout')
          var g = o(function (x) {
            x.nodeRepulsion != null && (s.DEFAULT_REPULSION_STRENGTH = a.DEFAULT_REPULSION_STRENGTH = x.nodeRepulsion),
              x.idealEdgeLength != null && (s.DEFAULT_EDGE_LENGTH = a.DEFAULT_EDGE_LENGTH = x.idealEdgeLength),
              x.edgeElasticity != null && (s.DEFAULT_SPRING_STRENGTH = a.DEFAULT_SPRING_STRENGTH = x.edgeElasticity),
              x.nestingFactor != null && (s.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = a.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = x.nestingFactor),
              x.gravity != null && (s.DEFAULT_GRAVITY_STRENGTH = a.DEFAULT_GRAVITY_STRENGTH = x.gravity),
              x.numIter != null && (s.MAX_ITERATIONS = a.MAX_ITERATIONS = x.numIter),
              x.gravityRange != null && (s.DEFAULT_GRAVITY_RANGE_FACTOR = a.DEFAULT_GRAVITY_RANGE_FACTOR = x.gravityRange),
              x.gravityCompound != null && (s.DEFAULT_COMPOUND_GRAVITY_STRENGTH = a.DEFAULT_COMPOUND_GRAVITY_STRENGTH = x.gravityCompound),
              x.gravityRangeCompound != null && (s.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = a.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = x.gravityRangeCompound),
              x.initialEnergyOnIncremental != null && (s.DEFAULT_COOLING_FACTOR_INCREMENTAL = a.DEFAULT_COOLING_FACTOR_INCREMENTAL = x.initialEnergyOnIncremental),
              x.quality == 'draft' ? (i.QUALITY = 0) : x.quality == 'proof' ? (i.QUALITY = 2) : (i.QUALITY = 1),
              (s.NODE_DIMENSIONS_INCLUDE_LABELS = a.NODE_DIMENSIONS_INCLUDE_LABELS = i.NODE_DIMENSIONS_INCLUDE_LABELS = x.nodeDimensionsIncludeLabels),
              (s.DEFAULT_INCREMENTAL = a.DEFAULT_INCREMENTAL = i.DEFAULT_INCREMENTAL = !x.randomize),
              (s.ANIMATE = a.ANIMATE = i.ANIMATE = x.animate),
              (s.TILE = x.tile),
              (s.TILING_PADDING_VERTICAL = typeof x.tilingPaddingVertical == 'function' ? x.tilingPaddingVertical.call() : x.tilingPaddingVertical),
              (s.TILING_PADDING_HORIZONTAL = typeof x.tilingPaddingHorizontal == 'function' ? x.tilingPaddingHorizontal.call() : x.tilingPaddingHorizontal)
          }, 'getUserOptions')
          ;(m.prototype.run = function () {
            var v,
              x,
              b = this.options,
              T = (this.idToLNode = {}),
              S = (this.layout = new l()),
              w = this
            ;(w.stopped = !1), (this.cy = this.options.cy), this.cy.trigger({ type: 'layoutstart', layout: this })
            var E = S.newGraphManager()
            this.gm = E
            var _ = this.options.eles.nodes(),
              C = this.options.eles.edges()
            ;(this.root = E.addRoot()), this.processChildrenList(this.root, this.getTopMostNodes(_), S)
            for (var D = 0; D < C.length; D++) {
              var O = C[D],
                R = this.idToLNode[O.data('source')],
                k = this.idToLNode[O.data('target')]
              if (R !== k && R.getEdgesBetween(k).length == 0) {
                var L = E.add(S.newEdge(), R, k)
                L.id = O.id()
              }
            }
            var A = o(function (P, B) {
                typeof P == 'number' && (P = B)
                var F = P.data('id'),
                  z = w.idToLNode[F]
                return { x: z.getRect().getCenterX(), y: z.getRect().getCenterY() }
              }, 'getPositions'),
              I = o(function M() {
                for (
                  var P = o(function () {
                      b.fit && b.cy.fit(b.eles, b.padding), v || ((v = !0), w.cy.one('layoutready', b.ready), w.cy.trigger({ type: 'layoutready', layout: w }))
                    }, 'afterReposition'),
                    B = w.options.refresh,
                    F,
                    z = 0;
                  z < B && !F;
                  z++
                )
                  F = w.stopped || w.layout.tick()
                if (F) {
                  S.checkLayoutSuccess() && !S.isSubLayout && S.doPostLayout(),
                    S.tilingPostLayout && S.tilingPostLayout(),
                    (S.isLayoutFinished = !0),
                    w.options.eles.nodes().positions(A),
                    P(),
                    w.cy.one('layoutstop', w.options.stop),
                    w.cy.trigger({ type: 'layoutstop', layout: w }),
                    x && cancelAnimationFrame(x),
                    (v = !1)
                  return
                }
                var $ = w.layout.getPositionsData()
                b.eles.nodes().positions(function (U, K) {
                  if ((typeof U == 'number' && (U = K), !U.isParent())) {
                    for (
                      var ee = U.id(), Y = $[ee], ce = U;
                      Y == null && ((Y = $[ce.data('parent')] || $['DummyCompound_' + ce.data('parent')]), ($[ee] = Y), (ce = ce.parent()[0]), ce != null);

                    );
                    return Y != null ? { x: Y.x, y: Y.y } : { x: U.position('x'), y: U.position('y') }
                  }
                }),
                  P(),
                  (x = requestAnimationFrame(M))
              }, 'iterateAnimated')
            return (
              S.addListener('layoutstarted', function () {
                w.options.animate === 'during' && (x = requestAnimationFrame(I))
              }),
              S.runLayout(),
              this.options.animate !== 'during' && (w.options.eles.nodes().not(':parent').layoutPositions(w, w.options, A), (v = !1)),
              this
            )
          }),
            (m.prototype.getTopMostNodes = function (v) {
              for (var x = {}, b = 0; b < v.length; b++) x[v[b].id()] = !0
              var T = v.filter(function (S, w) {
                typeof S == 'number' && (S = w)
                for (var E = S.parent()[0]; E != null; ) {
                  if (x[E.id()]) return !1
                  E = E.parent()[0]
                }
                return !0
              })
              return T
            }),
            (m.prototype.processChildrenList = function (v, x, b) {
              for (var T = x.length, S = 0; S < T; S++) {
                var w = x[S],
                  E = w.children(),
                  _,
                  C = w.layoutDimensions({ nodeDimensionsIncludeLabels: this.options.nodeDimensionsIncludeLabels })
                if (
                  (w.outerWidth() != null && w.outerHeight() != null
                    ? (_ = v.add(new u(b.graphManager, new h(w.position('x') - C.w / 2, w.position('y') - C.h / 2), new f(parseFloat(C.w), parseFloat(C.h)))))
                    : (_ = v.add(new u(this.graphManager))),
                  (_.id = w.data('id')),
                  (_.paddingLeft = parseInt(w.css('padding'))),
                  (_.paddingTop = parseInt(w.css('padding'))),
                  (_.paddingRight = parseInt(w.css('padding'))),
                  (_.paddingBottom = parseInt(w.css('padding'))),
                  this.options.nodeDimensionsIncludeLabels && w.isParent())
                ) {
                  var D = w.boundingBox({ includeLabels: !0, includeNodes: !1 }).w,
                    O = w.boundingBox({ includeLabels: !0, includeNodes: !1 }).h,
                    R = w.css('text-halign')
                  ;(_.labelWidth = D), (_.labelHeight = O), (_.labelPos = R)
                }
                if (((this.idToLNode[w.data('id')] = _), isNaN(_.rect.x) && (_.rect.x = 0), isNaN(_.rect.y) && (_.rect.y = 0), E != null && E.length > 0)) {
                  var k
                  ;(k = b.getGraphManager().add(b.newGraph(), _)), this.processChildrenList(k, E, b)
                }
              }
            }),
            (m.prototype.stop = function () {
              return (this.stopped = !0), this
            })
          var y = o(function (x) {
            x('layout', 'cose-bilkent', m)
          }, 'register')
          typeof cytoscape < 'u' && y(cytoscape), (e.exports = y)
        }
      ])
    })
  })
  function xet(t, e, r, n, i) {
    return t
      .insert('polygon', ':first-child')
      .attr(
        'points',
        n
          .map(function (a) {
            return a.x + ',' + a.y
          })
          .join(' ')
      )
      .attr('transform', 'translate(' + (i.width - e) / 2 + ', ' + r + ')')
  }
  var det,
    pet,
    met,
    get,
    yet,
    vet,
    bet,
    Tet,
    Z1e,
    J1e,
    eye = N(() => {
      'use strict'
      ao()
      er()
      ;(det = 12),
        (pet = o(function (t, e, r, n) {
          e
            .append('path')
            .attr('id', 'node-' + r.id)
            .attr('class', 'node-bkg node-' + t.type2Str(r.type))
            .attr('d', `M0 ${r.height - 5} v${-r.height + 2 * 5} q0,-5 5,-5 h${r.width - 2 * 5} q5,0 5,5 v${r.height - 5} H0 Z`),
            e
              .append('line')
              .attr('class', 'node-line-' + n)
              .attr('x1', 0)
              .attr('y1', r.height)
              .attr('x2', r.width)
              .attr('y2', r.height)
        }, 'defaultBkg')),
        (met = o(function (t, e, r) {
          e.append('rect')
            .attr('id', 'node-' + r.id)
            .attr('class', 'node-bkg node-' + t.type2Str(r.type))
            .attr('height', r.height)
            .attr('width', r.width)
        }, 'rectBkg')),
        (get = o(function (t, e, r) {
          let n = r.width,
            i = r.height,
            a = 0.15 * n,
            s = 0.25 * n,
            l = 0.35 * n,
            u = 0.2 * n
          e.append('path')
            .attr('id', 'node-' + r.id)
            .attr('class', 'node-bkg node-' + t.type2Str(r.type))
            .attr(
              'd',
              `M0 0 a${a},${a} 0 0,1 ${n * 0.25},${-1 * n * 0.1}
      a${l},${l} 1 0,1 ${n * 0.4},${-1 * n * 0.1}
      a${s},${s} 1 0,1 ${n * 0.35},${1 * n * 0.2}

      a${a},${a} 1 0,1 ${n * 0.15},${1 * i * 0.35}
      a${u},${u} 1 0,1 ${-1 * n * 0.15},${1 * i * 0.65}

      a${s},${a} 1 0,1 ${-1 * n * 0.25},${n * 0.15}
      a${l},${l} 1 0,1 ${-1 * n * 0.5},0
      a${a},${a} 1 0,1 ${-1 * n * 0.25},${-1 * n * 0.15}

      a${a},${a} 1 0,1 ${-1 * n * 0.1},${-1 * i * 0.35}
      a${u},${u} 1 0,1 ${n * 0.1},${-1 * i * 0.65}

    H0 V0 Z`
            )
        }, 'cloudBkg')),
        (yet = o(function (t, e, r) {
          let n = r.width,
            i = r.height,
            a = 0.15 * n
          e.append('path')
            .attr('id', 'node-' + r.id)
            .attr('class', 'node-bkg node-' + t.type2Str(r.type))
            .attr(
              'd',
              `M0 0 a${a},${a} 1 0,0 ${n * 0.25},${-1 * i * 0.1}
      a${a},${a} 1 0,0 ${n * 0.25},0
      a${a},${a} 1 0,0 ${n * 0.25},0
      a${a},${a} 1 0,0 ${n * 0.25},${1 * i * 0.1}

      a${a},${a} 1 0,0 ${n * 0.15},${1 * i * 0.33}
      a${a * 0.8},${a * 0.8} 1 0,0 0,${1 * i * 0.34}
      a${a},${a} 1 0,0 ${-1 * n * 0.15},${1 * i * 0.33}

      a${a},${a} 1 0,0 ${-1 * n * 0.25},${i * 0.15}
      a${a},${a} 1 0,0 ${-1 * n * 0.25},0
      a${a},${a} 1 0,0 ${-1 * n * 0.25},0
      a${a},${a} 1 0,0 ${-1 * n * 0.25},${-1 * i * 0.15}

      a${a},${a} 1 0,0 ${-1 * n * 0.1},${-1 * i * 0.33}
      a${a * 0.8},${a * 0.8} 1 0,0 0,${-1 * i * 0.34}
      a${a},${a} 1 0,0 ${n * 0.1},${-1 * i * 0.33}

    H0 V0 Z`
            )
        }, 'bangBkg')),
        (vet = o(function (t, e, r) {
          e.append('circle')
            .attr('id', 'node-' + r.id)
            .attr('class', 'node-bkg node-' + t.type2Str(r.type))
            .attr('r', r.width / 2)
        }, 'circleBkg'))
      o(xet, 'insertPolygonShape')
      ;(bet = o(function (t, e, r) {
        let n = r.height,
          a = n / 4,
          s = r.width - r.padding + 2 * a,
          l = [
            { x: a, y: 0 },
            { x: s - a, y: 0 },
            { x: s, y: -n / 2 },
            { x: s - a, y: -n },
            { x: a, y: -n },
            { x: 0, y: -n / 2 }
          ]
        xet(e, s, n, l, r)
      }, 'hexagonBkg')),
        (Tet = o(function (t, e, r) {
          e.append('rect')
            .attr('id', 'node-' + r.id)
            .attr('class', 'node-bkg node-' + t.type2Str(r.type))
            .attr('height', r.height)
            .attr('rx', r.padding)
            .attr('ry', r.padding)
            .attr('width', r.width)
        }, 'roundedRectBkg')),
        (Z1e = o(async function (t, e, r, n, i) {
          let a = i.htmlLabels,
            s = n % (det - 1),
            l = e.append('g')
          r.section = s
          let u = 'section-' + s
          s < 0 && (u += ' section-root'), l.attr('class', (r.class ? r.class + ' ' : '') + 'mindmap-node ' + u)
          let h = l.append('g'),
            f = l.append('g'),
            d = r.descr.replace(
              /(<br\/*>)/g,
              `
`
            )
          await qn(f, d, { useHtmlLabels: a, width: r.width, classes: 'mindmap-node-label' }, i),
            a || f.attr('dy', '1em').attr('alignment-baseline', 'middle').attr('dominant-baseline', 'middle').attr('text-anchor', 'middle')
          let p = f.node().getBBox(),
            [m] = zo(i.fontSize)
          if (((r.height = p.height + m * 1.1 * 0.5 + r.padding), (r.width = p.width + 2 * r.padding), r.icon))
            if (r.type === t.nodeType.CIRCLE)
              (r.height += 50),
                (r.width += 50),
                l
                  .append('foreignObject')
                  .attr('height', '50px')
                  .attr('width', r.width)
                  .attr('style', 'text-align: center;')
                  .append('div')
                  .attr('class', 'icon-container')
                  .append('i')
                  .attr('class', 'node-icon-' + s + ' ' + r.icon),
                f.attr('transform', 'translate(' + r.width / 2 + ', ' + (r.height / 2 - 1.5 * r.padding) + ')')
            else {
              r.width += 50
              let g = r.height
              r.height = Math.max(g, 60)
              let y = Math.abs(r.height - g)
              l
                .append('foreignObject')
                .attr('width', '60px')
                .attr('height', r.height)
                .attr('style', 'text-align: center;margin-top:' + y / 2 + 'px;')
                .append('div')
                .attr('class', 'icon-container')
                .append('i')
                .attr('class', 'node-icon-' + s + ' ' + r.icon),
                f.attr('transform', 'translate(' + (25 + r.width / 2) + ', ' + (y / 2 + r.padding / 2) + ')')
            }
          else if (a) {
            let g = (r.width - p.width) / 2,
              y = (r.height - p.height) / 2
            f.attr('transform', 'translate(' + g + ', ' + y + ')')
          } else {
            let g = r.width / 2,
              y = r.padding / 2
            f.attr('transform', 'translate(' + g + ', ' + y + ')')
          }
          switch (r.type) {
            case t.nodeType.DEFAULT:
              pet(t, h, r, s)
              break
            case t.nodeType.ROUNDED_RECT:
              Tet(t, h, r, s)
              break
            case t.nodeType.RECT:
              met(t, h, r, s)
              break
            case t.nodeType.CIRCLE:
              h.attr('transform', 'translate(' + r.width / 2 + ', ' + +r.height / 2 + ')'), vet(t, h, r, s)
              break
            case t.nodeType.CLOUD:
              get(t, h, r, s)
              break
            case t.nodeType.BANG:
              yet(t, h, r, s)
              break
            case t.nodeType.HEXAGON:
              bet(t, h, r, s)
              break
          }
          return t.setElementForId(r.id, l), r.height
        }, 'drawNode')),
        (J1e = o(function (t, e) {
          let r = t.getElementById(e.id),
            n = e.x || 0,
            i = e.y || 0
          r.attr('transform', 'translate(' + n + ',' + i + ')')
        }, 'positionNode'))
    })
  async function rye(t, e, r, n, i) {
    await Z1e(t, e, r, n, i), r.children && (await Promise.all(r.children.map((a, s) => rye(t, e, a, n < 0 ? s : n, i))))
  }
  function wet(t, e) {
    e.edges().map((r, n) => {
      let i = r.data()
      if (r[0]._private.bodyBounds) {
        let a = r[0]._private.rscratch
        X.trace('Edge: ', n, i),
          t
            .insert('path')
            .attr('d', `M ${a.startX},${a.startY} L ${a.midX},${a.midY} L${a.endX},${a.endY} `)
            .attr('class', 'edge section-edge-' + i.section + ' edge-depth-' + i.depth)
      }
    })
  }
  function nye(t, e, r, n) {
    e.add({
      group: 'nodes',
      data: { id: t.id.toString(), labelText: t.descr, height: t.height, width: t.width, level: n, nodeId: t.id, padding: t.padding, type: t.type },
      position: { x: t.x, y: t.y }
    }),
      t.children &&
        t.children.forEach(i => {
          nye(i, e, r, n + 1), e.add({ group: 'edges', data: { id: `${t.id}_${i.id}`, source: t.id, target: i.id, depth: n, section: i.section } })
        })
  }
  function ket(t, e) {
    return new Promise(r => {
      let n = Ge('body').append('div').attr('id', 'cy').attr('style', 'display:none'),
        i = sl({ container: document.getElementById('cy'), style: [{ selector: 'edge', style: { 'curve-style': 'bezier' } }] })
      n.remove(),
        nye(t, i, e, 0),
        i.nodes().forEach(function (a) {
          a.layoutDimensions = () => {
            let s = a.data()
            return { w: s.width, h: s.height }
          }
        }),
        i.layout({ name: 'cose-bilkent', quality: 'proof', styleEnabled: !1, animate: !1 }).run(),
        i.ready(a => {
          X.info('Ready', a), r(i)
        })
    })
  }
  function Eet(t, e) {
    e.nodes().map((r, n) => {
      let i = r.data()
      ;(i.x = r.position().x), (i.y = r.position().y), J1e(t, i)
      let a = t.getElementById(i.nodeId)
      X.info('id:', n, 'Position: (', r.position().x, ', ', r.position().y, ')', i),
        a.attr('transform', `translate(${r.position().x - i.width / 2}, ${r.position().y - i.height / 2})`),
        a.attr('attr', `apa-${n})`)
    })
  }
  var tye,
    Cet,
    iye,
    aye = N(() => {
      'use strict'
      oF()
      tye = Aa(Q1e(), 1)
      fr()
      Gt()
      yt()
      Vl()
      xi()
      eye()
      _a()
      sl.use(tye.default)
      o(rye, 'drawNodes')
      o(wet, 'drawEdges')
      o(nye, 'addNodes')
      o(ket, 'layoutMindmap')
      o(Eet, 'positionNodes')
      ;(Cet = o(async (t, e, r, n) => {
        X.debug(
          `Rendering mindmap diagram
` + t
        )
        let i = n.db,
          a = i.getMindmap()
        if (!a) return
        let s = me()
        s.htmlLabels = !1
        let l = Li(e),
          u = l.append('g')
        u.attr('class', 'mindmap-edges')
        let h = l.append('g')
        h.attr('class', 'mindmap-nodes'), await rye(i, h, a, -1, s)
        let f = await ket(a, s)
        wet(u, f), Eet(i, f), Lo(void 0, l, s.mindmap?.padding ?? or.mindmap.padding, s.mindmap?.useMaxWidth ?? or.mindmap.useMaxWidth)
      }, 'draw')),
        (iye = { draw: Cet })
    })
  var Aet,
    _et,
    sye,
    oye = N(() => {
      'use strict'
      Ks()
      ;(Aet = o(t => {
        let e = ''
        for (let r = 0; r < t.THEME_COLOR_LIMIT; r++)
          (t['lineColor' + r] = t['lineColor' + r] || t['cScaleInv' + r]),
            la(t['lineColor' + r]) ? (t['lineColor' + r] = Lt(t['lineColor' + r], 20)) : (t['lineColor' + r] = Ot(t['lineColor' + r], 20))
        for (let r = 0; r < t.THEME_COLOR_LIMIT; r++) {
          let n = '' + (17 - 3 * r)
          e += `
    .section-${r - 1} rect, .section-${r - 1} path, .section-${r - 1} circle, .section-${r - 1} polygon, .section-${r - 1} path  {
      fill: ${t['cScale' + r]};
    }
    .section-${r - 1} text {
     fill: ${t['cScaleLabel' + r]};
    }
    .node-icon-${r - 1} {
      font-size: 40px;
      color: ${t['cScaleLabel' + r]};
    }
    .section-edge-${r - 1}{
      stroke: ${t['cScale' + r]};
    }
    .edge-depth-${r - 1}{
      stroke-width: ${n};
    }
    .section-${r - 1} line {
      stroke: ${t['cScaleInv' + r]} ;
      stroke-width: 3;
    }

    .disabled, .disabled circle, .disabled text {
      fill: lightgray;
    }
    .disabled text {
      fill: #efefef;
    }
    `
        }
        return e
      }, 'genSections')),
        (_et = o(
          t => `
  .edge {
    stroke-width: 3;
  }
  ${Aet(t)}
  .section-root rect, .section-root path, .section-root circle, .section-root polygon  {
    fill: ${t.git0};
  }
  .section-root text {
    fill: ${t.gitBranchLabel0};
  }
  .icon-container {
    height:100%;
    display: flex;
    justify-content: center;
    align-items: center;
  }
  .edge {
    fill: none;
  }
  .mindmap-node-label {
    dy: 1em;
    alignment-baseline: middle;
    text-anchor: middle;
    dominant-baseline: middle;
    text-align: center;
  }
`,
          'getStyles'
        )),
        (sye = _et)
    })
  var lye = {}
  ur(lye, { diagram: () => Det })
  var Det,
    cye = N(() => {
      'use strict'
      B0e()
      F0e()
      aye()
      oye()
      Det = {
        get db() {
          return new p6()
        },
        renderer: iye,
        parser: P0e,
        styles: sye
      }
    })
  var dF,
    fye,
    dye = N(() => {
      'use strict'
      dF = (function () {
        var t = o(function (_, C, D, O) {
            for (D = D || {}, O = _.length; O--; D[_[O]] = C);
            return D
          }, 'o'),
          e = [1, 4],
          r = [1, 13],
          n = [1, 12],
          i = [1, 15],
          a = [1, 16],
          s = [1, 20],
          l = [1, 19],
          u = [6, 7, 8],
          h = [1, 26],
          f = [1, 24],
          d = [1, 25],
          p = [6, 7, 11],
          m = [1, 31],
          g = [6, 7, 11, 24],
          y = [1, 6, 13, 16, 17, 20, 23],
          v = [1, 35],
          x = [1, 36],
          b = [1, 6, 7, 11, 13, 16, 17, 20, 23],
          T = [1, 38],
          S = {
            trace: o(function () {}, 'trace'),
            yy: {},
            symbols_: {
              error: 2,
              start: 3,
              mindMap: 4,
              spaceLines: 5,
              SPACELINE: 6,
              NL: 7,
              KANBAN: 8,
              document: 9,
              stop: 10,
              EOF: 11,
              statement: 12,
              SPACELIST: 13,
              node: 14,
              shapeData: 15,
              ICON: 16,
              CLASS: 17,
              nodeWithId: 18,
              nodeWithoutId: 19,
              NODE_DSTART: 20,
              NODE_DESCR: 21,
              NODE_DEND: 22,
              NODE_ID: 23,
              SHAPE_DATA: 24,
              $accept: 0,
              $end: 1
            },
            terminals_: {
              2: 'error',
              6: 'SPACELINE',
              7: 'NL',
              8: 'KANBAN',
              11: 'EOF',
              13: 'SPACELIST',
              16: 'ICON',
              17: 'CLASS',
              20: 'NODE_DSTART',
              21: 'NODE_DESCR',
              22: 'NODE_DEND',
              23: 'NODE_ID',
              24: 'SHAPE_DATA'
            },
            productions_: [
              0,
              [3, 1],
              [3, 2],
              [5, 1],
              [5, 2],
              [5, 2],
              [4, 2],
              [4, 3],
              [10, 1],
              [10, 1],
              [10, 1],
              [10, 2],
              [10, 2],
              [9, 3],
              [9, 2],
              [12, 3],
              [12, 2],
              [12, 2],
              [12, 2],
              [12, 1],
              [12, 2],
              [12, 1],
              [12, 1],
              [12, 1],
              [12, 1],
              [14, 1],
              [14, 1],
              [19, 3],
              [18, 1],
              [18, 4],
              [15, 2],
              [15, 1]
            ],
            performAction: o(function (C, D, O, R, k, L, A) {
              var I = L.length - 1
              switch (k) {
                case 6:
                case 7:
                  return R
                case 8:
                  R.getLogger().trace('Stop NL ')
                  break
                case 9:
                  R.getLogger().trace('Stop EOF ')
                  break
                case 11:
                  R.getLogger().trace('Stop NL2 ')
                  break
                case 12:
                  R.getLogger().trace('Stop EOF2 ')
                  break
                case 15:
                  R.getLogger().info('Node: ', L[I - 1].id), R.addNode(L[I - 2].length, L[I - 1].id, L[I - 1].descr, L[I - 1].type, L[I])
                  break
                case 16:
                  R.getLogger().info('Node: ', L[I].id), R.addNode(L[I - 1].length, L[I].id, L[I].descr, L[I].type)
                  break
                case 17:
                  R.getLogger().trace('Icon: ', L[I]), R.decorateNode({ icon: L[I] })
                  break
                case 18:
                case 23:
                  R.decorateNode({ class: L[I] })
                  break
                case 19:
                  R.getLogger().trace('SPACELIST')
                  break
                case 20:
                  R.getLogger().trace('Node: ', L[I - 1].id), R.addNode(0, L[I - 1].id, L[I - 1].descr, L[I - 1].type, L[I])
                  break
                case 21:
                  R.getLogger().trace('Node: ', L[I].id), R.addNode(0, L[I].id, L[I].descr, L[I].type)
                  break
                case 22:
                  R.decorateNode({ icon: L[I] })
                  break
                case 27:
                  R.getLogger().trace('node found ..', L[I - 2]), (this.$ = { id: L[I - 1], descr: L[I - 1], type: R.getType(L[I - 2], L[I]) })
                  break
                case 28:
                  this.$ = { id: L[I], descr: L[I], type: 0 }
                  break
                case 29:
                  R.getLogger().trace('node found ..', L[I - 3]), (this.$ = { id: L[I - 3], descr: L[I - 1], type: R.getType(L[I - 2], L[I]) })
                  break
                case 30:
                  this.$ = L[I - 1] + L[I]
                  break
                case 31:
                  this.$ = L[I]
                  break
              }
            }, 'anonymous'),
            table: [
              { 3: 1, 4: 2, 5: 3, 6: [1, 5], 8: e },
              { 1: [3] },
              { 1: [2, 1] },
              { 4: 6, 6: [1, 7], 7: [1, 8], 8: e },
              { 6: r, 7: [1, 10], 9: 9, 12: 11, 13: n, 14: 14, 16: i, 17: a, 18: 17, 19: 18, 20: s, 23: l },
              t(u, [2, 3]),
              { 1: [2, 2] },
              t(u, [2, 4]),
              t(u, [2, 5]),
              { 1: [2, 6], 6: r, 12: 21, 13: n, 14: 14, 16: i, 17: a, 18: 17, 19: 18, 20: s, 23: l },
              { 6: r, 9: 22, 12: 11, 13: n, 14: 14, 16: i, 17: a, 18: 17, 19: 18, 20: s, 23: l },
              { 6: h, 7: f, 10: 23, 11: d },
              t(p, [2, 24], { 18: 17, 19: 18, 14: 27, 16: [1, 28], 17: [1, 29], 20: s, 23: l }),
              t(p, [2, 19]),
              t(p, [2, 21], { 15: 30, 24: m }),
              t(p, [2, 22]),
              t(p, [2, 23]),
              t(g, [2, 25]),
              t(g, [2, 26]),
              t(g, [2, 28], { 20: [1, 32] }),
              { 21: [1, 33] },
              { 6: h, 7: f, 10: 34, 11: d },
              { 1: [2, 7], 6: r, 12: 21, 13: n, 14: 14, 16: i, 17: a, 18: 17, 19: 18, 20: s, 23: l },
              t(y, [2, 14], { 7: v, 11: x }),
              t(b, [2, 8]),
              t(b, [2, 9]),
              t(b, [2, 10]),
              t(p, [2, 16], { 15: 37, 24: m }),
              t(p, [2, 17]),
              t(p, [2, 18]),
              t(p, [2, 20], { 24: T }),
              t(g, [2, 31]),
              { 21: [1, 39] },
              { 22: [1, 40] },
              t(y, [2, 13], { 7: v, 11: x }),
              t(b, [2, 11]),
              t(b, [2, 12]),
              t(p, [2, 15], { 24: T }),
              t(g, [2, 30]),
              { 22: [1, 41] },
              t(g, [2, 27]),
              t(g, [2, 29])
            ],
            defaultActions: { 2: [2, 1], 6: [2, 2] },
            parseError: o(function (C, D) {
              if (D.recoverable) this.trace(C)
              else {
                var O = new Error(C)
                throw ((O.hash = D), O)
              }
            }, 'parseError'),
            parse: o(function (C) {
              var D = this,
                O = [0],
                R = [],
                k = [null],
                L = [],
                A = this.table,
                I = '',
                M = 0,
                P = 0,
                B = 0,
                F = 2,
                z = 1,
                $ = L.slice.call(arguments, 1),
                U = Object.create(this.lexer),
                K = { yy: {} }
              for (var ee in this.yy) Object.prototype.hasOwnProperty.call(this.yy, ee) && (K.yy[ee] = this.yy[ee])
              U.setInput(C, K.yy), (K.yy.lexer = U), (K.yy.parser = this), typeof U.yylloc > 'u' && (U.yylloc = {})
              var Y = U.yylloc
              L.push(Y)
              var ce = U.options && U.options.ranges
              typeof K.yy.parseError == 'function' ? (this.parseError = K.yy.parseError) : (this.parseError = Object.getPrototypeOf(this).parseError)
              function Z(Be) {
                ;(O.length = O.length - 2 * Be), (k.length = k.length - Be), (L.length = L.length - Be)
              }
              o(Z, 'popStack')
              function ue() {
                var Be
                return (Be = R.pop() || U.lex() || z), typeof Be != 'number' && (Be instanceof Array && ((R = Be), (Be = R.pop())), (Be = D.symbols_[Be] || Be)), Be
              }
              o(ue, 'lex')
              for (var Q, j, ne, te, he, le, J = {}, Se, se, ae, Oe; ; ) {
                if (
                  ((ne = O[O.length - 1]),
                  this.defaultActions[ne] ? (te = this.defaultActions[ne]) : ((Q === null || typeof Q > 'u') && (Q = ue()), (te = A[ne] && A[ne][Q])),
                  typeof te > 'u' || !te.length || !te[0])
                ) {
                  var ye = ''
                  Oe = []
                  for (Se in A[ne]) this.terminals_[Se] && Se > F && Oe.push("'" + this.terminals_[Se] + "'")
                  U.showPosition
                    ? (ye =
                        'Parse error on line ' +
                        (M + 1) +
                        `:
` +
                        U.showPosition() +
                        `
Expecting ` +
                        Oe.join(', ') +
                        ", got '" +
                        (this.terminals_[Q] || Q) +
                        "'")
                    : (ye = 'Parse error on line ' + (M + 1) + ': Unexpected ' + (Q == z ? 'end of input' : "'" + (this.terminals_[Q] || Q) + "'")),
                    this.parseError(ye, { text: U.match, token: this.terminals_[Q] || Q, line: U.yylineno, loc: Y, expected: Oe })
                }
                if (te[0] instanceof Array && te.length > 1) throw new Error('Parse Error: multiple actions possible at state: ' + ne + ', token: ' + Q)
                switch (te[0]) {
                  case 1:
                    O.push(Q),
                      k.push(U.yytext),
                      L.push(U.yylloc),
                      O.push(te[1]),
                      (Q = null),
                      j ? ((Q = j), (j = null)) : ((P = U.yyleng), (I = U.yytext), (M = U.yylineno), (Y = U.yylloc), B > 0 && B--)
                    break
                  case 2:
                    if (
                      ((se = this.productions_[te[1]][1]),
                      (J.$ = k[k.length - se]),
                      (J._$ = {
                        first_line: L[L.length - (se || 1)].first_line,
                        last_line: L[L.length - 1].last_line,
                        first_column: L[L.length - (se || 1)].first_column,
                        last_column: L[L.length - 1].last_column
                      }),
                      ce && (J._$.range = [L[L.length - (se || 1)].range[0], L[L.length - 1].range[1]]),
                      (le = this.performAction.apply(J, [I, P, M, K.yy, te[1], k, L].concat($))),
                      typeof le < 'u')
                    )
                      return le
                    se && ((O = O.slice(0, -1 * se * 2)), (k = k.slice(0, -1 * se)), (L = L.slice(0, -1 * se))),
                      O.push(this.productions_[te[1]][0]),
                      k.push(J.$),
                      L.push(J._$),
                      (ae = A[O[O.length - 2]][O[O.length - 1]]),
                      O.push(ae)
                    break
                  case 3:
                    return !0
                }
              }
              return !0
            }, 'parse')
          },
          w = (function () {
            var _ = {
              EOF: 1,
              parseError: o(function (D, O) {
                if (this.yy.parser) this.yy.parser.parseError(D, O)
                else throw new Error(D)
              }, 'parseError'),
              setInput: o(function (C, D) {
                return (
                  (this.yy = D || this.yy || {}),
                  (this._input = C),
                  (this._more = this._backtrack = this.done = !1),
                  (this.yylineno = this.yyleng = 0),
                  (this.yytext = this.matched = this.match = ''),
                  (this.conditionStack = ['INITIAL']),
                  (this.yylloc = { first_line: 1, first_column: 0, last_line: 1, last_column: 0 }),
                  this.options.ranges && (this.yylloc.range = [0, 0]),
                  (this.offset = 0),
                  this
                )
              }, 'setInput'),
              input: o(function () {
                var C = this._input[0]
                ;(this.yytext += C), this.yyleng++, this.offset++, (this.match += C), (this.matched += C)
                var D = C.match(/(?:\r\n?|\n).*/g)
                return (
                  D ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++, this.options.ranges && this.yylloc.range[1]++, (this._input = this._input.slice(1)), C
                )
              }, 'input'),
              unput: o(function (C) {
                var D = C.length,
                  O = C.split(/(?:\r\n?|\n)/g)
                ;(this._input = C + this._input), (this.yytext = this.yytext.substr(0, this.yytext.length - D)), (this.offset -= D)
                var R = this.match.split(/(?:\r\n?|\n)/g)
                ;(this.match = this.match.substr(0, this.match.length - 1)),
                  (this.matched = this.matched.substr(0, this.matched.length - 1)),
                  O.length - 1 && (this.yylineno -= O.length - 1)
                var k = this.yylloc.range
                return (
                  (this.yylloc = {
                    first_line: this.yylloc.first_line,
                    last_line: this.yylineno + 1,
                    first_column: this.yylloc.first_column,
                    last_column: O ? (O.length === R.length ? this.yylloc.first_column : 0) + R[R.length - O.length].length - O[0].length : this.yylloc.first_column - D
                  }),
                  this.options.ranges && (this.yylloc.range = [k[0], k[0] + this.yyleng - D]),
                  (this.yyleng = this.yytext.length),
                  this
                )
              }, 'unput'),
              more: o(function () {
                return (this._more = !0), this
              }, 'more'),
              reject: o(function () {
                if (this.options.backtrack_lexer) this._backtrack = !0
                else
                  return this.parseError(
                    'Lexical error on line ' +
                      (this.yylineno + 1) +
                      `. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
` +
                      this.showPosition(),
                    { text: '', token: null, line: this.yylineno }
                  )
                return this
              }, 'reject'),
              less: o(function (C) {
                this.unput(this.match.slice(C))
              }, 'less'),
              pastInput: o(function () {
                var C = this.matched.substr(0, this.matched.length - this.match.length)
                return (C.length > 20 ? '...' : '') + C.substr(-20).replace(/\n/g, '')
              }, 'pastInput'),
              upcomingInput: o(function () {
                var C = this.match
                return C.length < 20 && (C += this._input.substr(0, 20 - C.length)), (C.substr(0, 20) + (C.length > 20 ? '...' : '')).replace(/\n/g, '')
              }, 'upcomingInput'),
              showPosition: o(function () {
                var C = this.pastInput(),
                  D = new Array(C.length + 1).join('-')
                return (
                  C +
                  this.upcomingInput() +
                  `
` +
                  D +
                  '^'
                )
              }, 'showPosition'),
              test_match: o(function (C, D) {
                var O, R, k
                if (
                  (this.options.backtrack_lexer &&
                    ((k = {
                      yylineno: this.yylineno,
                      yylloc: { first_line: this.yylloc.first_line, last_line: this.last_line, first_column: this.yylloc.first_column, last_column: this.yylloc.last_column },
                      yytext: this.yytext,
                      match: this.match,
                      matches: this.matches,
                      matched: this.matched,
                      yyleng: this.yyleng,
                      offset: this.offset,
                      _more: this._more,
                      _input: this._input,
                      yy: this.yy,
                      conditionStack: this.conditionStack.slice(0),
                      done: this.done
                    }),
                    this.options.ranges && (k.yylloc.range = this.yylloc.range.slice(0))),
                  (R = C[0].match(/(?:\r\n?|\n).*/g)),
                  R && (this.yylineno += R.length),
                  (this.yylloc = {
                    first_line: this.yylloc.last_line,
                    last_line: this.yylineno + 1,
                    first_column: this.yylloc.last_column,
                    last_column: R ? R[R.length - 1].length - R[R.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + C[0].length
                  }),
                  (this.yytext += C[0]),
                  (this.match += C[0]),
                  (this.matches = C),
                  (this.yyleng = this.yytext.length),
                  this.options.ranges && (this.yylloc.range = [this.offset, (this.offset += this.yyleng)]),
                  (this._more = !1),
                  (this._backtrack = !1),
                  (this._input = this._input.slice(C[0].length)),
                  (this.matched += C[0]),
                  (O = this.performAction.call(this, this.yy, this, D, this.conditionStack[this.conditionStack.length - 1])),
                  this.done && this._input && (this.done = !1),
                  O)
                )
                  return O
                if (this._backtrack) {
                  for (var L in k) this[L] = k[L]
                  return !1
                }
                return !1
              }, 'test_match'),
              next: o(function () {
                if (this.done) return this.EOF
                this._input || (this.done = !0)
                var C, D, O, R
                this._more || ((this.yytext = ''), (this.match = ''))
                for (var k = this._currentRules(), L = 0; L < k.length; L++)
                  if (((O = this._input.match(this.rules[k[L]])), O && (!D || O[0].length > D[0].length))) {
                    if (((D = O), (R = L), this.options.backtrack_lexer)) {
                      if (((C = this.test_match(O, k[L])), C !== !1)) return C
                      if (this._backtrack) {
                        D = !1
                        continue
                      } else return !1
                    } else if (!this.options.flex) break
                  }
                return D
                  ? ((C = this.test_match(D, k[R])), C !== !1 ? C : !1)
                  : this._input === ''
                    ? this.EOF
                    : this.parseError(
                        'Lexical error on line ' +
                          (this.yylineno + 1) +
                          `. Unrecognized text.
` +
                          this.showPosition(),
                        { text: '', token: null, line: this.yylineno }
                      )
              }, 'next'),
              lex: o(function () {
                var D = this.next()
                return D || this.lex()
              }, 'lex'),
              begin: o(function (D) {
                this.conditionStack.push(D)
              }, 'begin'),
              popState: o(function () {
                var D = this.conditionStack.length - 1
                return D > 0 ? this.conditionStack.pop() : this.conditionStack[0]
              }, 'popState'),
              _currentRules: o(function () {
                return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]
                  ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
                  : this.conditions.INITIAL.rules
              }, '_currentRules'),
              topState: o(function (D) {
                return (D = this.conditionStack.length - 1 - Math.abs(D || 0)), D >= 0 ? this.conditionStack[D] : 'INITIAL'
              }, 'topState'),
              pushState: o(function (D) {
                this.begin(D)
              }, 'pushState'),
              stateStackSize: o(function () {
                return this.conditionStack.length
              }, 'stateStackSize'),
              options: { 'case-insensitive': !0 },
              performAction: o(function (D, O, R, k) {
                var L = k
                switch (R) {
                  case 0:
                    return this.pushState('shapeData'), (O.yytext = ''), 24
                    break
                  case 1:
                    return this.pushState('shapeDataStr'), 24
                    break
                  case 2:
                    return this.popState(), 24
                    break
                  case 3:
                    let A = /\n\s*/g
                    return (O.yytext = O.yytext.replace(A, '<br/>')), 24
                    break
                  case 4:
                    return 24
                  case 5:
                    this.popState()
                    break
                  case 6:
                    return D.getLogger().trace('Found comment', O.yytext), 6
                    break
                  case 7:
                    return 8
                  case 8:
                    this.begin('CLASS')
                    break
                  case 9:
                    return this.popState(), 17
                    break
                  case 10:
                    this.popState()
                    break
                  case 11:
                    D.getLogger().trace('Begin icon'), this.begin('ICON')
                    break
                  case 12:
                    return D.getLogger().trace('SPACELINE'), 6
                    break
                  case 13:
                    return 7
                  case 14:
                    return 16
                  case 15:
                    D.getLogger().trace('end icon'), this.popState()
                    break
                  case 16:
                    return D.getLogger().trace('Exploding node'), this.begin('NODE'), 20
                    break
                  case 17:
                    return D.getLogger().trace('Cloud'), this.begin('NODE'), 20
                    break
                  case 18:
                    return D.getLogger().trace('Explosion Bang'), this.begin('NODE'), 20
                    break
                  case 19:
                    return D.getLogger().trace('Cloud Bang'), this.begin('NODE'), 20
                    break
                  case 20:
                    return this.begin('NODE'), 20
                    break
                  case 21:
                    return this.begin('NODE'), 20
                    break
                  case 22:
                    return this.begin('NODE'), 20
                    break
                  case 23:
                    return this.begin('NODE'), 20
                    break
                  case 24:
                    return 13
                  case 25:
                    return 23
                  case 26:
                    return 11
                  case 27:
                    this.begin('NSTR2')
                    break
                  case 28:
                    return 'NODE_DESCR'
                  case 29:
                    this.popState()
                    break
                  case 30:
                    D.getLogger().trace('Starting NSTR'), this.begin('NSTR')
                    break
                  case 31:
                    return D.getLogger().trace('description:', O.yytext), 'NODE_DESCR'
                    break
                  case 32:
                    this.popState()
                    break
                  case 33:
                    return this.popState(), D.getLogger().trace('node end ))'), 'NODE_DEND'
                    break
                  case 34:
                    return this.popState(), D.getLogger().trace('node end )'), 'NODE_DEND'
                    break
                  case 35:
                    return this.popState(), D.getLogger().trace('node end ...', O.yytext), 'NODE_DEND'
                    break
                  case 36:
                    return this.popState(), D.getLogger().trace('node end (('), 'NODE_DEND'
                    break
                  case 37:
                    return this.popState(), D.getLogger().trace('node end (-'), 'NODE_DEND'
                    break
                  case 38:
                    return this.popState(), D.getLogger().trace('node end (-'), 'NODE_DEND'
                    break
                  case 39:
                    return this.popState(), D.getLogger().trace('node end (('), 'NODE_DEND'
                    break
                  case 40:
                    return this.popState(), D.getLogger().trace('node end (('), 'NODE_DEND'
                    break
                  case 41:
                    return D.getLogger().trace('Long description:', O.yytext), 21
                    break
                  case 42:
                    return D.getLogger().trace('Long description:', O.yytext), 21
                    break
                }
              }, 'anonymous'),
              rules: [
                /^(?:@\{)/i,
                /^(?:["])/i,
                /^(?:["])/i,
                /^(?:[^\"]+)/i,
                /^(?:[^}^"]+)/i,
                /^(?:\})/i,
                /^(?:\s*%%.*)/i,
                /^(?:kanban\b)/i,
                /^(?::::)/i,
                /^(?:.+)/i,
                /^(?:\n)/i,
                /^(?:::icon\()/i,
                /^(?:[\s]+[\n])/i,
                /^(?:[\n]+)/i,
                /^(?:[^\)]+)/i,
                /^(?:\))/i,
                /^(?:-\))/i,
                /^(?:\(-)/i,
                /^(?:\)\))/i,
                /^(?:\))/i,
                /^(?:\(\()/i,
                /^(?:\{\{)/i,
                /^(?:\()/i,
                /^(?:\[)/i,
                /^(?:[\s]+)/i,
                /^(?:[^\(\[\n\)\{\}@]+)/i,
                /^(?:$)/i,
                /^(?:["][`])/i,
                /^(?:[^`"]+)/i,
                /^(?:[`]["])/i,
                /^(?:["])/i,
                /^(?:[^"]+)/i,
                /^(?:["])/i,
                /^(?:[\)]\))/i,
                /^(?:[\)])/i,
                /^(?:[\]])/i,
                /^(?:\}\})/i,
                /^(?:\(-)/i,
                /^(?:-\))/i,
                /^(?:\(\()/i,
                /^(?:\()/i,
                /^(?:[^\)\]\(\}]+)/i,
                /^(?:.+(?!\(\())/i
              ],
              conditions: {
                shapeDataEndBracket: { rules: [], inclusive: !1 },
                shapeDataStr: { rules: [2, 3], inclusive: !1 },
                shapeData: { rules: [1, 4, 5], inclusive: !1 },
                CLASS: { rules: [9, 10], inclusive: !1 },
                ICON: { rules: [14, 15], inclusive: !1 },
                NSTR2: { rules: [28, 29], inclusive: !1 },
                NSTR: { rules: [31, 32], inclusive: !1 },
                NODE: { rules: [27, 30, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42], inclusive: !1 },
                INITIAL: { rules: [0, 6, 7, 8, 11, 12, 13, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], inclusive: !0 }
              }
            }
            return _
          })()
        S.lexer = w
        function E() {
          this.yy = {}
        }
        return o(E, 'Parser'), (E.prototype = S), (S.Parser = E), new E()
      })()
      dF.parser = dF
      fye = dF
    })
  var ol,
    mF,
    pF,
    gF,
    Met,
    Iet,
    pye,
    Oet,
    Pet,
    Xi,
    Bet,
    Fet,
    $et,
    zet,
    Get,
    Vet,
    Uet,
    mye,
    gye = N(() => {
      'use strict'
      Gt()
      pr()
      yt()
      _a()
      PT()
      ;(ol = []),
        (mF = []),
        (pF = 0),
        (gF = {}),
        (Met = o(() => {
          ;(ol = []), (mF = []), (pF = 0), (gF = {})
        }, 'clear')),
        (Iet = o(t => {
          if (ol.length === 0) return null
          let e = ol[0].level,
            r = null
          for (let n = ol.length - 1; n >= 0; n--)
            if ((ol[n].level === e && !r && (r = ol[n]), ol[n].level < e)) throw new Error('Items without section detected, found section ("' + ol[n].label + '")')
          return t === r?.level ? null : r
        }, 'getSection')),
        (pye = o(function () {
          return mF
        }, 'getSections')),
        (Oet = o(function () {
          let t = [],
            e = [],
            r = pye(),
            n = me()
          for (let i of r) {
            let a = { id: i.id, label: wr(i.label ?? '', n), isGroup: !0, ticket: i.ticket, shape: 'kanbanSection', level: i.level, look: n.look }
            e.push(a)
            let s = ol.filter(l => l.parentId === i.id)
            for (let l of s) {
              let u = {
                id: l.id,
                parentId: i.id,
                label: wr(l.label ?? '', n),
                isGroup: !1,
                ticket: l?.ticket,
                priority: l?.priority,
                assigned: l?.assigned,
                icon: l?.icon,
                shape: 'kanbanItem',
                level: l.level,
                rx: 5,
                ry: 5,
                cssStyles: ['text-align: left']
              }
              e.push(u)
            }
          }
          return { nodes: e, edges: t, other: {}, config: me() }
        }, 'getData')),
        (Pet = o((t, e, r, n, i) => {
          let a = me(),
            s = a.mindmap?.padding ?? or.mindmap.padding
          switch (n) {
            case Xi.ROUNDED_RECT:
            case Xi.RECT:
            case Xi.HEXAGON:
              s *= 2
          }
          let l = { id: wr(e, a) || 'kbn' + pF++, level: t, label: wr(r, a), width: a.mindmap?.maxNodeWidth ?? or.mindmap.maxNodeWidth, padding: s, isGroup: !1 }
          if (i !== void 0) {
            let h
            i.includes(`
`)
              ? (h =
                  i +
                  `
`)
              : (h =
                  `{
` +
                  i +
                  `
}`)
            let f = Tm(h, { schema: bm })
            if (f.shape && (f.shape !== f.shape.toLowerCase() || f.shape.includes('_'))) throw new Error(`No such shape: ${f.shape}. Shape names should be lowercase.`)
            f?.shape && f.shape === 'kanbanItem' && (l.shape = f?.shape),
              f?.label && (l.label = f?.label),
              f?.icon && (l.icon = f?.icon.toString()),
              f?.assigned && (l.assigned = f?.assigned.toString()),
              f?.ticket && (l.ticket = f?.ticket.toString()),
              f?.priority && (l.priority = f?.priority)
          }
          let u = Iet(t)
          u ? (l.parentId = u.id || 'kbn' + pF++) : mF.push(l), ol.push(l)
        }, 'addNode')),
        (Xi = { DEFAULT: 0, NO_BORDER: 0, ROUNDED_RECT: 1, RECT: 2, CIRCLE: 3, CLOUD: 4, BANG: 5, HEXAGON: 6 }),
        (Bet = o((t, e) => {
          switch ((X.debug('In get type', t, e), t)) {
            case '[':
              return Xi.RECT
            case '(':
              return e === ')' ? Xi.ROUNDED_RECT : Xi.CLOUD
            case '((':
              return Xi.CIRCLE
            case ')':
              return Xi.CLOUD
            case '))':
              return Xi.BANG
            case '{{':
              return Xi.HEXAGON
            default:
              return Xi.DEFAULT
          }
        }, 'getType')),
        (Fet = o((t, e) => {
          gF[t] = e
        }, 'setElementForId')),
        ($et = o(t => {
          if (!t) return
          let e = me(),
            r = ol[ol.length - 1]
          t.icon && (r.icon = wr(t.icon, e)), t.class && (r.cssClasses = wr(t.class, e))
        }, 'decorateNode')),
        (zet = o(t => {
          switch (t) {
            case Xi.DEFAULT:
              return 'no-border'
            case Xi.RECT:
              return 'rect'
            case Xi.ROUNDED_RECT:
              return 'rounded-rect'
            case Xi.CIRCLE:
              return 'circle'
            case Xi.CLOUD:
              return 'cloud'
            case Xi.BANG:
              return 'bang'
            case Xi.HEXAGON:
              return 'hexgon'
            default:
              return 'no-border'
          }
        }, 'type2Str')),
        (Get = o(() => X, 'getLogger')),
        (Vet = o(t => gF[t], 'getElementById')),
        (Uet = {
          clear: Met,
          addNode: Pet,
          getSections: pye,
          getData: Oet,
          nodeType: Xi,
          getType: Bet,
          setElementForId: Fet,
          decorateNode: $et,
          type2Str: zet,
          getLogger: Get,
          getElementById: Vet
        }),
        (mye = Uet)
    })
  var Het,
    yye,
    vye = N(() => {
      'use strict'
      Gt()
      yt()
      Vl()
      xi()
      _a()
      aw()
      mw()
      ;(Het = o(async (t, e, r, n) => {
        X.debug(
          `Rendering kanban diagram
` + t
        )
        let a = n.db.getData(),
          s = me()
        s.htmlLabels = !1
        let l = Li(e),
          u = l.append('g')
        u.attr('class', 'sections')
        let h = l.append('g')
        h.attr('class', 'items')
        let f = a.nodes.filter(v => v.isGroup),
          d = 0,
          p = 10,
          m = [],
          g = 25
        for (let v of f) {
          let x = s?.kanban?.sectionWidth || 200
          ;(d = d + 1), (v.x = x * d + ((d - 1) * p) / 2), (v.width = x), (v.y = 0), (v.height = x * 3), (v.rx = 5), (v.ry = 5), (v.cssClasses = v.cssClasses + ' section-' + d)
          let b = await Cm(u, v)
          ;(g = Math.max(g, b?.labelBBox?.height)), m.push(b)
        }
        let y = 0
        for (let v of f) {
          let x = m[y]
          y = y + 1
          let b = s?.kanban?.sectionWidth || 200,
            T = (-b * 3) / 2 + g,
            S = T,
            w = a.nodes.filter(C => C.parentId === v.id)
          for (let C of w) {
            if (C.isGroup) throw new Error('Groups within groups are not allowed in Kanban diagrams')
            ;(C.x = v.x), (C.width = b - 1.5 * p)
            let O = (await Am(h, C, { config: s })).node().getBBox()
            ;(C.y = S + O.height / 2), await M2(C), (S = C.y + O.height / 2 + p / 2)
          }
          let E = x.cluster.select('rect'),
            _ = Math.max(S - T + 3 * p, 50) + (g - 25)
          E.attr('height', _)
        }
        Lo(void 0, l, s.mindmap?.padding ?? or.kanban.padding, s.mindmap?.useMaxWidth ?? or.kanban.useMaxWidth)
      }, 'draw')),
        (yye = { draw: Het })
    })
  var Wet,
    qet,
    xye,
    bye = N(() => {
      'use strict'
      Ks()
      Xm()
      ;(Wet = o(t => {
        let e = ''
        for (let n = 0; n < t.THEME_COLOR_LIMIT; n++)
          (t['lineColor' + n] = t['lineColor' + n] || t['cScaleInv' + n]),
            la(t['lineColor' + n]) ? (t['lineColor' + n] = Lt(t['lineColor' + n], 20)) : (t['lineColor' + n] = Ot(t['lineColor' + n], 20))
        let r = o((n, i) => (t.darkMode ? Ot(n, i) : Lt(n, i)), 'adjuster')
        for (let n = 0; n < t.THEME_COLOR_LIMIT; n++) {
          let i = '' + (17 - 3 * n)
          e += `
    .section-${n - 1} rect, .section-${n - 1} path, .section-${n - 1} circle, .section-${n - 1} polygon, .section-${n - 1} path  {
      fill: ${r(t['cScale' + n], 10)};
      stroke: ${r(t['cScale' + n], 10)};

    }
    .section-${n - 1} text {
     fill: ${t['cScaleLabel' + n]};
    }
    .node-icon-${n - 1} {
      font-size: 40px;
      color: ${t['cScaleLabel' + n]};
    }
    .section-edge-${n - 1}{
      stroke: ${t['cScale' + n]};
    }
    .edge-depth-${n - 1}{
      stroke-width: ${i};
    }
    .section-${n - 1} line {
      stroke: ${t['cScaleInv' + n]} ;
      stroke-width: 3;
    }

    .disabled, .disabled circle, .disabled text {
      fill: lightgray;
    }
    .disabled text {
      fill: #efefef;
    }

  .node rect,
  .node circle,
  .node ellipse,
  .node polygon,
  .node path {
    fill: ${t.background};
    stroke: ${t.nodeBorder};
    stroke-width: 1px;
  }

  .kanban-ticket-link {
    fill: ${t.background};
    stroke: ${t.nodeBorder};
    text-decoration: underline;
  }
    `
        }
        return e
      }, 'genSections')),
        (qet = o(
          t => `
  .edge {
    stroke-width: 3;
  }
  ${Wet(t)}
  .section-root rect, .section-root path, .section-root circle, .section-root polygon  {
    fill: ${t.git0};
  }
  .section-root text {
    fill: ${t.gitBranchLabel0};
  }
  .icon-container {
    height:100%;
    display: flex;
    justify-content: center;
    align-items: center;
  }
  .edge {
    fill: none;
  }
  .cluster-label, .label {
    color: ${t.textColor};
    fill: ${t.textColor};
    }
  .kanban-label {
    dy: 1em;
    alignment-baseline: middle;
    text-anchor: middle;
    dominant-baseline: middle;
    text-align: center;
  }
    ${Nc()}
`,
          'getStyles'
        )),
        (xye = qet)
    })
  var Tye = {}
  ur(Tye, { diagram: () => Yet })
  var Yet,
    wye = N(() => {
      'use strict'
      dye()
      gye()
      vye()
      bye()
      Yet = { db: mye, renderer: yye, parser: fye, styles: xye }
    })
  var yF,
    E4,
    Sye = N(() => {
      'use strict'
      yF = (function () {
        var t = o(function (l, u, h, f) {
            for (h = h || {}, f = l.length; f--; h[l[f]] = u);
            return h
          }, 'o'),
          e = [1, 9],
          r = [1, 10],
          n = [1, 5, 10, 12],
          i = {
            trace: o(function () {}, 'trace'),
            yy: {},
            symbols_: {
              error: 2,
              start: 3,
              SANKEY: 4,
              NEWLINE: 5,
              csv: 6,
              opt_eof: 7,
              record: 8,
              csv_tail: 9,
              EOF: 10,
              'field[source]': 11,
              COMMA: 12,
              'field[target]': 13,
              'field[value]': 14,
              field: 15,
              escaped: 16,
              non_escaped: 17,
              DQUOTE: 18,
              ESCAPED_TEXT: 19,
              NON_ESCAPED_TEXT: 20,
              $accept: 0,
              $end: 1
            },
            terminals_: {
              2: 'error',
              4: 'SANKEY',
              5: 'NEWLINE',
              10: 'EOF',
              11: 'field[source]',
              12: 'COMMA',
              13: 'field[target]',
              14: 'field[value]',
              18: 'DQUOTE',
              19: 'ESCAPED_TEXT',
              20: 'NON_ESCAPED_TEXT'
            },
            productions_: [0, [3, 4], [6, 2], [9, 2], [9, 0], [7, 1], [7, 0], [8, 5], [15, 1], [15, 1], [16, 3], [17, 1]],
            performAction: o(function (u, h, f, d, p, m, g) {
              var y = m.length - 1
              switch (p) {
                case 7:
                  let v = d.findOrCreateNode(m[y - 4].trim().replaceAll('""', '"')),
                    x = d.findOrCreateNode(m[y - 2].trim().replaceAll('""', '"')),
                    b = parseFloat(m[y].trim())
                  d.addLink(v, x, b)
                  break
                case 8:
                case 9:
                case 11:
                  this.$ = m[y]
                  break
                case 10:
                  this.$ = m[y - 1]
                  break
              }
            }, 'anonymous'),
            table: [
              { 3: 1, 4: [1, 2] },
              { 1: [3] },
              { 5: [1, 3] },
              { 6: 4, 8: 5, 15: 6, 16: 7, 17: 8, 18: e, 20: r },
              { 1: [2, 6], 7: 11, 10: [1, 12] },
              t(r, [2, 4], { 9: 13, 5: [1, 14] }),
              { 12: [1, 15] },
              t(n, [2, 8]),
              t(n, [2, 9]),
              { 19: [1, 16] },
              t(n, [2, 11]),
              { 1: [2, 1] },
              { 1: [2, 5] },
              t(r, [2, 2]),
              { 6: 17, 8: 5, 15: 6, 16: 7, 17: 8, 18: e, 20: r },
              { 15: 18, 16: 7, 17: 8, 18: e, 20: r },
              { 18: [1, 19] },
              t(r, [2, 3]),
              { 12: [1, 20] },
              t(n, [2, 10]),
              { 15: 21, 16: 7, 17: 8, 18: e, 20: r },
              t([1, 5, 10], [2, 7])
            ],
            defaultActions: { 11: [2, 1], 12: [2, 5] },
            parseError: o(function (u, h) {
              if (h.recoverable) this.trace(u)
              else {
                var f = new Error(u)
                throw ((f.hash = h), f)
              }
            }, 'parseError'),
            parse: o(function (u) {
              var h = this,
                f = [0],
                d = [],
                p = [null],
                m = [],
                g = this.table,
                y = '',
                v = 0,
                x = 0,
                b = 0,
                T = 2,
                S = 1,
                w = m.slice.call(arguments, 1),
                E = Object.create(this.lexer),
                _ = { yy: {} }
              for (var C in this.yy) Object.prototype.hasOwnProperty.call(this.yy, C) && (_.yy[C] = this.yy[C])
              E.setInput(u, _.yy), (_.yy.lexer = E), (_.yy.parser = this), typeof E.yylloc > 'u' && (E.yylloc = {})
              var D = E.yylloc
              m.push(D)
              var O = E.options && E.options.ranges
              typeof _.yy.parseError == 'function' ? (this.parseError = _.yy.parseError) : (this.parseError = Object.getPrototypeOf(this).parseError)
              function R(Y) {
                ;(f.length = f.length - 2 * Y), (p.length = p.length - Y), (m.length = m.length - Y)
              }
              o(R, 'popStack')
              function k() {
                var Y
                return (Y = d.pop() || E.lex() || S), typeof Y != 'number' && (Y instanceof Array && ((d = Y), (Y = d.pop())), (Y = h.symbols_[Y] || Y)), Y
              }
              o(k, 'lex')
              for (var L, A, I, M, P, B, F = {}, z, $, U, K; ; ) {
                if (
                  ((I = f[f.length - 1]),
                  this.defaultActions[I] ? (M = this.defaultActions[I]) : ((L === null || typeof L > 'u') && (L = k()), (M = g[I] && g[I][L])),
                  typeof M > 'u' || !M.length || !M[0])
                ) {
                  var ee = ''
                  K = []
                  for (z in g[I]) this.terminals_[z] && z > T && K.push("'" + this.terminals_[z] + "'")
                  E.showPosition
                    ? (ee =
                        'Parse error on line ' +
                        (v + 1) +
                        `:
` +
                        E.showPosition() +
                        `
Expecting ` +
                        K.join(', ') +
                        ", got '" +
                        (this.terminals_[L] || L) +
                        "'")
                    : (ee = 'Parse error on line ' + (v + 1) + ': Unexpected ' + (L == S ? 'end of input' : "'" + (this.terminals_[L] || L) + "'")),
                    this.parseError(ee, { text: E.match, token: this.terminals_[L] || L, line: E.yylineno, loc: D, expected: K })
                }
                if (M[0] instanceof Array && M.length > 1) throw new Error('Parse Error: multiple actions possible at state: ' + I + ', token: ' + L)
                switch (M[0]) {
                  case 1:
                    f.push(L),
                      p.push(E.yytext),
                      m.push(E.yylloc),
                      f.push(M[1]),
                      (L = null),
                      A ? ((L = A), (A = null)) : ((x = E.yyleng), (y = E.yytext), (v = E.yylineno), (D = E.yylloc), b > 0 && b--)
                    break
                  case 2:
                    if (
                      (($ = this.productions_[M[1]][1]),
                      (F.$ = p[p.length - $]),
                      (F._$ = {
                        first_line: m[m.length - ($ || 1)].first_line,
                        last_line: m[m.length - 1].last_line,
                        first_column: m[m.length - ($ || 1)].first_column,
                        last_column: m[m.length - 1].last_column
                      }),
                      O && (F._$.range = [m[m.length - ($ || 1)].range[0], m[m.length - 1].range[1]]),
                      (B = this.performAction.apply(F, [y, x, v, _.yy, M[1], p, m].concat(w))),
                      typeof B < 'u')
                    )
                      return B
                    $ && ((f = f.slice(0, -1 * $ * 2)), (p = p.slice(0, -1 * $)), (m = m.slice(0, -1 * $))),
                      f.push(this.productions_[M[1]][0]),
                      p.push(F.$),
                      m.push(F._$),
                      (U = g[f[f.length - 2]][f[f.length - 1]]),
                      f.push(U)
                    break
                  case 3:
                    return !0
                }
              }
              return !0
            }, 'parse')
          },
          a = (function () {
            var l = {
              EOF: 1,
              parseError: o(function (h, f) {
                if (this.yy.parser) this.yy.parser.parseError(h, f)
                else throw new Error(h)
              }, 'parseError'),
              setInput: o(function (u, h) {
                return (
                  (this.yy = h || this.yy || {}),
                  (this._input = u),
                  (this._more = this._backtrack = this.done = !1),
                  (this.yylineno = this.yyleng = 0),
                  (this.yytext = this.matched = this.match = ''),
                  (this.conditionStack = ['INITIAL']),
                  (this.yylloc = { first_line: 1, first_column: 0, last_line: 1, last_column: 0 }),
                  this.options.ranges && (this.yylloc.range = [0, 0]),
                  (this.offset = 0),
                  this
                )
              }, 'setInput'),
              input: o(function () {
                var u = this._input[0]
                ;(this.yytext += u), this.yyleng++, this.offset++, (this.match += u), (this.matched += u)
                var h = u.match(/(?:\r\n?|\n).*/g)
                return (
                  h ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++, this.options.ranges && this.yylloc.range[1]++, (this._input = this._input.slice(1)), u
                )
              }, 'input'),
              unput: o(function (u) {
                var h = u.length,
                  f = u.split(/(?:\r\n?|\n)/g)
                ;(this._input = u + this._input), (this.yytext = this.yytext.substr(0, this.yytext.length - h)), (this.offset -= h)
                var d = this.match.split(/(?:\r\n?|\n)/g)
                ;(this.match = this.match.substr(0, this.match.length - 1)),
                  (this.matched = this.matched.substr(0, this.matched.length - 1)),
                  f.length - 1 && (this.yylineno -= f.length - 1)
                var p = this.yylloc.range
                return (
                  (this.yylloc = {
                    first_line: this.yylloc.first_line,
                    last_line: this.yylineno + 1,
                    first_column: this.yylloc.first_column,
                    last_column: f ? (f.length === d.length ? this.yylloc.first_column : 0) + d[d.length - f.length].length - f[0].length : this.yylloc.first_column - h
                  }),
                  this.options.ranges && (this.yylloc.range = [p[0], p[0] + this.yyleng - h]),
                  (this.yyleng = this.yytext.length),
                  this
                )
              }, 'unput'),
              more: o(function () {
                return (this._more = !0), this
              }, 'more'),
              reject: o(function () {
                if (this.options.backtrack_lexer) this._backtrack = !0
                else
                  return this.parseError(
                    'Lexical error on line ' +
                      (this.yylineno + 1) +
                      `. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
` +
                      this.showPosition(),
                    { text: '', token: null, line: this.yylineno }
                  )
                return this
              }, 'reject'),
              less: o(function (u) {
                this.unput(this.match.slice(u))
              }, 'less'),
              pastInput: o(function () {
                var u = this.matched.substr(0, this.matched.length - this.match.length)
                return (u.length > 20 ? '...' : '') + u.substr(-20).replace(/\n/g, '')
              }, 'pastInput'),
              upcomingInput: o(function () {
                var u = this.match
                return u.length < 20 && (u += this._input.substr(0, 20 - u.length)), (u.substr(0, 20) + (u.length > 20 ? '...' : '')).replace(/\n/g, '')
              }, 'upcomingInput'),
              showPosition: o(function () {
                var u = this.pastInput(),
                  h = new Array(u.length + 1).join('-')
                return (
                  u +
                  this.upcomingInput() +
                  `
` +
                  h +
                  '^'
                )
              }, 'showPosition'),
              test_match: o(function (u, h) {
                var f, d, p
                if (
                  (this.options.backtrack_lexer &&
                    ((p = {
                      yylineno: this.yylineno,
                      yylloc: { first_line: this.yylloc.first_line, last_line: this.last_line, first_column: this.yylloc.first_column, last_column: this.yylloc.last_column },
                      yytext: this.yytext,
                      match: this.match,
                      matches: this.matches,
                      matched: this.matched,
                      yyleng: this.yyleng,
                      offset: this.offset,
                      _more: this._more,
                      _input: this._input,
                      yy: this.yy,
                      conditionStack: this.conditionStack.slice(0),
                      done: this.done
                    }),
                    this.options.ranges && (p.yylloc.range = this.yylloc.range.slice(0))),
                  (d = u[0].match(/(?:\r\n?|\n).*/g)),
                  d && (this.yylineno += d.length),
                  (this.yylloc = {
                    first_line: this.yylloc.last_line,
                    last_line: this.yylineno + 1,
                    first_column: this.yylloc.last_column,
                    last_column: d ? d[d.length - 1].length - d[d.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + u[0].length
                  }),
                  (this.yytext += u[0]),
                  (this.match += u[0]),
                  (this.matches = u),
                  (this.yyleng = this.yytext.length),
                  this.options.ranges && (this.yylloc.range = [this.offset, (this.offset += this.yyleng)]),
                  (this._more = !1),
                  (this._backtrack = !1),
                  (this._input = this._input.slice(u[0].length)),
                  (this.matched += u[0]),
                  (f = this.performAction.call(this, this.yy, this, h, this.conditionStack[this.conditionStack.length - 1])),
                  this.done && this._input && (this.done = !1),
                  f)
                )
                  return f
                if (this._backtrack) {
                  for (var m in p) this[m] = p[m]
                  return !1
                }
                return !1
              }, 'test_match'),
              next: o(function () {
                if (this.done) return this.EOF
                this._input || (this.done = !0)
                var u, h, f, d
                this._more || ((this.yytext = ''), (this.match = ''))
                for (var p = this._currentRules(), m = 0; m < p.length; m++)
                  if (((f = this._input.match(this.rules[p[m]])), f && (!h || f[0].length > h[0].length))) {
                    if (((h = f), (d = m), this.options.backtrack_lexer)) {
                      if (((u = this.test_match(f, p[m])), u !== !1)) return u
                      if (this._backtrack) {
                        h = !1
                        continue
                      } else return !1
                    } else if (!this.options.flex) break
                  }
                return h
                  ? ((u = this.test_match(h, p[d])), u !== !1 ? u : !1)
                  : this._input === ''
                    ? this.EOF
                    : this.parseError(
                        'Lexical error on line ' +
                          (this.yylineno + 1) +
                          `. Unrecognized text.
` +
                          this.showPosition(),
                        { text: '', token: null, line: this.yylineno }
                      )
              }, 'next'),
              lex: o(function () {
                var h = this.next()
                return h || this.lex()
              }, 'lex'),
              begin: o(function (h) {
                this.conditionStack.push(h)
              }, 'begin'),
              popState: o(function () {
                var h = this.conditionStack.length - 1
                return h > 0 ? this.conditionStack.pop() : this.conditionStack[0]
              }, 'popState'),
              _currentRules: o(function () {
                return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]
                  ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
                  : this.conditions.INITIAL.rules
              }, '_currentRules'),
              topState: o(function (h) {
                return (h = this.conditionStack.length - 1 - Math.abs(h || 0)), h >= 0 ? this.conditionStack[h] : 'INITIAL'
              }, 'topState'),
              pushState: o(function (h) {
                this.begin(h)
              }, 'pushState'),
              stateStackSize: o(function () {
                return this.conditionStack.length
              }, 'stateStackSize'),
              options: { 'case-insensitive': !0 },
              performAction: o(function (h, f, d, p) {
                var m = p
                switch (d) {
                  case 0:
                    return this.pushState('csv'), 4
                    break
                  case 1:
                    return 10
                  case 2:
                    return 5
                  case 3:
                    return 12
                  case 4:
                    return this.pushState('escaped_text'), 18
                    break
                  case 5:
                    return 20
                  case 6:
                    return this.popState('escaped_text'), 18
                    break
                  case 7:
                    return 19
                }
              }, 'anonymous'),
              rules: [
                /^(?:sankey-beta\b)/i,
                /^(?:$)/i,
                /^(?:((\u000D\u000A)|(\u000A)))/i,
                /^(?:(\u002C))/i,
                /^(?:(\u0022))/i,
                /^(?:([\u0020-\u0021\u0023-\u002B\u002D-\u007E])*)/i,
                /^(?:(\u0022)(?!(\u0022)))/i,
                /^(?:(([\u0020-\u0021\u0023-\u002B\u002D-\u007E])|(\u002C)|(\u000D)|(\u000A)|(\u0022)(\u0022))*)/i
              ],
              conditions: {
                csv: { rules: [1, 2, 3, 4, 5, 6, 7], inclusive: !1 },
                escaped_text: { rules: [6, 7], inclusive: !1 },
                INITIAL: { rules: [0, 1, 2, 3, 4, 5, 6, 7], inclusive: !0 }
              }
            }
            return l
          })()
        i.lexer = a
        function s() {
          this.yy = {}
        }
        return o(s, 'Parser'), (s.prototype = i), (i.Parser = s), new s()
      })()
      yF.parser = yF
      E4 = yF
    })
  var pC,
    mC,
    dC,
    Qet,
    vF,
    Zet,
    xF,
    Jet,
    ett,
    ttt,
    rtt,
    Cye,
    Aye = N(() => {
      'use strict'
      Gt()
      pr()
      ci()
      ;(pC = []),
        (mC = []),
        (dC = new Map()),
        (Qet = o(() => {
          ;(pC = []), (mC = []), (dC = new Map()), kr()
        }, 'clear')),
        (vF = class {
          constructor(e, r, n = 0) {
            this.source = e
            this.target = r
            this.value = n
          }
          static {
            o(this, 'SankeyLink')
          }
        }),
        (Zet = o((t, e, r) => {
          pC.push(new vF(t, e, r))
        }, 'addLink')),
        (xF = class {
          constructor(e) {
            this.ID = e
          }
          static {
            o(this, 'SankeyNode')
          }
        }),
        (Jet = o(t => {
          t = Ze.sanitizeText(t, me())
          let e = dC.get(t)
          return e === void 0 && ((e = new xF(t)), dC.set(t, e), mC.push(e)), e
        }, 'findOrCreateNode')),
        (ett = o(() => mC, 'getNodes')),
        (ttt = o(() => pC, 'getLinks')),
        (rtt = o(() => ({ nodes: mC.map(t => ({ id: t.ID })), links: pC.map(t => ({ source: t.source.ID, target: t.target.ID, value: t.value })) }), 'getGraph')),
        (Cye = {
          nodesMap: dC,
          getConfig: o(() => me().sankey, 'getConfig'),
          getNodes: ett,
          getLinks: ttt,
          getGraph: rtt,
          addLink: Zet,
          findOrCreateNode: Jet,
          getAccTitle: Dr,
          setAccTitle: Ar,
          getAccDescription: Rr,
          setAccDescription: Lr,
          getDiagramTitle: Nr,
          setDiagramTitle: Or,
          clear: Qet
        })
    })
  function S4(t, e) {
    let r
    if (e === void 0) for (let n of t) n != null && (r < n || (r === void 0 && n >= n)) && (r = n)
    else {
      let n = -1
      for (let i of t) (i = e(i, ++n, t)) != null && (r < i || (r === void 0 && i >= i)) && (r = i)
    }
    return r
  }
  var _ye = N(() => {
    'use strict'
    o(S4, 'max')
  })
  function my(t, e) {
    let r
    if (e === void 0) for (let n of t) n != null && (r > n || (r === void 0 && n >= n)) && (r = n)
    else {
      let n = -1
      for (let i of t) (i = e(i, ++n, t)) != null && (r > i || (r === void 0 && i >= i)) && (r = i)
    }
    return r
  }
  var Dye = N(() => {
    'use strict'
    o(my, 'min')
  })
  function gy(t, e) {
    let r = 0
    if (e === void 0) for (let n of t) (n = +n) && (r += n)
    else {
      let n = -1
      for (let i of t) (i = +e(i, ++n, t)) && (r += i)
    }
    return r
  }
  var Lye = N(() => {
    'use strict'
    o(gy, 'sum')
  })
  var bF = N(() => {
    'use strict'
    _ye()
    Dye()
    Lye()
  })
  function ntt(t) {
    return t.target.depth
  }
  function TF(t) {
    return t.depth
  }
  function wF(t, e) {
    return e - 1 - t.height
  }
  function C4(t, e) {
    return t.sourceLinks.length ? t.depth : e - 1
  }
  function kF(t) {
    return t.targetLinks.length ? t.depth : t.sourceLinks.length ? my(t.sourceLinks, ntt) - 1 : 0
  }
  var EF = N(() => {
    'use strict'
    bF()
    o(ntt, 'targetDepth')
    o(TF, 'left')
    o(wF, 'right')
    o(C4, 'justify')
    o(kF, 'center')
  })
  function yy(t) {
    return function () {
      return t
    }
  }
  var Rye = N(() => {
    'use strict'
    o(yy, 'constant')
  })
  function Nye(t, e) {
    return gC(t.source, e.source) || t.index - e.index
  }
  function Mye(t, e) {
    return gC(t.target, e.target) || t.index - e.index
  }
  function gC(t, e) {
    return t.y0 - e.y0
  }
  function SF(t) {
    return t.value
  }
  function itt(t) {
    return t.index
  }
  function att(t) {
    return t.nodes
  }
  function stt(t) {
    return t.links
  }
  function Iye(t, e) {
    let r = t.get(e)
    if (!r) throw new Error('missing: ' + e)
    return r
  }
  function Oye({ nodes: t }) {
    for (let e of t) {
      let r = e.y0,
        n = r
      for (let i of e.sourceLinks) (i.y0 = r + i.width / 2), (r += i.width)
      for (let i of e.targetLinks) (i.y1 = n + i.width / 2), (n += i.width)
    }
  }
  function yC() {
    let t = 0,
      e = 0,
      r = 1,
      n = 1,
      i = 24,
      a = 8,
      s,
      l = itt,
      u = C4,
      h,
      f,
      d = att,
      p = stt,
      m = 6
    function g() {
      let I = { nodes: d.apply(null, arguments), links: p.apply(null, arguments) }
      return y(I), v(I), x(I), b(I), w(I), Oye(I), I
    }
    o(g, 'sankey'),
      (g.update = function (I) {
        return Oye(I), I
      }),
      (g.nodeId = function (I) {
        return arguments.length ? ((l = typeof I == 'function' ? I : yy(I)), g) : l
      }),
      (g.nodeAlign = function (I) {
        return arguments.length ? ((u = typeof I == 'function' ? I : yy(I)), g) : u
      }),
      (g.nodeSort = function (I) {
        return arguments.length ? ((h = I), g) : h
      }),
      (g.nodeWidth = function (I) {
        return arguments.length ? ((i = +I), g) : i
      }),
      (g.nodePadding = function (I) {
        return arguments.length ? ((a = s = +I), g) : a
      }),
      (g.nodes = function (I) {
        return arguments.length ? ((d = typeof I == 'function' ? I : yy(I)), g) : d
      }),
      (g.links = function (I) {
        return arguments.length ? ((p = typeof I == 'function' ? I : yy(I)), g) : p
      }),
      (g.linkSort = function (I) {
        return arguments.length ? ((f = I), g) : f
      }),
      (g.size = function (I) {
        return arguments.length ? ((t = e = 0), (r = +I[0]), (n = +I[1]), g) : [r - t, n - e]
      }),
      (g.extent = function (I) {
        return arguments.length
          ? ((t = +I[0][0]), (r = +I[1][0]), (e = +I[0][1]), (n = +I[1][1]), g)
          : [
              [t, e],
              [r, n]
            ]
      }),
      (g.iterations = function (I) {
        return arguments.length ? ((m = +I), g) : m
      })
    function y({ nodes: I, links: M }) {
      for (let [B, F] of I.entries()) (F.index = B), (F.sourceLinks = []), (F.targetLinks = [])
      let P = new Map(I.map((B, F) => [l(B, F, I), B]))
      for (let [B, F] of M.entries()) {
        F.index = B
        let { source: z, target: $ } = F
        typeof z != 'object' && (z = F.source = Iye(P, z)), typeof $ != 'object' && ($ = F.target = Iye(P, $)), z.sourceLinks.push(F), $.targetLinks.push(F)
      }
      if (f != null) for (let { sourceLinks: B, targetLinks: F } of I) B.sort(f), F.sort(f)
    }
    o(y, 'computeNodeLinks')
    function v({ nodes: I }) {
      for (let M of I) M.value = M.fixedValue === void 0 ? Math.max(gy(M.sourceLinks, SF), gy(M.targetLinks, SF)) : M.fixedValue
    }
    o(v, 'computeNodeValues')
    function x({ nodes: I }) {
      let M = I.length,
        P = new Set(I),
        B = new Set(),
        F = 0
      for (; P.size; ) {
        for (let z of P) {
          z.depth = F
          for (let { target: $ } of z.sourceLinks) B.add($)
        }
        if (++F > M) throw new Error('circular link')
        ;(P = B), (B = new Set())
      }
    }
    o(x, 'computeNodeDepths')
    function b({ nodes: I }) {
      let M = I.length,
        P = new Set(I),
        B = new Set(),
        F = 0
      for (; P.size; ) {
        for (let z of P) {
          z.height = F
          for (let { source: $ } of z.targetLinks) B.add($)
        }
        if (++F > M) throw new Error('circular link')
        ;(P = B), (B = new Set())
      }
    }
    o(b, 'computeNodeHeights')
    function T({ nodes: I }) {
      let M = S4(I, F => F.depth) + 1,
        P = (r - t - i) / (M - 1),
        B = new Array(M)
      for (let F of I) {
        let z = Math.max(0, Math.min(M - 1, Math.floor(u.call(null, F, M))))
        ;(F.layer = z), (F.x0 = t + z * P), (F.x1 = F.x0 + i), B[z] ? B[z].push(F) : (B[z] = [F])
      }
      if (h) for (let F of B) F.sort(h)
      return B
    }
    o(T, 'computeNodeLayers')
    function S(I) {
      let M = my(I, P => (n - e - (P.length - 1) * s) / gy(P, SF))
      for (let P of I) {
        let B = e
        for (let F of P) {
          ;(F.y0 = B), (F.y1 = B + F.value * M), (B = F.y1 + s)
          for (let z of F.sourceLinks) z.width = z.value * M
        }
        B = (n - B + s) / (P.length + 1)
        for (let F = 0; F < P.length; ++F) {
          let z = P[F]
          ;(z.y0 += B * (F + 1)), (z.y1 += B * (F + 1))
        }
        k(P)
      }
    }
    o(S, 'initializeNodeBreadths')
    function w(I) {
      let M = T(I)
      ;(s = Math.min(a, (n - e) / (S4(M, P => P.length) - 1))), S(M)
      for (let P = 0; P < m; ++P) {
        let B = Math.pow(0.99, P),
          F = Math.max(1 - B, (P + 1) / m)
        _(M, B, F), E(M, B, F)
      }
    }
    o(w, 'computeNodeBreadths')
    function E(I, M, P) {
      for (let B = 1, F = I.length; B < F; ++B) {
        let z = I[B]
        for (let $ of z) {
          let U = 0,
            K = 0
          for (let { source: Y, value: ce } of $.targetLinks) {
            let Z = ce * ($.layer - Y.layer)
            ;(U += L(Y, $) * Z), (K += Z)
          }
          if (!(K > 0)) continue
          let ee = (U / K - $.y0) * M
          ;($.y0 += ee), ($.y1 += ee), R($)
        }
        h === void 0 && z.sort(gC), C(z, P)
      }
    }
    o(E, 'relaxLeftToRight')
    function _(I, M, P) {
      for (let B = I.length, F = B - 2; F >= 0; --F) {
        let z = I[F]
        for (let $ of z) {
          let U = 0,
            K = 0
          for (let { target: Y, value: ce } of $.sourceLinks) {
            let Z = ce * (Y.layer - $.layer)
            ;(U += A($, Y) * Z), (K += Z)
          }
          if (!(K > 0)) continue
          let ee = (U / K - $.y0) * M
          ;($.y0 += ee), ($.y1 += ee), R($)
        }
        h === void 0 && z.sort(gC), C(z, P)
      }
    }
    o(_, 'relaxRightToLeft')
    function C(I, M) {
      let P = I.length >> 1,
        B = I[P]
      O(I, B.y0 - s, P - 1, M), D(I, B.y1 + s, P + 1, M), O(I, n, I.length - 1, M), D(I, e, 0, M)
    }
    o(C, 'resolveCollisions')
    function D(I, M, P, B) {
      for (; P < I.length; ++P) {
        let F = I[P],
          z = (M - F.y0) * B
        z > 1e-6 && ((F.y0 += z), (F.y1 += z)), (M = F.y1 + s)
      }
    }
    o(D, 'resolveCollisionsTopToBottom')
    function O(I, M, P, B) {
      for (; P >= 0; --P) {
        let F = I[P],
          z = (F.y1 - M) * B
        z > 1e-6 && ((F.y0 -= z), (F.y1 -= z)), (M = F.y0 - s)
      }
    }
    o(O, 'resolveCollisionsBottomToTop')
    function R({ sourceLinks: I, targetLinks: M }) {
      if (f === void 0) {
        for (let {
          source: { sourceLinks: P }
        } of M)
          P.sort(Mye)
        for (let {
          target: { targetLinks: P }
        } of I)
          P.sort(Nye)
      }
    }
    o(R, 'reorderNodeLinks')
    function k(I) {
      if (f === void 0) for (let { sourceLinks: M, targetLinks: P } of I) M.sort(Mye), P.sort(Nye)
    }
    o(k, 'reorderLinks')
    function L(I, M) {
      let P = I.y0 - ((I.sourceLinks.length - 1) * s) / 2
      for (let { target: B, width: F } of I.sourceLinks) {
        if (B === M) break
        P += F + s
      }
      for (let { source: B, width: F } of M.targetLinks) {
        if (B === I) break
        P -= F
      }
      return P
    }
    o(L, 'targetTop')
    function A(I, M) {
      let P = M.y0 - ((M.targetLinks.length - 1) * s) / 2
      for (let { source: B, width: F } of M.targetLinks) {
        if (B === I) break
        P += F + s
      }
      for (let { target: B, width: F } of I.sourceLinks) {
        if (B === M) break
        P -= F
      }
      return P
    }
    return o(A, 'sourceTop'), g
  }
  var Pye = N(() => {
    'use strict'
    bF()
    EF()
    Rye()
    o(Nye, 'ascendingSourceBreadth')
    o(Mye, 'ascendingTargetBreadth')
    o(gC, 'ascendingBreadth')
    o(SF, 'value')
    o(itt, 'defaultId')
    o(att, 'defaultNodes')
    o(stt, 'defaultLinks')
    o(Iye, 'find')
    o(Oye, 'computeLinkBreadths')
    o(yC, 'Sankey')
  })
  function _F() {
    ;(this._x0 = this._y0 = this._x1 = this._y1 = null), (this._ = '')
  }
  function Bye() {
    return new _F()
  }
  var CF,
    AF,
    i0,
    ott,
    DF,
    Fye = N(() => {
      'use strict'
      ;(CF = Math.PI), (AF = 2 * CF), (i0 = 1e-6), (ott = AF - i0)
      o(_F, 'Path')
      o(Bye, 'path')
      _F.prototype = Bye.prototype = {
        constructor: _F,
        moveTo: o(function (t, e) {
          this._ += 'M' + (this._x0 = this._x1 = +t) + ',' + (this._y0 = this._y1 = +e)
        }, 'moveTo'),
        closePath: o(function () {
          this._x1 !== null && ((this._x1 = this._x0), (this._y1 = this._y0), (this._ += 'Z'))
        }, 'closePath'),
        lineTo: o(function (t, e) {
          this._ += 'L' + (this._x1 = +t) + ',' + (this._y1 = +e)
        }, 'lineTo'),
        quadraticCurveTo: o(function (t, e, r, n) {
          this._ += 'Q' + +t + ',' + +e + ',' + (this._x1 = +r) + ',' + (this._y1 = +n)
        }, 'quadraticCurveTo'),
        bezierCurveTo: o(function (t, e, r, n, i, a) {
          this._ += 'C' + +t + ',' + +e + ',' + +r + ',' + +n + ',' + (this._x1 = +i) + ',' + (this._y1 = +a)
        }, 'bezierCurveTo'),
        arcTo: o(function (t, e, r, n, i) {
          ;(t = +t), (e = +e), (r = +r), (n = +n), (i = +i)
          var a = this._x1,
            s = this._y1,
            l = r - t,
            u = n - e,
            h = a - t,
            f = s - e,
            d = h * h + f * f
          if (i < 0) throw new Error('negative radius: ' + i)
          if (this._x1 === null) this._ += 'M' + (this._x1 = t) + ',' + (this._y1 = e)
          else if (d > i0)
            if (!(Math.abs(f * l - u * h) > i0) || !i) this._ += 'L' + (this._x1 = t) + ',' + (this._y1 = e)
            else {
              var p = r - a,
                m = n - s,
                g = l * l + u * u,
                y = p * p + m * m,
                v = Math.sqrt(g),
                x = Math.sqrt(d),
                b = i * Math.tan((CF - Math.acos((g + d - y) / (2 * v * x))) / 2),
                T = b / x,
                S = b / v
              Math.abs(T - 1) > i0 && (this._ += 'L' + (t + T * h) + ',' + (e + T * f)),
                (this._ += 'A' + i + ',' + i + ',0,0,' + +(f * p > h * m) + ',' + (this._x1 = t + S * l) + ',' + (this._y1 = e + S * u))
            }
        }, 'arcTo'),
        arc: o(function (t, e, r, n, i, a) {
          ;(t = +t), (e = +e), (r = +r), (a = !!a)
          var s = r * Math.cos(n),
            l = r * Math.sin(n),
            u = t + s,
            h = e + l,
            f = 1 ^ a,
            d = a ? n - i : i - n
          if (r < 0) throw new Error('negative radius: ' + r)
          this._x1 === null ? (this._ += 'M' + u + ',' + h) : (Math.abs(this._x1 - u) > i0 || Math.abs(this._y1 - h) > i0) && (this._ += 'L' + u + ',' + h),
            r &&
              (d < 0 && (d = (d % AF) + AF),
              d > ott
                ? (this._ += 'A' + r + ',' + r + ',0,1,' + f + ',' + (t - s) + ',' + (e - l) + 'A' + r + ',' + r + ',0,1,' + f + ',' + (this._x1 = u) + ',' + (this._y1 = h))
                : d > i0 && (this._ += 'A' + r + ',' + r + ',0,' + +(d >= CF) + ',' + f + ',' + (this._x1 = t + r * Math.cos(i)) + ',' + (this._y1 = e + r * Math.sin(i))))
        }, 'arc'),
        rect: o(function (t, e, r, n) {
          this._ += 'M' + (this._x0 = this._x1 = +t) + ',' + (this._y0 = this._y1 = +e) + 'h' + +r + 'v' + +n + 'h' + -r + 'Z'
        }, 'rect'),
        toString: o(function () {
          return this._
        }, 'toString')
      }
      DF = Bye
    })
  var $ye = N(() => {
    'use strict'
    Fye()
  })
  function vC(t) {
    return o(function () {
      return t
    }, 'constant')
  }
  var zye = N(() => {
    'use strict'
    o(vC, 'default')
  })
  function Gye(t) {
    return t[0]
  }
  function Vye(t) {
    return t[1]
  }
  var Uye = N(() => {
    'use strict'
    o(Gye, 'x')
    o(Vye, 'y')
  })
  var Hye,
    Wye = N(() => {
      'use strict'
      Hye = Array.prototype.slice
    })
  function ltt(t) {
    return t.source
  }
  function ctt(t) {
    return t.target
  }
  function utt(t) {
    var e = ltt,
      r = ctt,
      n = Gye,
      i = Vye,
      a = null
    function s() {
      var l,
        u = Hye.call(arguments),
        h = e.apply(this, u),
        f = r.apply(this, u)
      if ((a || (a = l = DF()), t(a, +n.apply(this, ((u[0] = h), u)), +i.apply(this, u), +n.apply(this, ((u[0] = f), u)), +i.apply(this, u)), l)) return (a = null), l + '' || null
    }
    return (
      o(s, 'link'),
      (s.source = function (l) {
        return arguments.length ? ((e = l), s) : e
      }),
      (s.target = function (l) {
        return arguments.length ? ((r = l), s) : r
      }),
      (s.x = function (l) {
        return arguments.length ? ((n = typeof l == 'function' ? l : vC(+l)), s) : n
      }),
      (s.y = function (l) {
        return arguments.length ? ((i = typeof l == 'function' ? l : vC(+l)), s) : i
      }),
      (s.context = function (l) {
        return arguments.length ? ((a = l ?? null), s) : a
      }),
      s
    )
  }
  function htt(t, e, r, n, i) {
    t.moveTo(e, r), t.bezierCurveTo((e = (e + n) / 2), r, e, i, n, i)
  }
  function LF() {
    return utt(htt)
  }
  var qye = N(() => {
    'use strict'
    $ye()
    Wye()
    zye()
    Uye()
    o(ltt, 'linkSource')
    o(ctt, 'linkTarget')
    o(utt, 'link')
    o(htt, 'curveHorizontal')
    o(LF, 'linkHorizontal')
  })
  var Yye = N(() => {
    'use strict'
    qye()
  })
  function ftt(t) {
    return [t.source.x1, t.y0]
  }
  function dtt(t) {
    return [t.target.x0, t.y1]
  }
  function xC() {
    return LF().source(ftt).target(dtt)
  }
  var Xye = N(() => {
    'use strict'
    Yye()
    o(ftt, 'horizontalSource')
    o(dtt, 'horizontalTarget')
    o(xC, 'default')
  })
  var jye = N(() => {
    'use strict'
    Pye()
    EF()
    Xye()
  })
  var A4,
    Kye = N(() => {
      'use strict'
      A4 = class t {
        static {
          o(this, 'Uid')
        }
        static {
          this.count = 0
        }
        static next(e) {
          return new t(e + ++t.count)
        }
        constructor(e) {
          ;(this.id = e), (this.href = `#${e}`)
        }
        toString() {
          return 'url(' + this.href + ')'
        }
      }
    })
  var ptt,
    mtt,
    Qye,
    Zye = N(() => {
      'use strict'
      Gt()
      fr()
      jye()
      xi()
      Kye()
      ;(ptt = { left: TF, right: wF, center: kF, justify: C4 }),
        (mtt = o(function (t, e, r, n) {
          let { securityLevel: i, sankey: a } = me(),
            s = $3.sankey,
            l
          i === 'sandbox' && (l = Ge('#i' + e))
          let u = i === 'sandbox' ? Ge(l.nodes()[0].contentDocument.body) : Ge('body'),
            h = i === 'sandbox' ? u.select(`[id="${e}"]`) : Ge(`[id="${e}"]`),
            f = a?.width ?? s.width,
            d = a?.height ?? s.width,
            p = a?.useMaxWidth ?? s.useMaxWidth,
            m = a?.nodeAlignment ?? s.nodeAlignment,
            g = a?.prefix ?? s.prefix,
            y = a?.suffix ?? s.suffix,
            v = a?.showValues ?? s.showValues,
            x = n.db.getGraph(),
            b = ptt[m]
          yC()
            .nodeId(O => O.id)
            .nodeWidth(10)
            .nodePadding(10 + (v ? 15 : 0))
            .nodeAlign(b)
            .extent([
              [0, 0],
              [f, d]
            ])(x)
          let w = Js(PD)
          h.append('g')
            .attr('class', 'nodes')
            .selectAll('.node')
            .data(x.nodes)
            .join('g')
            .attr('class', 'node')
            .attr('id', O => (O.uid = A4.next('node-')).id)
            .attr('transform', function (O) {
              return 'translate(' + O.x0 + ',' + O.y0 + ')'
            })
            .attr('x', O => O.x0)
            .attr('y', O => O.y0)
            .append('rect')
            .attr('height', O => O.y1 - O.y0)
            .attr('width', O => O.x1 - O.x0)
            .attr('fill', O => w(O.id))
          let E = o(
            ({ id: O, value: R }) =>
              v
                ? `${O}
${g}${Math.round(R * 100) / 100}${y}`
                : O,
            'getText'
          )
          h.append('g')
            .attr('class', 'node-labels')
            .attr('font-size', 14)
            .selectAll('text')
            .data(x.nodes)
            .join('text')
            .attr('x', O => (O.x0 < f / 2 ? O.x1 + 6 : O.x0 - 6))
            .attr('y', O => (O.y1 + O.y0) / 2)
            .attr('dy', `${v ? '0' : '0.35'}em`)
            .attr('text-anchor', O => (O.x0 < f / 2 ? 'start' : 'end'))
            .text(E)
          let _ = h
              .append('g')
              .attr('class', 'links')
              .attr('fill', 'none')
              .attr('stroke-opacity', 0.5)
              .selectAll('.link')
              .data(x.links)
              .join('g')
              .attr('class', 'link')
              .style('mix-blend-mode', 'multiply'),
            C = a?.linkColor ?? 'gradient'
          if (C === 'gradient') {
            let O = _.append('linearGradient')
              .attr('id', R => (R.uid = A4.next('linearGradient-')).id)
              .attr('gradientUnits', 'userSpaceOnUse')
              .attr('x1', R => R.source.x1)
              .attr('x2', R => R.target.x0)
            O.append('stop')
              .attr('offset', '0%')
              .attr('stop-color', R => w(R.source.id)),
              O.append('stop')
                .attr('offset', '100%')
                .attr('stop-color', R => w(R.target.id))
          }
          let D
          switch (C) {
            case 'gradient':
              D = o(O => O.uid, 'coloring')
              break
            case 'source':
              D = o(O => w(O.source.id), 'coloring')
              break
            case 'target':
              D = o(O => w(O.target.id), 'coloring')
              break
            default:
              D = C
          }
          _.append('path')
            .attr('d', xC())
            .attr('stroke', D)
            .attr('stroke-width', O => Math.max(1, O.width)),
            Lo(void 0, h, 0, p)
        }, 'draw')),
        (Qye = { draw: mtt })
    })
  var Jye,
    eve = N(() => {
      'use strict'
      Jye = o(
        t =>
          t
            .replaceAll(/^[^\S\n\r]+|[^\S\n\r]+$/g, '')
            .replaceAll(
              /([\n\r])+/g,
              `
`
            )
            .trim(),
        'prepareTextForParsing'
      )
    })
  var gtt,
    tve,
    rve = N(() => {
      'use strict'
      ;(gtt = o(
        t => `.label {
      font-family: ${t.fontFamily};
    }`,
        'getStyles'
      )),
        (tve = gtt)
    })
  var nve = {}
  ur(nve, { diagram: () => vtt })
  var ytt,
    vtt,
    ive = N(() => {
      'use strict'
      Sye()
      Aye()
      Zye()
      eve()
      rve()
      ytt = E4.parse.bind(E4)
      E4.parse = t => ytt(Jye(t))
      vtt = { styles: tve, parser: E4, db: Cye, renderer: Qye }
    })
  var ove,
    RF,
    wtt,
    ktt,
    Ett,
    Stt,
    Ctt,
    qf,
    NF = N(() => {
      'use strict'
      mi()
      _a()
      er()
      ci()
      ;(ove = { packet: [] }),
        (RF = structuredClone(ove)),
        (wtt = or.packet),
        (ktt = o(() => {
          let t = $n({ ...wtt, ...tr().packet })
          return t.showBits && (t.paddingY += 10), t
        }, 'getConfig')),
        (Ett = o(() => RF.packet, 'getPacket')),
        (Stt = o(t => {
          t.length > 0 && RF.packet.push(t)
        }, 'pushWord')),
        (Ctt = o(() => {
          kr(), (RF = structuredClone(ove))
        }, 'clear')),
        (qf = {
          pushWord: Stt,
          getPacket: Ett,
          getConfig: ktt,
          clear: Ctt,
          setAccTitle: Ar,
          getAccTitle: Dr,
          setDiagramTitle: Or,
          getDiagramTitle: Nr,
          getAccDescription: Rr,
          setAccDescription: Lr
        })
    })
  var Att,
    _tt,
    Dtt,
    lve,
    cve = N(() => {
      'use strict'
      bf()
      yt()
      Mp()
      NF()
      ;(Att = 1e4),
        (_tt = o(t => {
          Jo(t, qf)
          let e = -1,
            r = [],
            n = 1,
            { bitsPerRow: i } = qf.getConfig()
          for (let { start: a, end: s, bits: l, label: u } of t.blocks) {
            if (a !== void 0 && s !== void 0 && s < a) throw new Error(`Packet block ${a} - ${s} is invalid. End must be greater than start.`)
            if (((a ??= e + 1), a !== e + 1)) throw new Error(`Packet block ${a} - ${s ?? a} is not contiguous. It should start from ${e + 1}.`)
            if (l === 0) throw new Error(`Packet block ${a} is invalid. Cannot have a zero bit field.`)
            for (s ??= a + (l ?? 1) - 1, l ??= s - a + 1, e = s, X.debug(`Packet block ${a} - ${e} with label ${u}`); r.length <= i + 1 && qf.getPacket().length < Att; ) {
              let [h, f] = Dtt({ start: a, end: s, bits: l, label: u }, n, i)
              if ((r.push(h), h.end + 1 === n * i && (qf.pushWord(r), (r = []), n++), !f)) break
              ;({ start: a, end: s, bits: l, label: u } = f)
            }
          }
          qf.pushWord(r)
        }, 'populate')),
        (Dtt = o((t, e, r) => {
          if (t.start === void 0) throw new Error('start should have been set during first phase')
          if (t.end === void 0) throw new Error('end should have been set during first phase')
          if (t.start > t.end) throw new Error(`Block start ${t.start} is greater than block end ${t.end}.`)
          if (t.end + 1 <= e * r) return [t, void 0]
          let n = e * r - 1,
            i = e * r
          return [
            { start: t.start, end: n, label: t.label, bits: n - t.start },
            { start: i, end: t.end, label: t.label, bits: t.end - i }
          ]
        }, 'getNextFittingBlock')),
        (lve = {
          parse: o(async t => {
            let e = await vs('packet', t)
            X.debug(e), _tt(e)
          }, 'parse')
        })
    })
  var Ltt,
    Rtt,
    uve,
    hve = N(() => {
      'use strict'
      Vl()
      xi()
      ;(Ltt = o((t, e, r, n) => {
        let i = n.db,
          a = i.getConfig(),
          { rowHeight: s, paddingY: l, bitWidth: u, bitsPerRow: h } = a,
          f = i.getPacket(),
          d = i.getDiagramTitle(),
          p = s + l,
          m = p * (f.length + 1) - (d ? 0 : s),
          g = u * h + 2,
          y = Li(e)
        y.attr('viewbox', `0 0 ${g} ${m}`), fn(y, m, g, a.useMaxWidth)
        for (let [v, x] of f.entries()) Rtt(y, x, v, a)
        y.append('text')
          .text(d)
          .attr('x', g / 2)
          .attr('y', m - p / 2)
          .attr('dominant-baseline', 'middle')
          .attr('text-anchor', 'middle')
          .attr('class', 'packetTitle')
      }, 'draw')),
        (Rtt = o((t, e, r, { rowHeight: n, paddingX: i, paddingY: a, bitWidth: s, bitsPerRow: l, showBits: u }) => {
          let h = t.append('g'),
            f = r * (n + a) + a
          for (let d of e) {
            let p = (d.start % l) * s + 1,
              m = (d.end - d.start + 1) * s - i
            if (
              (h.append('rect').attr('x', p).attr('y', f).attr('width', m).attr('height', n).attr('class', 'packetBlock'),
              h
                .append('text')
                .attr('x', p + m / 2)
                .attr('y', f + n / 2)
                .attr('class', 'packetLabel')
                .attr('dominant-baseline', 'middle')
                .attr('text-anchor', 'middle')
                .text(d.label),
              !u)
            )
              continue
            let g = d.end === d.start,
              y = f - 2
            h
              .append('text')
              .attr('x', p + (g ? m / 2 : 0))
              .attr('y', y)
              .attr('class', 'packetByte start')
              .attr('dominant-baseline', 'auto')
              .attr('text-anchor', g ? 'middle' : 'start')
              .text(d.start),
              g ||
                h
                  .append('text')
                  .attr('x', p + m)
                  .attr('y', y)
                  .attr('class', 'packetByte end')
                  .attr('dominant-baseline', 'auto')
                  .attr('text-anchor', 'end')
                  .text(d.end)
          }
        }, 'drawWord')),
        (uve = { draw: Ltt })
    })
  var Ntt,
    fve,
    dve = N(() => {
      'use strict'
      er()
      ;(Ntt = {
        byteFontSize: '10px',
        startByteColor: 'black',
        endByteColor: 'black',
        labelColor: 'black',
        labelFontSize: '12px',
        titleColor: 'black',
        titleFontSize: '14px',
        blockStrokeColor: 'black',
        blockStrokeWidth: '1',
        blockFillColor: '#efefef'
      }),
        (fve = o(({ packet: t } = {}) => {
          let e = $n(Ntt, t)
          return `
	.packetByte {
		font-size: ${e.byteFontSize};
	}
	.packetByte.start {
		fill: ${e.startByteColor};
	}
	.packetByte.end {
		fill: ${e.endByteColor};
	}
	.packetLabel {
		fill: ${e.labelColor};
		font-size: ${e.labelFontSize};
	}
	.packetTitle {
		fill: ${e.titleColor};
		font-size: ${e.titleFontSize};
	}
	.packetBlock {
		stroke: ${e.blockStrokeColor};
		stroke-width: ${e.blockStrokeWidth};
		fill: ${e.blockFillColor};
	}
	`
        }, 'styles'))
    })
  var pve = {}
  ur(pve, { diagram: () => Mtt })
  var Mtt,
    mve = N(() => {
      'use strict'
      NF()
      cve()
      hve()
      dve()
      Mtt = { parser: lve, db: qf, renderer: uve, styles: fve }
    })
  var vy,
    vve,
    a0,
    Ptt,
    Btt,
    xve,
    Ftt,
    $tt,
    ztt,
    Gtt,
    Vtt,
    Utt,
    Htt,
    s0,
    MF = N(() => {
      'use strict'
      mi()
      _a()
      er()
      ci()
      ;(vy = { showLegend: !0, ticks: 5, max: null, min: 0, graticule: 'circle' }),
        (vve = { axes: [], curves: [], options: vy }),
        (a0 = structuredClone(vve)),
        (Ptt = or.radar),
        (Btt = o(() => $n({ ...Ptt, ...tr().radar }), 'getConfig')),
        (xve = o(() => a0.axes, 'getAxes')),
        (Ftt = o(() => a0.curves, 'getCurves')),
        ($tt = o(() => a0.options, 'getOptions')),
        (ztt = o(t => {
          a0.axes = t.map(e => ({ name: e.name, label: e.label ?? e.name }))
        }, 'setAxes')),
        (Gtt = o(t => {
          a0.curves = t.map(e => ({ name: e.name, label: e.label ?? e.name, entries: Vtt(e.entries) }))
        }, 'setCurves')),
        (Vtt = o(t => {
          if (t[0].axis == null) return t.map(r => r.value)
          let e = xve()
          if (e.length === 0) throw new Error('Axes must be populated before curves for reference entries')
          return e.map(r => {
            let n = t.find(i => i.axis?.$refText === r.name)
            if (n === void 0) throw new Error('Missing entry for axis ' + r.label)
            return n.value
          })
        }, 'computeCurveEntries')),
        (Utt = o(t => {
          let e = t.reduce((r, n) => ((r[n.name] = n), r), {})
          a0.options = {
            showLegend: e.showLegend?.value ?? vy.showLegend,
            ticks: e.ticks?.value ?? vy.ticks,
            max: e.max?.value ?? vy.max,
            min: e.min?.value ?? vy.min,
            graticule: e.graticule?.value ?? vy.graticule
          }
        }, 'setOptions')),
        (Htt = o(() => {
          kr(), (a0 = structuredClone(vve))
        }, 'clear')),
        (s0 = {
          getAxes: xve,
          getCurves: Ftt,
          getOptions: $tt,
          setAxes: ztt,
          setCurves: Gtt,
          setOptions: Utt,
          getConfig: Btt,
          clear: Htt,
          setAccTitle: Ar,
          getAccTitle: Dr,
          setDiagramTitle: Or,
          getDiagramTitle: Nr,
          getAccDescription: Rr,
          setAccDescription: Lr
        })
    })
  var Wtt,
    bve,
    Tve = N(() => {
      'use strict'
      bf()
      yt()
      Mp()
      MF()
      ;(Wtt = o(t => {
        Jo(t, s0)
        let { axes: e, curves: r, options: n } = t
        s0.setAxes(e), s0.setCurves(r), s0.setOptions(n)
      }, 'populate')),
        (bve = {
          parse: o(async t => {
            let e = await vs('radar', t)
            X.debug(e), Wtt(e)
          }, 'parse')
        })
    })
  function Ktt(t, e, r, n, i, a, s) {
    let l = e.length,
      u = Math.min(s.width, s.height) / 2
    r.forEach((h, f) => {
      if (h.entries.length !== l) return
      let d = h.entries.map((p, m) => {
        let g = (2 * Math.PI * m) / l - Math.PI / 2,
          y = Qtt(p, n, i, u),
          v = y * Math.cos(g),
          x = y * Math.sin(g)
        return { x: v, y: x }
      })
      a === 'circle'
        ? t.append('path').attr('d', Ztt(d, s.curveTension)).attr('class', `radarCurve-${f}`)
        : a === 'polygon' &&
          t
            .append('polygon')
            .attr('points', d.map(p => `${p.x},${p.y}`).join(' '))
            .attr('class', `radarCurve-${f}`)
    })
  }
  function Qtt(t, e, r, n) {
    let i = Math.min(Math.max(t, e), r)
    return (n * (i - e)) / (r - e)
  }
  function Ztt(t, e) {
    let r = t.length,
      n = `M${t[0].x},${t[0].y}`
    for (let i = 0; i < r; i++) {
      let a = t[(i - 1 + r) % r],
        s = t[i],
        l = t[(i + 1) % r],
        u = t[(i + 2) % r],
        h = { x: s.x + (l.x - a.x) * e, y: s.y + (l.y - a.y) * e },
        f = { x: l.x - (u.x - s.x) * e, y: l.y - (u.y - s.y) * e }
      n += ` C${h.x},${h.y} ${f.x},${f.y} ${l.x},${l.y}`
    }
    return `${n} Z`
  }
  function Jtt(t, e, r, n) {
    if (!r) return
    let i = ((n.width / 2 + n.marginRight) * 3) / 4,
      a = (-(n.height / 2 + n.marginTop) * 3) / 4,
      s = 20
    e.forEach((l, u) => {
      let h = t.append('g').attr('transform', `translate(${i}, ${a + u * s})`)
      h.append('rect').attr('width', 12).attr('height', 12).attr('class', `radarLegendBox-${u}`),
        h.append('text').attr('x', 16).attr('y', 0).attr('class', 'radarLegendText').text(l.label)
    })
  }
  var qtt,
    Ytt,
    Xtt,
    jtt,
    wve,
    kve = N(() => {
      'use strict'
      Vl()
      ;(qtt = o((t, e, r, n) => {
        let i = n.db,
          a = i.getAxes(),
          s = i.getCurves(),
          l = i.getOptions(),
          u = i.getConfig(),
          h = i.getDiagramTitle(),
          f = Li(e),
          d = Ytt(f, u),
          p = l.max ?? Math.max(...s.map(y => Math.max(...y.entries))),
          m = l.min,
          g = Math.min(u.width, u.height) / 2
        Xtt(d, a, g, l.ticks, l.graticule),
          jtt(d, a, g, u),
          Ktt(d, a, s, m, p, l.graticule, u),
          Jtt(d, s, l.showLegend, u),
          d
            .append('text')
            .attr('class', 'radarTitle')
            .text(h)
            .attr('x', 0)
            .attr('y', -u.height / 2 - u.marginTop)
      }, 'draw')),
        (Ytt = o((t, e) => {
          let r = e.width + e.marginLeft + e.marginRight,
            n = e.height + e.marginTop + e.marginBottom,
            i = { x: e.marginLeft + e.width / 2, y: e.marginTop + e.height / 2 }
          return t.attr('viewbox', `0 0 ${r} ${n}`).attr('width', r).attr('height', n), t.append('g').attr('transform', `translate(${i.x}, ${i.y})`)
        }, 'drawFrame')),
        (Xtt = o((t, e, r, n, i) => {
          if (i === 'circle')
            for (let a = 0; a < n; a++) {
              let s = (r * (a + 1)) / n
              t.append('circle').attr('r', s).attr('class', 'radarGraticule')
            }
          else if (i === 'polygon') {
            let a = e.length
            for (let s = 0; s < n; s++) {
              let l = (r * (s + 1)) / n,
                u = e
                  .map((h, f) => {
                    let d = (2 * f * Math.PI) / a - Math.PI / 2,
                      p = l * Math.cos(d),
                      m = l * Math.sin(d)
                    return `${p},${m}`
                  })
                  .join(' ')
              t.append('polygon').attr('points', u).attr('class', 'radarGraticule')
            }
          }
        }, 'drawGraticule')),
        (jtt = o((t, e, r, n) => {
          let i = e.length
          for (let a = 0; a < i; a++) {
            let s = e[a].label,
              l = (2 * a * Math.PI) / i - Math.PI / 2
            t
              .append('line')
              .attr('x1', 0)
              .attr('y1', 0)
              .attr('x2', r * n.axisScaleFactor * Math.cos(l))
              .attr('y2', r * n.axisScaleFactor * Math.sin(l))
              .attr('class', 'radarAxisLine'),
              t
                .append('text')
                .text(s)
                .attr('x', r * n.axisLabelFactor * Math.cos(l))
                .attr('y', r * n.axisLabelFactor * Math.sin(l))
                .attr('class', 'radarAxisLabel')
          }
        }, 'drawAxes'))
      o(Ktt, 'drawCurves')
      o(Qtt, 'relativeRadius')
      o(Ztt, 'closedRoundCurve')
      o(Jtt, 'drawLegend')
      wve = { draw: qtt }
    })
  var ert,
    trt,
    Eve,
    Sve = N(() => {
      'use strict'
      er()
      By()
      mi()
      ;(ert = o((t, e) => {
        let r = ''
        for (let n = 0; n < t.THEME_COLOR_LIMIT; n++) {
          let i = t[`cScale${n}`]
          r += `
		.radarCurve-${n} {
			color: ${i};
			fill: ${i};
			fill-opacity: ${e.curveOpacity};
			stroke: ${i};
			stroke-width: ${e.curveStrokeWidth};
		}
		.radarLegendBox-${n} {
			fill: ${i};
			fill-opacity: ${e.curveOpacity};
			stroke: ${i};
		}
		`
        }
        return r
      }, 'genIndexStyles')),
        (trt = o(t => {
          let e = dh(),
            r = tr(),
            n = $n(e, r.themeVariables),
            i = $n(n.radar, t)
          return { themeVariables: n, radarOptions: i }
        }, 'buildRadarStyleOptions')),
        (Eve = o(({ radar: t } = {}) => {
          let { themeVariables: e, radarOptions: r } = trt(t)
          return `
	.radarTitle {
		font-size: ${e.fontSize};
		color: ${e.titleColor};
		dominant-baseline: hanging;
		text-anchor: middle;
	}
	.radarAxisLine {
		stroke: ${r.axisColor};
		stroke-width: ${r.axisStrokeWidth};
	}
	.radarAxisLabel {
		dominant-baseline: middle;
		text-anchor: middle;
		font-size: ${r.axisLabelFontSize}px;
		color: ${r.axisColor};
	}
	.radarGraticule {
		fill: ${r.graticuleColor};
		fill-opacity: ${r.graticuleOpacity};
		stroke: ${r.graticuleColor};
		stroke-width: ${r.graticuleStrokeWidth};
	}
	.radarLegendText {
		text-anchor: start;
		font-size: ${r.legendFontSize}px;
		dominant-baseline: hanging;
	}
	${ert(e, r)}
	`
        }, 'styles'))
    })
  var Cve = {}
  ur(Cve, { diagram: () => rrt })
  var rrt,
    Ave = N(() => {
      'use strict'
      MF()
      Tve()
      kve()
      Sve()
      rrt = { parser: bve, db: s0, renderer: wve, styles: Eve }
    })
  var IF,
    Lve,
    Rve = N(() => {
      'use strict'
      IF = (function () {
        var t = o(function (T, S, w, E) {
            for (w = w || {}, E = T.length; E--; w[T[E]] = S);
            return w
          }, 'o'),
          e = [1, 7],
          r = [1, 13],
          n = [1, 14],
          i = [1, 15],
          a = [1, 19],
          s = [1, 16],
          l = [1, 17],
          u = [1, 18],
          h = [8, 30],
          f = [8, 21, 28, 29, 30, 31, 32, 40, 44, 47],
          d = [1, 23],
          p = [1, 24],
          m = [8, 15, 16, 21, 28, 29, 30, 31, 32, 40, 44, 47],
          g = [8, 15, 16, 21, 27, 28, 29, 30, 31, 32, 40, 44, 47],
          y = [1, 49],
          v = {
            trace: o(function () {}, 'trace'),
            yy: {},
            symbols_: {
              error: 2,
              spaceLines: 3,
              SPACELINE: 4,
              NL: 5,
              separator: 6,
              SPACE: 7,
              EOF: 8,
              start: 9,
              BLOCK_DIAGRAM_KEY: 10,
              document: 11,
              stop: 12,
              statement: 13,
              link: 14,
              LINK: 15,
              START_LINK: 16,
              LINK_LABEL: 17,
              STR: 18,
              nodeStatement: 19,
              columnsStatement: 20,
              SPACE_BLOCK: 21,
              blockStatement: 22,
              classDefStatement: 23,
              cssClassStatement: 24,
              styleStatement: 25,
              node: 26,
              SIZE: 27,
              COLUMNS: 28,
              'id-block': 29,
              end: 30,
              block: 31,
              NODE_ID: 32,
              nodeShapeNLabel: 33,
              dirList: 34,
              DIR: 35,
              NODE_DSTART: 36,
              NODE_DEND: 37,
              BLOCK_ARROW_START: 38,
              BLOCK_ARROW_END: 39,
              classDef: 40,
              CLASSDEF_ID: 41,
              CLASSDEF_STYLEOPTS: 42,
              DEFAULT: 43,
              class: 44,
              CLASSENTITY_IDS: 45,
              STYLECLASS: 46,
              style: 47,
              STYLE_ENTITY_IDS: 48,
              STYLE_DEFINITION_DATA: 49,
              $accept: 0,
              $end: 1
            },
            terminals_: {
              2: 'error',
              4: 'SPACELINE',
              5: 'NL',
              7: 'SPACE',
              8: 'EOF',
              10: 'BLOCK_DIAGRAM_KEY',
              15: 'LINK',
              16: 'START_LINK',
              17: 'LINK_LABEL',
              18: 'STR',
              21: 'SPACE_BLOCK',
              27: 'SIZE',
              28: 'COLUMNS',
              29: 'id-block',
              30: 'end',
              31: 'block',
              32: 'NODE_ID',
              35: 'DIR',
              36: 'NODE_DSTART',
              37: 'NODE_DEND',
              38: 'BLOCK_ARROW_START',
              39: 'BLOCK_ARROW_END',
              40: 'classDef',
              41: 'CLASSDEF_ID',
              42: 'CLASSDEF_STYLEOPTS',
              43: 'DEFAULT',
              44: 'class',
              45: 'CLASSENTITY_IDS',
              46: 'STYLECLASS',
              47: 'style',
              48: 'STYLE_ENTITY_IDS',
              49: 'STYLE_DEFINITION_DATA'
            },
            productions_: [
              0,
              [3, 1],
              [3, 2],
              [3, 2],
              [6, 1],
              [6, 1],
              [6, 1],
              [9, 3],
              [12, 1],
              [12, 1],
              [12, 2],
              [12, 2],
              [11, 1],
              [11, 2],
              [14, 1],
              [14, 4],
              [13, 1],
              [13, 1],
              [13, 1],
              [13, 1],
              [13, 1],
              [13, 1],
              [13, 1],
              [19, 3],
              [19, 2],
              [19, 1],
              [20, 1],
              [22, 4],
              [22, 3],
              [26, 1],
              [26, 2],
              [34, 1],
              [34, 2],
              [33, 3],
              [33, 4],
              [23, 3],
              [23, 3],
              [24, 3],
              [25, 3]
            ],
            performAction: o(function (S, w, E, _, C, D, O) {
              var R = D.length - 1
              switch (C) {
                case 4:
                  _.getLogger().debug('Rule: separator (NL) ')
                  break
                case 5:
                  _.getLogger().debug('Rule: separator (Space) ')
                  break
                case 6:
                  _.getLogger().debug('Rule: separator (EOF) ')
                  break
                case 7:
                  _.getLogger().debug('Rule: hierarchy: ', D[R - 1]), _.setHierarchy(D[R - 1])
                  break
                case 8:
                  _.getLogger().debug('Stop NL ')
                  break
                case 9:
                  _.getLogger().debug('Stop EOF ')
                  break
                case 10:
                  _.getLogger().debug('Stop NL2 ')
                  break
                case 11:
                  _.getLogger().debug('Stop EOF2 ')
                  break
                case 12:
                  _.getLogger().debug('Rule: statement: ', D[R]), typeof D[R].length == 'number' ? (this.$ = D[R]) : (this.$ = [D[R]])
                  break
                case 13:
                  _.getLogger().debug('Rule: statement #2: ', D[R - 1]), (this.$ = [D[R - 1]].concat(D[R]))
                  break
                case 14:
                  _.getLogger().debug('Rule: link: ', D[R], S), (this.$ = { edgeTypeStr: D[R], label: '' })
                  break
                case 15:
                  _.getLogger().debug('Rule: LABEL link: ', D[R - 3], D[R - 1], D[R]), (this.$ = { edgeTypeStr: D[R], label: D[R - 1] })
                  break
                case 18:
                  let k = parseInt(D[R]),
                    L = _.generateId()
                  this.$ = { id: L, type: 'space', label: '', width: k, children: [] }
                  break
                case 23:
                  _.getLogger().debug('Rule: (nodeStatement link node) ', D[R - 2], D[R - 1], D[R], ' typestr: ', D[R - 1].edgeTypeStr)
                  let A = _.edgeStrToEdgeData(D[R - 1].edgeTypeStr)
                  this.$ = [
                    { id: D[R - 2].id, label: D[R - 2].label, type: D[R - 2].type, directions: D[R - 2].directions },
                    {
                      id: D[R - 2].id + '-' + D[R].id,
                      start: D[R - 2].id,
                      end: D[R].id,
                      label: D[R - 1].label,
                      type: 'edge',
                      directions: D[R].directions,
                      arrowTypeEnd: A,
                      arrowTypeStart: 'arrow_open'
                    },
                    { id: D[R].id, label: D[R].label, type: _.typeStr2Type(D[R].typeStr), directions: D[R].directions }
                  ]
                  break
                case 24:
                  _.getLogger().debug('Rule: nodeStatement (abc88 node size) ', D[R - 1], D[R]),
                    (this.$ = {
                      id: D[R - 1].id,
                      label: D[R - 1].label,
                      type: _.typeStr2Type(D[R - 1].typeStr),
                      directions: D[R - 1].directions,
                      widthInColumns: parseInt(D[R], 10)
                    })
                  break
                case 25:
                  _.getLogger().debug('Rule: nodeStatement (node) ', D[R]),
                    (this.$ = { id: D[R].id, label: D[R].label, type: _.typeStr2Type(D[R].typeStr), directions: D[R].directions, widthInColumns: 1 })
                  break
                case 26:
                  _.getLogger().debug('APA123', this ? this : 'na'),
                    _.getLogger().debug('COLUMNS: ', D[R]),
                    (this.$ = { type: 'column-setting', columns: D[R] === 'auto' ? -1 : parseInt(D[R]) })
                  break
                case 27:
                  _.getLogger().debug('Rule: id-block statement : ', D[R - 2], D[R - 1])
                  let I = _.generateId()
                  this.$ = { ...D[R - 2], type: 'composite', children: D[R - 1] }
                  break
                case 28:
                  _.getLogger().debug('Rule: blockStatement : ', D[R - 2], D[R - 1], D[R])
                  let M = _.generateId()
                  this.$ = { id: M, type: 'composite', label: '', children: D[R - 1] }
                  break
                case 29:
                  _.getLogger().debug('Rule: node (NODE_ID separator): ', D[R]), (this.$ = { id: D[R] })
                  break
                case 30:
                  _.getLogger().debug('Rule: node (NODE_ID nodeShapeNLabel separator): ', D[R - 1], D[R]),
                    (this.$ = { id: D[R - 1], label: D[R].label, typeStr: D[R].typeStr, directions: D[R].directions })
                  break
                case 31:
                  _.getLogger().debug('Rule: dirList: ', D[R]), (this.$ = [D[R]])
                  break
                case 32:
                  _.getLogger().debug('Rule: dirList: ', D[R - 1], D[R]), (this.$ = [D[R - 1]].concat(D[R]))
                  break
                case 33:
                  _.getLogger().debug('Rule: nodeShapeNLabel: ', D[R - 2], D[R - 1], D[R]), (this.$ = { typeStr: D[R - 2] + D[R], label: D[R - 1] })
                  break
                case 34:
                  _.getLogger().debug('Rule: BLOCK_ARROW nodeShapeNLabel: ', D[R - 3], D[R - 2], ' #3:', D[R - 1], D[R]),
                    (this.$ = { typeStr: D[R - 3] + D[R], label: D[R - 2], directions: D[R - 1] })
                  break
                case 35:
                case 36:
                  this.$ = { type: 'classDef', id: D[R - 1].trim(), css: D[R].trim() }
                  break
                case 37:
                  this.$ = { type: 'applyClass', id: D[R - 1].trim(), styleClass: D[R].trim() }
                  break
                case 38:
                  this.$ = { type: 'applyStyles', id: D[R - 1].trim(), stylesStr: D[R].trim() }
                  break
              }
            }, 'anonymous'),
            table: [
              { 9: 1, 10: [1, 2] },
              { 1: [3] },
              { 11: 3, 13: 4, 19: 5, 20: 6, 21: e, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 28: r, 29: n, 31: i, 32: a, 40: s, 44: l, 47: u },
              { 8: [1, 20] },
              t(h, [2, 12], { 13: 4, 19: 5, 20: 6, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 11: 21, 21: e, 28: r, 29: n, 31: i, 32: a, 40: s, 44: l, 47: u }),
              t(f, [2, 16], { 14: 22, 15: d, 16: p }),
              t(f, [2, 17]),
              t(f, [2, 18]),
              t(f, [2, 19]),
              t(f, [2, 20]),
              t(f, [2, 21]),
              t(f, [2, 22]),
              t(m, [2, 25], { 27: [1, 25] }),
              t(f, [2, 26]),
              { 19: 26, 26: 12, 32: a },
              { 11: 27, 13: 4, 19: 5, 20: 6, 21: e, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 28: r, 29: n, 31: i, 32: a, 40: s, 44: l, 47: u },
              { 41: [1, 28], 43: [1, 29] },
              { 45: [1, 30] },
              { 48: [1, 31] },
              t(g, [2, 29], { 33: 32, 36: [1, 33], 38: [1, 34] }),
              { 1: [2, 7] },
              t(h, [2, 13]),
              { 26: 35, 32: a },
              { 32: [2, 14] },
              { 17: [1, 36] },
              t(m, [2, 24]),
              { 11: 37, 13: 4, 14: 22, 15: d, 16: p, 19: 5, 20: 6, 21: e, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 28: r, 29: n, 31: i, 32: a, 40: s, 44: l, 47: u },
              { 30: [1, 38] },
              { 42: [1, 39] },
              { 42: [1, 40] },
              { 46: [1, 41] },
              { 49: [1, 42] },
              t(g, [2, 30]),
              { 18: [1, 43] },
              { 18: [1, 44] },
              t(m, [2, 23]),
              { 18: [1, 45] },
              { 30: [1, 46] },
              t(f, [2, 28]),
              t(f, [2, 35]),
              t(f, [2, 36]),
              t(f, [2, 37]),
              t(f, [2, 38]),
              { 37: [1, 47] },
              { 34: 48, 35: y },
              { 15: [1, 50] },
              t(f, [2, 27]),
              t(g, [2, 33]),
              { 39: [1, 51] },
              { 34: 52, 35: y, 39: [2, 31] },
              { 32: [2, 15] },
              t(g, [2, 34]),
              { 39: [2, 32] }
            ],
            defaultActions: { 20: [2, 7], 23: [2, 14], 50: [2, 15], 52: [2, 32] },
            parseError: o(function (S, w) {
              if (w.recoverable) this.trace(S)
              else {
                var E = new Error(S)
                throw ((E.hash = w), E)
              }
            }, 'parseError'),
            parse: o(function (S) {
              var w = this,
                E = [0],
                _ = [],
                C = [null],
                D = [],
                O = this.table,
                R = '',
                k = 0,
                L = 0,
                A = 0,
                I = 2,
                M = 1,
                P = D.slice.call(arguments, 1),
                B = Object.create(this.lexer),
                F = { yy: {} }
              for (var z in this.yy) Object.prototype.hasOwnProperty.call(this.yy, z) && (F.yy[z] = this.yy[z])
              B.setInput(S, F.yy), (F.yy.lexer = B), (F.yy.parser = this), typeof B.yylloc > 'u' && (B.yylloc = {})
              var $ = B.yylloc
              D.push($)
              var U = B.options && B.options.ranges
              typeof F.yy.parseError == 'function' ? (this.parseError = F.yy.parseError) : (this.parseError = Object.getPrototypeOf(this).parseError)
              function K(se) {
                ;(E.length = E.length - 2 * se), (C.length = C.length - se), (D.length = D.length - se)
              }
              o(K, 'popStack')
              function ee() {
                var se
                return (se = _.pop() || B.lex() || M), typeof se != 'number' && (se instanceof Array && ((_ = se), (se = _.pop())), (se = w.symbols_[se] || se)), se
              }
              o(ee, 'lex')
              for (var Y, ce, Z, ue, Q, j, ne = {}, te, he, le, J; ; ) {
                if (
                  ((Z = E[E.length - 1]),
                  this.defaultActions[Z] ? (ue = this.defaultActions[Z]) : ((Y === null || typeof Y > 'u') && (Y = ee()), (ue = O[Z] && O[Z][Y])),
                  typeof ue > 'u' || !ue.length || !ue[0])
                ) {
                  var Se = ''
                  J = []
                  for (te in O[Z]) this.terminals_[te] && te > I && J.push("'" + this.terminals_[te] + "'")
                  B.showPosition
                    ? (Se =
                        'Parse error on line ' +
                        (k + 1) +
                        `:
` +
                        B.showPosition() +
                        `
Expecting ` +
                        J.join(', ') +
                        ", got '" +
                        (this.terminals_[Y] || Y) +
                        "'")
                    : (Se = 'Parse error on line ' + (k + 1) + ': Unexpected ' + (Y == M ? 'end of input' : "'" + (this.terminals_[Y] || Y) + "'")),
                    this.parseError(Se, { text: B.match, token: this.terminals_[Y] || Y, line: B.yylineno, loc: $, expected: J })
                }
                if (ue[0] instanceof Array && ue.length > 1) throw new Error('Parse Error: multiple actions possible at state: ' + Z + ', token: ' + Y)
                switch (ue[0]) {
                  case 1:
                    E.push(Y),
                      C.push(B.yytext),
                      D.push(B.yylloc),
                      E.push(ue[1]),
                      (Y = null),
                      ce ? ((Y = ce), (ce = null)) : ((L = B.yyleng), (R = B.yytext), (k = B.yylineno), ($ = B.yylloc), A > 0 && A--)
                    break
                  case 2:
                    if (
                      ((he = this.productions_[ue[1]][1]),
                      (ne.$ = C[C.length - he]),
                      (ne._$ = {
                        first_line: D[D.length - (he || 1)].first_line,
                        last_line: D[D.length - 1].last_line,
                        first_column: D[D.length - (he || 1)].first_column,
                        last_column: D[D.length - 1].last_column
                      }),
                      U && (ne._$.range = [D[D.length - (he || 1)].range[0], D[D.length - 1].range[1]]),
                      (j = this.performAction.apply(ne, [R, L, k, F.yy, ue[1], C, D].concat(P))),
                      typeof j < 'u')
                    )
                      return j
                    he && ((E = E.slice(0, -1 * he * 2)), (C = C.slice(0, -1 * he)), (D = D.slice(0, -1 * he))),
                      E.push(this.productions_[ue[1]][0]),
                      C.push(ne.$),
                      D.push(ne._$),
                      (le = O[E[E.length - 2]][E[E.length - 1]]),
                      E.push(le)
                    break
                  case 3:
                    return !0
                }
              }
              return !0
            }, 'parse')
          },
          x = (function () {
            var T = {
              EOF: 1,
              parseError: o(function (w, E) {
                if (this.yy.parser) this.yy.parser.parseError(w, E)
                else throw new Error(w)
              }, 'parseError'),
              setInput: o(function (S, w) {
                return (
                  (this.yy = w || this.yy || {}),
                  (this._input = S),
                  (this._more = this._backtrack = this.done = !1),
                  (this.yylineno = this.yyleng = 0),
                  (this.yytext = this.matched = this.match = ''),
                  (this.conditionStack = ['INITIAL']),
                  (this.yylloc = { first_line: 1, first_column: 0, last_line: 1, last_column: 0 }),
                  this.options.ranges && (this.yylloc.range = [0, 0]),
                  (this.offset = 0),
                  this
                )
              }, 'setInput'),
              input: o(function () {
                var S = this._input[0]
                ;(this.yytext += S), this.yyleng++, this.offset++, (this.match += S), (this.matched += S)
                var w = S.match(/(?:\r\n?|\n).*/g)
                return (
                  w ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++, this.options.ranges && this.yylloc.range[1]++, (this._input = this._input.slice(1)), S
                )
              }, 'input'),
              unput: o(function (S) {
                var w = S.length,
                  E = S.split(/(?:\r\n?|\n)/g)
                ;(this._input = S + this._input), (this.yytext = this.yytext.substr(0, this.yytext.length - w)), (this.offset -= w)
                var _ = this.match.split(/(?:\r\n?|\n)/g)
                ;(this.match = this.match.substr(0, this.match.length - 1)),
                  (this.matched = this.matched.substr(0, this.matched.length - 1)),
                  E.length - 1 && (this.yylineno -= E.length - 1)
                var C = this.yylloc.range
                return (
                  (this.yylloc = {
                    first_line: this.yylloc.first_line,
                    last_line: this.yylineno + 1,
                    first_column: this.yylloc.first_column,
                    last_column: E ? (E.length === _.length ? this.yylloc.first_column : 0) + _[_.length - E.length].length - E[0].length : this.yylloc.first_column - w
                  }),
                  this.options.ranges && (this.yylloc.range = [C[0], C[0] + this.yyleng - w]),
                  (this.yyleng = this.yytext.length),
                  this
                )
              }, 'unput'),
              more: o(function () {
                return (this._more = !0), this
              }, 'more'),
              reject: o(function () {
                if (this.options.backtrack_lexer) this._backtrack = !0
                else
                  return this.parseError(
                    'Lexical error on line ' +
                      (this.yylineno + 1) +
                      `. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
` +
                      this.showPosition(),
                    { text: '', token: null, line: this.yylineno }
                  )
                return this
              }, 'reject'),
              less: o(function (S) {
                this.unput(this.match.slice(S))
              }, 'less'),
              pastInput: o(function () {
                var S = this.matched.substr(0, this.matched.length - this.match.length)
                return (S.length > 20 ? '...' : '') + S.substr(-20).replace(/\n/g, '')
              }, 'pastInput'),
              upcomingInput: o(function () {
                var S = this.match
                return S.length < 20 && (S += this._input.substr(0, 20 - S.length)), (S.substr(0, 20) + (S.length > 20 ? '...' : '')).replace(/\n/g, '')
              }, 'upcomingInput'),
              showPosition: o(function () {
                var S = this.pastInput(),
                  w = new Array(S.length + 1).join('-')
                return (
                  S +
                  this.upcomingInput() +
                  `
` +
                  w +
                  '^'
                )
              }, 'showPosition'),
              test_match: o(function (S, w) {
                var E, _, C
                if (
                  (this.options.backtrack_lexer &&
                    ((C = {
                      yylineno: this.yylineno,
                      yylloc: { first_line: this.yylloc.first_line, last_line: this.last_line, first_column: this.yylloc.first_column, last_column: this.yylloc.last_column },
                      yytext: this.yytext,
                      match: this.match,
                      matches: this.matches,
                      matched: this.matched,
                      yyleng: this.yyleng,
                      offset: this.offset,
                      _more: this._more,
                      _input: this._input,
                      yy: this.yy,
                      conditionStack: this.conditionStack.slice(0),
                      done: this.done
                    }),
                    this.options.ranges && (C.yylloc.range = this.yylloc.range.slice(0))),
                  (_ = S[0].match(/(?:\r\n?|\n).*/g)),
                  _ && (this.yylineno += _.length),
                  (this.yylloc = {
                    first_line: this.yylloc.last_line,
                    last_line: this.yylineno + 1,
                    first_column: this.yylloc.last_column,
                    last_column: _ ? _[_.length - 1].length - _[_.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + S[0].length
                  }),
                  (this.yytext += S[0]),
                  (this.match += S[0]),
                  (this.matches = S),
                  (this.yyleng = this.yytext.length),
                  this.options.ranges && (this.yylloc.range = [this.offset, (this.offset += this.yyleng)]),
                  (this._more = !1),
                  (this._backtrack = !1),
                  (this._input = this._input.slice(S[0].length)),
                  (this.matched += S[0]),
                  (E = this.performAction.call(this, this.yy, this, w, this.conditionStack[this.conditionStack.length - 1])),
                  this.done && this._input && (this.done = !1),
                  E)
                )
                  return E
                if (this._backtrack) {
                  for (var D in C) this[D] = C[D]
                  return !1
                }
                return !1
              }, 'test_match'),
              next: o(function () {
                if (this.done) return this.EOF
                this._input || (this.done = !0)
                var S, w, E, _
                this._more || ((this.yytext = ''), (this.match = ''))
                for (var C = this._currentRules(), D = 0; D < C.length; D++)
                  if (((E = this._input.match(this.rules[C[D]])), E && (!w || E[0].length > w[0].length))) {
                    if (((w = E), (_ = D), this.options.backtrack_lexer)) {
                      if (((S = this.test_match(E, C[D])), S !== !1)) return S
                      if (this._backtrack) {
                        w = !1
                        continue
                      } else return !1
                    } else if (!this.options.flex) break
                  }
                return w
                  ? ((S = this.test_match(w, C[_])), S !== !1 ? S : !1)
                  : this._input === ''
                    ? this.EOF
                    : this.parseError(
                        'Lexical error on line ' +
                          (this.yylineno + 1) +
                          `. Unrecognized text.
` +
                          this.showPosition(),
                        { text: '', token: null, line: this.yylineno }
                      )
              }, 'next'),
              lex: o(function () {
                var w = this.next()
                return w || this.lex()
              }, 'lex'),
              begin: o(function (w) {
                this.conditionStack.push(w)
              }, 'begin'),
              popState: o(function () {
                var w = this.conditionStack.length - 1
                return w > 0 ? this.conditionStack.pop() : this.conditionStack[0]
              }, 'popState'),
              _currentRules: o(function () {
                return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]
                  ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
                  : this.conditions.INITIAL.rules
              }, '_currentRules'),
              topState: o(function (w) {
                return (w = this.conditionStack.length - 1 - Math.abs(w || 0)), w >= 0 ? this.conditionStack[w] : 'INITIAL'
              }, 'topState'),
              pushState: o(function (w) {
                this.begin(w)
              }, 'pushState'),
              stateStackSize: o(function () {
                return this.conditionStack.length
              }, 'stateStackSize'),
              options: {},
              performAction: o(function (w, E, _, C) {
                var D = C
                switch (_) {
                  case 0:
                    return 10
                  case 1:
                    return w.getLogger().debug('Found space-block'), 31
                    break
                  case 2:
                    return w.getLogger().debug('Found nl-block'), 31
                    break
                  case 3:
                    return w.getLogger().debug('Found space-block'), 29
                    break
                  case 4:
                    w.getLogger().debug('.', E.yytext)
                    break
                  case 5:
                    w.getLogger().debug('_', E.yytext)
                    break
                  case 6:
                    return 5
                  case 7:
                    return (E.yytext = -1), 28
                    break
                  case 8:
                    return (E.yytext = E.yytext.replace(/columns\s+/, '')), w.getLogger().debug('COLUMNS (LEX)', E.yytext), 28
                    break
                  case 9:
                    this.pushState('md_string')
                    break
                  case 10:
                    return 'MD_STR'
                  case 11:
                    this.popState()
                    break
                  case 12:
                    this.pushState('string')
                    break
                  case 13:
                    w.getLogger().debug('LEX: POPPING STR:', E.yytext), this.popState()
                    break
                  case 14:
                    return w.getLogger().debug('LEX: STR end:', E.yytext), 'STR'
                    break
                  case 15:
                    return (E.yytext = E.yytext.replace(/space\:/, '')), w.getLogger().debug('SPACE NUM (LEX)', E.yytext), 21
                    break
                  case 16:
                    return (E.yytext = '1'), w.getLogger().debug('COLUMNS (LEX)', E.yytext), 21
                    break
                  case 17:
                    return 43
                  case 18:
                    return 'LINKSTYLE'
                  case 19:
                    return 'INTERPOLATE'
                  case 20:
                    return this.pushState('CLASSDEF'), 40
                    break
                  case 21:
                    return this.popState(), this.pushState('CLASSDEFID'), 'DEFAULT_CLASSDEF_ID'
                    break
                  case 22:
                    return this.popState(), this.pushState('CLASSDEFID'), 41
                    break
                  case 23:
                    return this.popState(), 42
                    break
                  case 24:
                    return this.pushState('CLASS'), 44
                    break
                  case 25:
                    return this.popState(), this.pushState('CLASS_STYLE'), 45
                    break
                  case 26:
                    return this.popState(), 46
                    break
                  case 27:
                    return this.pushState('STYLE_STMNT'), 47
                    break
                  case 28:
                    return this.popState(), this.pushState('STYLE_DEFINITION'), 48
                    break
                  case 29:
                    return this.popState(), 49
                    break
                  case 30:
                    return this.pushState('acc_title'), 'acc_title'
                    break
                  case 31:
                    return this.popState(), 'acc_title_value'
                    break
                  case 32:
                    return this.pushState('acc_descr'), 'acc_descr'
                    break
                  case 33:
                    return this.popState(), 'acc_descr_value'
                    break
                  case 34:
                    this.pushState('acc_descr_multiline')
                    break
                  case 35:
                    this.popState()
                    break
                  case 36:
                    return 'acc_descr_multiline_value'
                  case 37:
                    return 30
                  case 38:
                    return this.popState(), w.getLogger().debug('Lex: (('), 'NODE_DEND'
                    break
                  case 39:
                    return this.popState(), w.getLogger().debug('Lex: (('), 'NODE_DEND'
                    break
                  case 40:
                    return this.popState(), w.getLogger().debug('Lex: ))'), 'NODE_DEND'
                    break
                  case 41:
                    return this.popState(), w.getLogger().debug('Lex: (('), 'NODE_DEND'
                    break
                  case 42:
                    return this.popState(), w.getLogger().debug('Lex: (('), 'NODE_DEND'
                    break
                  case 43:
                    return this.popState(), w.getLogger().debug('Lex: (-'), 'NODE_DEND'
                    break
                  case 44:
                    return this.popState(), w.getLogger().debug('Lex: -)'), 'NODE_DEND'
                    break
                  case 45:
                    return this.popState(), w.getLogger().debug('Lex: (('), 'NODE_DEND'
                    break
                  case 46:
                    return this.popState(), w.getLogger().debug('Lex: ]]'), 'NODE_DEND'
                    break
                  case 47:
                    return this.popState(), w.getLogger().debug('Lex: ('), 'NODE_DEND'
                    break
                  case 48:
                    return this.popState(), w.getLogger().debug('Lex: ])'), 'NODE_DEND'
                    break
                  case 49:
                    return this.popState(), w.getLogger().debug('Lex: /]'), 'NODE_DEND'
                    break
                  case 50:
                    return this.popState(), w.getLogger().debug('Lex: /]'), 'NODE_DEND'
                    break
                  case 51:
                    return this.popState(), w.getLogger().debug('Lex: )]'), 'NODE_DEND'
                    break
                  case 52:
                    return this.popState(), w.getLogger().debug('Lex: )'), 'NODE_DEND'
                    break
                  case 53:
                    return this.popState(), w.getLogger().debug('Lex: ]>'), 'NODE_DEND'
                    break
                  case 54:
                    return this.popState(), w.getLogger().debug('Lex: ]'), 'NODE_DEND'
                    break
                  case 55:
                    return w.getLogger().debug('Lexa: -)'), this.pushState('NODE'), 36
                    break
                  case 56:
                    return w.getLogger().debug('Lexa: (-'), this.pushState('NODE'), 36
                    break
                  case 57:
                    return w.getLogger().debug('Lexa: ))'), this.pushState('NODE'), 36
                    break
                  case 58:
                    return w.getLogger().debug('Lexa: )'), this.pushState('NODE'), 36
                    break
                  case 59:
                    return w.getLogger().debug('Lex: ((('), this.pushState('NODE'), 36
                    break
                  case 60:
                    return w.getLogger().debug('Lexa: )'), this.pushState('NODE'), 36
                    break
                  case 61:
                    return w.getLogger().debug('Lexa: )'), this.pushState('NODE'), 36
                    break
                  case 62:
                    return w.getLogger().debug('Lexa: )'), this.pushState('NODE'), 36
                    break
                  case 63:
                    return w.getLogger().debug('Lexc: >'), this.pushState('NODE'), 36
                    break
                  case 64:
                    return w.getLogger().debug('Lexa: (['), this.pushState('NODE'), 36
                    break
                  case 65:
                    return w.getLogger().debug('Lexa: )'), this.pushState('NODE'), 36
                    break
                  case 66:
                    return this.pushState('NODE'), 36
                    break
                  case 67:
                    return this.pushState('NODE'), 36
                    break
                  case 68:
                    return this.pushState('NODE'), 36
                    break
                  case 69:
                    return this.pushState('NODE'), 36
                    break
                  case 70:
                    return this.pushState('NODE'), 36
                    break
                  case 71:
                    return this.pushState('NODE'), 36
                    break
                  case 72:
                    return this.pushState('NODE'), 36
                    break
                  case 73:
                    return w.getLogger().debug('Lexa: ['), this.pushState('NODE'), 36
                    break
                  case 74:
                    return this.pushState('BLOCK_ARROW'), w.getLogger().debug('LEX ARR START'), 38
                    break
                  case 75:
                    return w.getLogger().debug('Lex: NODE_ID', E.yytext), 32
                    break
                  case 76:
                    return w.getLogger().debug('Lex: EOF', E.yytext), 8
                    break
                  case 77:
                    this.pushState('md_string')
                    break
                  case 78:
                    this.pushState('md_string')
                    break
                  case 79:
                    return 'NODE_DESCR'
                  case 80:
                    this.popState()
                    break
                  case 81:
                    w.getLogger().debug('Lex: Starting string'), this.pushState('string')
                    break
                  case 82:
                    w.getLogger().debug('LEX ARR: Starting string'), this.pushState('string')
                    break
                  case 83:
                    return w.getLogger().debug('LEX: NODE_DESCR:', E.yytext), 'NODE_DESCR'
                    break
                  case 84:
                    w.getLogger().debug('LEX POPPING'), this.popState()
                    break
                  case 85:
                    w.getLogger().debug('Lex: =>BAE'), this.pushState('ARROW_DIR')
                    break
                  case 86:
                    return (E.yytext = E.yytext.replace(/^,\s*/, '')), w.getLogger().debug('Lex (right): dir:', E.yytext), 'DIR'
                    break
                  case 87:
                    return (E.yytext = E.yytext.replace(/^,\s*/, '')), w.getLogger().debug('Lex (left):', E.yytext), 'DIR'
                    break
                  case 88:
                    return (E.yytext = E.yytext.replace(/^,\s*/, '')), w.getLogger().debug('Lex (x):', E.yytext), 'DIR'
                    break
                  case 89:
                    return (E.yytext = E.yytext.replace(/^,\s*/, '')), w.getLogger().debug('Lex (y):', E.yytext), 'DIR'
                    break
                  case 90:
                    return (E.yytext = E.yytext.replace(/^,\s*/, '')), w.getLogger().debug('Lex (up):', E.yytext), 'DIR'
                    break
                  case 91:
                    return (E.yytext = E.yytext.replace(/^,\s*/, '')), w.getLogger().debug('Lex (down):', E.yytext), 'DIR'
                    break
                  case 92:
                    return (E.yytext = ']>'), w.getLogger().debug('Lex (ARROW_DIR end):', E.yytext), this.popState(), this.popState(), 'BLOCK_ARROW_END'
                    break
                  case 93:
                    return w.getLogger().debug('Lex: LINK', '#' + E.yytext + '#'), 15
                    break
                  case 94:
                    return w.getLogger().debug('Lex: LINK', E.yytext), 15
                    break
                  case 95:
                    return w.getLogger().debug('Lex: LINK', E.yytext), 15
                    break
                  case 96:
                    return w.getLogger().debug('Lex: LINK', E.yytext), 15
                    break
                  case 97:
                    return w.getLogger().debug('Lex: START_LINK', E.yytext), this.pushState('LLABEL'), 16
                    break
                  case 98:
                    return w.getLogger().debug('Lex: START_LINK', E.yytext), this.pushState('LLABEL'), 16
                    break
                  case 99:
                    return w.getLogger().debug('Lex: START_LINK', E.yytext), this.pushState('LLABEL'), 16
                    break
                  case 100:
                    this.pushState('md_string')
                    break
                  case 101:
                    return w.getLogger().debug('Lex: Starting string'), this.pushState('string'), 'LINK_LABEL'
                    break
                  case 102:
                    return this.popState(), w.getLogger().debug('Lex: LINK', '#' + E.yytext + '#'), 15
                    break
                  case 103:
                    return this.popState(), w.getLogger().debug('Lex: LINK', E.yytext), 15
                    break
                  case 104:
                    return this.popState(), w.getLogger().debug('Lex: LINK', E.yytext), 15
                    break
                  case 105:
                    return w.getLogger().debug('Lex: COLON', E.yytext), (E.yytext = E.yytext.slice(1)), 27
                    break
                }
              }, 'anonymous'),
              rules: [
                /^(?:block-beta\b)/,
                /^(?:block\s+)/,
                /^(?:block\n+)/,
                /^(?:block:)/,
                /^(?:[\s]+)/,
                /^(?:[\n]+)/,
                /^(?:((\u000D\u000A)|(\u000A)))/,
                /^(?:columns\s+auto\b)/,
                /^(?:columns\s+[\d]+)/,
                /^(?:["][`])/,
                /^(?:[^`"]+)/,
                /^(?:[`]["])/,
                /^(?:["])/,
                /^(?:["])/,
                /^(?:[^"]*)/,
                /^(?:space[:]\d+)/,
                /^(?:space\b)/,
                /^(?:default\b)/,
                /^(?:linkStyle\b)/,
                /^(?:interpolate\b)/,
                /^(?:classDef\s+)/,
                /^(?:DEFAULT\s+)/,
                /^(?:\w+\s+)/,
                /^(?:[^\n]*)/,
                /^(?:class\s+)/,
                /^(?:(\w+)+((,\s*\w+)*))/,
                /^(?:[^\n]*)/,
                /^(?:style\s+)/,
                /^(?:(\w+)+((,\s*\w+)*))/,
                /^(?:[^\n]*)/,
                /^(?:accTitle\s*:\s*)/,
                /^(?:(?!\n||)*[^\n]*)/,
                /^(?:accDescr\s*:\s*)/,
                /^(?:(?!\n||)*[^\n]*)/,
                /^(?:accDescr\s*\{\s*)/,
                /^(?:[\}])/,
                /^(?:[^\}]*)/,
                /^(?:end\b\s*)/,
                /^(?:\(\(\()/,
                /^(?:\)\)\))/,
                /^(?:[\)]\))/,
                /^(?:\}\})/,
                /^(?:\})/,
                /^(?:\(-)/,
                /^(?:-\))/,
                /^(?:\(\()/,
                /^(?:\]\])/,
                /^(?:\()/,
                /^(?:\]\))/,
                /^(?:\\\])/,
                /^(?:\/\])/,
                /^(?:\)\])/,
                /^(?:[\)])/,
                /^(?:\]>)/,
                /^(?:[\]])/,
                /^(?:-\))/,
                /^(?:\(-)/,
                /^(?:\)\))/,
                /^(?:\))/,
                /^(?:\(\(\()/,
                /^(?:\(\()/,
                /^(?:\{\{)/,
                /^(?:\{)/,
                /^(?:>)/,
                /^(?:\(\[)/,
                /^(?:\()/,
                /^(?:\[\[)/,
                /^(?:\[\|)/,
                /^(?:\[\()/,
                /^(?:\)\)\))/,
                /^(?:\[\\)/,
                /^(?:\[\/)/,
                /^(?:\[\\)/,
                /^(?:\[)/,
                /^(?:<\[)/,
                /^(?:[^\(\[\n\-\)\{\}\s\<\>:]+)/,
                /^(?:$)/,
                /^(?:["][`])/,
                /^(?:["][`])/,
                /^(?:[^`"]+)/,
                /^(?:[`]["])/,
                /^(?:["])/,
                /^(?:["])/,
                /^(?:[^"]+)/,
                /^(?:["])/,
                /^(?:\]>\s*\()/,
                /^(?:,?\s*right\s*)/,
                /^(?:,?\s*left\s*)/,
                /^(?:,?\s*x\s*)/,
                /^(?:,?\s*y\s*)/,
                /^(?:,?\s*up\s*)/,
                /^(?:,?\s*down\s*)/,
                /^(?:\)\s*)/,
                /^(?:\s*[xo<]?--+[-xo>]\s*)/,
                /^(?:\s*[xo<]?==+[=xo>]\s*)/,
                /^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,
                /^(?:\s*~~[\~]+\s*)/,
                /^(?:\s*[xo<]?--\s*)/,
                /^(?:\s*[xo<]?==\s*)/,
                /^(?:\s*[xo<]?-\.\s*)/,
                /^(?:["][`])/,
                /^(?:["])/,
                /^(?:\s*[xo<]?--+[-xo>]\s*)/,
                /^(?:\s*[xo<]?==+[=xo>]\s*)/,
                /^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,
                /^(?::\d+)/
              ],
              conditions: {
                STYLE_DEFINITION: { rules: [29], inclusive: !1 },
                STYLE_STMNT: { rules: [28], inclusive: !1 },
                CLASSDEFID: { rules: [23], inclusive: !1 },
                CLASSDEF: { rules: [21, 22], inclusive: !1 },
                CLASS_STYLE: { rules: [26], inclusive: !1 },
                CLASS: { rules: [25], inclusive: !1 },
                LLABEL: { rules: [100, 101, 102, 103, 104], inclusive: !1 },
                ARROW_DIR: { rules: [86, 87, 88, 89, 90, 91, 92], inclusive: !1 },
                BLOCK_ARROW: { rules: [77, 82, 85], inclusive: !1 },
                NODE: { rules: [38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 78, 81], inclusive: !1 },
                md_string: { rules: [10, 11, 79, 80], inclusive: !1 },
                space: { rules: [], inclusive: !1 },
                string: { rules: [13, 14, 83, 84], inclusive: !1 },
                acc_descr_multiline: { rules: [35, 36], inclusive: !1 },
                acc_descr: { rules: [33], inclusive: !1 },
                acc_title: { rules: [31], inclusive: !1 },
                INITIAL: {
                  rules: [
                    0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 15, 16, 17, 18, 19, 20, 24, 27, 30, 32, 34, 37, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
                    74, 75, 76, 93, 94, 95, 96, 97, 98, 99, 105
                  ],
                  inclusive: !0
                }
              }
            }
            return T
          })()
        v.lexer = x
        function b() {
          this.yy = {}
        }
        return o(b, 'Parser'), (b.prototype = v), (v.Parser = b), new b()
      })()
      IF.parser = IF
      Lve = IF
    })
  function frt(t) {
    switch ((X.debug('typeStr2Type', t), t)) {
      case '[]':
        return 'square'
      case '()':
        return X.debug('we have a round'), 'round'
      case '(())':
        return 'circle'
      case '>]':
        return 'rect_left_inv_arrow'
      case '{}':
        return 'diamond'
      case '{{}}':
        return 'hexagon'
      case '([])':
        return 'stadium'
      case '[[]]':
        return 'subroutine'
      case '[()]':
        return 'cylinder'
      case '((()))':
        return 'doublecircle'
      case '[//]':
        return 'lean_right'
      case '[\\\\]':
        return 'lean_left'
      case '[/\\]':
        return 'trapezoid'
      case '[\\/]':
        return 'inv_trapezoid'
      case '<[]>':
        return 'block_arrow'
      default:
        return 'na'
    }
  }
  function drt(t) {
    switch ((X.debug('typeStr2Type', t), t)) {
      case '==':
        return 'thick'
      default:
        return 'normal'
    }
  }
  function prt(t) {
    switch (t.trim()) {
      case '--x':
        return 'arrow_cross'
      case '--o':
        return 'arrow_circle'
      default:
        return 'arrow_point'
    }
  }
  var Yl,
    PF,
    OF,
    Nve,
    Mve,
    art,
    Ove,
    srt,
    bC,
    ort,
    lrt,
    crt,
    urt,
    Pve,
    BF,
    _4,
    hrt,
    Ive,
    mrt,
    grt,
    yrt,
    vrt,
    xrt,
    brt,
    Trt,
    wrt,
    krt,
    Ert,
    Srt,
    Bve,
    Fve = N(() => {
      'use strict'
      JL()
      mi()
      Gt()
      yt()
      pr()
      ci()
      ;(Yl = new Map()),
        (PF = []),
        (OF = new Map()),
        (Nve = 'color'),
        (Mve = 'fill'),
        (art = 'bgFill'),
        (Ove = ','),
        (srt = me()),
        (bC = new Map()),
        (ort = o(t => Ze.sanitizeText(t, srt), 'sanitizeText')),
        (lrt = o(function (t, e = '') {
          let r = bC.get(t)
          r || ((r = { id: t, styles: [], textStyles: [] }), bC.set(t, r)),
            e?.split(Ove).forEach(n => {
              let i = n.replace(/([^;]*);/, '$1').trim()
              if (RegExp(Nve).exec(n)) {
                let s = i.replace(Mve, art).replace(Nve, Mve)
                r.textStyles.push(s)
              }
              r.styles.push(i)
            })
        }, 'addStyleClass')),
        (crt = o(function (t, e = '') {
          let r = Yl.get(t)
          e != null && (r.styles = e.split(Ove))
        }, 'addStyle2Node')),
        (urt = o(function (t, e) {
          t.split(',').forEach(function (r) {
            let n = Yl.get(r)
            if (n === void 0) {
              let i = r.trim()
              ;(n = { id: i, type: 'na', children: [] }), Yl.set(i, n)
            }
            n.classes || (n.classes = []), n.classes.push(e)
          })
        }, 'setCssClass')),
        (Pve = o((t, e) => {
          let r = t.flat(),
            n = []
          for (let i of r) {
            if ((i.label && (i.label = ort(i.label)), i.type === 'classDef')) {
              lrt(i.id, i.css)
              continue
            }
            if (i.type === 'applyClass') {
              urt(i.id, i?.styleClass ?? '')
              continue
            }
            if (i.type === 'applyStyles') {
              i?.stylesStr && crt(i.id, i?.stylesStr)
              continue
            }
            if (i.type === 'column-setting') e.columns = i.columns ?? -1
            else if (i.type === 'edge') {
              let a = (OF.get(i.id) ?? 0) + 1
              OF.set(i.id, a), (i.id = a + '-' + i.id), PF.push(i)
            } else {
              i.label || (i.type === 'composite' ? (i.label = '') : (i.label = i.id))
              let a = Yl.get(i.id)
              if (
                (a === void 0 ? Yl.set(i.id, i) : (i.type !== 'na' && (a.type = i.type), i.label !== i.id && (a.label = i.label)),
                i.children && Pve(i.children, i),
                i.type === 'space')
              ) {
                let s = i.width ?? 1
                for (let l = 0; l < s; l++) {
                  let u = an(i)
                  ;(u.id = u.id + '-' + l), Yl.set(u.id, u), n.push(u)
                }
              } else a === void 0 && n.push(i)
            }
          }
          e.children = n
        }, 'populateBlockDatabase')),
        (BF = []),
        (_4 = { id: 'root', type: 'composite', children: [], columns: -1 }),
        (hrt = o(() => {
          X.debug('Clear called'),
            kr(),
            (_4 = { id: 'root', type: 'composite', children: [], columns: -1 }),
            (Yl = new Map([['root', _4]])),
            (BF = []),
            (bC = new Map()),
            (PF = []),
            (OF = new Map())
        }, 'clear'))
      o(frt, 'typeStr2Type')
      o(drt, 'edgeTypeStr2Type')
      o(prt, 'edgeStrToEdgeData')
      ;(Ive = 0),
        (mrt = o(() => (Ive++, 'id-' + Math.random().toString(36).substr(2, 12) + '-' + Ive), 'generateId')),
        (grt = o(t => {
          ;(_4.children = t), Pve(t, _4), (BF = _4.children)
        }, 'setHierarchy')),
        (yrt = o(t => {
          let e = Yl.get(t)
          return e ? (e.columns ? e.columns : e.children ? e.children.length : -1) : -1
        }, 'getColumns')),
        (vrt = o(() => [...Yl.values()], 'getBlocksFlat')),
        (xrt = o(() => BF || [], 'getBlocks')),
        (brt = o(() => PF, 'getEdges')),
        (Trt = o(t => Yl.get(t), 'getBlock')),
        (wrt = o(t => {
          Yl.set(t.id, t)
        }, 'setBlock')),
        (krt = o(() => X, 'getLogger')),
        (Ert = o(function () {
          return bC
        }, 'getClasses')),
        (Srt = {
          getConfig: o(() => tr().block, 'getConfig'),
          typeStr2Type: frt,
          edgeTypeStr2Type: drt,
          edgeStrToEdgeData: prt,
          getLogger: krt,
          getBlocksFlat: vrt,
          getBlocks: xrt,
          getEdges: brt,
          setHierarchy: grt,
          getBlock: Trt,
          setBlock: wrt,
          getColumns: yrt,
          getClasses: Ert,
          clear: hrt,
          generateId: mrt
        }),
        (Bve = Srt)
    })
  var TC,
    Crt,
    $ve,
    zve = N(() => {
      'use strict'
      Ks()
      Xm()
      ;(TC = o((t, e) => {
        let r = id,
          n = r(t, 'r'),
          i = r(t, 'g'),
          a = r(t, 'b')
        return Qa(n, i, a, e)
      }, 'fade')),
        (Crt = o(
          t => `.label {
    font-family: ${t.fontFamily};
    color: ${t.nodeTextColor || t.textColor};
  }
  .cluster-label text {
    fill: ${t.titleColor};
  }
  .cluster-label span,p {
    color: ${t.titleColor};
  }



  .label text,span,p {
    fill: ${t.nodeTextColor || t.textColor};
    color: ${t.nodeTextColor || t.textColor};
  }

  .node rect,
  .node circle,
  .node ellipse,
  .node polygon,
  .node path {
    fill: ${t.mainBkg};
    stroke: ${t.nodeBorder};
    stroke-width: 1px;
  }
  .flowchart-label text {
    text-anchor: middle;
  }
  // .flowchart-label .text-outer-tspan {
  //   text-anchor: middle;
  // }
  // .flowchart-label .text-inner-tspan {
  //   text-anchor: start;
  // }

  .node .label {
    text-align: center;
  }
  .node.clickable {
    cursor: pointer;
  }

  .arrowheadPath {
    fill: ${t.arrowheadColor};
  }

  .edgePath .path {
    stroke: ${t.lineColor};
    stroke-width: 2.0px;
  }

  .flowchart-link {
    stroke: ${t.lineColor};
    fill: none;
  }

  .edgeLabel {
    background-color: ${t.edgeLabelBackground};
    rect {
      opacity: 0.5;
      background-color: ${t.edgeLabelBackground};
      fill: ${t.edgeLabelBackground};
    }
    text-align: center;
  }

  /* For html labels only */
  .labelBkg {
    background-color: ${TC(t.edgeLabelBackground, 0.5)};
    // background-color:
  }

  .node .cluster {
    // fill: ${TC(t.mainBkg, 0.5)};
    fill: ${TC(t.clusterBkg, 0.5)};
    stroke: ${TC(t.clusterBorder, 0.2)};
    box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px;
    stroke-width: 1px;
  }

  .cluster text {
    fill: ${t.titleColor};
  }

  .cluster span,p {
    color: ${t.titleColor};
  }
  /* .cluster div {
    color: ${t.titleColor};
  } */

  div.mermaidTooltip {
    position: absolute;
    text-align: center;
    max-width: 200px;
    padding: 2px;
    font-family: ${t.fontFamily};
    font-size: 12px;
    background: ${t.tertiaryColor};
    border: 1px solid ${t.border2};
    border-radius: 2px;
    pointer-events: none;
    z-index: 100;
  }

  .flowchartTitleText {
    text-anchor: middle;
    font-size: 18px;
    fill: ${t.textColor};
  }
  ${Nc()}
`,
          'getStyles'
        )),
        ($ve = Crt)
    })
  var Art,
    _rt,
    Drt,
    Lrt,
    Rrt,
    Nrt,
    Mrt,
    Irt,
    Ort,
    Prt,
    Brt,
    Gve,
    Vve = N(() => {
      'use strict'
      yt()
      ;(Art = o((t, e, r, n) => {
        e.forEach(i => {
          Brt[i](t, r, n)
        })
      }, 'insertMarkers')),
        (_rt = o((t, e, r) => {
          X.trace('Making markers for ', r),
            t
              .append('defs')
              .append('marker')
              .attr('id', r + '_' + e + '-extensionStart')
              .attr('class', 'marker extension ' + e)
              .attr('refX', 18)
              .attr('refY', 7)
              .attr('markerWidth', 190)
              .attr('markerHeight', 240)
              .attr('orient', 'auto')
              .append('path')
              .attr('d', 'M 1,7 L18,13 V 1 Z'),
            t
              .append('defs')
              .append('marker')
              .attr('id', r + '_' + e + '-extensionEnd')
              .attr('class', 'marker extension ' + e)
              .attr('refX', 1)
              .attr('refY', 7)
              .attr('markerWidth', 20)
              .attr('markerHeight', 28)
              .attr('orient', 'auto')
              .append('path')
              .attr('d', 'M 1,1 V 13 L18,7 Z')
        }, 'extension')),
        (Drt = o((t, e, r) => {
          t
            .append('defs')
            .append('marker')
            .attr('id', r + '_' + e + '-compositionStart')
            .attr('class', 'marker composition ' + e)
            .attr('refX', 18)
            .attr('refY', 7)
            .attr('markerWidth', 190)
            .attr('markerHeight', 240)
            .attr('orient', 'auto')
            .append('path')
            .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z'),
            t
              .append('defs')
              .append('marker')
              .attr('id', r + '_' + e + '-compositionEnd')
              .attr('class', 'marker composition ' + e)
              .attr('refX', 1)
              .attr('refY', 7)
              .attr('markerWidth', 20)
              .attr('markerHeight', 28)
              .attr('orient', 'auto')
              .append('path')
              .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z')
        }, 'composition')),
        (Lrt = o((t, e, r) => {
          t
            .append('defs')
            .append('marker')
            .attr('id', r + '_' + e + '-aggregationStart')
            .attr('class', 'marker aggregation ' + e)
            .attr('refX', 18)
            .attr('refY', 7)
            .attr('markerWidth', 190)
            .attr('markerHeight', 240)
            .attr('orient', 'auto')
            .append('path')
            .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z'),
            t
              .append('defs')
              .append('marker')
              .attr('id', r + '_' + e + '-aggregationEnd')
              .attr('class', 'marker aggregation ' + e)
              .attr('refX', 1)
              .attr('refY', 7)
              .attr('markerWidth', 20)
              .attr('markerHeight', 28)
              .attr('orient', 'auto')
              .append('path')
              .attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z')
        }, 'aggregation')),
        (Rrt = o((t, e, r) => {
          t
            .append('defs')
            .append('marker')
            .attr('id', r + '_' + e + '-dependencyStart')
            .attr('class', 'marker dependency ' + e)
            .attr('refX', 6)
            .attr('refY', 7)
            .attr('markerWidth', 190)
            .attr('markerHeight', 240)
            .attr('orient', 'auto')
            .append('path')
            .attr('d', 'M 5,7 L9,13 L1,7 L9,1 Z'),
            t
              .append('defs')
              .append('marker')
              .attr('id', r + '_' + e + '-dependencyEnd')
              .attr('class', 'marker dependency ' + e)
              .attr('refX', 13)
              .attr('refY', 7)
              .attr('markerWidth', 20)
              .attr('markerHeight', 28)
              .attr('orient', 'auto')
              .append('path')
              .attr('d', 'M 18,7 L9,13 L14,7 L9,1 Z')
        }, 'dependency')),
        (Nrt = o((t, e, r) => {
          t
            .append('defs')
            .append('marker')
            .attr('id', r + '_' + e + '-lollipopStart')
            .attr('class', 'marker lollipop ' + e)
            .attr('refX', 13)
            .attr('refY', 7)
            .attr('markerWidth', 190)
            .attr('markerHeight', 240)
            .attr('orient', 'auto')
            .append('circle')
            .attr('stroke', 'black')
            .attr('fill', 'transparent')
            .attr('cx', 7)
            .attr('cy', 7)
            .attr('r', 6),
            t
              .append('defs')
              .append('marker')
              .attr('id', r + '_' + e + '-lollipopEnd')
              .attr('class', 'marker lollipop ' + e)
              .attr('refX', 1)
              .attr('refY', 7)
              .attr('markerWidth', 190)
              .attr('markerHeight', 240)
              .attr('orient', 'auto')
              .append('circle')
              .attr('stroke', 'black')
              .attr('fill', 'transparent')
              .attr('cx', 7)
              .attr('cy', 7)
              .attr('r', 6)
        }, 'lollipop')),
        (Mrt = o((t, e, r) => {
          t
            .append('marker')
            .attr('id', r + '_' + e + '-pointEnd')
            .attr('class', 'marker ' + e)
            .attr('viewBox', '0 0 10 10')
            .attr('refX', 6)
            .attr('refY', 5)
            .attr('markerUnits', 'userSpaceOnUse')
            .attr('markerWidth', 12)
            .attr('markerHeight', 12)
            .attr('orient', 'auto')
            .append('path')
            .attr('d', 'M 0 0 L 10 5 L 0 10 z')
            .attr('class', 'arrowMarkerPath')
            .style('stroke-width', 1)
            .style('stroke-dasharray', '1,0'),
            t
              .append('marker')
              .attr('id', r + '_' + e + '-pointStart')
              .attr('class', 'marker ' + e)
              .attr('viewBox', '0 0 10 10')
              .attr('refX', 4.5)
              .attr('refY', 5)
              .attr('markerUnits', 'userSpaceOnUse')
              .attr('markerWidth', 12)
              .attr('markerHeight', 12)
              .attr('orient', 'auto')
              .append('path')
              .attr('d', 'M 0 5 L 10 10 L 10 0 z')
              .attr('class', 'arrowMarkerPath')
              .style('stroke-width', 1)
              .style('stroke-dasharray', '1,0')
        }, 'point')),
        (Irt = o((t, e, r) => {
          t
            .append('marker')
            .attr('id', r + '_' + e + '-circleEnd')
            .attr('class', 'marker ' + e)
            .attr('viewBox', '0 0 10 10')
            .attr('refX', 11)
            .attr('refY', 5)
            .attr('markerUnits', 'userSpaceOnUse')
            .attr('markerWidth', 11)
            .attr('markerHeight', 11)
            .attr('orient', 'auto')
            .append('circle')
            .attr('cx', '5')
            .attr('cy', '5')
            .attr('r', '5')
            .attr('class', 'arrowMarkerPath')
            .style('stroke-width', 1)
            .style('stroke-dasharray', '1,0'),
            t
              .append('marker')
              .attr('id', r + '_' + e + '-circleStart')
              .attr('class', 'marker ' + e)
              .attr('viewBox', '0 0 10 10')
              .attr('refX', -1)
              .attr('refY', 5)
              .attr('markerUnits', 'userSpaceOnUse')
              .attr('markerWidth', 11)
              .attr('markerHeight', 11)
              .attr('orient', 'auto')
              .append('circle')
              .attr('cx', '5')
              .attr('cy', '5')
              .attr('r', '5')
              .attr('class', 'arrowMarkerPath')
              .style('stroke-width', 1)
              .style('stroke-dasharray', '1,0')
        }, 'circle')),
        (Ort = o((t, e, r) => {
          t
            .append('marker')
            .attr('id', r + '_' + e + '-crossEnd')
            .attr('class', 'marker cross ' + e)
            .attr('viewBox', '0 0 11 11')
            .attr('refX', 12)
            .attr('refY', 5.2)
            .attr('markerUnits', 'userSpaceOnUse')
            .attr('markerWidth', 11)
            .attr('markerHeight', 11)
            .attr('orient', 'auto')
            .append('path')
            .attr('d', 'M 1,1 l 9,9 M 10,1 l -9,9')
            .attr('class', 'arrowMarkerPath')
            .style('stroke-width', 2)
            .style('stroke-dasharray', '1,0'),
            t
              .append('marker')
              .attr('id', r + '_' + e + '-crossStart')
              .attr('class', 'marker cross ' + e)
              .attr('viewBox', '0 0 11 11')
              .attr('refX', -1)
              .attr('refY', 5.2)
              .attr('markerUnits', 'userSpaceOnUse')
              .attr('markerWidth', 11)
              .attr('markerHeight', 11)
              .attr('orient', 'auto')
              .append('path')
              .attr('d', 'M 1,1 l 9,9 M 10,1 l -9,9')
              .attr('class', 'arrowMarkerPath')
              .style('stroke-width', 2)
              .style('stroke-dasharray', '1,0')
        }, 'cross')),
        (Prt = o((t, e, r) => {
          t.append('defs')
            .append('marker')
            .attr('id', r + '_' + e + '-barbEnd')
            .attr('refX', 19)
            .attr('refY', 7)
            .attr('markerWidth', 20)
            .attr('markerHeight', 14)
            .attr('markerUnits', 'strokeWidth')
            .attr('orient', 'auto')
            .append('path')
            .attr('d', 'M 19,7 L9,13 L14,7 L9,1 Z')
        }, 'barb')),
        (Brt = { extension: _rt, composition: Drt, aggregation: Lrt, dependency: Rrt, lollipop: Nrt, point: Mrt, circle: Irt, cross: Ort, barb: Prt }),
        (Gve = Art)
    })
  function Frt(t, e) {
    if (t === 0 || !Number.isInteger(t)) throw new Error('Columns must be an integer !== 0.')
    if (e < 0 || !Number.isInteger(e)) throw new Error('Position must be a non-negative integer.' + e)
    if (t < 0) return { px: e, py: 0 }
    if (t === 1) return { px: 0, py: e }
    let r = e % t,
      n = Math.floor(e / t)
    return { px: r, py: n }
  }
  function FF(t, e, r = 0, n = 0) {
    X.debug('setBlockSizes abc95 (start)', t.id, t?.size?.x, 'block width =', t?.size, 'siblingWidth', r), t?.size?.width || (t.size = { width: r, height: n, x: 0, y: 0 })
    let i = 0,
      a = 0
    if (t.children?.length > 0) {
      for (let m of t.children) FF(m, e)
      let s = $rt(t)
      ;(i = s.width), (a = s.height), X.debug('setBlockSizes abc95 maxWidth of', t.id, ':s children is ', i, a)
      for (let m of t.children)
        m.size &&
          (X.debug(`abc95 Setting size of children of ${t.id} id=${m.id} ${i} ${a} ${JSON.stringify(m.size)}`),
          (m.size.width = i * (m.widthInColumns ?? 1) + ki * ((m.widthInColumns ?? 1) - 1)),
          (m.size.height = a),
          (m.size.x = 0),
          (m.size.y = 0),
          X.debug(`abc95 updating size of ${t.id} children child:${m.id} maxWidth:${i} maxHeight:${a}`))
      for (let m of t.children) FF(m, e, i, a)
      let l = t.columns ?? -1,
        u = 0
      for (let m of t.children) u += m.widthInColumns ?? 1
      let h = t.children.length
      l > 0 && l < u && (h = l)
      let f = Math.ceil(u / h),
        d = h * (i + ki) + ki,
        p = f * (a + ki) + ki
      if (d < r) {
        X.debug(`Detected to small sibling: abc95 ${t.id} siblingWidth ${r} siblingHeight ${n} width ${d}`), (d = r), (p = n)
        let m = (r - h * ki - ki) / h,
          g = (n - f * ki - ki) / f
        X.debug('Size indata abc88', t.id, 'childWidth', m, 'maxWidth', i),
          X.debug('Size indata abc88', t.id, 'childHeight', g, 'maxHeight', a),
          X.debug('Size indata abc88 xSize', h, 'padding', ki)
        for (let y of t.children) y.size && ((y.size.width = m), (y.size.height = g), (y.size.x = 0), (y.size.y = 0))
      }
      if ((X.debug(`abc95 (finale calc) ${t.id} xSize ${h} ySize ${f} columns ${l}${t.children.length} width=${Math.max(d, t.size?.width || 0)}`), d < (t?.size?.width || 0))) {
        d = t?.size?.width || 0
        let m = l > 0 ? Math.min(t.children.length, l) : t.children.length
        if (m > 0) {
          let g = (d - m * ki - ki) / m
          X.debug('abc95 (growing to fit) width', t.id, d, t.size?.width, g)
          for (let y of t.children) y.size && (y.size.width = g)
        }
      }
      t.size = { width: d, height: p, x: 0, y: 0 }
    }
    X.debug('setBlockSizes abc94 (done)', t.id, t?.size?.x, t?.size?.width, t?.size?.y, t?.size?.height)
  }
  function Uve(t, e) {
    X.debug(`abc85 layout blocks (=>layoutBlocks) ${t.id} x: ${t?.size?.x} y: ${t?.size?.y} width: ${t?.size?.width}`)
    let r = t.columns ?? -1
    if ((X.debug('layoutBlocks columns abc95', t.id, '=>', r, t), t.children && t.children.length > 0)) {
      let n = t?.children[0]?.size?.width ?? 0,
        i = t.children.length * n + (t.children.length - 1) * ki
      X.debug('widthOfChildren 88', i, 'posX')
      let a = 0
      X.debug('abc91 block?.size?.x', t.id, t?.size?.x)
      let s = t?.size?.x ? t?.size?.x + (-t?.size?.width / 2 || 0) : -ki,
        l = 0
      for (let u of t.children) {
        let h = t
        if (!u.size) continue
        let { width: f, height: d } = u.size,
          { px: p, py: m } = Frt(r, a)
        if (
          (m != l && ((l = m), (s = t?.size?.x ? t?.size?.x + (-t?.size?.width / 2 || 0) : -ki), X.debug('New row in layout for block', t.id, ' and child ', u.id, l)),
          X.debug(`abc89 layout blocks (child) id: ${u.id} Pos: ${a} (px, py) ${p},${m} (${h?.size?.x},${h?.size?.y}) parent: ${h.id} width: ${f}${ki}`),
          h.size)
        ) {
          let g = f / 2
          ;(u.size.x = s + ki + g),
            X.debug(
              `abc91 layout blocks (calc) px, pyid:${u.id} startingPos=X${s} new startingPosX${u.size.x} ${g} padding=${ki} width=${f} halfWidth=${g} => x:${u.size.x} y:${u.size.y} ${u.widthInColumns} (width * (child?.w || 1)) / 2 ${(f * (u?.widthInColumns ?? 1)) / 2}`
            ),
            (s = u.size.x + g),
            (u.size.y = h.size.y - h.size.height / 2 + m * (d + ki) + d / 2 + ki),
            X.debug(
              `abc88 layout blocks (calc) px, pyid:${u.id}startingPosX${s}${ki}${g}=>x:${u.size.x}y:${u.size.y}${u.widthInColumns}(width * (child?.w || 1)) / 2${(f * (u?.widthInColumns ?? 1)) / 2}`
            )
        }
        u.children && Uve(u, e), (a += u?.widthInColumns ?? 1), X.debug('abc88 columnsPos', u, a)
      }
    }
    X.debug(`layout blocks (<==layoutBlocks) ${t.id} x: ${t?.size?.x} y: ${t?.size?.y} width: ${t?.size?.width}`)
  }
  function Hve(t, { minX: e, minY: r, maxX: n, maxY: i } = { minX: 0, minY: 0, maxX: 0, maxY: 0 }) {
    if (t.size && t.id !== 'root') {
      let { x: a, y: s, width: l, height: u } = t.size
      a - l / 2 < e && (e = a - l / 2), s - u / 2 < r && (r = s - u / 2), a + l / 2 > n && (n = a + l / 2), s + u / 2 > i && (i = s + u / 2)
    }
    if (t.children) for (let a of t.children) ({ minX: e, minY: r, maxX: n, maxY: i } = Hve(a, { minX: e, minY: r, maxX: n, maxY: i }))
    return { minX: e, minY: r, maxX: n, maxY: i }
  }
  function Wve(t) {
    let e = t.getBlock('root')
    if (!e) return
    FF(e, t, 0, 0), Uve(e, t), X.debug('getBlocks', JSON.stringify(e, null, 2))
    let { minX: r, minY: n, maxX: i, maxY: a } = Hve(e),
      s = a - n,
      l = i - r
    return { x: r, y: n, width: l, height: s }
  }
  var ki,
    $rt,
    qve = N(() => {
      'use strict'
      yt()
      Gt()
      ki = me()?.block?.padding ?? 8
      o(Frt, 'calculateBlockPosition')
      $rt = o(t => {
        let e = 0,
          r = 0
        for (let n of t.children) {
          let { width: i, height: a, x: s, y: l } = n.size ?? { width: 0, height: 0, x: 0, y: 0 }
          X.debug('getMaxChildSize abc95 child:', n.id, 'width:', i, 'height:', a, 'x:', s, 'y:', l, n.type),
            n.type !== 'space' && (i > e && (e = i / (t.widthInColumns ?? 1)), a > r && (r = a))
        }
        return { width: e, height: r }
      }, 'getMaxChildSize')
      o(FF, 'setBlockSizes')
      o(Uve, 'layoutBlocks')
      o(Hve, 'findBounds')
      o(Wve, 'layout')
    })
  function Yve(t, e) {
    e && t.attr('style', e)
  }
  function zrt(t) {
    let e = Ge(document.createElementNS('http://www.w3.org/2000/svg', 'foreignObject')),
      r = e.append('xhtml:div'),
      n = t.label,
      i = t.isNode ? 'nodeLabel' : 'edgeLabel',
      a = r.append('span')
    return (
      a.html(n),
      Yve(a, t.labelStyle),
      a.attr('class', i),
      Yve(r, t.labelStyle),
      r.style('display', 'inline-block'),
      r.style('white-space', 'nowrap'),
      r.attr('xmlns', 'http://www.w3.org/1999/xhtml'),
      e.node()
    )
  }
  var Grt,
    ks,
    wC = N(() => {
      'use strict'
      fr()
      yt()
      Gt()
      pr()
      er()
      ao()
      o(Yve, 'applyStyle')
      o(zrt, 'addHtmlLabel')
      ;(Grt = o(async (t, e, r, n) => {
        let i = t || ''
        if ((typeof i == 'object' && (i = i[0]), dr(me().flowchart.htmlLabels))) {
          ;(i = i.replace(/\\n|\n/g, '<br />')), X.debug('vertexText' + i)
          let a = await dL(na(i)),
            s = { isNode: n, label: a, labelStyle: e.replace('fill:', 'color:') }
          return zrt(s)
        } else {
          let a = document.createElementNS('http://www.w3.org/2000/svg', 'text')
          a.setAttribute('style', e.replace('color:', 'fill:'))
          let s = []
          typeof i == 'string' ? (s = i.split(/\\n|\n|<br\s*\/?>/gi)) : Array.isArray(i) ? (s = i) : (s = [])
          for (let l of s) {
            let u = document.createElementNS('http://www.w3.org/2000/svg', 'tspan')
            u.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve'),
              u.setAttribute('dy', '1em'),
              u.setAttribute('x', '0'),
              r ? u.setAttribute('class', 'title-row') : u.setAttribute('class', 'row'),
              (u.textContent = l.trim()),
              a.appendChild(u)
          }
          return a
        }
      }, 'createLabel')),
        (ks = Grt)
    })
  var jve,
    Vrt,
    Xve,
    Kve = N(() => {
      'use strict'
      yt()
      ;(jve = o((t, e, r, n, i) => {
        e.arrowTypeStart && Xve(t, 'start', e.arrowTypeStart, r, n, i), e.arrowTypeEnd && Xve(t, 'end', e.arrowTypeEnd, r, n, i)
      }, 'addEdgeMarkers')),
        (Vrt = {
          arrow_cross: 'cross',
          arrow_point: 'point',
          arrow_barb: 'barb',
          arrow_circle: 'circle',
          aggregation: 'aggregation',
          extension: 'extension',
          composition: 'composition',
          dependency: 'dependency',
          lollipop: 'lollipop'
        }),
        (Xve = o((t, e, r, n, i, a) => {
          let s = Vrt[r]
          if (!s) {
            X.warn(`Unknown arrow type: ${r}`)
            return
          }
          let l = e === 'start' ? 'Start' : 'End'
          t.attr(`marker-${e}`, `url(${n}#${i}_${a}-${s}${l})`)
        }, 'addEdgeMarker'))
    })
  function kC(t, e) {
    me().flowchart.htmlLabels && t && ((t.style.width = e.length * 9 + 'px'), (t.style.height = '12px'))
  }
  var $F,
    Xa,
    Zve,
    Jve,
    Urt,
    Hrt,
    Qve,
    e2e,
    t2e = N(() => {
      'use strict'
      yt()
      wC()
      ao()
      fr()
      Gt()
      er()
      pr()
      PL()
      R2()
      Kve()
      ;($F = {}),
        (Xa = {}),
        (Zve = o(async (t, e) => {
          let r = me(),
            n = dr(r.flowchart.htmlLabels),
            i = e.labelType === 'markdown' ? qn(t, e.label, { style: e.labelStyle, useHtmlLabels: n, addSvgBackground: !0 }, r) : await ks(e.label, e.labelStyle),
            a = t.insert('g').attr('class', 'edgeLabel'),
            s = a.insert('g').attr('class', 'label')
          s.node().appendChild(i)
          let l = i.getBBox()
          if (n) {
            let h = i.children[0],
              f = Ge(i)
            ;(l = h.getBoundingClientRect()), f.attr('width', l.width), f.attr('height', l.height)
          }
          s.attr('transform', 'translate(' + -l.width / 2 + ', ' + -l.height / 2 + ')'), ($F[e.id] = a), (e.width = l.width), (e.height = l.height)
          let u
          if (e.startLabelLeft) {
            let h = await ks(e.startLabelLeft, e.labelStyle),
              f = t.insert('g').attr('class', 'edgeTerminals'),
              d = f.insert('g').attr('class', 'inner')
            u = d.node().appendChild(h)
            let p = h.getBBox()
            d.attr('transform', 'translate(' + -p.width / 2 + ', ' + -p.height / 2 + ')'), Xa[e.id] || (Xa[e.id] = {}), (Xa[e.id].startLeft = f), kC(u, e.startLabelLeft)
          }
          if (e.startLabelRight) {
            let h = await ks(e.startLabelRight, e.labelStyle),
              f = t.insert('g').attr('class', 'edgeTerminals'),
              d = f.insert('g').attr('class', 'inner')
            ;(u = f.node().appendChild(h)), d.node().appendChild(h)
            let p = h.getBBox()
            d.attr('transform', 'translate(' + -p.width / 2 + ', ' + -p.height / 2 + ')'), Xa[e.id] || (Xa[e.id] = {}), (Xa[e.id].startRight = f), kC(u, e.startLabelRight)
          }
          if (e.endLabelLeft) {
            let h = await ks(e.endLabelLeft, e.labelStyle),
              f = t.insert('g').attr('class', 'edgeTerminals'),
              d = f.insert('g').attr('class', 'inner')
            u = d.node().appendChild(h)
            let p = h.getBBox()
            d.attr('transform', 'translate(' + -p.width / 2 + ', ' + -p.height / 2 + ')'),
              f.node().appendChild(h),
              Xa[e.id] || (Xa[e.id] = {}),
              (Xa[e.id].endLeft = f),
              kC(u, e.endLabelLeft)
          }
          if (e.endLabelRight) {
            let h = await ks(e.endLabelRight, e.labelStyle),
              f = t.insert('g').attr('class', 'edgeTerminals'),
              d = f.insert('g').attr('class', 'inner')
            u = d.node().appendChild(h)
            let p = h.getBBox()
            d.attr('transform', 'translate(' + -p.width / 2 + ', ' + -p.height / 2 + ')'),
              f.node().appendChild(h),
              Xa[e.id] || (Xa[e.id] = {}),
              (Xa[e.id].endRight = f),
              kC(u, e.endLabelRight)
          }
          return i
        }, 'insertEdgeLabel'))
      o(kC, 'setTerminalWidth')
      ;(Jve = o((t, e) => {
        X.debug('Moving label abc88 ', t.id, t.label, $F[t.id], e)
        let r = e.updatedPath ? e.updatedPath : e.originalPath,
          n = me(),
          { subGraphTitleTotalMargin: i } = Bu(n)
        if (t.label) {
          let a = $F[t.id],
            s = t.x,
            l = t.y
          if (r) {
            let u = Vt.calcLabelPosition(r)
            X.debug('Moving label ' + t.label + ' from (', s, ',', l, ') to (', u.x, ',', u.y, ') abc88'), e.updatedPath && ((s = u.x), (l = u.y))
          }
          a.attr('transform', `translate(${s}, ${l + i / 2})`)
        }
        if (t.startLabelLeft) {
          let a = Xa[t.id].startLeft,
            s = t.x,
            l = t.y
          if (r) {
            let u = Vt.calcTerminalLabelPosition(t.arrowTypeStart ? 10 : 0, 'start_left', r)
            ;(s = u.x), (l = u.y)
          }
          a.attr('transform', `translate(${s}, ${l})`)
        }
        if (t.startLabelRight) {
          let a = Xa[t.id].startRight,
            s = t.x,
            l = t.y
          if (r) {
            let u = Vt.calcTerminalLabelPosition(t.arrowTypeStart ? 10 : 0, 'start_right', r)
            ;(s = u.x), (l = u.y)
          }
          a.attr('transform', `translate(${s}, ${l})`)
        }
        if (t.endLabelLeft) {
          let a = Xa[t.id].endLeft,
            s = t.x,
            l = t.y
          if (r) {
            let u = Vt.calcTerminalLabelPosition(t.arrowTypeEnd ? 10 : 0, 'end_left', r)
            ;(s = u.x), (l = u.y)
          }
          a.attr('transform', `translate(${s}, ${l})`)
        }
        if (t.endLabelRight) {
          let a = Xa[t.id].endRight,
            s = t.x,
            l = t.y
          if (r) {
            let u = Vt.calcTerminalLabelPosition(t.arrowTypeEnd ? 10 : 0, 'end_right', r)
            ;(s = u.x), (l = u.y)
          }
          a.attr('transform', `translate(${s}, ${l})`)
        }
      }, 'positionEdgeLabel')),
        (Urt = o((t, e) => {
          let r = t.x,
            n = t.y,
            i = Math.abs(e.x - r),
            a = Math.abs(e.y - n),
            s = t.width / 2,
            l = t.height / 2
          return i >= s || a >= l
        }, 'outsideNode')),
        (Hrt = o((t, e, r) => {
          X.debug(`intersection calc abc89:
  outsidePoint: ${JSON.stringify(e)}
  insidePoint : ${JSON.stringify(r)}
  node        : x:${t.x} y:${t.y} w:${t.width} h:${t.height}`)
          let n = t.x,
            i = t.y,
            a = Math.abs(n - r.x),
            s = t.width / 2,
            l = r.x < e.x ? s - a : s + a,
            u = t.height / 2,
            h = Math.abs(e.y - r.y),
            f = Math.abs(e.x - r.x)
          if (Math.abs(i - e.y) * s > Math.abs(n - e.x) * u) {
            let d = r.y < e.y ? e.y - u - i : i - u - e.y
            l = (f * d) / h
            let p = { x: r.x < e.x ? r.x + l : r.x - f + l, y: r.y < e.y ? r.y + h - d : r.y - h + d }
            return l === 0 && ((p.x = e.x), (p.y = e.y)), f === 0 && (p.x = e.x), h === 0 && (p.y = e.y), X.debug(`abc89 topp/bott calc, Q ${h}, q ${d}, R ${f}, r ${l}`, p), p
          } else {
            r.x < e.x ? (l = e.x - s - n) : (l = n - s - e.x)
            let d = (h * l) / f,
              p = r.x < e.x ? r.x + f - l : r.x - f + l,
              m = r.y < e.y ? r.y + d : r.y - d
            return (
              X.debug(`sides calc abc89, Q ${h}, q ${d}, R ${f}, r ${l}`, { _x: p, _y: m }),
              l === 0 && ((p = e.x), (m = e.y)),
              f === 0 && (p = e.x),
              h === 0 && (m = e.y),
              { x: p, y: m }
            )
          }
        }, 'intersection')),
        (Qve = o((t, e) => {
          X.debug('abc88 cutPathAtIntersect', t, e)
          let r = [],
            n = t[0],
            i = !1
          return (
            t.forEach(a => {
              if (!Urt(e, a) && !i) {
                let s = Hrt(e, n, a),
                  l = !1
                r.forEach(u => {
                  l = l || (u.x === s.x && u.y === s.y)
                }),
                  r.some(u => u.x === s.x && u.y === s.y) || r.push(s),
                  (i = !0)
              } else (n = a), i || r.push(a)
            }),
            r
          )
        }, 'cutPathAtIntersect')),
        (e2e = o(function (t, e, r, n, i, a, s) {
          let l = r.points
          X.debug('abc88 InsertEdge: edge=', r, 'e=', e)
          let u = !1,
            h = a.node(e.v)
          var f = a.node(e.w)
          f?.intersect && h?.intersect && ((l = l.slice(1, r.points.length - 1)), l.unshift(h.intersect(l[0])), l.push(f.intersect(l[l.length - 1]))),
            r.toCluster && (X.debug('to cluster abc88', n[r.toCluster]), (l = Qve(r.points, n[r.toCluster].node)), (u = !0)),
            r.fromCluster && (X.debug('from cluster abc88', n[r.fromCluster]), (l = Qve(l.reverse(), n[r.fromCluster].node).reverse()), (u = !0))
          let d = l.filter(S => !Number.isNaN(S.y)),
            p = No
          r.curve && (i === 'graph' || i === 'flowchart') && (p = r.curve)
          let { x: m, y: g } = ow(r),
            y = Cl().x(m).y(g).curve(p),
            v
          switch (r.thickness) {
            case 'normal':
              v = 'edge-thickness-normal'
              break
            case 'thick':
              v = 'edge-thickness-thick'
              break
            case 'invisible':
              v = 'edge-thickness-thick'
              break
            default:
              v = ''
          }
          switch (r.pattern) {
            case 'solid':
              v += ' edge-pattern-solid'
              break
            case 'dotted':
              v += ' edge-pattern-dotted'
              break
            case 'dashed':
              v += ' edge-pattern-dashed'
              break
          }
          let x = t
              .append('path')
              .attr('d', y(d))
              .attr('id', r.id)
              .attr('class', ' ' + v + (r.classes ? ' ' + r.classes : ''))
              .attr('style', r.style),
            b = ''
          ;(me().flowchart.arrowMarkerAbsolute || me().state.arrowMarkerAbsolute) && (b = mu(!0)), jve(x, r, b, s, i)
          let T = {}
          return u && (T.updatedPath = l), (T.originalPath = r.points), T
        }, 'insertEdge'))
    })
  var Wrt,
    r2e,
    n2e = N(() => {
      'use strict'
      ;(Wrt = o(t => {
        let e = new Set()
        for (let r of t)
          switch (r) {
            case 'x':
              e.add('right'), e.add('left')
              break
            case 'y':
              e.add('up'), e.add('down')
              break
            default:
              e.add(r)
              break
          }
        return e
      }, 'expandAndDeduplicateDirections')),
        (r2e = o((t, e, r) => {
          let n = Wrt(t),
            i = 2,
            a = e.height + 2 * r.padding,
            s = a / i,
            l = e.width + 2 * s + r.padding,
            u = r.padding / 2
          return n.has('right') && n.has('left') && n.has('up') && n.has('down')
            ? [
                { x: 0, y: 0 },
                { x: s, y: 0 },
                { x: l / 2, y: 2 * u },
                { x: l - s, y: 0 },
                { x: l, y: 0 },
                { x: l, y: -a / 3 },
                { x: l + 2 * u, y: -a / 2 },
                { x: l, y: (-2 * a) / 3 },
                { x: l, y: -a },
                { x: l - s, y: -a },
                { x: l / 2, y: -a - 2 * u },
                { x: s, y: -a },
                { x: 0, y: -a },
                { x: 0, y: (-2 * a) / 3 },
                { x: -2 * u, y: -a / 2 },
                { x: 0, y: -a / 3 }
              ]
            : n.has('right') && n.has('left') && n.has('up')
              ? [
                  { x: s, y: 0 },
                  { x: l - s, y: 0 },
                  { x: l, y: -a / 2 },
                  { x: l - s, y: -a },
                  { x: s, y: -a },
                  { x: 0, y: -a / 2 }
                ]
              : n.has('right') && n.has('left') && n.has('down')
                ? [
                    { x: 0, y: 0 },
                    { x: s, y: -a },
                    { x: l - s, y: -a },
                    { x: l, y: 0 }
                  ]
                : n.has('right') && n.has('up') && n.has('down')
                  ? [
                      { x: 0, y: 0 },
                      { x: l, y: -s },
                      { x: l, y: -a + s },
                      { x: 0, y: -a }
                    ]
                  : n.has('left') && n.has('up') && n.has('down')
                    ? [
                        { x: l, y: 0 },
                        { x: 0, y: -s },
                        { x: 0, y: -a + s },
                        { x: l, y: -a }
                      ]
                    : n.has('right') && n.has('left')
                      ? [
                          { x: s, y: 0 },
                          { x: s, y: -u },
                          { x: l - s, y: -u },
                          { x: l - s, y: 0 },
                          { x: l, y: -a / 2 },
                          { x: l - s, y: -a },
                          { x: l - s, y: -a + u },
                          { x: s, y: -a + u },
                          { x: s, y: -a },
                          { x: 0, y: -a / 2 }
                        ]
                      : n.has('up') && n.has('down')
                        ? [
                            { x: l / 2, y: 0 },
                            { x: 0, y: -u },
                            { x: s, y: -u },
                            { x: s, y: -a + u },
                            { x: 0, y: -a + u },
                            { x: l / 2, y: -a },
                            { x: l, y: -a + u },
                            { x: l - s, y: -a + u },
                            { x: l - s, y: -u },
                            { x: l, y: -u }
                          ]
                        : n.has('right') && n.has('up')
                          ? [
                              { x: 0, y: 0 },
                              { x: l, y: -s },
                              { x: 0, y: -a }
                            ]
                          : n.has('right') && n.has('down')
                            ? [
                                { x: 0, y: 0 },
                                { x: l, y: 0 },
                                { x: 0, y: -a }
                              ]
                            : n.has('left') && n.has('up')
                              ? [
                                  { x: l, y: 0 },
                                  { x: 0, y: -s },
                                  { x: l, y: -a }
                                ]
                              : n.has('left') && n.has('down')
                                ? [
                                    { x: l, y: 0 },
                                    { x: 0, y: 0 },
                                    { x: l, y: -a }
                                  ]
                                : n.has('right')
                                  ? [
                                      { x: s, y: -u },
                                      { x: s, y: -u },
                                      { x: l - s, y: -u },
                                      { x: l - s, y: 0 },
                                      { x: l, y: -a / 2 },
                                      { x: l - s, y: -a },
                                      { x: l - s, y: -a + u },
                                      { x: s, y: -a + u },
                                      { x: s, y: -a + u }
                                    ]
                                  : n.has('left')
                                    ? [
                                        { x: s, y: 0 },
                                        { x: s, y: -u },
                                        { x: l - s, y: -u },
                                        { x: l - s, y: -a + u },
                                        { x: s, y: -a + u },
                                        { x: s, y: -a },
                                        { x: 0, y: -a / 2 }
                                      ]
                                    : n.has('up')
                                      ? [
                                          { x: s, y: -u },
                                          { x: s, y: -a + u },
                                          { x: 0, y: -a + u },
                                          { x: l / 2, y: -a },
                                          { x: l, y: -a + u },
                                          { x: l - s, y: -a + u },
                                          { x: l - s, y: -u }
                                        ]
                                      : n.has('down')
                                        ? [
                                            { x: l / 2, y: 0 },
                                            { x: 0, y: -u },
                                            { x: s, y: -u },
                                            { x: s, y: -a + u },
                                            { x: l - s, y: -a + u },
                                            { x: l - s, y: -u },
                                            { x: l, y: -u }
                                          ]
                                        : [{ x: 0, y: 0 }]
        }, 'getArrowPoints'))
    })
  function qrt(t, e) {
    return t.intersect(e)
  }
  var i2e,
    a2e = N(() => {
      'use strict'
      o(qrt, 'intersectNode')
      i2e = qrt
    })
  function Yrt(t, e, r, n) {
    var i = t.x,
      a = t.y,
      s = i - n.x,
      l = a - n.y,
      u = Math.sqrt(e * e * l * l + r * r * s * s),
      h = Math.abs((e * r * s) / u)
    n.x < i && (h = -h)
    var f = Math.abs((e * r * l) / u)
    return n.y < a && (f = -f), { x: i + h, y: a + f }
  }
  var EC,
    zF = N(() => {
      'use strict'
      o(Yrt, 'intersectEllipse')
      EC = Yrt
    })
  function Xrt(t, e, r) {
    return EC(t, e, e, r)
  }
  var s2e,
    o2e = N(() => {
      'use strict'
      zF()
      o(Xrt, 'intersectCircle')
      s2e = Xrt
    })
  function jrt(t, e, r, n) {
    var i, a, s, l, u, h, f, d, p, m, g, y, v, x, b
    if (
      ((i = e.y - t.y),
      (s = t.x - e.x),
      (u = e.x * t.y - t.x * e.y),
      (p = i * r.x + s * r.y + u),
      (m = i * n.x + s * n.y + u),
      !(p !== 0 && m !== 0 && l2e(p, m)) &&
        ((a = n.y - r.y),
        (l = r.x - n.x),
        (h = n.x * r.y - r.x * n.y),
        (f = a * t.x + l * t.y + h),
        (d = a * e.x + l * e.y + h),
        !(f !== 0 && d !== 0 && l2e(f, d)) && ((g = i * l - a * s), g !== 0)))
    )
      return (y = Math.abs(g / 2)), (v = s * h - l * u), (x = v < 0 ? (v - y) / g : (v + y) / g), (v = a * u - i * h), (b = v < 0 ? (v - y) / g : (v + y) / g), { x, y: b }
  }
  function l2e(t, e) {
    return t * e > 0
  }
  var c2e,
    u2e = N(() => {
      'use strict'
      o(jrt, 'intersectLine')
      o(l2e, 'sameSign')
      c2e = jrt
    })
  function Krt(t, e, r) {
    var n = t.x,
      i = t.y,
      a = [],
      s = Number.POSITIVE_INFINITY,
      l = Number.POSITIVE_INFINITY
    typeof e.forEach == 'function'
      ? e.forEach(function (g) {
          ;(s = Math.min(s, g.x)), (l = Math.min(l, g.y))
        })
      : ((s = Math.min(s, e.x)), (l = Math.min(l, e.y)))
    for (var u = n - t.width / 2 - s, h = i - t.height / 2 - l, f = 0; f < e.length; f++) {
      var d = e[f],
        p = e[f < e.length - 1 ? f + 1 : 0],
        m = c2e(t, r, { x: u + d.x, y: h + d.y }, { x: u + p.x, y: h + p.y })
      m && a.push(m)
    }
    return a.length
      ? (a.length > 1 &&
          a.sort(function (g, y) {
            var v = g.x - r.x,
              x = g.y - r.y,
              b = Math.sqrt(v * v + x * x),
              T = y.x - r.x,
              S = y.y - r.y,
              w = Math.sqrt(T * T + S * S)
            return b < w ? -1 : b === w ? 0 : 1
          }),
        a[0])
      : t
  }
  var h2e,
    f2e = N(() => {
      'use strict'
      u2e()
      h2e = Krt
      o(Krt, 'intersectPolygon')
    })
  var Qrt,
    d2e,
    p2e = N(() => {
      'use strict'
      ;(Qrt = o((t, e) => {
        var r = t.x,
          n = t.y,
          i = e.x - r,
          a = e.y - n,
          s = t.width / 2,
          l = t.height / 2,
          u,
          h
        return (
          Math.abs(a) * s > Math.abs(i) * l ? (a < 0 && (l = -l), (u = a === 0 ? 0 : (l * i) / a), (h = l)) : (i < 0 && (s = -s), (u = s), (h = i === 0 ? 0 : (s * a) / i)),
          { x: r + u, y: n + h }
        )
      }, 'intersectRect')),
        (d2e = Qrt)
    })
  var In,
    GF = N(() => {
      'use strict'
      a2e()
      o2e()
      zF()
      f2e()
      p2e()
      In = { node: i2e, circle: s2e, ellipse: EC, polygon: h2e, rect: d2e }
    })
  function Xl(t, e, r, n) {
    return t
      .insert('polygon', ':first-child')
      .attr(
        'points',
        n
          .map(function (i) {
            return i.x + ',' + i.y
          })
          .join(' ')
      )
      .attr('class', 'label-container')
      .attr('transform', 'translate(' + -e / 2 + ',' + r / 2 + ')')
  }
  var Ni,
    Jn,
    VF = N(() => {
      'use strict'
      wC()
      ao()
      Gt()
      fr()
      pr()
      er()
      ;(Ni = o(async (t, e, r, n) => {
        let i = me(),
          a,
          s = e.useHtmlLabels || dr(i.flowchart.htmlLabels)
        r ? (a = r) : (a = 'node default')
        let l = t
            .insert('g')
            .attr('class', a)
            .attr('id', e.domId || e.id),
          u = l.insert('g').attr('class', 'label').attr('style', e.labelStyle),
          h
        e.labelText === void 0 ? (h = '') : (h = typeof e.labelText == 'string' ? e.labelText : e.labelText[0])
        let f = u.node(),
          d
        e.labelType === 'markdown'
          ? (d = qn(u, wr(na(h), i), { useHtmlLabels: s, width: e.width || i.flowchart.wrappingWidth, classes: 'markdown-node-label' }, i))
          : (d = f.appendChild(await ks(wr(na(h), i), e.labelStyle, !1, n)))
        let p = d.getBBox(),
          m = e.padding / 2
        if (dr(i.flowchart.htmlLabels)) {
          let g = d.children[0],
            y = Ge(d),
            v = g.getElementsByTagName('img')
          if (v) {
            let x = h.replace(/<img[^>]*>/g, '').trim() === ''
            await Promise.all(
              [...v].map(
                b =>
                  new Promise(T => {
                    function S() {
                      if (((b.style.display = 'flex'), (b.style.flexDirection = 'column'), x)) {
                        let w = i.fontSize ? i.fontSize : window.getComputedStyle(document.body).fontSize,
                          _ = parseInt(w, 10) * 5 + 'px'
                        ;(b.style.minWidth = _), (b.style.maxWidth = _)
                      } else b.style.width = '100%'
                      T(b)
                    }
                    o(S, 'setupImage'),
                      setTimeout(() => {
                        b.complete && S()
                      }),
                      b.addEventListener('error', S),
                      b.addEventListener('load', S)
                  })
              )
            )
          }
          ;(p = g.getBoundingClientRect()), y.attr('width', p.width), y.attr('height', p.height)
        }
        return (
          s ? u.attr('transform', 'translate(' + -p.width / 2 + ', ' + -p.height / 2 + ')') : u.attr('transform', 'translate(0, ' + -p.height / 2 + ')'),
          e.centerLabel && u.attr('transform', 'translate(' + -p.width / 2 + ', ' + -p.height / 2 + ')'),
          u.insert('rect', ':first-child'),
          { shapeSvg: l, bbox: p, halfPadding: m, label: u }
        )
      }, 'labelHelper')),
        (Jn = o((t, e) => {
          let r = e.node().getBBox()
          ;(t.width = r.width), (t.height = r.height)
        }, 'updateNodeBounds'))
      o(Xl, 'insertPolygonShape')
    })
  var Zrt,
    m2e,
    g2e = N(() => {
      'use strict'
      VF()
      yt()
      Gt()
      GF()
      ;(Zrt = o(async (t, e) => {
        e.useHtmlLabels || me().flowchart.htmlLabels || (e.centerLabel = !0)
        let { shapeSvg: n, bbox: i, halfPadding: a } = await Ni(t, e, 'node ' + e.classes, !0)
        X.info('Classes = ', e.classes)
        let s = n.insert('rect', ':first-child')
        return (
          s
            .attr('rx', e.rx)
            .attr('ry', e.ry)
            .attr('x', -i.width / 2 - a)
            .attr('y', -i.height / 2 - a)
            .attr('width', i.width + e.padding)
            .attr('height', i.height + e.padding),
          Jn(e, s),
          (e.intersect = function (l) {
            return In.rect(e, l)
          }),
          n
        )
      }, 'note')),
        (m2e = Zrt)
    })
  function UF(t, e, r, n) {
    let i = [],
      a = o(l => {
        i.push(l, 0)
      }, 'addBorder'),
      s = o(l => {
        i.push(0, l)
      }, 'skipBorder')
    e.includes('t') ? (X.debug('add top border'), a(r)) : s(r),
      e.includes('r') ? (X.debug('add right border'), a(n)) : s(n),
      e.includes('b') ? (X.debug('add bottom border'), a(r)) : s(r),
      e.includes('l') ? (X.debug('add left border'), a(n)) : s(n),
      t.attr('stroke-dasharray', i.join(' '))
  }
  var y2e,
    bo,
    v2e,
    Jrt,
    ent,
    tnt,
    rnt,
    nnt,
    int,
    ant,
    snt,
    ont,
    lnt,
    cnt,
    unt,
    hnt,
    fnt,
    dnt,
    pnt,
    mnt,
    gnt,
    ynt,
    x2e,
    vnt,
    xnt,
    b2e,
    SC,
    HF,
    T2e,
    w2e = N(() => {
      'use strict'
      fr()
      Gt()
      pr()
      yt()
      n2e()
      wC()
      GF()
      g2e()
      VF()
      ;(y2e = o(t => (t ? ' ' + t : ''), 'formatClass')),
        (bo = o((t, e) => `${e || 'node default'}${y2e(t.classes)} ${y2e(t.class)}`, 'getClassesFromNode')),
        (v2e = o(async (t, e) => {
          let { shapeSvg: r, bbox: n } = await Ni(t, e, bo(e, void 0), !0),
            i = n.width + e.padding,
            a = n.height + e.padding,
            s = i + a,
            l = [
              { x: s / 2, y: 0 },
              { x: s, y: -s / 2 },
              { x: s / 2, y: -s },
              { x: 0, y: -s / 2 }
            ]
          X.info('Question main (Circle)')
          let u = Xl(r, s, s, l)
          return (
            u.attr('style', e.style),
            Jn(e, u),
            (e.intersect = function (h) {
              return X.warn('Intersect called'), In.polygon(e, l, h)
            }),
            r
          )
        }, 'question')),
        (Jrt = o((t, e) => {
          let r = t
              .insert('g')
              .attr('class', 'node default')
              .attr('id', e.domId || e.id),
            n = 28,
            i = [
              { x: 0, y: n / 2 },
              { x: n / 2, y: 0 },
              { x: 0, y: -n / 2 },
              { x: -n / 2, y: 0 }
            ]
          return (
            r
              .insert('polygon', ':first-child')
              .attr(
                'points',
                i
                  .map(function (s) {
                    return s.x + ',' + s.y
                  })
                  .join(' ')
              )
              .attr('class', 'state-start')
              .attr('r', 7)
              .attr('width', 28)
              .attr('height', 28),
            (e.width = 28),
            (e.height = 28),
            (e.intersect = function (s) {
              return In.circle(e, 14, s)
            }),
            r
          )
        }, 'choice')),
        (ent = o(async (t, e) => {
          let { shapeSvg: r, bbox: n } = await Ni(t, e, bo(e, void 0), !0),
            i = 4,
            a = n.height + e.padding,
            s = a / i,
            l = n.width + 2 * s + e.padding,
            u = [
              { x: s, y: 0 },
              { x: l - s, y: 0 },
              { x: l, y: -a / 2 },
              { x: l - s, y: -a },
              { x: s, y: -a },
              { x: 0, y: -a / 2 }
            ],
            h = Xl(r, l, a, u)
          return (
            h.attr('style', e.style),
            Jn(e, h),
            (e.intersect = function (f) {
              return In.polygon(e, u, f)
            }),
            r
          )
        }, 'hexagon')),
        (tnt = o(async (t, e) => {
          let { shapeSvg: r, bbox: n } = await Ni(t, e, void 0, !0),
            i = 2,
            a = n.height + 2 * e.padding,
            s = a / i,
            l = n.width + 2 * s + e.padding,
            u = r2e(e.directions, n, e),
            h = Xl(r, l, a, u)
          return (
            h.attr('style', e.style),
            Jn(e, h),
            (e.intersect = function (f) {
              return In.polygon(e, u, f)
            }),
            r
          )
        }, 'block_arrow')),
        (rnt = o(async (t, e) => {
          let { shapeSvg: r, bbox: n } = await Ni(t, e, bo(e, void 0), !0),
            i = n.width + e.padding,
            a = n.height + e.padding,
            s = [
              { x: -a / 2, y: 0 },
              { x: i, y: 0 },
              { x: i, y: -a },
              { x: -a / 2, y: -a },
              { x: 0, y: -a / 2 }
            ]
          return (
            Xl(r, i, a, s).attr('style', e.style),
            (e.width = i + a),
            (e.height = a),
            (e.intersect = function (u) {
              return In.polygon(e, s, u)
            }),
            r
          )
        }, 'rect_left_inv_arrow')),
        (nnt = o(async (t, e) => {
          let { shapeSvg: r, bbox: n } = await Ni(t, e, bo(e), !0),
            i = n.width + e.padding,
            a = n.height + e.padding,
            s = [
              { x: (-2 * a) / 6, y: 0 },
              { x: i - a / 6, y: 0 },
              { x: i + (2 * a) / 6, y: -a },
              { x: a / 6, y: -a }
            ],
            l = Xl(r, i, a, s)
          return (
            l.attr('style', e.style),
            Jn(e, l),
            (e.intersect = function (u) {
              return In.polygon(e, s, u)
            }),
            r
          )
        }, 'lean_right')),
        (int = o(async (t, e) => {
          let { shapeSvg: r, bbox: n } = await Ni(t, e, bo(e, void 0), !0),
            i = n.width + e.padding,
            a = n.height + e.padding,
            s = [
              { x: (2 * a) / 6, y: 0 },
              { x: i + a / 6, y: 0 },
              { x: i - (2 * a) / 6, y: -a },
              { x: -a / 6, y: -a }
            ],
            l = Xl(r, i, a, s)
          return (
            l.attr('style', e.style),
            Jn(e, l),
            (e.intersect = function (u) {
              return In.polygon(e, s, u)
            }),
            r
          )
        }, 'lean_left')),
        (ant = o(async (t, e) => {
          let { shapeSvg: r, bbox: n } = await Ni(t, e, bo(e, void 0), !0),
            i = n.width + e.padding,
            a = n.height + e.padding,
            s = [
              { x: (-2 * a) / 6, y: 0 },
              { x: i + (2 * a) / 6, y: 0 },
              { x: i - a / 6, y: -a },
              { x: a / 6, y: -a }
            ],
            l = Xl(r, i, a, s)
          return (
            l.attr('style', e.style),
            Jn(e, l),
            (e.intersect = function (u) {
              return In.polygon(e, s, u)
            }),
            r
          )
        }, 'trapezoid')),
        (snt = o(async (t, e) => {
          let { shapeSvg: r, bbox: n } = await Ni(t, e, bo(e, void 0), !0),
            i = n.width + e.padding,
            a = n.height + e.padding,
            s = [
              { x: a / 6, y: 0 },
              { x: i - a / 6, y: 0 },
              { x: i + (2 * a) / 6, y: -a },
              { x: (-2 * a) / 6, y: -a }
            ],
            l = Xl(r, i, a, s)
          return (
            l.attr('style', e.style),
            Jn(e, l),
            (e.intersect = function (u) {
              return In.polygon(e, s, u)
            }),
            r
          )
        }, 'inv_trapezoid')),
        (ont = o(async (t, e) => {
          let { shapeSvg: r, bbox: n } = await Ni(t, e, bo(e, void 0), !0),
            i = n.width + e.padding,
            a = n.height + e.padding,
            s = [
              { x: 0, y: 0 },
              { x: i + a / 2, y: 0 },
              { x: i, y: -a / 2 },
              { x: i + a / 2, y: -a },
              { x: 0, y: -a }
            ],
            l = Xl(r, i, a, s)
          return (
            l.attr('style', e.style),
            Jn(e, l),
            (e.intersect = function (u) {
              return In.polygon(e, s, u)
            }),
            r
          )
        }, 'rect_right_inv_arrow')),
        (lnt = o(async (t, e) => {
          let { shapeSvg: r, bbox: n } = await Ni(t, e, bo(e, void 0), !0),
            i = n.width + e.padding,
            a = i / 2,
            s = a / (2.5 + i / 50),
            l = n.height + s + e.padding,
            u = 'M 0,' + s + ' a ' + a + ',' + s + ' 0,0,0 ' + i + ' 0 a ' + a + ',' + s + ' 0,0,0 ' + -i + ' 0 l 0,' + l + ' a ' + a + ',' + s + ' 0,0,0 ' + i + ' 0 l 0,' + -l,
            h = r
              .attr('label-offset-y', s)
              .insert('path', ':first-child')
              .attr('style', e.style)
              .attr('d', u)
              .attr('transform', 'translate(' + -i / 2 + ',' + -(l / 2 + s) + ')')
          return (
            Jn(e, h),
            (e.intersect = function (f) {
              let d = In.rect(e, f),
                p = d.x - e.x
              if (a != 0 && (Math.abs(p) < e.width / 2 || (Math.abs(p) == e.width / 2 && Math.abs(d.y - e.y) > e.height / 2 - s))) {
                let m = s * s * (1 - (p * p) / (a * a))
                m != 0 && (m = Math.sqrt(m)), (m = s - m), f.y - e.y > 0 && (m = -m), (d.y += m)
              }
              return d
            }),
            r
          )
        }, 'cylinder')),
        (cnt = o(async (t, e) => {
          let { shapeSvg: r, bbox: n, halfPadding: i } = await Ni(t, e, 'node ' + e.classes + ' ' + e.class, !0),
            a = r.insert('rect', ':first-child'),
            s = e.positioned ? e.width : n.width + e.padding,
            l = e.positioned ? e.height : n.height + e.padding,
            u = e.positioned ? -s / 2 : -n.width / 2 - i,
            h = e.positioned ? -l / 2 : -n.height / 2 - i
          if (
            (a.attr('class', 'basic label-container').attr('style', e.style).attr('rx', e.rx).attr('ry', e.ry).attr('x', u).attr('y', h).attr('width', s).attr('height', l),
            e.props)
          ) {
            let f = new Set(Object.keys(e.props))
            e.props.borders && (UF(a, e.props.borders, s, l), f.delete('borders')),
              f.forEach(d => {
                X.warn(`Unknown node property ${d}`)
              })
          }
          return (
            Jn(e, a),
            (e.intersect = function (f) {
              return In.rect(e, f)
            }),
            r
          )
        }, 'rect')),
        (unt = o(async (t, e) => {
          let { shapeSvg: r, bbox: n, halfPadding: i } = await Ni(t, e, 'node ' + e.classes, !0),
            a = r.insert('rect', ':first-child'),
            s = e.positioned ? e.width : n.width + e.padding,
            l = e.positioned ? e.height : n.height + e.padding,
            u = e.positioned ? -s / 2 : -n.width / 2 - i,
            h = e.positioned ? -l / 2 : -n.height / 2 - i
          if (
            (a
              .attr('class', 'basic cluster composite label-container')
              .attr('style', e.style)
              .attr('rx', e.rx)
              .attr('ry', e.ry)
              .attr('x', u)
              .attr('y', h)
              .attr('width', s)
              .attr('height', l),
            e.props)
          ) {
            let f = new Set(Object.keys(e.props))
            e.props.borders && (UF(a, e.props.borders, s, l), f.delete('borders')),
              f.forEach(d => {
                X.warn(`Unknown node property ${d}`)
              })
          }
          return (
            Jn(e, a),
            (e.intersect = function (f) {
              return In.rect(e, f)
            }),
            r
          )
        }, 'composite')),
        (hnt = o(async (t, e) => {
          let { shapeSvg: r } = await Ni(t, e, 'label', !0)
          X.trace('Classes = ', e.class)
          let n = r.insert('rect', ':first-child'),
            i = 0,
            a = 0
          if ((n.attr('width', i).attr('height', a), r.attr('class', 'label edgeLabel'), e.props)) {
            let s = new Set(Object.keys(e.props))
            e.props.borders && (UF(n, e.props.borders, i, a), s.delete('borders')),
              s.forEach(l => {
                X.warn(`Unknown node property ${l}`)
              })
          }
          return (
            Jn(e, n),
            (e.intersect = function (s) {
              return In.rect(e, s)
            }),
            r
          )
        }, 'labelRect'))
      o(UF, 'applyNodePropertyBorders')
      ;(fnt = o(async (t, e) => {
        let r
        e.classes ? (r = 'node ' + e.classes) : (r = 'node default')
        let n = t
            .insert('g')
            .attr('class', r)
            .attr('id', e.domId || e.id),
          i = n.insert('rect', ':first-child'),
          a = n.insert('line'),
          s = n.insert('g').attr('class', 'label'),
          l = e.labelText.flat ? e.labelText.flat() : e.labelText,
          u = ''
        typeof l == 'object' ? (u = l[0]) : (u = l), X.info('Label text abc79', u, l, typeof l == 'object')
        let h = s.node().appendChild(await ks(u, e.labelStyle, !0, !0)),
          f = { width: 0, height: 0 }
        if (dr(me().flowchart.htmlLabels)) {
          let y = h.children[0],
            v = Ge(h)
          ;(f = y.getBoundingClientRect()), v.attr('width', f.width), v.attr('height', f.height)
        }
        X.info('Text 2', l)
        let d = l.slice(1, l.length),
          p = h.getBBox(),
          m = s.node().appendChild(await ks(d.join ? d.join('<br/>') : d, e.labelStyle, !0, !0))
        if (dr(me().flowchart.htmlLabels)) {
          let y = m.children[0],
            v = Ge(m)
          ;(f = y.getBoundingClientRect()), v.attr('width', f.width), v.attr('height', f.height)
        }
        let g = e.padding / 2
        return (
          Ge(m).attr('transform', 'translate( ' + (f.width > p.width ? 0 : (p.width - f.width) / 2) + ', ' + (p.height + g + 5) + ')'),
          Ge(h).attr('transform', 'translate( ' + (f.width < p.width ? 0 : -(p.width - f.width) / 2) + ', 0)'),
          (f = s.node().getBBox()),
          s.attr('transform', 'translate(' + -f.width / 2 + ', ' + (-f.height / 2 - g + 3) + ')'),
          i
            .attr('class', 'outer title-state')
            .attr('x', -f.width / 2 - g)
            .attr('y', -f.height / 2 - g)
            .attr('width', f.width + e.padding)
            .attr('height', f.height + e.padding),
          a
            .attr('class', 'divider')
            .attr('x1', -f.width / 2 - g)
            .attr('x2', f.width / 2 + g)
            .attr('y1', -f.height / 2 - g + p.height + g)
            .attr('y2', -f.height / 2 - g + p.height + g),
          Jn(e, i),
          (e.intersect = function (y) {
            return In.rect(e, y)
          }),
          n
        )
      }, 'rectWithTitle')),
        (dnt = o(async (t, e) => {
          let { shapeSvg: r, bbox: n } = await Ni(t, e, bo(e, void 0), !0),
            i = n.height + e.padding,
            a = n.width + i / 4 + e.padding,
            s = r
              .insert('rect', ':first-child')
              .attr('style', e.style)
              .attr('rx', i / 2)
              .attr('ry', i / 2)
              .attr('x', -a / 2)
              .attr('y', -i / 2)
              .attr('width', a)
              .attr('height', i)
          return (
            Jn(e, s),
            (e.intersect = function (l) {
              return In.rect(e, l)
            }),
            r
          )
        }, 'stadium')),
        (pnt = o(async (t, e) => {
          let { shapeSvg: r, bbox: n, halfPadding: i } = await Ni(t, e, bo(e, void 0), !0),
            a = r.insert('circle', ':first-child')
          return (
            a
              .attr('style', e.style)
              .attr('rx', e.rx)
              .attr('ry', e.ry)
              .attr('r', n.width / 2 + i)
              .attr('width', n.width + e.padding)
              .attr('height', n.height + e.padding),
            X.info('Circle main'),
            Jn(e, a),
            (e.intersect = function (s) {
              return X.info('Circle intersect', e, n.width / 2 + i, s), In.circle(e, n.width / 2 + i, s)
            }),
            r
          )
        }, 'circle')),
        (mnt = o(async (t, e) => {
          let { shapeSvg: r, bbox: n, halfPadding: i } = await Ni(t, e, bo(e, void 0), !0),
            a = 5,
            s = r.insert('g', ':first-child'),
            l = s.insert('circle'),
            u = s.insert('circle')
          return (
            s.attr('class', e.class),
            l
              .attr('style', e.style)
              .attr('rx', e.rx)
              .attr('ry', e.ry)
              .attr('r', n.width / 2 + i + a)
              .attr('width', n.width + e.padding + a * 2)
              .attr('height', n.height + e.padding + a * 2),
            u
              .attr('style', e.style)
              .attr('rx', e.rx)
              .attr('ry', e.ry)
              .attr('r', n.width / 2 + i)
              .attr('width', n.width + e.padding)
              .attr('height', n.height + e.padding),
            X.info('DoubleCircle main'),
            Jn(e, l),
            (e.intersect = function (h) {
              return X.info('DoubleCircle intersect', e, n.width / 2 + i + a, h), In.circle(e, n.width / 2 + i + a, h)
            }),
            r
          )
        }, 'doublecircle')),
        (gnt = o(async (t, e) => {
          let { shapeSvg: r, bbox: n } = await Ni(t, e, bo(e, void 0), !0),
            i = n.width + e.padding,
            a = n.height + e.padding,
            s = [
              { x: 0, y: 0 },
              { x: i, y: 0 },
              { x: i, y: -a },
              { x: 0, y: -a },
              { x: 0, y: 0 },
              { x: -8, y: 0 },
              { x: i + 8, y: 0 },
              { x: i + 8, y: -a },
              { x: -8, y: -a },
              { x: -8, y: 0 }
            ],
            l = Xl(r, i, a, s)
          return (
            l.attr('style', e.style),
            Jn(e, l),
            (e.intersect = function (u) {
              return In.polygon(e, s, u)
            }),
            r
          )
        }, 'subroutine')),
        (ynt = o((t, e) => {
          let r = t
              .insert('g')
              .attr('class', 'node default')
              .attr('id', e.domId || e.id),
            n = r.insert('circle', ':first-child')
          return (
            n.attr('class', 'state-start').attr('r', 7).attr('width', 14).attr('height', 14),
            Jn(e, n),
            (e.intersect = function (i) {
              return In.circle(e, 7, i)
            }),
            r
          )
        }, 'start')),
        (x2e = o((t, e, r) => {
          let n = t
              .insert('g')
              .attr('class', 'node default')
              .attr('id', e.domId || e.id),
            i = 70,
            a = 10
          r === 'LR' && ((i = 10), (a = 70))
          let s = n
            .append('rect')
            .attr('x', (-1 * i) / 2)
            .attr('y', (-1 * a) / 2)
            .attr('width', i)
            .attr('height', a)
            .attr('class', 'fork-join')
          return (
            Jn(e, s),
            (e.height = e.height + e.padding / 2),
            (e.width = e.width + e.padding / 2),
            (e.intersect = function (l) {
              return In.rect(e, l)
            }),
            n
          )
        }, 'forkJoin')),
        (vnt = o((t, e) => {
          let r = t
              .insert('g')
              .attr('class', 'node default')
              .attr('id', e.domId || e.id),
            n = r.insert('circle', ':first-child'),
            i = r.insert('circle', ':first-child')
          return (
            i.attr('class', 'state-start').attr('r', 7).attr('width', 14).attr('height', 14),
            n.attr('class', 'state-end').attr('r', 5).attr('width', 10).attr('height', 10),
            Jn(e, i),
            (e.intersect = function (a) {
              return In.circle(e, 7, a)
            }),
            r
          )
        }, 'end')),
        (xnt = o(async (t, e) => {
          let r = e.padding / 2,
            n = 4,
            i = 8,
            a
          e.classes ? (a = 'node ' + e.classes) : (a = 'node default')
          let s = t
              .insert('g')
              .attr('class', a)
              .attr('id', e.domId || e.id),
            l = s.insert('rect', ':first-child'),
            u = s.insert('line'),
            h = s.insert('line'),
            f = 0,
            d = n,
            p = s.insert('g').attr('class', 'label'),
            m = 0,
            g = e.classData.annotations?.[0],
            y = e.classData.annotations[0] ? '\xAB' + e.classData.annotations[0] + '\xBB' : '',
            v = p.node().appendChild(await ks(y, e.labelStyle, !0, !0)),
            x = v.getBBox()
          if (dr(me().flowchart.htmlLabels)) {
            let C = v.children[0],
              D = Ge(v)
            ;(x = C.getBoundingClientRect()), D.attr('width', x.width), D.attr('height', x.height)
          }
          e.classData.annotations[0] && ((d += x.height + n), (f += x.width))
          let b = e.classData.label
          e.classData.type !== void 0 && e.classData.type !== '' && (me().flowchart.htmlLabels ? (b += '&lt;' + e.classData.type + '&gt;') : (b += '<' + e.classData.type + '>'))
          let T = p.node().appendChild(await ks(b, e.labelStyle, !0, !0))
          Ge(T).attr('class', 'classTitle')
          let S = T.getBBox()
          if (dr(me().flowchart.htmlLabels)) {
            let C = T.children[0],
              D = Ge(T)
            ;(S = C.getBoundingClientRect()), D.attr('width', S.width), D.attr('height', S.height)
          }
          ;(d += S.height + n), S.width > f && (f = S.width)
          let w = []
          e.classData.members.forEach(async C => {
            let D = C.getDisplayDetails(),
              O = D.displayText
            me().flowchart.htmlLabels && (O = O.replace(/</g, '&lt;').replace(/>/g, '&gt;'))
            let R = p.node().appendChild(await ks(O, D.cssStyle ? D.cssStyle : e.labelStyle, !0, !0)),
              k = R.getBBox()
            if (dr(me().flowchart.htmlLabels)) {
              let L = R.children[0],
                A = Ge(R)
              ;(k = L.getBoundingClientRect()), A.attr('width', k.width), A.attr('height', k.height)
            }
            k.width > f && (f = k.width), (d += k.height + n), w.push(R)
          }),
            (d += i)
          let E = []
          if (
            (e.classData.methods.forEach(async C => {
              let D = C.getDisplayDetails(),
                O = D.displayText
              me().flowchart.htmlLabels && (O = O.replace(/</g, '&lt;').replace(/>/g, '&gt;'))
              let R = p.node().appendChild(await ks(O, D.cssStyle ? D.cssStyle : e.labelStyle, !0, !0)),
                k = R.getBBox()
              if (dr(me().flowchart.htmlLabels)) {
                let L = R.children[0],
                  A = Ge(R)
                ;(k = L.getBoundingClientRect()), A.attr('width', k.width), A.attr('height', k.height)
              }
              k.width > f && (f = k.width), (d += k.height + n), E.push(R)
            }),
            (d += i),
            g)
          ) {
            let C = (f - x.width) / 2
            Ge(v).attr('transform', 'translate( ' + ((-1 * f) / 2 + C) + ', ' + (-1 * d) / 2 + ')'), (m = x.height + n)
          }
          let _ = (f - S.width) / 2
          return (
            Ge(T).attr('transform', 'translate( ' + ((-1 * f) / 2 + _) + ', ' + ((-1 * d) / 2 + m) + ')'),
            (m += S.height + n),
            u
              .attr('class', 'divider')
              .attr('x1', -f / 2 - r)
              .attr('x2', f / 2 + r)
              .attr('y1', -d / 2 - r + i + m)
              .attr('y2', -d / 2 - r + i + m),
            (m += i),
            w.forEach(C => {
              Ge(C).attr('transform', 'translate( ' + -f / 2 + ', ' + ((-1 * d) / 2 + m + i / 2) + ')')
              let D = C?.getBBox()
              m += (D?.height ?? 0) + n
            }),
            (m += i),
            h
              .attr('class', 'divider')
              .attr('x1', -f / 2 - r)
              .attr('x2', f / 2 + r)
              .attr('y1', -d / 2 - r + i + m)
              .attr('y2', -d / 2 - r + i + m),
            (m += i),
            E.forEach(C => {
              Ge(C).attr('transform', 'translate( ' + -f / 2 + ', ' + ((-1 * d) / 2 + m) + ')')
              let D = C?.getBBox()
              m += (D?.height ?? 0) + n
            }),
            l
              .attr('style', e.style)
              .attr('class', 'outer title-state')
              .attr('x', -f / 2 - r)
              .attr('y', -(d / 2) - r)
              .attr('width', f + e.padding)
              .attr('height', d + e.padding),
            Jn(e, l),
            (e.intersect = function (C) {
              return In.rect(e, C)
            }),
            s
          )
        }, 'class_box')),
        (b2e = {
          rhombus: v2e,
          composite: unt,
          question: v2e,
          rect: cnt,
          labelRect: hnt,
          rectWithTitle: fnt,
          choice: Jrt,
          circle: pnt,
          doublecircle: mnt,
          stadium: dnt,
          hexagon: ent,
          block_arrow: tnt,
          rect_left_inv_arrow: rnt,
          lean_right: nnt,
          lean_left: int,
          trapezoid: ant,
          inv_trapezoid: snt,
          rect_right_inv_arrow: ont,
          cylinder: lnt,
          start: ynt,
          end: vnt,
          note: m2e,
          subroutine: gnt,
          fork: x2e,
          join: x2e,
          class_box: xnt
        }),
        (SC = {}),
        (HF = o(async (t, e, r) => {
          let n, i
          if (e.link) {
            let a
            me().securityLevel === 'sandbox' ? (a = '_top') : e.linkTarget && (a = e.linkTarget || '_blank'),
              (n = t.insert('svg:a').attr('xlink:href', e.link).attr('target', a)),
              (i = await b2e[e.shape](n, e, r))
          } else (i = await b2e[e.shape](t, e, r)), (n = i)
          return (
            e.tooltip && i.attr('title', e.tooltip),
            e.class && i.attr('class', 'node default ' + e.class),
            (SC[e.id] = n),
            e.haveCallback && SC[e.id].attr('class', SC[e.id].attr('class') + ' clickable'),
            n
          )
        }, 'insertNode')),
        (T2e = o(t => {
          let e = SC[t.id]
          X.trace('Transforming node', t.diff, t, 'translate(' + (t.x - t.width / 2 - 5) + ', ' + t.width / 2 + ')')
          let r = 8,
            n = t.diff || 0
          return (
            t.clusterNode
              ? e.attr('transform', 'translate(' + (t.x + n - t.width / 2) + ', ' + (t.y - t.height / 2 - r) + ')')
              : e.attr('transform', 'translate(' + t.x + ', ' + t.y + ')'),
            n
          )
        }, 'positionNode'))
    })
  function k2e(t, e, r = !1) {
    let n = t,
      i = 'default'
    ;(n?.classes?.length || 0) > 0 && (i = (n?.classes ?? []).join(' ')), (i = i + ' flowchart-label')
    let a = 0,
      s = '',
      l
    switch (n.type) {
      case 'round':
        ;(a = 5), (s = 'rect')
        break
      case 'composite':
        ;(a = 0), (s = 'composite'), (l = 0)
        break
      case 'square':
        s = 'rect'
        break
      case 'diamond':
        s = 'question'
        break
      case 'hexagon':
        s = 'hexagon'
        break
      case 'block_arrow':
        s = 'block_arrow'
        break
      case 'odd':
        s = 'rect_left_inv_arrow'
        break
      case 'lean_right':
        s = 'lean_right'
        break
      case 'lean_left':
        s = 'lean_left'
        break
      case 'trapezoid':
        s = 'trapezoid'
        break
      case 'inv_trapezoid':
        s = 'inv_trapezoid'
        break
      case 'rect_left_inv_arrow':
        s = 'rect_left_inv_arrow'
        break
      case 'circle':
        s = 'circle'
        break
      case 'ellipse':
        s = 'ellipse'
        break
      case 'stadium':
        s = 'stadium'
        break
      case 'subroutine':
        s = 'subroutine'
        break
      case 'cylinder':
        s = 'cylinder'
        break
      case 'group':
        s = 'rect'
        break
      case 'doublecircle':
        s = 'doublecircle'
        break
      default:
        s = 'rect'
    }
    let u = D9(n?.styles ?? []),
      h = n.label,
      f = n.size ?? { width: 0, height: 0, x: 0, y: 0 }
    return {
      labelStyle: u.labelStyle,
      shape: s,
      labelText: h,
      rx: a,
      ry: a,
      class: i,
      style: u.style,
      id: n.id,
      directions: n.directions,
      width: f.width,
      height: f.height,
      x: f.x,
      y: f.y,
      positioned: r,
      intersect: void 0,
      type: n.type,
      padding: l ?? tr()?.block?.padding ?? 0
    }
  }
  async function bnt(t, e, r) {
    let n = k2e(e, r, !1)
    if (n.type === 'group') return
    let i = tr(),
      a = await HF(t, n, { config: i }),
      s = a.node().getBBox(),
      l = r.getBlock(n.id)
    ;(l.size = { width: s.width, height: s.height, x: 0, y: 0, node: a }), r.setBlock(l), a.remove()
  }
  async function Tnt(t, e, r) {
    let n = k2e(e, r, !0)
    if (r.getBlock(n.id).type !== 'space') {
      let a = tr()
      await HF(t, n, { config: a }), (e.intersect = n?.intersect), T2e(n)
    }
  }
  async function WF(t, e, r, n) {
    for (let i of e) await n(t, i, r), i.children && (await WF(t, i.children, r, n))
  }
  async function E2e(t, e, r) {
    await WF(t, e, r, bnt)
  }
  async function S2e(t, e, r) {
    await WF(t, e, r, Tnt)
  }
  async function C2e(t, e, r, n, i) {
    let a = new sn({ multigraph: !0, compound: !0 })
    a.setGraph({ rankdir: 'TB', nodesep: 10, ranksep: 10, marginx: 8, marginy: 8 })
    for (let s of r) s.size && a.setNode(s.id, { width: s.size.width, height: s.size.height, intersect: s.intersect })
    for (let s of e)
      if (s.start && s.end) {
        let l = n.getBlock(s.start),
          u = n.getBlock(s.end)
        if (l?.size && u?.size) {
          let h = l.size,
            f = u.size,
            d = [
              { x: h.x, y: h.y },
              { x: h.x + (f.x - h.x) / 2, y: h.y + (f.y - h.y) / 2 },
              { x: f.x, y: f.y }
            ]
          e2e(
            t,
            { v: s.start, w: s.end, name: s.id },
            { ...s, arrowTypeEnd: s.arrowTypeEnd, arrowTypeStart: s.arrowTypeStart, points: d, classes: 'edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1' },
            void 0,
            'block',
            a,
            i
          ),
            s.label &&
              (await Zve(t, {
                ...s,
                label: s.label,
                labelStyle: 'stroke: #333; stroke-width: 1.5px;fill:none;',
                arrowTypeEnd: s.arrowTypeEnd,
                arrowTypeStart: s.arrowTypeStart,
                points: d,
                classes: 'edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1'
              }),
              Jve({ ...s, x: d[1].x, y: d[1].y }, { originalPath: d }))
        }
      }
  }
  var A2e = N(() => {
    'use strict'
    Wo()
    mi()
    t2e()
    w2e()
    er()
    o(k2e, 'getNodeFromBlock')
    o(bnt, 'calculateBlockSize')
    o(Tnt, 'insertBlockPositioned')
    o(WF, 'performOperations')
    o(E2e, 'calculateBlockSizes')
    o(S2e, 'insertBlocks')
    o(C2e, 'insertEdges')
  })
  var wnt,
    knt,
    _2e,
    D2e = N(() => {
      'use strict'
      fr()
      mi()
      Vve()
      yt()
      xi()
      qve()
      A2e()
      ;(wnt = o(function (t, e) {
        return e.db.getClasses()
      }, 'getClasses')),
        (knt = o(async function (t, e, r, n) {
          let { securityLevel: i, block: a } = tr(),
            s = n.db,
            l
          i === 'sandbox' && (l = Ge('#i' + e))
          let u = i === 'sandbox' ? Ge(l.nodes()[0].contentDocument.body) : Ge('body'),
            h = i === 'sandbox' ? u.select(`[id="${e}"]`) : Ge(`[id="${e}"]`)
          Gve(h, ['point', 'circle', 'cross'], n.type, e)
          let d = s.getBlocks(),
            p = s.getBlocksFlat(),
            m = s.getEdges(),
            g = h.insert('g').attr('class', 'block')
          await E2e(g, d, s)
          let y = Wve(s)
          if ((await S2e(g, d, s), await C2e(g, m, p, s, e), y)) {
            let v = y,
              x = Math.max(1, Math.round(0.125 * (v.width / v.height))),
              b = v.height + x + 10,
              T = v.width + 10,
              { useMaxWidth: S } = a
            fn(h, b, T, !!S), X.debug('Here Bounds', y, v), h.attr('viewBox', `${v.x - 5} ${v.y - 5} ${v.width + 10} ${v.height + 10}`)
          }
        }, 'draw')),
        (_2e = { draw: knt, getClasses: wnt })
    })
  var L2e = {}
  ur(L2e, { diagram: () => Ent })
  var Ent,
    R2e = N(() => {
      'use strict'
      Rve()
      Fve()
      zve()
      D2e()
      Ent = { parser: Lve, db: Bve, renderer: _2e, styles: $ve }
    })
  var qF,
    YF,
    D4,
    I2e,
    XF,
    ja,
    ru,
    L4,
    O2e,
    _nt,
    R4,
    P2e,
    B2e,
    F2e,
    $2e,
    z2e,
    CC,
    Yf,
    AC = N(() => {
      'use strict'
      ;(qF = { L: 'left', R: 'right', T: 'top', B: 'bottom' }),
        (YF = {
          L: o(t => `${t},${t / 2} 0,${t} 0,0`, 'L'),
          R: o(t => `0,${t / 2} ${t},0 ${t},${t}`, 'R'),
          T: o(t => `0,0 ${t},0 ${t / 2},${t}`, 'T'),
          B: o(t => `${t / 2},0 ${t},${t} 0,${t}`, 'B')
        }),
        (D4 = { L: o((t, e) => t - e + 2, 'L'), R: o((t, e) => t - 2, 'R'), T: o((t, e) => t - e + 2, 'T'), B: o((t, e) => t - 2, 'B') }),
        (I2e = o(function (t) {
          return ja(t) ? (t === 'L' ? 'R' : 'L') : t === 'T' ? 'B' : 'T'
        }, 'getOppositeArchitectureDirection')),
        (XF = o(function (t) {
          let e = t
          return e === 'L' || e === 'R' || e === 'T' || e === 'B'
        }, 'isArchitectureDirection')),
        (ja = o(function (t) {
          let e = t
          return e === 'L' || e === 'R'
        }, 'isArchitectureDirectionX')),
        (ru = o(function (t) {
          let e = t
          return e === 'T' || e === 'B'
        }, 'isArchitectureDirectionY')),
        (L4 = o(function (t, e) {
          let r = ja(t) && ru(e),
            n = ru(t) && ja(e)
          return r || n
        }, 'isArchitectureDirectionXY')),
        (O2e = o(function (t) {
          let e = t[0],
            r = t[1],
            n = ja(e) && ru(r),
            i = ru(e) && ja(r)
          return n || i
        }, 'isArchitecturePairXY')),
        (_nt = o(function (t) {
          return t !== 'LL' && t !== 'RR' && t !== 'TT' && t !== 'BB'
        }, 'isValidArchitectureDirectionPair')),
        (R4 = o(function (t, e) {
          let r = `${t}${e}`
          return _nt(r) ? r : void 0
        }, 'getArchitectureDirectionPair')),
        (P2e = o(function ([t, e], r) {
          let n = r[0],
            i = r[1]
          return ja(n)
            ? ru(i)
              ? [t + (n === 'L' ? -1 : 1), e + (i === 'T' ? 1 : -1)]
              : [t + (n === 'L' ? -1 : 1), e]
            : ja(i)
              ? [t + (i === 'L' ? 1 : -1), e + (n === 'T' ? 1 : -1)]
              : [t, e + (n === 'T' ? 1 : -1)]
        }, 'shiftPositionByArchitectureDirectionPair')),
        (B2e = o(function (t) {
          return t === 'LT' || t === 'TL' ? [1, 1] : t === 'BL' || t === 'LB' ? [1, -1] : t === 'BR' || t === 'RB' ? [-1, -1] : [-1, 1]
        }, 'getArchitectureDirectionXYFactors')),
        (F2e = o(function (t, e) {
          return L4(t, e) ? 'bend' : ja(t) ? 'horizontal' : 'vertical'
        }, 'getArchitectureDirectionAlignment')),
        ($2e = o(function (t) {
          return t.type === 'service'
        }, 'isArchitectureService')),
        (z2e = o(function (t) {
          return t.type === 'junction'
        }, 'isArchitectureJunction')),
        (CC = o(t => t.data(), 'edgeData')),
        (Yf = o(t => t.data(), 'nodeData'))
    })
  function Mi(t) {
    return V2e()[t]
  }
  var G2e,
    vr,
    Dnt,
    Lnt,
    Rnt,
    Nnt,
    Mnt,
    Int,
    jF,
    Ont,
    Pnt,
    Bnt,
    Fnt,
    $nt,
    znt,
    Gnt,
    V2e,
    o0,
    N4 = N(() => {
      'use strict'
      _a()
      mi()
      SS()
      ci()
      AC()
      er()
      ;(G2e = or.architecture),
        (vr = new Tf(() => ({ nodes: {}, groups: {}, edges: [], registeredIds: {}, config: G2e, dataStructures: void 0, elements: {} }))),
        (Dnt = o(() => {
          vr.reset(), kr()
        }, 'clear')),
        (Lnt = o(function ({ id: t, icon: e, in: r, title: n, iconText: i }) {
          if (vr.records.registeredIds[t] !== void 0) throw new Error(`The service id [${t}] is already in use by another ${vr.records.registeredIds[t]}`)
          if (r !== void 0) {
            if (t === r) throw new Error(`The service [${t}] cannot be placed within itself`)
            if (vr.records.registeredIds[r] === void 0) throw new Error(`The service [${t}]'s parent does not exist. Please make sure the parent is created before this service`)
            if (vr.records.registeredIds[r] === 'node') throw new Error(`The service [${t}]'s parent is not a group`)
          }
          ;(vr.records.registeredIds[t] = 'node'), (vr.records.nodes[t] = { id: t, type: 'service', icon: e, iconText: i, title: n, edges: [], in: r })
        }, 'addService')),
        (Rnt = o(() => Object.values(vr.records.nodes).filter($2e), 'getServices')),
        (Nnt = o(function ({ id: t, in: e }) {
          ;(vr.records.registeredIds[t] = 'node'), (vr.records.nodes[t] = { id: t, type: 'junction', edges: [], in: e })
        }, 'addJunction')),
        (Mnt = o(() => Object.values(vr.records.nodes).filter(z2e), 'getJunctions')),
        (Int = o(() => Object.values(vr.records.nodes), 'getNodes')),
        (jF = o(t => vr.records.nodes[t], 'getNode')),
        (Ont = o(function ({ id: t, icon: e, in: r, title: n }) {
          if (vr.records.registeredIds[t] !== void 0) throw new Error(`The group id [${t}] is already in use by another ${vr.records.registeredIds[t]}`)
          if (r !== void 0) {
            if (t === r) throw new Error(`The group [${t}] cannot be placed within itself`)
            if (vr.records.registeredIds[r] === void 0) throw new Error(`The group [${t}]'s parent does not exist. Please make sure the parent is created before this group`)
            if (vr.records.registeredIds[r] === 'node') throw new Error(`The group [${t}]'s parent is not a group`)
          }
          ;(vr.records.registeredIds[t] = 'group'), (vr.records.groups[t] = { id: t, icon: e, title: n, in: r })
        }, 'addGroup')),
        (Pnt = o(() => Object.values(vr.records.groups), 'getGroups')),
        (Bnt = o(function ({ lhsId: t, rhsId: e, lhsDir: r, rhsDir: n, lhsInto: i, rhsInto: a, lhsGroup: s, rhsGroup: l, title: u }) {
          if (!XF(r)) throw new Error(`Invalid direction given for left hand side of edge ${t}--${e}. Expected (L,R,T,B) got ${r}`)
          if (!XF(n)) throw new Error(`Invalid direction given for right hand side of edge ${t}--${e}. Expected (L,R,T,B) got ${n}`)
          if (vr.records.nodes[t] === void 0 && vr.records.groups[t] === void 0)
            throw new Error(`The left-hand id [${t}] does not yet exist. Please create the service/group before declaring an edge to it.`)
          if (vr.records.nodes[e] === void 0 && vr.records.groups[t] === void 0)
            throw new Error(`The right-hand id [${e}] does not yet exist. Please create the service/group before declaring an edge to it.`)
          let h = vr.records.nodes[t].in,
            f = vr.records.nodes[e].in
          if (s && h && f && h == f) throw new Error(`The left-hand id [${t}] is modified to traverse the group boundary, but the edge does not pass through two groups.`)
          if (l && h && f && h == f) throw new Error(`The right-hand id [${e}] is modified to traverse the group boundary, but the edge does not pass through two groups.`)
          let d = { lhsId: t, lhsDir: r, lhsInto: i, lhsGroup: s, rhsId: e, rhsDir: n, rhsInto: a, rhsGroup: l, title: u }
          vr.records.edges.push(d),
            vr.records.nodes[t] &&
              vr.records.nodes[e] &&
              (vr.records.nodes[t].edges.push(vr.records.edges[vr.records.edges.length - 1]), vr.records.nodes[e].edges.push(vr.records.edges[vr.records.edges.length - 1]))
        }, 'addEdge')),
        (Fnt = o(() => vr.records.edges, 'getEdges')),
        ($nt = o(() => {
          if (vr.records.dataStructures === void 0) {
            let t = {},
              e = Object.entries(vr.records.nodes).reduce(
                (l, [u, h]) => (
                  (l[u] = h.edges.reduce((f, d) => {
                    let p = jF(d.lhsId)?.in,
                      m = jF(d.rhsId)?.in
                    if (p && m && p !== m) {
                      let g = F2e(d.lhsDir, d.rhsDir)
                      g !== 'bend' && ((t[p] ??= {}), (t[p][m] = g), (t[m] ??= {}), (t[m][p] = g))
                    }
                    if (d.lhsId === u) {
                      let g = R4(d.lhsDir, d.rhsDir)
                      g && (f[g] = d.rhsId)
                    } else {
                      let g = R4(d.rhsDir, d.lhsDir)
                      g && (f[g] = d.lhsId)
                    }
                    return f
                  }, {})),
                  l
                ),
                {}
              ),
              r = Object.keys(e)[0],
              n = { [r]: 1 },
              i = Object.keys(e).reduce((l, u) => (u === r ? l : { ...l, [u]: 1 }), {}),
              a = o(l => {
                let u = { [l]: [0, 0] },
                  h = [l]
                for (; h.length > 0; ) {
                  let f = h.shift()
                  if (f) {
                    ;(n[f] = 1), delete i[f]
                    let d = e[f],
                      [p, m] = u[f]
                    Object.entries(d).forEach(([g, y]) => {
                      n[y] || ((u[y] = P2e([p, m], g)), h.push(y))
                    })
                  }
                }
                return u
              }, 'BFS'),
              s = [a(r)]
            for (; Object.keys(i).length > 0; ) s.push(a(Object.keys(i)[0]))
            vr.records.dataStructures = { adjList: e, spatialMaps: s, groupAlignments: t }
          }
          return vr.records.dataStructures
        }, 'getDataStructures')),
        (znt = o((t, e) => {
          vr.records.elements[t] = e
        }, 'setElementForId')),
        (Gnt = o(t => vr.records.elements[t], 'getElementById')),
        (V2e = o(() => $n({ ...G2e, ...tr().architecture }), 'getConfig')),
        (o0 = {
          clear: Dnt,
          setDiagramTitle: Or,
          getDiagramTitle: Nr,
          setAccTitle: Ar,
          getAccTitle: Dr,
          setAccDescription: Lr,
          getAccDescription: Rr,
          getConfig: V2e,
          addService: Lnt,
          getServices: Rnt,
          addJunction: Nnt,
          getJunctions: Mnt,
          getNodes: Int,
          getNode: jF,
          addGroup: Ont,
          getGroups: Pnt,
          addEdge: Bnt,
          getEdges: Fnt,
          setElementForId: znt,
          getElementById: Gnt,
          getDataStructures: $nt
        })
      o(Mi, 'getConfigField')
    })
  var Vnt,
    U2e,
    H2e = N(() => {
      'use strict'
      bf()
      yt()
      Mp()
      N4()
      ;(Vnt = o((t, e) => {
        Jo(t, e),
          t.groups.map(e.addGroup),
          t.services.map(r => e.addService({ ...r, type: 'service' })),
          t.junctions.map(r => e.addJunction({ ...r, type: 'junction' })),
          t.edges.map(e.addEdge)
      }, 'populateDb')),
        (U2e = {
          parse: o(async t => {
            let e = await vs('architecture', t)
            X.debug(e), Vnt(e, o0)
          }, 'parse')
        })
    })
  var Unt,
    W2e,
    q2e = N(() => {
      'use strict'
      ;(Unt = o(
        t => `
  .edge {
    stroke-width: ${t.archEdgeWidth};
    stroke: ${t.archEdgeColor};
    fill: none;
  }

  .arrow {
    fill: ${t.archEdgeArrowColor};
  }

  .node-bkg {
    fill: none;
    stroke: ${t.archGroupBorderColor};
    stroke-width: ${t.archGroupBorderWidth};
    stroke-dasharray: 8;
  }
  .node-icon-text {
    display: flex; 
    align-items: center;
  }
  
  .node-icon-text > div {
    color: #fff;
    margin: 1px;
    height: fit-content;
    text-align: center;
    overflow: hidden;
    display: -webkit-box;
    -webkit-box-orient: vertical;
  }
`,
        'getStyles'
      )),
        (W2e = Unt)
    })
  var QF = Pi((M4, KF) => {
    'use strict'
    o(function (e, r) {
      typeof M4 == 'object' && typeof KF == 'object'
        ? (KF.exports = r())
        : typeof define == 'function' && define.amd
          ? define([], r)
          : typeof M4 == 'object'
            ? (M4.layoutBase = r())
            : (e.layoutBase = r())
    }, 'webpackUniversalModuleDefinition')(M4, function () {
      return (function (t) {
        var e = {}
        function r(n) {
          if (e[n]) return e[n].exports
          var i = (e[n] = { i: n, l: !1, exports: {} })
          return t[n].call(i.exports, i, i.exports, r), (i.l = !0), i.exports
        }
        return (
          o(r, '__webpack_require__'),
          (r.m = t),
          (r.c = e),
          (r.i = function (n) {
            return n
          }),
          (r.d = function (n, i, a) {
            r.o(n, i) || Object.defineProperty(n, i, { configurable: !1, enumerable: !0, get: a })
          }),
          (r.n = function (n) {
            var i =
              n && n.__esModule
                ? o(function () {
                    return n.default
                  }, 'getDefault')
                : o(function () {
                    return n
                  }, 'getModuleExports')
            return r.d(i, 'a', i), i
          }),
          (r.o = function (n, i) {
            return Object.prototype.hasOwnProperty.call(n, i)
          }),
          (r.p = ''),
          r((r.s = 28))
        )
      })([
        function (t, e, r) {
          'use strict'
          function n() {}
          o(n, 'LayoutConstants'),
            (n.QUALITY = 1),
            (n.DEFAULT_CREATE_BENDS_AS_NEEDED = !1),
            (n.DEFAULT_INCREMENTAL = !1),
            (n.DEFAULT_ANIMATION_ON_LAYOUT = !0),
            (n.DEFAULT_ANIMATION_DURING_LAYOUT = !1),
            (n.DEFAULT_ANIMATION_PERIOD = 50),
            (n.DEFAULT_UNIFORM_LEAF_NODE_SIZES = !1),
            (n.DEFAULT_GRAPH_MARGIN = 15),
            (n.NODE_DIMENSIONS_INCLUDE_LABELS = !1),
            (n.SIMPLE_NODE_SIZE = 40),
            (n.SIMPLE_NODE_HALF_SIZE = n.SIMPLE_NODE_SIZE / 2),
            (n.EMPTY_COMPOUND_NODE_SIZE = 40),
            (n.MIN_EDGE_LENGTH = 1),
            (n.WORLD_BOUNDARY = 1e6),
            (n.INITIAL_WORLD_BOUNDARY = n.WORLD_BOUNDARY / 1e3),
            (n.WORLD_CENTER_X = 1200),
            (n.WORLD_CENTER_Y = 900),
            (t.exports = n)
        },
        function (t, e, r) {
          'use strict'
          var n = r(2),
            i = r(8),
            a = r(9)
          function s(u, h, f) {
            n.call(this, f), (this.isOverlapingSourceAndTarget = !1), (this.vGraphObject = f), (this.bendpoints = []), (this.source = u), (this.target = h)
          }
          o(s, 'LEdge'), (s.prototype = Object.create(n.prototype))
          for (var l in n) s[l] = n[l]
          ;(s.prototype.getSource = function () {
            return this.source
          }),
            (s.prototype.getTarget = function () {
              return this.target
            }),
            (s.prototype.isInterGraph = function () {
              return this.isInterGraph
            }),
            (s.prototype.getLength = function () {
              return this.length
            }),
            (s.prototype.isOverlapingSourceAndTarget = function () {
              return this.isOverlapingSourceAndTarget
            }),
            (s.prototype.getBendpoints = function () {
              return this.bendpoints
            }),
            (s.prototype.getLca = function () {
              return this.lca
            }),
            (s.prototype.getSourceInLca = function () {
              return this.sourceInLca
            }),
            (s.prototype.getTargetInLca = function () {
              return this.targetInLca
            }),
            (s.prototype.getOtherEnd = function (u) {
              if (this.source === u) return this.target
              if (this.target === u) return this.source
              throw 'Node is not incident with this edge'
            }),
            (s.prototype.getOtherEndInGraph = function (u, h) {
              for (var f = this.getOtherEnd(u), d = h.getGraphManager().getRoot(); ; ) {
                if (f.getOwner() == h) return f
                if (f.getOwner() == d) break
                f = f.getOwner().getParent()
              }
              return null
            }),
            (s.prototype.updateLength = function () {
              var u = new Array(4)
              ;(this.isOverlapingSourceAndTarget = i.getIntersection(this.target.getRect(), this.source.getRect(), u)),
                this.isOverlapingSourceAndTarget ||
                  ((this.lengthX = u[0] - u[2]),
                  (this.lengthY = u[1] - u[3]),
                  Math.abs(this.lengthX) < 1 && (this.lengthX = a.sign(this.lengthX)),
                  Math.abs(this.lengthY) < 1 && (this.lengthY = a.sign(this.lengthY)),
                  (this.length = Math.sqrt(this.lengthX * this.lengthX + this.lengthY * this.lengthY)))
            }),
            (s.prototype.updateLengthSimple = function () {
              ;(this.lengthX = this.target.getCenterX() - this.source.getCenterX()),
                (this.lengthY = this.target.getCenterY() - this.source.getCenterY()),
                Math.abs(this.lengthX) < 1 && (this.lengthX = a.sign(this.lengthX)),
                Math.abs(this.lengthY) < 1 && (this.lengthY = a.sign(this.lengthY)),
                (this.length = Math.sqrt(this.lengthX * this.lengthX + this.lengthY * this.lengthY))
            }),
            (t.exports = s)
        },
        function (t, e, r) {
          'use strict'
          function n(i) {
            this.vGraphObject = i
          }
          o(n, 'LGraphObject'), (t.exports = n)
        },
        function (t, e, r) {
          'use strict'
          var n = r(2),
            i = r(10),
            a = r(13),
            s = r(0),
            l = r(16),
            u = r(5)
          function h(d, p, m, g) {
            m == null && g == null && (g = p),
              n.call(this, g),
              d.graphManager != null && (d = d.graphManager),
              (this.estimatedSize = i.MIN_VALUE),
              (this.inclusionTreeDepth = i.MAX_VALUE),
              (this.vGraphObject = g),
              (this.edges = []),
              (this.graphManager = d),
              m != null && p != null ? (this.rect = new a(p.x, p.y, m.width, m.height)) : (this.rect = new a())
          }
          o(h, 'LNode'), (h.prototype = Object.create(n.prototype))
          for (var f in n) h[f] = n[f]
          ;(h.prototype.getEdges = function () {
            return this.edges
          }),
            (h.prototype.getChild = function () {
              return this.child
            }),
            (h.prototype.getOwner = function () {
              return this.owner
            }),
            (h.prototype.getWidth = function () {
              return this.rect.width
            }),
            (h.prototype.setWidth = function (d) {
              this.rect.width = d
            }),
            (h.prototype.getHeight = function () {
              return this.rect.height
            }),
            (h.prototype.setHeight = function (d) {
              this.rect.height = d
            }),
            (h.prototype.getCenterX = function () {
              return this.rect.x + this.rect.width / 2
            }),
            (h.prototype.getCenterY = function () {
              return this.rect.y + this.rect.height / 2
            }),
            (h.prototype.getCenter = function () {
              return new u(this.rect.x + this.rect.width / 2, this.rect.y + this.rect.height / 2)
            }),
            (h.prototype.getLocation = function () {
              return new u(this.rect.x, this.rect.y)
            }),
            (h.prototype.getRect = function () {
              return this.rect
            }),
            (h.prototype.getDiagonal = function () {
              return Math.sqrt(this.rect.width * this.rect.width + this.rect.height * this.rect.height)
            }),
            (h.prototype.getHalfTheDiagonal = function () {
              return Math.sqrt(this.rect.height * this.rect.height + this.rect.width * this.rect.width) / 2
            }),
            (h.prototype.setRect = function (d, p) {
              ;(this.rect.x = d.x), (this.rect.y = d.y), (this.rect.width = p.width), (this.rect.height = p.height)
            }),
            (h.prototype.setCenter = function (d, p) {
              ;(this.rect.x = d - this.rect.width / 2), (this.rect.y = p - this.rect.height / 2)
            }),
            (h.prototype.setLocation = function (d, p) {
              ;(this.rect.x = d), (this.rect.y = p)
            }),
            (h.prototype.moveBy = function (d, p) {
              ;(this.rect.x += d), (this.rect.y += p)
            }),
            (h.prototype.getEdgeListToNode = function (d) {
              var p = [],
                m,
                g = this
              return (
                g.edges.forEach(function (y) {
                  if (y.target == d) {
                    if (y.source != g) throw 'Incorrect edge source!'
                    p.push(y)
                  }
                }),
                p
              )
            }),
            (h.prototype.getEdgesBetween = function (d) {
              var p = [],
                m,
                g = this
              return (
                g.edges.forEach(function (y) {
                  if (!(y.source == g || y.target == g)) throw 'Incorrect edge source and/or target'
                  ;(y.target == d || y.source == d) && p.push(y)
                }),
                p
              )
            }),
            (h.prototype.getNeighborsList = function () {
              var d = new Set(),
                p = this
              return (
                p.edges.forEach(function (m) {
                  if (m.source == p) d.add(m.target)
                  else {
                    if (m.target != p) throw 'Incorrect incidency!'
                    d.add(m.source)
                  }
                }),
                d
              )
            }),
            (h.prototype.withChildren = function () {
              var d = new Set(),
                p,
                m
              if ((d.add(this), this.child != null))
                for (var g = this.child.getNodes(), y = 0; y < g.length; y++)
                  (p = g[y]),
                    (m = p.withChildren()),
                    m.forEach(function (v) {
                      d.add(v)
                    })
              return d
            }),
            (h.prototype.getNoOfChildren = function () {
              var d = 0,
                p
              if (this.child == null) d = 1
              else for (var m = this.child.getNodes(), g = 0; g < m.length; g++) (p = m[g]), (d += p.getNoOfChildren())
              return d == 0 && (d = 1), d
            }),
            (h.prototype.getEstimatedSize = function () {
              if (this.estimatedSize == i.MIN_VALUE) throw 'assert failed'
              return this.estimatedSize
            }),
            (h.prototype.calcEstimatedSize = function () {
              return this.child == null
                ? (this.estimatedSize = (this.rect.width + this.rect.height) / 2)
                : ((this.estimatedSize = this.child.calcEstimatedSize()), (this.rect.width = this.estimatedSize), (this.rect.height = this.estimatedSize), this.estimatedSize)
            }),
            (h.prototype.scatter = function () {
              var d,
                p,
                m = -s.INITIAL_WORLD_BOUNDARY,
                g = s.INITIAL_WORLD_BOUNDARY
              d = s.WORLD_CENTER_X + l.nextDouble() * (g - m) + m
              var y = -s.INITIAL_WORLD_BOUNDARY,
                v = s.INITIAL_WORLD_BOUNDARY
              ;(p = s.WORLD_CENTER_Y + l.nextDouble() * (v - y) + y), (this.rect.x = d), (this.rect.y = p)
            }),
            (h.prototype.updateBounds = function () {
              if (this.getChild() == null) throw 'assert failed'
              if (this.getChild().getNodes().length != 0) {
                var d = this.getChild()
                if (
                  (d.updateBounds(!0),
                  (this.rect.x = d.getLeft()),
                  (this.rect.y = d.getTop()),
                  this.setWidth(d.getRight() - d.getLeft()),
                  this.setHeight(d.getBottom() - d.getTop()),
                  s.NODE_DIMENSIONS_INCLUDE_LABELS)
                ) {
                  var p = d.getRight() - d.getLeft(),
                    m = d.getBottom() - d.getTop()
                  this.labelWidth &&
                    (this.labelPosHorizontal == 'left'
                      ? ((this.rect.x -= this.labelWidth), this.setWidth(p + this.labelWidth))
                      : this.labelPosHorizontal == 'center' && this.labelWidth > p
                        ? ((this.rect.x -= (this.labelWidth - p) / 2), this.setWidth(this.labelWidth))
                        : this.labelPosHorizontal == 'right' && this.setWidth(p + this.labelWidth)),
                    this.labelHeight &&
                      (this.labelPosVertical == 'top'
                        ? ((this.rect.y -= this.labelHeight), this.setHeight(m + this.labelHeight))
                        : this.labelPosVertical == 'center' && this.labelHeight > m
                          ? ((this.rect.y -= (this.labelHeight - m) / 2), this.setHeight(this.labelHeight))
                          : this.labelPosVertical == 'bottom' && this.setHeight(m + this.labelHeight))
                }
              }
            }),
            (h.prototype.getInclusionTreeDepth = function () {
              if (this.inclusionTreeDepth == i.MAX_VALUE) throw 'assert failed'
              return this.inclusionTreeDepth
            }),
            (h.prototype.transform = function (d) {
              var p = this.rect.x
              p > s.WORLD_BOUNDARY ? (p = s.WORLD_BOUNDARY) : p < -s.WORLD_BOUNDARY && (p = -s.WORLD_BOUNDARY)
              var m = this.rect.y
              m > s.WORLD_BOUNDARY ? (m = s.WORLD_BOUNDARY) : m < -s.WORLD_BOUNDARY && (m = -s.WORLD_BOUNDARY)
              var g = new u(p, m),
                y = d.inverseTransformPoint(g)
              this.setLocation(y.x, y.y)
            }),
            (h.prototype.getLeft = function () {
              return this.rect.x
            }),
            (h.prototype.getRight = function () {
              return this.rect.x + this.rect.width
            }),
            (h.prototype.getTop = function () {
              return this.rect.y
            }),
            (h.prototype.getBottom = function () {
              return this.rect.y + this.rect.height
            }),
            (h.prototype.getParent = function () {
              return this.owner == null ? null : this.owner.getParent()
            }),
            (t.exports = h)
        },
        function (t, e, r) {
          'use strict'
          var n = r(0)
          function i() {}
          o(i, 'FDLayoutConstants')
          for (var a in n) i[a] = n[a]
          ;(i.MAX_ITERATIONS = 2500),
            (i.DEFAULT_EDGE_LENGTH = 50),
            (i.DEFAULT_SPRING_STRENGTH = 0.45),
            (i.DEFAULT_REPULSION_STRENGTH = 4500),
            (i.DEFAULT_GRAVITY_STRENGTH = 0.4),
            (i.DEFAULT_COMPOUND_GRAVITY_STRENGTH = 1),
            (i.DEFAULT_GRAVITY_RANGE_FACTOR = 3.8),
            (i.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = 1.5),
            (i.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION = !0),
            (i.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION = !0),
            (i.DEFAULT_COOLING_FACTOR_INCREMENTAL = 0.3),
            (i.COOLING_ADAPTATION_FACTOR = 0.33),
            (i.ADAPTATION_LOWER_NODE_LIMIT = 1e3),
            (i.ADAPTATION_UPPER_NODE_LIMIT = 5e3),
            (i.MAX_NODE_DISPLACEMENT_INCREMENTAL = 100),
            (i.MAX_NODE_DISPLACEMENT = i.MAX_NODE_DISPLACEMENT_INCREMENTAL * 3),
            (i.MIN_REPULSION_DIST = i.DEFAULT_EDGE_LENGTH / 10),
            (i.CONVERGENCE_CHECK_PERIOD = 100),
            (i.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = 0.1),
            (i.MIN_EDGE_LENGTH = 1),
            (i.GRID_CALCULATION_CHECK_PERIOD = 10),
            (t.exports = i)
        },
        function (t, e, r) {
          'use strict'
          function n(i, a) {
            i == null && a == null ? ((this.x = 0), (this.y = 0)) : ((this.x = i), (this.y = a))
          }
          o(n, 'PointD'),
            (n.prototype.getX = function () {
              return this.x
            }),
            (n.prototype.getY = function () {
              return this.y
            }),
            (n.prototype.setX = function (i) {
              this.x = i
            }),
            (n.prototype.setY = function (i) {
              this.y = i
            }),
            (n.prototype.getDifference = function (i) {
              return new DimensionD(this.x - i.x, this.y - i.y)
            }),
            (n.prototype.getCopy = function () {
              return new n(this.x, this.y)
            }),
            (n.prototype.translate = function (i) {
              return (this.x += i.width), (this.y += i.height), this
            }),
            (t.exports = n)
        },
        function (t, e, r) {
          'use strict'
          var n = r(2),
            i = r(10),
            a = r(0),
            s = r(7),
            l = r(3),
            u = r(1),
            h = r(13),
            f = r(12),
            d = r(11)
          function p(g, y, v) {
            n.call(this, v),
              (this.estimatedSize = i.MIN_VALUE),
              (this.margin = a.DEFAULT_GRAPH_MARGIN),
              (this.edges = []),
              (this.nodes = []),
              (this.isConnected = !1),
              (this.parent = g),
              y != null && y instanceof s ? (this.graphManager = y) : y != null && y instanceof Layout && (this.graphManager = y.graphManager)
          }
          o(p, 'LGraph'), (p.prototype = Object.create(n.prototype))
          for (var m in n) p[m] = n[m]
          ;(p.prototype.getNodes = function () {
            return this.nodes
          }),
            (p.prototype.getEdges = function () {
              return this.edges
            }),
            (p.prototype.getGraphManager = function () {
              return this.graphManager
            }),
            (p.prototype.getParent = function () {
              return this.parent
            }),
            (p.prototype.getLeft = function () {
              return this.left
            }),
            (p.prototype.getRight = function () {
              return this.right
            }),
            (p.prototype.getTop = function () {
              return this.top
            }),
            (p.prototype.getBottom = function () {
              return this.bottom
            }),
            (p.prototype.isConnected = function () {
              return this.isConnected
            }),
            (p.prototype.add = function (g, y, v) {
              if (y == null && v == null) {
                var x = g
                if (this.graphManager == null) throw 'Graph has no graph mgr!'
                if (this.getNodes().indexOf(x) > -1) throw 'Node already in graph!'
                return (x.owner = this), this.getNodes().push(x), x
              } else {
                var b = g
                if (!(this.getNodes().indexOf(y) > -1 && this.getNodes().indexOf(v) > -1)) throw 'Source or target not in graph!'
                if (!(y.owner == v.owner && y.owner == this)) throw 'Both owners must be this graph!'
                return y.owner != v.owner ? null : ((b.source = y), (b.target = v), (b.isInterGraph = !1), this.getEdges().push(b), y.edges.push(b), v != y && v.edges.push(b), b)
              }
            }),
            (p.prototype.remove = function (g) {
              var y = g
              if (g instanceof l) {
                if (y == null) throw 'Node is null!'
                if (!(y.owner != null && y.owner == this)) throw 'Owner graph is invalid!'
                if (this.graphManager == null) throw 'Owner graph manager is invalid!'
                for (var v = y.edges.slice(), x, b = v.length, T = 0; T < b; T++) (x = v[T]), x.isInterGraph ? this.graphManager.remove(x) : x.source.owner.remove(x)
                var S = this.nodes.indexOf(y)
                if (S == -1) throw 'Node not in owner node list!'
                this.nodes.splice(S, 1)
              } else if (g instanceof u) {
                var x = g
                if (x == null) throw 'Edge is null!'
                if (!(x.source != null && x.target != null)) throw 'Source and/or target is null!'
                if (!(x.source.owner != null && x.target.owner != null && x.source.owner == this && x.target.owner == this)) throw 'Source and/or target owner is invalid!'
                var w = x.source.edges.indexOf(x),
                  E = x.target.edges.indexOf(x)
                if (!(w > -1 && E > -1)) throw "Source and/or target doesn't know this edge!"
                x.source.edges.splice(w, 1), x.target != x.source && x.target.edges.splice(E, 1)
                var S = x.source.owner.getEdges().indexOf(x)
                if (S == -1) throw "Not in owner's edge list!"
                x.source.owner.getEdges().splice(S, 1)
              }
            }),
            (p.prototype.updateLeftTop = function () {
              for (var g = i.MAX_VALUE, y = i.MAX_VALUE, v, x, b, T = this.getNodes(), S = T.length, w = 0; w < S; w++) {
                var E = T[w]
                ;(v = E.getTop()), (x = E.getLeft()), g > v && (g = v), y > x && (y = x)
              }
              return g == i.MAX_VALUE
                ? null
                : (T[0].getParent().paddingLeft != null ? (b = T[0].getParent().paddingLeft) : (b = this.margin),
                  (this.left = y - b),
                  (this.top = g - b),
                  new f(this.left, this.top))
            }),
            (p.prototype.updateBounds = function (g) {
              for (var y = i.MAX_VALUE, v = -i.MAX_VALUE, x = i.MAX_VALUE, b = -i.MAX_VALUE, T, S, w, E, _, C = this.nodes, D = C.length, O = 0; O < D; O++) {
                var R = C[O]
                g && R.child != null && R.updateBounds(),
                  (T = R.getLeft()),
                  (S = R.getRight()),
                  (w = R.getTop()),
                  (E = R.getBottom()),
                  y > T && (y = T),
                  v < S && (v = S),
                  x > w && (x = w),
                  b < E && (b = E)
              }
              var k = new h(y, x, v - y, b - x)
              y == i.MAX_VALUE &&
                ((this.left = this.parent.getLeft()), (this.right = this.parent.getRight()), (this.top = this.parent.getTop()), (this.bottom = this.parent.getBottom())),
                C[0].getParent().paddingLeft != null ? (_ = C[0].getParent().paddingLeft) : (_ = this.margin),
                (this.left = k.x - _),
                (this.right = k.x + k.width + _),
                (this.top = k.y - _),
                (this.bottom = k.y + k.height + _)
            }),
            (p.calculateBounds = function (g) {
              for (var y = i.MAX_VALUE, v = -i.MAX_VALUE, x = i.MAX_VALUE, b = -i.MAX_VALUE, T, S, w, E, _ = g.length, C = 0; C < _; C++) {
                var D = g[C]
                ;(T = D.getLeft()), (S = D.getRight()), (w = D.getTop()), (E = D.getBottom()), y > T && (y = T), v < S && (v = S), x > w && (x = w), b < E && (b = E)
              }
              var O = new h(y, x, v - y, b - x)
              return O
            }),
            (p.prototype.getInclusionTreeDepth = function () {
              return this == this.graphManager.getRoot() ? 1 : this.parent.getInclusionTreeDepth()
            }),
            (p.prototype.getEstimatedSize = function () {
              if (this.estimatedSize == i.MIN_VALUE) throw 'assert failed'
              return this.estimatedSize
            }),
            (p.prototype.calcEstimatedSize = function () {
              for (var g = 0, y = this.nodes, v = y.length, x = 0; x < v; x++) {
                var b = y[x]
                g += b.calcEstimatedSize()
              }
              return g == 0 ? (this.estimatedSize = a.EMPTY_COMPOUND_NODE_SIZE) : (this.estimatedSize = g / Math.sqrt(this.nodes.length)), this.estimatedSize
            }),
            (p.prototype.updateConnected = function () {
              var g = this
              if (this.nodes.length == 0) {
                this.isConnected = !0
                return
              }
              var y = new d(),
                v = new Set(),
                x = this.nodes[0],
                b,
                T,
                S = x.withChildren()
              for (
                S.forEach(function (O) {
                  y.push(O), v.add(O)
                });
                y.length !== 0;

              ) {
                ;(x = y.shift()), (b = x.getEdges())
                for (var w = b.length, E = 0; E < w; E++) {
                  var _ = b[E]
                  if (((T = _.getOtherEndInGraph(x, this)), T != null && !v.has(T))) {
                    var C = T.withChildren()
                    C.forEach(function (O) {
                      y.push(O), v.add(O)
                    })
                  }
                }
              }
              if (((this.isConnected = !1), v.size >= this.nodes.length)) {
                var D = 0
                v.forEach(function (O) {
                  O.owner == g && D++
                }),
                  D == this.nodes.length && (this.isConnected = !0)
              }
            }),
            (t.exports = p)
        },
        function (t, e, r) {
          'use strict'
          var n,
            i = r(1)
          function a(s) {
            ;(n = r(6)), (this.layout = s), (this.graphs = []), (this.edges = [])
          }
          o(a, 'LGraphManager'),
            (a.prototype.addRoot = function () {
              var s = this.layout.newGraph(),
                l = this.layout.newNode(null),
                u = this.add(s, l)
              return this.setRootGraph(u), this.rootGraph
            }),
            (a.prototype.add = function (s, l, u, h, f) {
              if (u == null && h == null && f == null) {
                if (s == null) throw 'Graph is null!'
                if (l == null) throw 'Parent node is null!'
                if (this.graphs.indexOf(s) > -1) throw 'Graph already in this graph mgr!'
                if ((this.graphs.push(s), s.parent != null)) throw 'Already has a parent!'
                if (l.child != null) throw 'Already has a child!'
                return (s.parent = l), (l.child = s), s
              } else {
                ;(f = u), (h = l), (u = s)
                var d = h.getOwner(),
                  p = f.getOwner()
                if (!(d != null && d.getGraphManager() == this)) throw 'Source not in this graph mgr!'
                if (!(p != null && p.getGraphManager() == this)) throw 'Target not in this graph mgr!'
                if (d == p) return (u.isInterGraph = !1), d.add(u, h, f)
                if (((u.isInterGraph = !0), (u.source = h), (u.target = f), this.edges.indexOf(u) > -1)) throw 'Edge already in inter-graph edge list!'
                if ((this.edges.push(u), !(u.source != null && u.target != null))) throw 'Edge source and/or target is null!'
                if (!(u.source.edges.indexOf(u) == -1 && u.target.edges.indexOf(u) == -1)) throw 'Edge already in source and/or target incidency list!'
                return u.source.edges.push(u), u.target.edges.push(u), u
              }
            }),
            (a.prototype.remove = function (s) {
              if (s instanceof n) {
                var l = s
                if (l.getGraphManager() != this) throw 'Graph not in this graph mgr'
                if (!(l == this.rootGraph || (l.parent != null && l.parent.graphManager == this))) throw 'Invalid parent node!'
                var u = []
                u = u.concat(l.getEdges())
                for (var h, f = u.length, d = 0; d < f; d++) (h = u[d]), l.remove(h)
                var p = []
                p = p.concat(l.getNodes())
                var m
                f = p.length
                for (var d = 0; d < f; d++) (m = p[d]), l.remove(m)
                l == this.rootGraph && this.setRootGraph(null)
                var g = this.graphs.indexOf(l)
                this.graphs.splice(g, 1), (l.parent = null)
              } else if (s instanceof i) {
                if (((h = s), h == null)) throw 'Edge is null!'
                if (!h.isInterGraph) throw 'Not an inter-graph edge!'
                if (!(h.source != null && h.target != null)) throw 'Source and/or target is null!'
                if (!(h.source.edges.indexOf(h) != -1 && h.target.edges.indexOf(h) != -1)) throw "Source and/or target doesn't know this edge!"
                var g = h.source.edges.indexOf(h)
                if (
                  (h.source.edges.splice(g, 1), (g = h.target.edges.indexOf(h)), h.target.edges.splice(g, 1), !(h.source.owner != null && h.source.owner.getGraphManager() != null))
                )
                  throw 'Edge owner graph or owner graph manager is null!'
                if (h.source.owner.getGraphManager().edges.indexOf(h) == -1) throw "Not in owner graph manager's edge list!"
                var g = h.source.owner.getGraphManager().edges.indexOf(h)
                h.source.owner.getGraphManager().edges.splice(g, 1)
              }
            }),
            (a.prototype.updateBounds = function () {
              this.rootGraph.updateBounds(!0)
            }),
            (a.prototype.getGraphs = function () {
              return this.graphs
            }),
            (a.prototype.getAllNodes = function () {
              if (this.allNodes == null) {
                for (var s = [], l = this.getGraphs(), u = l.length, h = 0; h < u; h++) s = s.concat(l[h].getNodes())
                this.allNodes = s
              }
              return this.allNodes
            }),
            (a.prototype.resetAllNodes = function () {
              this.allNodes = null
            }),
            (a.prototype.resetAllEdges = function () {
              this.allEdges = null
            }),
            (a.prototype.resetAllNodesToApplyGravitation = function () {
              this.allNodesToApplyGravitation = null
            }),
            (a.prototype.getAllEdges = function () {
              if (this.allEdges == null) {
                for (var s = [], l = this.getGraphs(), u = l.length, h = 0; h < l.length; h++) s = s.concat(l[h].getEdges())
                ;(s = s.concat(this.edges)), (this.allEdges = s)
              }
              return this.allEdges
            }),
            (a.prototype.getAllNodesToApplyGravitation = function () {
              return this.allNodesToApplyGravitation
            }),
            (a.prototype.setAllNodesToApplyGravitation = function (s) {
              if (this.allNodesToApplyGravitation != null) throw 'assert failed'
              this.allNodesToApplyGravitation = s
            }),
            (a.prototype.getRoot = function () {
              return this.rootGraph
            }),
            (a.prototype.setRootGraph = function (s) {
              if (s.getGraphManager() != this) throw 'Root not in this graph mgr!'
              ;(this.rootGraph = s), s.parent == null && (s.parent = this.layout.newNode('Root node'))
            }),
            (a.prototype.getLayout = function () {
              return this.layout
            }),
            (a.prototype.isOneAncestorOfOther = function (s, l) {
              if (!(s != null && l != null)) throw 'assert failed'
              if (s == l) return !0
              var u = s.getOwner(),
                h
              do {
                if (((h = u.getParent()), h == null)) break
                if (h == l) return !0
                if (((u = h.getOwner()), u == null)) break
              } while (!0)
              u = l.getOwner()
              do {
                if (((h = u.getParent()), h == null)) break
                if (h == s) return !0
                if (((u = h.getOwner()), u == null)) break
              } while (!0)
              return !1
            }),
            (a.prototype.calcLowestCommonAncestors = function () {
              for (var s, l, u, h, f, d = this.getAllEdges(), p = d.length, m = 0; m < p; m++) {
                if (((s = d[m]), (l = s.source), (u = s.target), (s.lca = null), (s.sourceInLca = l), (s.targetInLca = u), l == u)) {
                  s.lca = l.getOwner()
                  continue
                }
                for (h = l.getOwner(); s.lca == null; ) {
                  for (s.targetInLca = u, f = u.getOwner(); s.lca == null; ) {
                    if (f == h) {
                      s.lca = f
                      break
                    }
                    if (f == this.rootGraph) break
                    if (s.lca != null) throw 'assert failed'
                    ;(s.targetInLca = f.getParent()), (f = s.targetInLca.getOwner())
                  }
                  if (h == this.rootGraph) break
                  s.lca == null && ((s.sourceInLca = h.getParent()), (h = s.sourceInLca.getOwner()))
                }
                if (s.lca == null) throw 'assert failed'
              }
            }),
            (a.prototype.calcLowestCommonAncestor = function (s, l) {
              if (s == l) return s.getOwner()
              var u = s.getOwner()
              do {
                if (u == null) break
                var h = l.getOwner()
                do {
                  if (h == null) break
                  if (h == u) return h
                  h = h.getParent().getOwner()
                } while (!0)
                u = u.getParent().getOwner()
              } while (!0)
              return u
            }),
            (a.prototype.calcInclusionTreeDepths = function (s, l) {
              s == null && l == null && ((s = this.rootGraph), (l = 1))
              for (var u, h = s.getNodes(), f = h.length, d = 0; d < f; d++) (u = h[d]), (u.inclusionTreeDepth = l), u.child != null && this.calcInclusionTreeDepths(u.child, l + 1)
            }),
            (a.prototype.includesInvalidEdge = function () {
              for (var s, l = [], u = this.edges.length, h = 0; h < u; h++) (s = this.edges[h]), this.isOneAncestorOfOther(s.source, s.target) && l.push(s)
              for (var h = 0; h < l.length; h++) this.remove(l[h])
              return !1
            }),
            (t.exports = a)
        },
        function (t, e, r) {
          'use strict'
          var n = r(12)
          function i() {}
          o(i, 'IGeometry'),
            (i.calcSeparationAmount = function (a, s, l, u) {
              if (!a.intersects(s)) throw 'assert failed'
              var h = new Array(2)
              this.decideDirectionsForOverlappingNodes(a, s, h),
                (l[0] = Math.min(a.getRight(), s.getRight()) - Math.max(a.x, s.x)),
                (l[1] = Math.min(a.getBottom(), s.getBottom()) - Math.max(a.y, s.y)),
                a.getX() <= s.getX() && a.getRight() >= s.getRight()
                  ? (l[0] += Math.min(s.getX() - a.getX(), a.getRight() - s.getRight()))
                  : s.getX() <= a.getX() && s.getRight() >= a.getRight() && (l[0] += Math.min(a.getX() - s.getX(), s.getRight() - a.getRight())),
                a.getY() <= s.getY() && a.getBottom() >= s.getBottom()
                  ? (l[1] += Math.min(s.getY() - a.getY(), a.getBottom() - s.getBottom()))
                  : s.getY() <= a.getY() && s.getBottom() >= a.getBottom() && (l[1] += Math.min(a.getY() - s.getY(), s.getBottom() - a.getBottom()))
              var f = Math.abs((s.getCenterY() - a.getCenterY()) / (s.getCenterX() - a.getCenterX()))
              s.getCenterY() === a.getCenterY() && s.getCenterX() === a.getCenterX() && (f = 1)
              var d = f * l[0],
                p = l[1] / f
              l[0] < p ? (p = l[0]) : (d = l[1]), (l[0] = -1 * h[0] * (p / 2 + u)), (l[1] = -1 * h[1] * (d / 2 + u))
            }),
            (i.decideDirectionsForOverlappingNodes = function (a, s, l) {
              a.getCenterX() < s.getCenterX() ? (l[0] = -1) : (l[0] = 1), a.getCenterY() < s.getCenterY() ? (l[1] = -1) : (l[1] = 1)
            }),
            (i.getIntersection2 = function (a, s, l) {
              var u = a.getCenterX(),
                h = a.getCenterY(),
                f = s.getCenterX(),
                d = s.getCenterY()
              if (a.intersects(s)) return (l[0] = u), (l[1] = h), (l[2] = f), (l[3] = d), !0
              var p = a.getX(),
                m = a.getY(),
                g = a.getRight(),
                y = a.getX(),
                v = a.getBottom(),
                x = a.getRight(),
                b = a.getWidthHalf(),
                T = a.getHeightHalf(),
                S = s.getX(),
                w = s.getY(),
                E = s.getRight(),
                _ = s.getX(),
                C = s.getBottom(),
                D = s.getRight(),
                O = s.getWidthHalf(),
                R = s.getHeightHalf(),
                k = !1,
                L = !1
              if (u === f) {
                if (h > d) return (l[0] = u), (l[1] = m), (l[2] = f), (l[3] = C), !1
                if (h < d) return (l[0] = u), (l[1] = v), (l[2] = f), (l[3] = w), !1
              } else if (h === d) {
                if (u > f) return (l[0] = p), (l[1] = h), (l[2] = E), (l[3] = d), !1
                if (u < f) return (l[0] = g), (l[1] = h), (l[2] = S), (l[3] = d), !1
              } else {
                var A = a.height / a.width,
                  I = s.height / s.width,
                  M = (d - h) / (f - u),
                  P = void 0,
                  B = void 0,
                  F = void 0,
                  z = void 0,
                  $ = void 0,
                  U = void 0
                if (
                  (-A === M
                    ? u > f
                      ? ((l[0] = y), (l[1] = v), (k = !0))
                      : ((l[0] = g), (l[1] = m), (k = !0))
                    : A === M && (u > f ? ((l[0] = p), (l[1] = m), (k = !0)) : ((l[0] = x), (l[1] = v), (k = !0))),
                  -I === M
                    ? f > u
                      ? ((l[2] = _), (l[3] = C), (L = !0))
                      : ((l[2] = E), (l[3] = w), (L = !0))
                    : I === M && (f > u ? ((l[2] = S), (l[3] = w), (L = !0)) : ((l[2] = D), (l[3] = C), (L = !0))),
                  k && L)
                )
                  return !1
                if (
                  (u > f
                    ? h > d
                      ? ((P = this.getCardinalDirection(A, M, 4)), (B = this.getCardinalDirection(I, M, 2)))
                      : ((P = this.getCardinalDirection(-A, M, 3)), (B = this.getCardinalDirection(-I, M, 1)))
                    : h > d
                      ? ((P = this.getCardinalDirection(-A, M, 1)), (B = this.getCardinalDirection(-I, M, 3)))
                      : ((P = this.getCardinalDirection(A, M, 2)), (B = this.getCardinalDirection(I, M, 4))),
                  !k)
                )
                  switch (P) {
                    case 1:
                      ;(z = m), (F = u + -T / M), (l[0] = F), (l[1] = z)
                      break
                    case 2:
                      ;(F = x), (z = h + b * M), (l[0] = F), (l[1] = z)
                      break
                    case 3:
                      ;(z = v), (F = u + T / M), (l[0] = F), (l[1] = z)
                      break
                    case 4:
                      ;(F = y), (z = h + -b * M), (l[0] = F), (l[1] = z)
                      break
                  }
                if (!L)
                  switch (B) {
                    case 1:
                      ;(U = w), ($ = f + -R / M), (l[2] = $), (l[3] = U)
                      break
                    case 2:
                      ;($ = D), (U = d + O * M), (l[2] = $), (l[3] = U)
                      break
                    case 3:
                      ;(U = C), ($ = f + R / M), (l[2] = $), (l[3] = U)
                      break
                    case 4:
                      ;($ = _), (U = d + -O * M), (l[2] = $), (l[3] = U)
                      break
                  }
              }
              return !1
            }),
            (i.getCardinalDirection = function (a, s, l) {
              return a > s ? l : 1 + (l % 4)
            }),
            (i.getIntersection = function (a, s, l, u) {
              if (u == null) return this.getIntersection2(a, s, l)
              var h = a.x,
                f = a.y,
                d = s.x,
                p = s.y,
                m = l.x,
                g = l.y,
                y = u.x,
                v = u.y,
                x = void 0,
                b = void 0,
                T = void 0,
                S = void 0,
                w = void 0,
                E = void 0,
                _ = void 0,
                C = void 0,
                D = void 0
              return (
                (T = p - f),
                (w = h - d),
                (_ = d * f - h * p),
                (S = v - g),
                (E = m - y),
                (C = y * g - m * v),
                (D = T * E - S * w),
                D === 0 ? null : ((x = (w * C - E * _) / D), (b = (S * _ - T * C) / D), new n(x, b))
              )
            }),
            (i.angleOfVector = function (a, s, l, u) {
              var h = void 0
              return (
                a !== l ? ((h = Math.atan((u - s) / (l - a))), l < a ? (h += Math.PI) : u < s && (h += this.TWO_PI)) : u < s ? (h = this.ONE_AND_HALF_PI) : (h = this.HALF_PI), h
              )
            }),
            (i.doIntersect = function (a, s, l, u) {
              var h = a.x,
                f = a.y,
                d = s.x,
                p = s.y,
                m = l.x,
                g = l.y,
                y = u.x,
                v = u.y,
                x = (d - h) * (v - g) - (y - m) * (p - f)
              if (x === 0) return !1
              var b = ((v - g) * (y - h) + (m - y) * (v - f)) / x,
                T = ((f - p) * (y - h) + (d - h) * (v - f)) / x
              return 0 < b && b < 1 && 0 < T && T < 1
            }),
            (i.findCircleLineIntersections = function (a, s, l, u, h, f, d) {
              var p = (l - a) * (l - a) + (u - s) * (u - s),
                m = 2 * ((a - h) * (l - a) + (s - f) * (u - s)),
                g = (a - h) * (a - h) + (s - f) * (s - f) - d * d,
                y = m * m - 4 * p * g
              if (y >= 0) {
                var v = (-m + Math.sqrt(m * m - 4 * p * g)) / (2 * p),
                  x = (-m - Math.sqrt(m * m - 4 * p * g)) / (2 * p),
                  b = null
                return v >= 0 && v <= 1 ? [v] : x >= 0 && x <= 1 ? [x] : b
              } else return null
            }),
            (i.HALF_PI = 0.5 * Math.PI),
            (i.ONE_AND_HALF_PI = 1.5 * Math.PI),
            (i.TWO_PI = 2 * Math.PI),
            (i.THREE_PI = 3 * Math.PI),
            (t.exports = i)
        },
        function (t, e, r) {
          'use strict'
          function n() {}
          o(n, 'IMath'),
            (n.sign = function (i) {
              return i > 0 ? 1 : i < 0 ? -1 : 0
            }),
            (n.floor = function (i) {
              return i < 0 ? Math.ceil(i) : Math.floor(i)
            }),
            (n.ceil = function (i) {
              return i < 0 ? Math.floor(i) : Math.ceil(i)
            }),
            (t.exports = n)
        },
        function (t, e, r) {
          'use strict'
          function n() {}
          o(n, 'Integer'), (n.MAX_VALUE = 2147483647), (n.MIN_VALUE = -2147483648), (t.exports = n)
        },
        function (t, e, r) {
          'use strict'
          var n = (function () {
            function h(f, d) {
              for (var p = 0; p < d.length; p++) {
                var m = d[p]
                ;(m.enumerable = m.enumerable || !1), (m.configurable = !0), 'value' in m && (m.writable = !0), Object.defineProperty(f, m.key, m)
              }
            }
            return (
              o(h, 'defineProperties'),
              function (f, d, p) {
                return d && h(f.prototype, d), p && h(f, p), f
              }
            )
          })()
          function i(h, f) {
            if (!(h instanceof f)) throw new TypeError('Cannot call a class as a function')
          }
          o(i, '_classCallCheck')
          var a = o(function (f) {
              return { value: f, next: null, prev: null }
            }, 'nodeFrom'),
            s = o(function (f, d, p, m) {
              return f !== null ? (f.next = d) : (m.head = d), p !== null ? (p.prev = d) : (m.tail = d), (d.prev = f), (d.next = p), m.length++, d
            }, 'add'),
            l = o(function (f, d) {
              var p = f.prev,
                m = f.next
              return p !== null ? (p.next = m) : (d.head = m), m !== null ? (m.prev = p) : (d.tail = p), (f.prev = f.next = null), d.length--, f
            }, '_remove'),
            u = (function () {
              function h(f) {
                var d = this
                i(this, h),
                  (this.length = 0),
                  (this.head = null),
                  (this.tail = null),
                  f?.forEach(function (p) {
                    return d.push(p)
                  })
              }
              return (
                o(h, 'LinkedList'),
                n(h, [
                  {
                    key: 'size',
                    value: o(function () {
                      return this.length
                    }, 'size')
                  },
                  {
                    key: 'insertBefore',
                    value: o(function (d, p) {
                      return s(p.prev, a(d), p, this)
                    }, 'insertBefore')
                  },
                  {
                    key: 'insertAfter',
                    value: o(function (d, p) {
                      return s(p, a(d), p.next, this)
                    }, 'insertAfter')
                  },
                  {
                    key: 'insertNodeBefore',
                    value: o(function (d, p) {
                      return s(p.prev, d, p, this)
                    }, 'insertNodeBefore')
                  },
                  {
                    key: 'insertNodeAfter',
                    value: o(function (d, p) {
                      return s(p, d, p.next, this)
                    }, 'insertNodeAfter')
                  },
                  {
                    key: 'push',
                    value: o(function (d) {
                      return s(this.tail, a(d), null, this)
                    }, 'push')
                  },
                  {
                    key: 'unshift',
                    value: o(function (d) {
                      return s(null, a(d), this.head, this)
                    }, 'unshift')
                  },
                  {
                    key: 'remove',
                    value: o(function (d) {
                      return l(d, this)
                    }, 'remove')
                  },
                  {
                    key: 'pop',
                    value: o(function () {
                      return l(this.tail, this).value
                    }, 'pop')
                  },
                  {
                    key: 'popNode',
                    value: o(function () {
                      return l(this.tail, this)
                    }, 'popNode')
                  },
                  {
                    key: 'shift',
                    value: o(function () {
                      return l(this.head, this).value
                    }, 'shift')
                  },
                  {
                    key: 'shiftNode',
                    value: o(function () {
                      return l(this.head, this)
                    }, 'shiftNode')
                  },
                  {
                    key: 'get_object_at',
                    value: o(function (d) {
                      if (d <= this.length()) {
                        for (var p = 1, m = this.head; p < d; ) (m = m.next), p++
                        return m.value
                      }
                    }, 'get_object_at')
                  },
                  {
                    key: 'set_object_at',
                    value: o(function (d, p) {
                      if (d <= this.length()) {
                        for (var m = 1, g = this.head; m < d; ) (g = g.next), m++
                        g.value = p
                      }
                    }, 'set_object_at')
                  }
                ]),
                h
              )
            })()
          t.exports = u
        },
        function (t, e, r) {
          'use strict'
          function n(i, a, s) {
            ;(this.x = null),
              (this.y = null),
              i == null && a == null && s == null
                ? ((this.x = 0), (this.y = 0))
                : typeof i == 'number' && typeof a == 'number' && s == null
                  ? ((this.x = i), (this.y = a))
                  : i.constructor.name == 'Point' && a == null && s == null && ((s = i), (this.x = s.x), (this.y = s.y))
          }
          o(n, 'Point'),
            (n.prototype.getX = function () {
              return this.x
            }),
            (n.prototype.getY = function () {
              return this.y
            }),
            (n.prototype.getLocation = function () {
              return new n(this.x, this.y)
            }),
            (n.prototype.setLocation = function (i, a, s) {
              i.constructor.name == 'Point' && a == null && s == null
                ? ((s = i), this.setLocation(s.x, s.y))
                : typeof i == 'number' &&
                  typeof a == 'number' &&
                  s == null &&
                  (parseInt(i) == i && parseInt(a) == a ? this.move(i, a) : ((this.x = Math.floor(i + 0.5)), (this.y = Math.floor(a + 0.5))))
            }),
            (n.prototype.move = function (i, a) {
              ;(this.x = i), (this.y = a)
            }),
            (n.prototype.translate = function (i, a) {
              ;(this.x += i), (this.y += a)
            }),
            (n.prototype.equals = function (i) {
              if (i.constructor.name == 'Point') {
                var a = i
                return this.x == a.x && this.y == a.y
              }
              return this == i
            }),
            (n.prototype.toString = function () {
              return new n().constructor.name + '[x=' + this.x + ',y=' + this.y + ']'
            }),
            (t.exports = n)
        },
        function (t, e, r) {
          'use strict'
          function n(i, a, s, l) {
            ;(this.x = 0),
              (this.y = 0),
              (this.width = 0),
              (this.height = 0),
              i != null && a != null && s != null && l != null && ((this.x = i), (this.y = a), (this.width = s), (this.height = l))
          }
          o(n, 'RectangleD'),
            (n.prototype.getX = function () {
              return this.x
            }),
            (n.prototype.setX = function (i) {
              this.x = i
            }),
            (n.prototype.getY = function () {
              return this.y
            }),
            (n.prototype.setY = function (i) {
              this.y = i
            }),
            (n.prototype.getWidth = function () {
              return this.width
            }),
            (n.prototype.setWidth = function (i) {
              this.width = i
            }),
            (n.prototype.getHeight = function () {
              return this.height
            }),
            (n.prototype.setHeight = function (i) {
              this.height = i
            }),
            (n.prototype.getRight = function () {
              return this.x + this.width
            }),
            (n.prototype.getBottom = function () {
              return this.y + this.height
            }),
            (n.prototype.intersects = function (i) {
              return !(this.getRight() < i.x || this.getBottom() < i.y || i.getRight() < this.x || i.getBottom() < this.y)
            }),
            (n.prototype.getCenterX = function () {
              return this.x + this.width / 2
            }),
            (n.prototype.getMinX = function () {
              return this.getX()
            }),
            (n.prototype.getMaxX = function () {
              return this.getX() + this.width
            }),
            (n.prototype.getCenterY = function () {
              return this.y + this.height / 2
            }),
            (n.prototype.getMinY = function () {
              return this.getY()
            }),
            (n.prototype.getMaxY = function () {
              return this.getY() + this.height
            }),
            (n.prototype.getWidthHalf = function () {
              return this.width / 2
            }),
            (n.prototype.getHeightHalf = function () {
              return this.height / 2
            }),
            (t.exports = n)
        },
        function (t, e, r) {
          'use strict'
          var n =
            typeof Symbol == 'function' && typeof Symbol.iterator == 'symbol'
              ? function (a) {
                  return typeof a
                }
              : function (a) {
                  return a && typeof Symbol == 'function' && a.constructor === Symbol && a !== Symbol.prototype ? 'symbol' : typeof a
                }
          function i() {}
          o(i, 'UniqueIDGeneretor'),
            (i.lastID = 0),
            (i.createID = function (a) {
              return i.isPrimitive(a) ? a : (a.uniqueID != null || ((a.uniqueID = i.getString()), i.lastID++), a.uniqueID)
            }),
            (i.getString = function (a) {
              return a == null && (a = i.lastID), 'Object#' + a
            }),
            (i.isPrimitive = function (a) {
              var s = typeof a > 'u' ? 'undefined' : n(a)
              return a == null || (s != 'object' && s != 'function')
            }),
            (t.exports = i)
        },
        function (t, e, r) {
          'use strict'
          function n(m) {
            if (Array.isArray(m)) {
              for (var g = 0, y = Array(m.length); g < m.length; g++) y[g] = m[g]
              return y
            } else return Array.from(m)
          }
          o(n, '_toConsumableArray')
          var i = r(0),
            a = r(7),
            s = r(3),
            l = r(1),
            u = r(6),
            h = r(5),
            f = r(17),
            d = r(29)
          function p(m) {
            d.call(this),
              (this.layoutQuality = i.QUALITY),
              (this.createBendsAsNeeded = i.DEFAULT_CREATE_BENDS_AS_NEEDED),
              (this.incremental = i.DEFAULT_INCREMENTAL),
              (this.animationOnLayout = i.DEFAULT_ANIMATION_ON_LAYOUT),
              (this.animationDuringLayout = i.DEFAULT_ANIMATION_DURING_LAYOUT),
              (this.animationPeriod = i.DEFAULT_ANIMATION_PERIOD),
              (this.uniformLeafNodeSizes = i.DEFAULT_UNIFORM_LEAF_NODE_SIZES),
              (this.edgeToDummyNodes = new Map()),
              (this.graphManager = new a(this)),
              (this.isLayoutFinished = !1),
              (this.isSubLayout = !1),
              (this.isRemoteUse = !1),
              m != null && (this.isRemoteUse = m)
          }
          o(p, 'Layout'),
            (p.RANDOM_SEED = 1),
            (p.prototype = Object.create(d.prototype)),
            (p.prototype.getGraphManager = function () {
              return this.graphManager
            }),
            (p.prototype.getAllNodes = function () {
              return this.graphManager.getAllNodes()
            }),
            (p.prototype.getAllEdges = function () {
              return this.graphManager.getAllEdges()
            }),
            (p.prototype.getAllNodesToApplyGravitation = function () {
              return this.graphManager.getAllNodesToApplyGravitation()
            }),
            (p.prototype.newGraphManager = function () {
              var m = new a(this)
              return (this.graphManager = m), m
            }),
            (p.prototype.newGraph = function (m) {
              return new u(null, this.graphManager, m)
            }),
            (p.prototype.newNode = function (m) {
              return new s(this.graphManager, m)
            }),
            (p.prototype.newEdge = function (m) {
              return new l(null, null, m)
            }),
            (p.prototype.checkLayoutSuccess = function () {
              return this.graphManager.getRoot() == null || this.graphManager.getRoot().getNodes().length == 0 || this.graphManager.includesInvalidEdge()
            }),
            (p.prototype.runLayout = function () {
              ;(this.isLayoutFinished = !1), this.tilingPreLayout && this.tilingPreLayout(), this.initParameters()
              var m
              return (
                this.checkLayoutSuccess() ? (m = !1) : (m = this.layout()),
                i.ANIMATE === 'during' ? !1 : (m && (this.isSubLayout || this.doPostLayout()), this.tilingPostLayout && this.tilingPostLayout(), (this.isLayoutFinished = !0), m)
              )
            }),
            (p.prototype.doPostLayout = function () {
              this.incremental || this.transform(), this.update()
            }),
            (p.prototype.update2 = function () {
              if ((this.createBendsAsNeeded && (this.createBendpointsFromDummyNodes(), this.graphManager.resetAllEdges()), !this.isRemoteUse)) {
                for (var m, g = this.graphManager.getAllEdges(), y = 0; y < g.length; y++) m = g[y]
                for (var v, x = this.graphManager.getRoot().getNodes(), y = 0; y < x.length; y++) v = x[y]
                this.update(this.graphManager.getRoot())
              }
            }),
            (p.prototype.update = function (m) {
              if (m == null) this.update2()
              else if (m instanceof s) {
                var g = m
                if (g.getChild() != null) for (var y = g.getChild().getNodes(), v = 0; v < y.length; v++) update(y[v])
                if (g.vGraphObject != null) {
                  var x = g.vGraphObject
                  x.update(g)
                }
              } else if (m instanceof l) {
                var b = m
                if (b.vGraphObject != null) {
                  var T = b.vGraphObject
                  T.update(b)
                }
              } else if (m instanceof u) {
                var S = m
                if (S.vGraphObject != null) {
                  var w = S.vGraphObject
                  w.update(S)
                }
              }
            }),
            (p.prototype.initParameters = function () {
              this.isSubLayout ||
                ((this.layoutQuality = i.QUALITY),
                (this.animationDuringLayout = i.DEFAULT_ANIMATION_DURING_LAYOUT),
                (this.animationPeriod = i.DEFAULT_ANIMATION_PERIOD),
                (this.animationOnLayout = i.DEFAULT_ANIMATION_ON_LAYOUT),
                (this.incremental = i.DEFAULT_INCREMENTAL),
                (this.createBendsAsNeeded = i.DEFAULT_CREATE_BENDS_AS_NEEDED),
                (this.uniformLeafNodeSizes = i.DEFAULT_UNIFORM_LEAF_NODE_SIZES)),
                this.animationDuringLayout && (this.animationOnLayout = !1)
            }),
            (p.prototype.transform = function (m) {
              if (m == null) this.transform(new h(0, 0))
              else {
                var g = new f(),
                  y = this.graphManager.getRoot().updateLeftTop()
                if (y != null) {
                  g.setWorldOrgX(m.x), g.setWorldOrgY(m.y), g.setDeviceOrgX(y.x), g.setDeviceOrgY(y.y)
                  for (var v = this.getAllNodes(), x, b = 0; b < v.length; b++) (x = v[b]), x.transform(g)
                }
              }
            }),
            (p.prototype.positionNodesRandomly = function (m) {
              if (m == null) this.positionNodesRandomly(this.getGraphManager().getRoot()), this.getGraphManager().getRoot().updateBounds(!0)
              else
                for (var g, y, v = m.getNodes(), x = 0; x < v.length; x++)
                  (g = v[x]), (y = g.getChild()), y == null || y.getNodes().length == 0 ? g.scatter() : (this.positionNodesRandomly(y), g.updateBounds())
            }),
            (p.prototype.getFlatForest = function () {
              for (var m = [], g = !0, y = this.graphManager.getRoot().getNodes(), v = !0, x = 0; x < y.length; x++) y[x].getChild() != null && (v = !1)
              if (!v) return m
              var b = new Set(),
                T = [],
                S = new Map(),
                w = []
              for (w = w.concat(y); w.length > 0 && g; ) {
                for (T.push(w[0]); T.length > 0 && g; ) {
                  var E = T[0]
                  T.splice(0, 1), b.add(E)
                  for (var _ = E.getEdges(), x = 0; x < _.length; x++) {
                    var C = _[x].getOtherEnd(E)
                    if (S.get(E) != C)
                      if (!b.has(C)) T.push(C), S.set(C, E)
                      else {
                        g = !1
                        break
                      }
                  }
                }
                if (!g) m = []
                else {
                  var D = [].concat(n(b))
                  m.push(D)
                  for (var x = 0; x < D.length; x++) {
                    var O = D[x],
                      R = w.indexOf(O)
                    R > -1 && w.splice(R, 1)
                  }
                  ;(b = new Set()), (S = new Map())
                }
              }
              return m
            }),
            (p.prototype.createDummyNodesForBendpoints = function (m) {
              for (var g = [], y = m.source, v = this.graphManager.calcLowestCommonAncestor(m.source, m.target), x = 0; x < m.bendpoints.length; x++) {
                var b = this.newNode(null)
                b.setRect(new Point(0, 0), new Dimension(1, 1)), v.add(b)
                var T = this.newEdge(null)
                this.graphManager.add(T, y, b), g.add(b), (y = b)
              }
              var T = this.newEdge(null)
              return this.graphManager.add(T, y, m.target), this.edgeToDummyNodes.set(m, g), m.isInterGraph() ? this.graphManager.remove(m) : v.remove(m), g
            }),
            (p.prototype.createBendpointsFromDummyNodes = function () {
              var m = []
              ;(m = m.concat(this.graphManager.getAllEdges())), (m = [].concat(n(this.edgeToDummyNodes.keys())).concat(m))
              for (var g = 0; g < m.length; g++) {
                var y = m[g]
                if (y.bendpoints.length > 0) {
                  for (var v = this.edgeToDummyNodes.get(y), x = 0; x < v.length; x++) {
                    var b = v[x],
                      T = new h(b.getCenterX(), b.getCenterY()),
                      S = y.bendpoints.get(x)
                    ;(S.x = T.x), (S.y = T.y), b.getOwner().remove(b)
                  }
                  this.graphManager.add(y, y.source, y.target)
                }
              }
            }),
            (p.transform = function (m, g, y, v) {
              if (y != null && v != null) {
                var x = g
                if (m <= 50) {
                  var b = g / y
                  x -= ((g - b) / 50) * (50 - m)
                } else {
                  var T = g * v
                  x += ((T - g) / 50) * (m - 50)
                }
                return x
              } else {
                var S, w
                return m <= 50 ? ((S = (9 * g) / 500), (w = g / 10)) : ((S = (9 * g) / 50), (w = -8 * g)), S * m + w
              }
            }),
            (p.findCenterOfTree = function (m) {
              var g = []
              g = g.concat(m)
              var y = [],
                v = new Map(),
                x = !1,
                b = null
              ;(g.length == 1 || g.length == 2) && ((x = !0), (b = g[0]))
              for (var T = 0; T < g.length; T++) {
                var S = g[T],
                  w = S.getNeighborsList().size
                v.set(S, S.getNeighborsList().size), w == 1 && y.push(S)
              }
              var E = []
              for (E = E.concat(y); !x; ) {
                var _ = []
                ;(_ = _.concat(E)), (E = [])
                for (var T = 0; T < g.length; T++) {
                  var S = g[T],
                    C = g.indexOf(S)
                  C >= 0 && g.splice(C, 1)
                  var D = S.getNeighborsList()
                  D.forEach(function (k) {
                    if (y.indexOf(k) < 0) {
                      var L = v.get(k),
                        A = L - 1
                      A == 1 && E.push(k), v.set(k, A)
                    }
                  })
                }
                ;(y = y.concat(E)), (g.length == 1 || g.length == 2) && ((x = !0), (b = g[0]))
              }
              return b
            }),
            (p.prototype.setGraphManager = function (m) {
              this.graphManager = m
            }),
            (t.exports = p)
        },
        function (t, e, r) {
          'use strict'
          function n() {}
          o(n, 'RandomSeed'),
            (n.seed = 1),
            (n.x = 0),
            (n.nextDouble = function () {
              return (n.x = Math.sin(n.seed++) * 1e4), n.x - Math.floor(n.x)
            }),
            (t.exports = n)
        },
        function (t, e, r) {
          'use strict'
          var n = r(5)
          function i(a, s) {
            ;(this.lworldOrgX = 0),
              (this.lworldOrgY = 0),
              (this.ldeviceOrgX = 0),
              (this.ldeviceOrgY = 0),
              (this.lworldExtX = 1),
              (this.lworldExtY = 1),
              (this.ldeviceExtX = 1),
              (this.ldeviceExtY = 1)
          }
          o(i, 'Transform'),
            (i.prototype.getWorldOrgX = function () {
              return this.lworldOrgX
            }),
            (i.prototype.setWorldOrgX = function (a) {
              this.lworldOrgX = a
            }),
            (i.prototype.getWorldOrgY = function () {
              return this.lworldOrgY
            }),
            (i.prototype.setWorldOrgY = function (a) {
              this.lworldOrgY = a
            }),
            (i.prototype.getWorldExtX = function () {
              return this.lworldExtX
            }),
            (i.prototype.setWorldExtX = function (a) {
              this.lworldExtX = a
            }),
            (i.prototype.getWorldExtY = function () {
              return this.lworldExtY
            }),
            (i.prototype.setWorldExtY = function (a) {
              this.lworldExtY = a
            }),
            (i.prototype.getDeviceOrgX = function () {
              return this.ldeviceOrgX
            }),
            (i.prototype.setDeviceOrgX = function (a) {
              this.ldeviceOrgX = a
            }),
            (i.prototype.getDeviceOrgY = function () {
              return this.ldeviceOrgY
            }),
            (i.prototype.setDeviceOrgY = function (a) {
              this.ldeviceOrgY = a
            }),
            (i.prototype.getDeviceExtX = function () {
              return this.ldeviceExtX
            }),
            (i.prototype.setDeviceExtX = function (a) {
              this.ldeviceExtX = a
            }),
            (i.prototype.getDeviceExtY = function () {
              return this.ldeviceExtY
            }),
            (i.prototype.setDeviceExtY = function (a) {
              this.ldeviceExtY = a
            }),
            (i.prototype.transformX = function (a) {
              var s = 0,
                l = this.lworldExtX
              return l != 0 && (s = this.ldeviceOrgX + ((a - this.lworldOrgX) * this.ldeviceExtX) / l), s
            }),
            (i.prototype.transformY = function (a) {
              var s = 0,
                l = this.lworldExtY
              return l != 0 && (s = this.ldeviceOrgY + ((a - this.lworldOrgY) * this.ldeviceExtY) / l), s
            }),
            (i.prototype.inverseTransformX = function (a) {
              var s = 0,
                l = this.ldeviceExtX
              return l != 0 && (s = this.lworldOrgX + ((a - this.ldeviceOrgX) * this.lworldExtX) / l), s
            }),
            (i.prototype.inverseTransformY = function (a) {
              var s = 0,
                l = this.ldeviceExtY
              return l != 0 && (s = this.lworldOrgY + ((a - this.ldeviceOrgY) * this.lworldExtY) / l), s
            }),
            (i.prototype.inverseTransformPoint = function (a) {
              var s = new n(this.inverseTransformX(a.x), this.inverseTransformY(a.y))
              return s
            }),
            (t.exports = i)
        },
        function (t, e, r) {
          'use strict'
          function n(d) {
            if (Array.isArray(d)) {
              for (var p = 0, m = Array(d.length); p < d.length; p++) m[p] = d[p]
              return m
            } else return Array.from(d)
          }
          o(n, '_toConsumableArray')
          var i = r(15),
            a = r(4),
            s = r(0),
            l = r(8),
            u = r(9)
          function h() {
            i.call(this),
              (this.useSmartIdealEdgeLengthCalculation = a.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION),
              (this.gravityConstant = a.DEFAULT_GRAVITY_STRENGTH),
              (this.compoundGravityConstant = a.DEFAULT_COMPOUND_GRAVITY_STRENGTH),
              (this.gravityRangeFactor = a.DEFAULT_GRAVITY_RANGE_FACTOR),
              (this.compoundGravityRangeFactor = a.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR),
              (this.displacementThresholdPerNode = (3 * a.DEFAULT_EDGE_LENGTH) / 100),
              (this.coolingFactor = a.DEFAULT_COOLING_FACTOR_INCREMENTAL),
              (this.initialCoolingFactor = a.DEFAULT_COOLING_FACTOR_INCREMENTAL),
              (this.totalDisplacement = 0),
              (this.oldTotalDisplacement = 0),
              (this.maxIterations = a.MAX_ITERATIONS)
          }
          o(h, 'FDLayout'), (h.prototype = Object.create(i.prototype))
          for (var f in i) h[f] = i[f]
          ;(h.prototype.initParameters = function () {
            i.prototype.initParameters.call(this, arguments),
              (this.totalIterations = 0),
              (this.notAnimatedIterations = 0),
              (this.useFRGridVariant = a.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION),
              (this.grid = [])
          }),
            (h.prototype.calcIdealEdgeLengths = function () {
              for (var d, p, m, g, y, v, x, b = this.getGraphManager().getAllEdges(), T = 0; T < b.length; T++)
                (d = b[T]),
                  (p = d.idealLength),
                  d.isInterGraph &&
                    ((g = d.getSource()),
                    (y = d.getTarget()),
                    (v = d.getSourceInLca().getEstimatedSize()),
                    (x = d.getTargetInLca().getEstimatedSize()),
                    this.useSmartIdealEdgeLengthCalculation && (d.idealLength += v + x - 2 * s.SIMPLE_NODE_SIZE),
                    (m = d.getLca().getInclusionTreeDepth()),
                    (d.idealLength += p * a.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR * (g.getInclusionTreeDepth() + y.getInclusionTreeDepth() - 2 * m)))
            }),
            (h.prototype.initSpringEmbedder = function () {
              var d = this.getAllNodes().length
              this.incremental
                ? (d > a.ADAPTATION_LOWER_NODE_LIMIT &&
                    (this.coolingFactor = Math.max(
                      this.coolingFactor * a.COOLING_ADAPTATION_FACTOR,
                      this.coolingFactor -
                        ((d - a.ADAPTATION_LOWER_NODE_LIMIT) / (a.ADAPTATION_UPPER_NODE_LIMIT - a.ADAPTATION_LOWER_NODE_LIMIT)) *
                          this.coolingFactor *
                          (1 - a.COOLING_ADAPTATION_FACTOR)
                    )),
                  (this.maxNodeDisplacement = a.MAX_NODE_DISPLACEMENT_INCREMENTAL))
                : (d > a.ADAPTATION_LOWER_NODE_LIMIT
                    ? (this.coolingFactor = Math.max(
                        a.COOLING_ADAPTATION_FACTOR,
                        1 - ((d - a.ADAPTATION_LOWER_NODE_LIMIT) / (a.ADAPTATION_UPPER_NODE_LIMIT - a.ADAPTATION_LOWER_NODE_LIMIT)) * (1 - a.COOLING_ADAPTATION_FACTOR)
                      ))
                    : (this.coolingFactor = 1),
                  (this.initialCoolingFactor = this.coolingFactor),
                  (this.maxNodeDisplacement = a.MAX_NODE_DISPLACEMENT)),
                (this.maxIterations = Math.max(this.getAllNodes().length * 5, this.maxIterations)),
                (this.displacementThresholdPerNode = (3 * a.DEFAULT_EDGE_LENGTH) / 100),
                (this.totalDisplacementThreshold = this.displacementThresholdPerNode * this.getAllNodes().length),
                (this.repulsionRange = this.calcRepulsionRange())
            }),
            (h.prototype.calcSpringForces = function () {
              for (var d = this.getAllEdges(), p, m = 0; m < d.length; m++) (p = d[m]), this.calcSpringForce(p, p.idealLength)
            }),
            (h.prototype.calcRepulsionForces = function () {
              var d = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : !0,
                p = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !1,
                m,
                g,
                y,
                v,
                x = this.getAllNodes(),
                b
              if (this.useFRGridVariant)
                for (this.totalIterations % a.GRID_CALCULATION_CHECK_PERIOD == 1 && d && this.updateGrid(), b = new Set(), m = 0; m < x.length; m++)
                  (y = x[m]), this.calculateRepulsionForceOfANode(y, b, d, p), b.add(y)
              else for (m = 0; m < x.length; m++) for (y = x[m], g = m + 1; g < x.length; g++) (v = x[g]), y.getOwner() == v.getOwner() && this.calcRepulsionForce(y, v)
            }),
            (h.prototype.calcGravitationalForces = function () {
              for (var d, p = this.getAllNodesToApplyGravitation(), m = 0; m < p.length; m++) (d = p[m]), this.calcGravitationalForce(d)
            }),
            (h.prototype.moveNodes = function () {
              for (var d = this.getAllNodes(), p, m = 0; m < d.length; m++) (p = d[m]), p.move()
            }),
            (h.prototype.calcSpringForce = function (d, p) {
              var m = d.getSource(),
                g = d.getTarget(),
                y,
                v,
                x,
                b
              if (this.uniformLeafNodeSizes && m.getChild() == null && g.getChild() == null) d.updateLengthSimple()
              else if ((d.updateLength(), d.isOverlapingSourceAndTarget)) return
              ;(y = d.getLength()),
                y != 0 &&
                  ((v = d.edgeElasticity * (y - p)),
                  (x = v * (d.lengthX / y)),
                  (b = v * (d.lengthY / y)),
                  (m.springForceX += x),
                  (m.springForceY += b),
                  (g.springForceX -= x),
                  (g.springForceY -= b))
            }),
            (h.prototype.calcRepulsionForce = function (d, p) {
              var m = d.getRect(),
                g = p.getRect(),
                y = new Array(2),
                v = new Array(4),
                x,
                b,
                T,
                S,
                w,
                E,
                _
              if (m.intersects(g)) {
                l.calcSeparationAmount(m, g, y, a.DEFAULT_EDGE_LENGTH / 2), (E = 2 * y[0]), (_ = 2 * y[1])
                var C = (d.noOfChildren * p.noOfChildren) / (d.noOfChildren + p.noOfChildren)
                ;(d.repulsionForceX -= C * E), (d.repulsionForceY -= C * _), (p.repulsionForceX += C * E), (p.repulsionForceY += C * _)
              } else
                this.uniformLeafNodeSizes && d.getChild() == null && p.getChild() == null
                  ? ((x = g.getCenterX() - m.getCenterX()), (b = g.getCenterY() - m.getCenterY()))
                  : (l.getIntersection(m, g, v), (x = v[2] - v[0]), (b = v[3] - v[1])),
                  Math.abs(x) < a.MIN_REPULSION_DIST && (x = u.sign(x) * a.MIN_REPULSION_DIST),
                  Math.abs(b) < a.MIN_REPULSION_DIST && (b = u.sign(b) * a.MIN_REPULSION_DIST),
                  (T = x * x + b * b),
                  (S = Math.sqrt(T)),
                  (w = ((d.nodeRepulsion / 2 + p.nodeRepulsion / 2) * d.noOfChildren * p.noOfChildren) / T),
                  (E = (w * x) / S),
                  (_ = (w * b) / S),
                  (d.repulsionForceX -= E),
                  (d.repulsionForceY -= _),
                  (p.repulsionForceX += E),
                  (p.repulsionForceY += _)
            }),
            (h.prototype.calcGravitationalForce = function (d) {
              var p, m, g, y, v, x, b, T
              ;(p = d.getOwner()),
                (m = (p.getRight() + p.getLeft()) / 2),
                (g = (p.getTop() + p.getBottom()) / 2),
                (y = d.getCenterX() - m),
                (v = d.getCenterY() - g),
                (x = Math.abs(y) + d.getWidth() / 2),
                (b = Math.abs(v) + d.getHeight() / 2),
                d.getOwner() == this.graphManager.getRoot()
                  ? ((T = p.getEstimatedSize() * this.gravityRangeFactor),
                    (x > T || b > T) && ((d.gravitationForceX = -this.gravityConstant * y), (d.gravitationForceY = -this.gravityConstant * v)))
                  : ((T = p.getEstimatedSize() * this.compoundGravityRangeFactor),
                    (x > T || b > T) &&
                      ((d.gravitationForceX = -this.gravityConstant * y * this.compoundGravityConstant),
                      (d.gravitationForceY = -this.gravityConstant * v * this.compoundGravityConstant)))
            }),
            (h.prototype.isConverged = function () {
              var d,
                p = !1
              return (
                this.totalIterations > this.maxIterations / 3 && (p = Math.abs(this.totalDisplacement - this.oldTotalDisplacement) < 2),
                (d = this.totalDisplacement < this.totalDisplacementThreshold),
                (this.oldTotalDisplacement = this.totalDisplacement),
                d || p
              )
            }),
            (h.prototype.animate = function () {
              this.animationDuringLayout &&
                !this.isSubLayout &&
                (this.notAnimatedIterations == this.animationPeriod ? (this.update(), (this.notAnimatedIterations = 0)) : this.notAnimatedIterations++)
            }),
            (h.prototype.calcNoOfChildrenForAllNodes = function () {
              for (var d, p = this.graphManager.getAllNodes(), m = 0; m < p.length; m++) (d = p[m]), (d.noOfChildren = d.getNoOfChildren())
            }),
            (h.prototype.calcGrid = function (d) {
              var p = 0,
                m = 0
              ;(p = parseInt(Math.ceil((d.getRight() - d.getLeft()) / this.repulsionRange))), (m = parseInt(Math.ceil((d.getBottom() - d.getTop()) / this.repulsionRange)))
              for (var g = new Array(p), y = 0; y < p; y++) g[y] = new Array(m)
              for (var y = 0; y < p; y++) for (var v = 0; v < m; v++) g[y][v] = new Array()
              return g
            }),
            (h.prototype.addNodeToGrid = function (d, p, m) {
              var g = 0,
                y = 0,
                v = 0,
                x = 0
              ;(g = parseInt(Math.floor((d.getRect().x - p) / this.repulsionRange))),
                (y = parseInt(Math.floor((d.getRect().width + d.getRect().x - p) / this.repulsionRange))),
                (v = parseInt(Math.floor((d.getRect().y - m) / this.repulsionRange))),
                (x = parseInt(Math.floor((d.getRect().height + d.getRect().y - m) / this.repulsionRange)))
              for (var b = g; b <= y; b++) for (var T = v; T <= x; T++) this.grid[b][T].push(d), d.setGridCoordinates(g, y, v, x)
            }),
            (h.prototype.updateGrid = function () {
              var d,
                p,
                m = this.getAllNodes()
              for (this.grid = this.calcGrid(this.graphManager.getRoot()), d = 0; d < m.length; d++)
                (p = m[d]), this.addNodeToGrid(p, this.graphManager.getRoot().getLeft(), this.graphManager.getRoot().getTop())
            }),
            (h.prototype.calculateRepulsionForceOfANode = function (d, p, m, g) {
              if ((this.totalIterations % a.GRID_CALCULATION_CHECK_PERIOD == 1 && m) || g) {
                var y = new Set()
                d.surrounding = new Array()
                for (var v, x = this.grid, b = d.startX - 1; b < d.finishX + 2; b++)
                  for (var T = d.startY - 1; T < d.finishY + 2; T++)
                    if (!(b < 0 || T < 0 || b >= x.length || T >= x[0].length)) {
                      for (var S = 0; S < x[b][T].length; S++)
                        if (((v = x[b][T][S]), !(d.getOwner() != v.getOwner() || d == v) && !p.has(v) && !y.has(v))) {
                          var w = Math.abs(d.getCenterX() - v.getCenterX()) - (d.getWidth() / 2 + v.getWidth() / 2),
                            E = Math.abs(d.getCenterY() - v.getCenterY()) - (d.getHeight() / 2 + v.getHeight() / 2)
                          w <= this.repulsionRange && E <= this.repulsionRange && y.add(v)
                        }
                    }
                d.surrounding = [].concat(n(y))
              }
              for (b = 0; b < d.surrounding.length; b++) this.calcRepulsionForce(d, d.surrounding[b])
            }),
            (h.prototype.calcRepulsionRange = function () {
              return 0
            }),
            (t.exports = h)
        },
        function (t, e, r) {
          'use strict'
          var n = r(1),
            i = r(4)
          function a(l, u, h) {
            n.call(this, l, u, h), (this.idealLength = i.DEFAULT_EDGE_LENGTH), (this.edgeElasticity = i.DEFAULT_SPRING_STRENGTH)
          }
          o(a, 'FDLayoutEdge'), (a.prototype = Object.create(n.prototype))
          for (var s in n) a[s] = n[s]
          t.exports = a
        },
        function (t, e, r) {
          'use strict'
          var n = r(3),
            i = r(4)
          function a(l, u, h, f) {
            n.call(this, l, u, h, f),
              (this.nodeRepulsion = i.DEFAULT_REPULSION_STRENGTH),
              (this.springForceX = 0),
              (this.springForceY = 0),
              (this.repulsionForceX = 0),
              (this.repulsionForceY = 0),
              (this.gravitationForceX = 0),
              (this.gravitationForceY = 0),
              (this.displacementX = 0),
              (this.displacementY = 0),
              (this.startX = 0),
              (this.finishX = 0),
              (this.startY = 0),
              (this.finishY = 0),
              (this.surrounding = [])
          }
          o(a, 'FDLayoutNode'), (a.prototype = Object.create(n.prototype))
          for (var s in n) a[s] = n[s]
          ;(a.prototype.setGridCoordinates = function (l, u, h, f) {
            ;(this.startX = l), (this.finishX = u), (this.startY = h), (this.finishY = f)
          }),
            (t.exports = a)
        },
        function (t, e, r) {
          'use strict'
          function n(i, a) {
            ;(this.width = 0), (this.height = 0), i !== null && a !== null && ((this.height = a), (this.width = i))
          }
          o(n, 'DimensionD'),
            (n.prototype.getWidth = function () {
              return this.width
            }),
            (n.prototype.setWidth = function (i) {
              this.width = i
            }),
            (n.prototype.getHeight = function () {
              return this.height
            }),
            (n.prototype.setHeight = function (i) {
              this.height = i
            }),
            (t.exports = n)
        },
        function (t, e, r) {
          'use strict'
          var n = r(14)
          function i() {
            ;(this.map = {}), (this.keys = [])
          }
          o(i, 'HashMap'),
            (i.prototype.put = function (a, s) {
              var l = n.createID(a)
              this.contains(l) || ((this.map[l] = s), this.keys.push(a))
            }),
            (i.prototype.contains = function (a) {
              var s = n.createID(a)
              return this.map[a] != null
            }),
            (i.prototype.get = function (a) {
              var s = n.createID(a)
              return this.map[s]
            }),
            (i.prototype.keySet = function () {
              return this.keys
            }),
            (t.exports = i)
        },
        function (t, e, r) {
          'use strict'
          var n = r(14)
          function i() {
            this.set = {}
          }
          o(i, 'HashSet'),
            (i.prototype.add = function (a) {
              var s = n.createID(a)
              this.contains(s) || (this.set[s] = a)
            }),
            (i.prototype.remove = function (a) {
              delete this.set[n.createID(a)]
            }),
            (i.prototype.clear = function () {
              this.set = {}
            }),
            (i.prototype.contains = function (a) {
              return this.set[n.createID(a)] == a
            }),
            (i.prototype.isEmpty = function () {
              return this.size() === 0
            }),
            (i.prototype.size = function () {
              return Object.keys(this.set).length
            }),
            (i.prototype.addAllTo = function (a) {
              for (var s = Object.keys(this.set), l = s.length, u = 0; u < l; u++) a.push(this.set[s[u]])
            }),
            (i.prototype.size = function () {
              return Object.keys(this.set).length
            }),
            (i.prototype.addAll = function (a) {
              for (var s = a.length, l = 0; l < s; l++) {
                var u = a[l]
                this.add(u)
              }
            }),
            (t.exports = i)
        },
        function (t, e, r) {
          'use strict'
          function n() {}
          o(n, 'Matrix'),
            (n.multMat = function (i, a) {
              for (var s = [], l = 0; l < i.length; l++) {
                s[l] = []
                for (var u = 0; u < a[0].length; u++) {
                  s[l][u] = 0
                  for (var h = 0; h < i[0].length; h++) s[l][u] += i[l][h] * a[h][u]
                }
              }
              return s
            }),
            (n.transpose = function (i) {
              for (var a = [], s = 0; s < i[0].length; s++) {
                a[s] = []
                for (var l = 0; l < i.length; l++) a[s][l] = i[l][s]
              }
              return a
            }),
            (n.multCons = function (i, a) {
              for (var s = [], l = 0; l < i.length; l++) s[l] = i[l] * a
              return s
            }),
            (n.minusOp = function (i, a) {
              for (var s = [], l = 0; l < i.length; l++) s[l] = i[l] - a[l]
              return s
            }),
            (n.dotProduct = function (i, a) {
              for (var s = 0, l = 0; l < i.length; l++) s += i[l] * a[l]
              return s
            }),
            (n.mag = function (i) {
              return Math.sqrt(this.dotProduct(i, i))
            }),
            (n.normalize = function (i) {
              for (var a = [], s = this.mag(i), l = 0; l < i.length; l++) a[l] = i[l] / s
              return a
            }),
            (n.multGamma = function (i) {
              for (var a = [], s = 0, l = 0; l < i.length; l++) s += i[l]
              s *= -1 / i.length
              for (var u = 0; u < i.length; u++) a[u] = s + i[u]
              return a
            }),
            (n.multL = function (i, a, s) {
              for (var l = [], u = [], h = [], f = 0; f < a[0].length; f++) {
                for (var d = 0, p = 0; p < a.length; p++) d += -0.5 * a[p][f] * i[p]
                u[f] = d
              }
              for (var m = 0; m < s.length; m++) {
                for (var g = 0, y = 0; y < s.length; y++) g += s[m][y] * u[y]
                h[m] = g
              }
              for (var v = 0; v < a.length; v++) {
                for (var x = 0, b = 0; b < a[0].length; b++) x += a[v][b] * h[b]
                l[v] = x
              }
              return l
            }),
            (t.exports = n)
        },
        function (t, e, r) {
          'use strict'
          var n = (function () {
            function l(u, h) {
              for (var f = 0; f < h.length; f++) {
                var d = h[f]
                ;(d.enumerable = d.enumerable || !1), (d.configurable = !0), 'value' in d && (d.writable = !0), Object.defineProperty(u, d.key, d)
              }
            }
            return (
              o(l, 'defineProperties'),
              function (u, h, f) {
                return h && l(u.prototype, h), f && l(u, f), u
              }
            )
          })()
          function i(l, u) {
            if (!(l instanceof u)) throw new TypeError('Cannot call a class as a function')
          }
          o(i, '_classCallCheck')
          var a = r(11),
            s = (function () {
              function l(u, h) {
                i(this, l), (h !== null || h !== void 0) && (this.compareFunction = this._defaultCompareFunction)
                var f = void 0
                u instanceof a ? (f = u.size()) : (f = u.length), this._quicksort(u, 0, f - 1)
              }
              return (
                o(l, 'Quicksort'),
                n(l, [
                  {
                    key: '_quicksort',
                    value: o(function (h, f, d) {
                      if (f < d) {
                        var p = this._partition(h, f, d)
                        this._quicksort(h, f, p), this._quicksort(h, p + 1, d)
                      }
                    }, '_quicksort')
                  },
                  {
                    key: '_partition',
                    value: o(function (h, f, d) {
                      for (var p = this._get(h, f), m = f, g = d; ; ) {
                        for (; this.compareFunction(p, this._get(h, g)); ) g--
                        for (; this.compareFunction(this._get(h, m), p); ) m++
                        if (m < g) this._swap(h, m, g), m++, g--
                        else return g
                      }
                    }, '_partition')
                  },
                  {
                    key: '_get',
                    value: o(function (h, f) {
                      return h instanceof a ? h.get_object_at(f) : h[f]
                    }, '_get')
                  },
                  {
                    key: '_set',
                    value: o(function (h, f, d) {
                      h instanceof a ? h.set_object_at(f, d) : (h[f] = d)
                    }, '_set')
                  },
                  {
                    key: '_swap',
                    value: o(function (h, f, d) {
                      var p = this._get(h, f)
                      this._set(h, f, this._get(h, d)), this._set(h, d, p)
                    }, '_swap')
                  },
                  {
                    key: '_defaultCompareFunction',
                    value: o(function (h, f) {
                      return f > h
                    }, '_defaultCompareFunction')
                  }
                ]),
                l
              )
            })()
          t.exports = s
        },
        function (t, e, r) {
          'use strict'
          function n() {}
          o(n, 'SVD'),
            (n.svd = function (i) {
              ;(this.U = null), (this.V = null), (this.s = null), (this.m = 0), (this.n = 0), (this.m = i.length), (this.n = i[0].length)
              var a = Math.min(this.m, this.n)
              ;(this.s = (function (bt) {
                for (var ut = []; bt-- > 0; ) ut.push(0)
                return ut
              })(Math.min(this.m + 1, this.n))),
                (this.U = (function (bt) {
                  var ut = o(function St(ft) {
                    if (ft.length == 0) return 0
                    for (var vt = [], nt = 0; nt < ft[0]; nt++) vt.push(St(ft.slice(1)))
                    return vt
                  }, 'allocate')
                  return ut(bt)
                })([this.m, a])),
                (this.V = (function (bt) {
                  var ut = o(function St(ft) {
                    if (ft.length == 0) return 0
                    for (var vt = [], nt = 0; nt < ft[0]; nt++) vt.push(St(ft.slice(1)))
                    return vt
                  }, 'allocate')
                  return ut(bt)
                })([this.n, this.n]))
              for (
                var s = (function (bt) {
                    for (var ut = []; bt-- > 0; ) ut.push(0)
                    return ut
                  })(this.n),
                  l = (function (bt) {
                    for (var ut = []; bt-- > 0; ) ut.push(0)
                    return ut
                  })(this.m),
                  u = !0,
                  h = !0,
                  f = Math.min(this.m - 1, this.n),
                  d = Math.max(0, Math.min(this.n - 2, this.m)),
                  p = 0;
                p < Math.max(f, d);
                p++
              ) {
                if (p < f) {
                  this.s[p] = 0
                  for (var m = p; m < this.m; m++) this.s[p] = n.hypot(this.s[p], i[m][p])
                  if (this.s[p] !== 0) {
                    i[p][p] < 0 && (this.s[p] = -this.s[p])
                    for (var g = p; g < this.m; g++) i[g][p] /= this.s[p]
                    i[p][p] += 1
                  }
                  this.s[p] = -this.s[p]
                }
                for (var y = p + 1; y < this.n; y++) {
                  if (
                    (function (bt, ut) {
                      return bt && ut
                    })(p < f, this.s[p] !== 0)
                  ) {
                    for (var v = 0, x = p; x < this.m; x++) v += i[x][p] * i[x][y]
                    v = -v / i[p][p]
                    for (var b = p; b < this.m; b++) i[b][y] += v * i[b][p]
                  }
                  s[y] = i[p][y]
                }
                if (
                  (function (bt, ut) {
                    return bt && ut
                  })(u, p < f)
                )
                  for (var T = p; T < this.m; T++) this.U[T][p] = i[T][p]
                if (p < d) {
                  s[p] = 0
                  for (var S = p + 1; S < this.n; S++) s[p] = n.hypot(s[p], s[S])
                  if (s[p] !== 0) {
                    s[p + 1] < 0 && (s[p] = -s[p])
                    for (var w = p + 1; w < this.n; w++) s[w] /= s[p]
                    s[p + 1] += 1
                  }
                  if (
                    ((s[p] = -s[p]),
                    (function (bt, ut) {
                      return bt && ut
                    })(p + 1 < this.m, s[p] !== 0))
                  ) {
                    for (var E = p + 1; E < this.m; E++) l[E] = 0
                    for (var _ = p + 1; _ < this.n; _++) for (var C = p + 1; C < this.m; C++) l[C] += s[_] * i[C][_]
                    for (var D = p + 1; D < this.n; D++) for (var O = -s[D] / s[p + 1], R = p + 1; R < this.m; R++) i[R][D] += O * l[R]
                  }
                  if (h) for (var k = p + 1; k < this.n; k++) this.V[k][p] = s[k]
                }
              }
              var L = Math.min(this.n, this.m + 1)
              if ((f < this.n && (this.s[f] = i[f][f]), this.m < L && (this.s[L - 1] = 0), d + 1 < L && (s[d] = i[d][L - 1]), (s[L - 1] = 0), u)) {
                for (var A = f; A < a; A++) {
                  for (var I = 0; I < this.m; I++) this.U[I][A] = 0
                  this.U[A][A] = 1
                }
                for (var M = f - 1; M >= 0; M--)
                  if (this.s[M] !== 0) {
                    for (var P = M + 1; P < a; P++) {
                      for (var B = 0, F = M; F < this.m; F++) B += this.U[F][M] * this.U[F][P]
                      B = -B / this.U[M][M]
                      for (var z = M; z < this.m; z++) this.U[z][P] += B * this.U[z][M]
                    }
                    for (var $ = M; $ < this.m; $++) this.U[$][M] = -this.U[$][M]
                    this.U[M][M] = 1 + this.U[M][M]
                    for (var U = 0; U < M - 1; U++) this.U[U][M] = 0
                  } else {
                    for (var K = 0; K < this.m; K++) this.U[K][M] = 0
                    this.U[M][M] = 1
                  }
              }
              if (h)
                for (var ee = this.n - 1; ee >= 0; ee--) {
                  if (
                    (function (bt, ut) {
                      return bt && ut
                    })(ee < d, s[ee] !== 0)
                  )
                    for (var Y = ee + 1; Y < a; Y++) {
                      for (var ce = 0, Z = ee + 1; Z < this.n; Z++) ce += this.V[Z][ee] * this.V[Z][Y]
                      ce = -ce / this.V[ee + 1][ee]
                      for (var ue = ee + 1; ue < this.n; ue++) this.V[ue][Y] += ce * this.V[ue][ee]
                    }
                  for (var Q = 0; Q < this.n; Q++) this.V[Q][ee] = 0
                  this.V[ee][ee] = 1
                }
              for (var j = L - 1, ne = 0, te = Math.pow(2, -52), he = Math.pow(2, -966); L > 0; ) {
                var le = void 0,
                  J = void 0
                for (le = L - 2; le >= -1 && le !== -1; le--)
                  if (Math.abs(s[le]) <= he + te * (Math.abs(this.s[le]) + Math.abs(this.s[le + 1]))) {
                    s[le] = 0
                    break
                  }
                if (le === L - 2) J = 4
                else {
                  var Se = void 0
                  for (Se = L - 1; Se >= le && Se !== le; Se--) {
                    var se = (Se !== L ? Math.abs(s[Se]) : 0) + (Se !== le + 1 ? Math.abs(s[Se - 1]) : 0)
                    if (Math.abs(this.s[Se]) <= he + te * se) {
                      this.s[Se] = 0
                      break
                    }
                  }
                  Se === le ? (J = 3) : Se === L - 1 ? (J = 1) : ((J = 2), (le = Se))
                }
                switch ((le++, J)) {
                  case 1:
                    {
                      var ae = s[L - 2]
                      s[L - 2] = 0
                      for (var Oe = L - 2; Oe >= le; Oe--) {
                        var ye = n.hypot(this.s[Oe], ae),
                          Be = this.s[Oe] / ye,
                          He = ae / ye
                        if (((this.s[Oe] = ye), Oe !== le && ((ae = -He * s[Oe - 1]), (s[Oe - 1] = Be * s[Oe - 1])), h))
                          for (var ze = 0; ze < this.n; ze++)
                            (ye = Be * this.V[ze][Oe] + He * this.V[ze][L - 1]), (this.V[ze][L - 1] = -He * this.V[ze][Oe] + Be * this.V[ze][L - 1]), (this.V[ze][Oe] = ye)
                      }
                    }
                    break
                  case 2:
                    {
                      var Le = s[le - 1]
                      s[le - 1] = 0
                      for (var Ie = le; Ie < L; Ie++) {
                        var xe = n.hypot(this.s[Ie], Le),
                          q = this.s[Ie] / xe,
                          de = Le / xe
                        if (((this.s[Ie] = xe), (Le = -de * s[Ie]), (s[Ie] = q * s[Ie]), u))
                          for (var ie = 0; ie < this.m; ie++)
                            (xe = q * this.U[ie][Ie] + de * this.U[ie][le - 1]), (this.U[ie][le - 1] = -de * this.U[ie][Ie] + q * this.U[ie][le - 1]), (this.U[ie][Ie] = xe)
                      }
                    }
                    break
                  case 3:
                    {
                      var oe = Math.max(Math.max(Math.max(Math.max(Math.abs(this.s[L - 1]), Math.abs(this.s[L - 2])), Math.abs(s[L - 2])), Math.abs(this.s[le])), Math.abs(s[le])),
                        V = this.s[L - 1] / oe,
                        Te = this.s[L - 2] / oe,
                        W = s[L - 2] / oe,
                        pe = this.s[le] / oe,
                        ve = s[le] / oe,
                        Pe = ((Te + V) * (Te - V) + W * W) / 2,
                        _e = V * W * (V * W),
                        be = 0
                      ;(function (bt, ut) {
                        return bt || ut
                      })(Pe !== 0, _e !== 0) && ((be = Math.sqrt(Pe * Pe + _e)), Pe < 0 && (be = -be), (be = _e / (Pe + be)))
                      for (var Ve = (pe + V) * (pe - V) + be, De = pe * ve, qe = le; qe < L - 1; qe++) {
                        var at = n.hypot(Ve, De),
                          Rt = Ve / at,
                          st = De / at
                        if (
                          (qe !== le && (s[qe - 1] = at),
                          (Ve = Rt * this.s[qe] + st * s[qe]),
                          (s[qe] = Rt * s[qe] - st * this.s[qe]),
                          (De = st * this.s[qe + 1]),
                          (this.s[qe + 1] = Rt * this.s[qe + 1]),
                          h)
                        )
                          for (var Ue = 0; Ue < this.n; Ue++)
                            (at = Rt * this.V[Ue][qe] + st * this.V[Ue][qe + 1]), (this.V[Ue][qe + 1] = -st * this.V[Ue][qe] + Rt * this.V[Ue][qe + 1]), (this.V[Ue][qe] = at)
                        if (
                          ((at = n.hypot(Ve, De)),
                          (Rt = Ve / at),
                          (st = De / at),
                          (this.s[qe] = at),
                          (Ve = Rt * s[qe] + st * this.s[qe + 1]),
                          (this.s[qe + 1] = -st * s[qe] + Rt * this.s[qe + 1]),
                          (De = st * s[qe + 1]),
                          (s[qe + 1] = Rt * s[qe + 1]),
                          u && qe < this.m - 1)
                        )
                          for (var ct = 0; ct < this.m; ct++)
                            (at = Rt * this.U[ct][qe] + st * this.U[ct][qe + 1]), (this.U[ct][qe + 1] = -st * this.U[ct][qe] + Rt * this.U[ct][qe + 1]), (this.U[ct][qe] = at)
                      }
                      ;(s[L - 2] = Ve), (ne = ne + 1)
                    }
                    break
                  case 4:
                    {
                      if (this.s[le] <= 0 && ((this.s[le] = this.s[le] < 0 ? -this.s[le] : 0), h)) for (var We = 0; We <= j; We++) this.V[We][le] = -this.V[We][le]
                      for (; le < j && !(this.s[le] >= this.s[le + 1]); ) {
                        var ot = this.s[le]
                        if (((this.s[le] = this.s[le + 1]), (this.s[le + 1] = ot), h && le < this.n - 1))
                          for (var Yt = 0; Yt < this.n; Yt++) (ot = this.V[Yt][le + 1]), (this.V[Yt][le + 1] = this.V[Yt][le]), (this.V[Yt][le] = ot)
                        if (u && le < this.m - 1) for (var Tt = 0; Tt < this.m; Tt++) (ot = this.U[Tt][le + 1]), (this.U[Tt][le + 1] = this.U[Tt][le]), (this.U[Tt][le] = ot)
                        le++
                      }
                      ;(ne = 0), L--
                    }
                    break
                }
              }
              var Mt = { U: this.U, V: this.V, S: this.s }
              return Mt
            }),
            (n.hypot = function (i, a) {
              var s = void 0
              return (
                Math.abs(i) > Math.abs(a) ? ((s = a / i), (s = Math.abs(i) * Math.sqrt(1 + s * s))) : a != 0 ? ((s = i / a), (s = Math.abs(a) * Math.sqrt(1 + s * s))) : (s = 0), s
              )
            }),
            (t.exports = n)
        },
        function (t, e, r) {
          'use strict'
          var n = (function () {
            function s(l, u) {
              for (var h = 0; h < u.length; h++) {
                var f = u[h]
                ;(f.enumerable = f.enumerable || !1), (f.configurable = !0), 'value' in f && (f.writable = !0), Object.defineProperty(l, f.key, f)
              }
            }
            return (
              o(s, 'defineProperties'),
              function (l, u, h) {
                return u && s(l.prototype, u), h && s(l, h), l
              }
            )
          })()
          function i(s, l) {
            if (!(s instanceof l)) throw new TypeError('Cannot call a class as a function')
          }
          o(i, '_classCallCheck')
          var a = (function () {
            function s(l, u) {
              var h = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 1,
                f = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : -1,
                d = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : -1
              i(this, s),
                (this.sequence1 = l),
                (this.sequence2 = u),
                (this.match_score = h),
                (this.mismatch_penalty = f),
                (this.gap_penalty = d),
                (this.iMax = l.length + 1),
                (this.jMax = u.length + 1),
                (this.grid = new Array(this.iMax))
              for (var p = 0; p < this.iMax; p++) {
                this.grid[p] = new Array(this.jMax)
                for (var m = 0; m < this.jMax; m++) this.grid[p][m] = 0
              }
              this.tracebackGrid = new Array(this.iMax)
              for (var g = 0; g < this.iMax; g++) {
                this.tracebackGrid[g] = new Array(this.jMax)
                for (var y = 0; y < this.jMax; y++) this.tracebackGrid[g][y] = [null, null, null]
              }
              ;(this.alignments = []), (this.score = -1), this.computeGrids()
            }
            return (
              o(s, 'NeedlemanWunsch'),
              n(s, [
                {
                  key: 'getScore',
                  value: o(function () {
                    return this.score
                  }, 'getScore')
                },
                {
                  key: 'getAlignments',
                  value: o(function () {
                    return this.alignments
                  }, 'getAlignments')
                },
                {
                  key: 'computeGrids',
                  value: o(function () {
                    for (var u = 1; u < this.jMax; u++) (this.grid[0][u] = this.grid[0][u - 1] + this.gap_penalty), (this.tracebackGrid[0][u] = [!1, !1, !0])
                    for (var h = 1; h < this.iMax; h++) (this.grid[h][0] = this.grid[h - 1][0] + this.gap_penalty), (this.tracebackGrid[h][0] = [!1, !0, !1])
                    for (var f = 1; f < this.iMax; f++)
                      for (var d = 1; d < this.jMax; d++) {
                        var p = void 0
                        this.sequence1[f - 1] === this.sequence2[d - 1] ? (p = this.grid[f - 1][d - 1] + this.match_score) : (p = this.grid[f - 1][d - 1] + this.mismatch_penalty)
                        var m = this.grid[f - 1][d] + this.gap_penalty,
                          g = this.grid[f][d - 1] + this.gap_penalty,
                          y = [p, m, g],
                          v = this.arrayAllMaxIndexes(y)
                        ;(this.grid[f][d] = y[v[0]]), (this.tracebackGrid[f][d] = [v.includes(0), v.includes(1), v.includes(2)])
                      }
                    this.score = this.grid[this.iMax - 1][this.jMax - 1]
                  }, 'computeGrids')
                },
                {
                  key: 'alignmentTraceback',
                  value: o(function () {
                    var u = []
                    for (u.push({ pos: [this.sequence1.length, this.sequence2.length], seq1: '', seq2: '' }); u[0]; ) {
                      var h = u[0],
                        f = this.tracebackGrid[h.pos[0]][h.pos[1]]
                      f[0] && u.push({ pos: [h.pos[0] - 1, h.pos[1] - 1], seq1: this.sequence1[h.pos[0] - 1] + h.seq1, seq2: this.sequence2[h.pos[1] - 1] + h.seq2 }),
                        f[1] && u.push({ pos: [h.pos[0] - 1, h.pos[1]], seq1: this.sequence1[h.pos[0] - 1] + h.seq1, seq2: '-' + h.seq2 }),
                        f[2] && u.push({ pos: [h.pos[0], h.pos[1] - 1], seq1: '-' + h.seq1, seq2: this.sequence2[h.pos[1] - 1] + h.seq2 }),
                        h.pos[0] === 0 && h.pos[1] === 0 && this.alignments.push({ sequence1: h.seq1, sequence2: h.seq2 }),
                        u.shift()
                    }
                    return this.alignments
                  }, 'alignmentTraceback')
                },
                {
                  key: 'getAllIndexes',
                  value: o(function (u, h) {
                    for (var f = [], d = -1; (d = u.indexOf(h, d + 1)) !== -1; ) f.push(d)
                    return f
                  }, 'getAllIndexes')
                },
                {
                  key: 'arrayAllMaxIndexes',
                  value: o(function (u) {
                    return this.getAllIndexes(u, Math.max.apply(null, u))
                  }, 'arrayAllMaxIndexes')
                }
              ]),
              s
            )
          })()
          t.exports = a
        },
        function (t, e, r) {
          'use strict'
          var n = o(function () {}, 'layoutBase')
          ;(n.FDLayout = r(18)),
            (n.FDLayoutConstants = r(4)),
            (n.FDLayoutEdge = r(19)),
            (n.FDLayoutNode = r(20)),
            (n.DimensionD = r(21)),
            (n.HashMap = r(22)),
            (n.HashSet = r(23)),
            (n.IGeometry = r(8)),
            (n.IMath = r(9)),
            (n.Integer = r(10)),
            (n.Point = r(12)),
            (n.PointD = r(5)),
            (n.RandomSeed = r(16)),
            (n.RectangleD = r(13)),
            (n.Transform = r(17)),
            (n.UniqueIDGeneretor = r(14)),
            (n.Quicksort = r(25)),
            (n.LinkedList = r(11)),
            (n.LGraphObject = r(2)),
            (n.LGraph = r(6)),
            (n.LEdge = r(1)),
            (n.LGraphManager = r(7)),
            (n.LNode = r(3)),
            (n.Layout = r(15)),
            (n.LayoutConstants = r(0)),
            (n.NeedlemanWunsch = r(27)),
            (n.Matrix = r(24)),
            (n.SVD = r(26)),
            (t.exports = n)
        },
        function (t, e, r) {
          'use strict'
          function n() {
            this.listeners = []
          }
          o(n, 'Emitter')
          var i = n.prototype
          ;(i.addListener = function (a, s) {
            this.listeners.push({ event: a, callback: s })
          }),
            (i.removeListener = function (a, s) {
              for (var l = this.listeners.length; l >= 0; l--) {
                var u = this.listeners[l]
                u.event === a && u.callback === s && this.listeners.splice(l, 1)
              }
            }),
            (i.emit = function (a, s) {
              for (var l = 0; l < this.listeners.length; l++) {
                var u = this.listeners[l]
                a === u.event && u.callback(s)
              }
            }),
            (t.exports = n)
        }
      ])
    })
  })
  var JF = Pi((I4, ZF) => {
    'use strict'
    o(function (e, r) {
      typeof I4 == 'object' && typeof ZF == 'object'
        ? (ZF.exports = r(QF()))
        : typeof define == 'function' && define.amd
          ? define(['layout-base'], r)
          : typeof I4 == 'object'
            ? (I4.coseBase = r(QF()))
            : (e.coseBase = r(e.layoutBase))
    }, 'webpackUniversalModuleDefinition')(I4, function (t) {
      return (() => {
        'use strict'
        var e = {
            45: (a, s, l) => {
              var u = {}
              ;(u.layoutBase = l(551)),
                (u.CoSEConstants = l(806)),
                (u.CoSEEdge = l(767)),
                (u.CoSEGraph = l(880)),
                (u.CoSEGraphManager = l(578)),
                (u.CoSELayout = l(765)),
                (u.CoSENode = l(991)),
                (u.ConstraintHandler = l(902)),
                (a.exports = u)
            },
            806: (a, s, l) => {
              var u = l(551).FDLayoutConstants
              function h() {}
              o(h, 'CoSEConstants')
              for (var f in u) h[f] = u[f]
              ;(h.DEFAULT_USE_MULTI_LEVEL_SCALING = !1),
                (h.DEFAULT_RADIAL_SEPARATION = u.DEFAULT_EDGE_LENGTH),
                (h.DEFAULT_COMPONENT_SEPERATION = 60),
                (h.TILE = !0),
                (h.TILING_PADDING_VERTICAL = 10),
                (h.TILING_PADDING_HORIZONTAL = 10),
                (h.TRANSFORM_ON_CONSTRAINT_HANDLING = !0),
                (h.ENFORCE_CONSTRAINTS = !0),
                (h.APPLY_LAYOUT = !0),
                (h.RELAX_MOVEMENT_ON_CONSTRAINTS = !0),
                (h.TREE_REDUCTION_ON_INCREMENTAL = !0),
                (h.PURE_INCREMENTAL = h.DEFAULT_INCREMENTAL),
                (a.exports = h)
            },
            767: (a, s, l) => {
              var u = l(551).FDLayoutEdge
              function h(d, p, m) {
                u.call(this, d, p, m)
              }
              o(h, 'CoSEEdge'), (h.prototype = Object.create(u.prototype))
              for (var f in u) h[f] = u[f]
              a.exports = h
            },
            880: (a, s, l) => {
              var u = l(551).LGraph
              function h(d, p, m) {
                u.call(this, d, p, m)
              }
              o(h, 'CoSEGraph'), (h.prototype = Object.create(u.prototype))
              for (var f in u) h[f] = u[f]
              a.exports = h
            },
            578: (a, s, l) => {
              var u = l(551).LGraphManager
              function h(d) {
                u.call(this, d)
              }
              o(h, 'CoSEGraphManager'), (h.prototype = Object.create(u.prototype))
              for (var f in u) h[f] = u[f]
              a.exports = h
            },
            765: (a, s, l) => {
              var u = l(551).FDLayout,
                h = l(578),
                f = l(880),
                d = l(991),
                p = l(767),
                m = l(806),
                g = l(902),
                y = l(551).FDLayoutConstants,
                v = l(551).LayoutConstants,
                x = l(551).Point,
                b = l(551).PointD,
                T = l(551).DimensionD,
                S = l(551).Layout,
                w = l(551).Integer,
                E = l(551).IGeometry,
                _ = l(551).LGraph,
                C = l(551).Transform,
                D = l(551).LinkedList
              function O() {
                u.call(this), (this.toBeTiled = {}), (this.constraints = {})
              }
              o(O, 'CoSELayout'), (O.prototype = Object.create(u.prototype))
              for (var R in u) O[R] = u[R]
              ;(O.prototype.newGraphManager = function () {
                var k = new h(this)
                return (this.graphManager = k), k
              }),
                (O.prototype.newGraph = function (k) {
                  return new f(null, this.graphManager, k)
                }),
                (O.prototype.newNode = function (k) {
                  return new d(this.graphManager, k)
                }),
                (O.prototype.newEdge = function (k) {
                  return new p(null, null, k)
                }),
                (O.prototype.initParameters = function () {
                  u.prototype.initParameters.call(this, arguments),
                    this.isSubLayout ||
                      (m.DEFAULT_EDGE_LENGTH < 10 ? (this.idealEdgeLength = 10) : (this.idealEdgeLength = m.DEFAULT_EDGE_LENGTH),
                      (this.useSmartIdealEdgeLengthCalculation = m.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION),
                      (this.gravityConstant = y.DEFAULT_GRAVITY_STRENGTH),
                      (this.compoundGravityConstant = y.DEFAULT_COMPOUND_GRAVITY_STRENGTH),
                      (this.gravityRangeFactor = y.DEFAULT_GRAVITY_RANGE_FACTOR),
                      (this.compoundGravityRangeFactor = y.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR),
                      (this.prunedNodesAll = []),
                      (this.growTreeIterations = 0),
                      (this.afterGrowthIterations = 0),
                      (this.isTreeGrowing = !1),
                      (this.isGrowthFinished = !1))
                }),
                (O.prototype.initSpringEmbedder = function () {
                  u.prototype.initSpringEmbedder.call(this),
                    (this.coolingCycle = 0),
                    (this.maxCoolingCycle = this.maxIterations / y.CONVERGENCE_CHECK_PERIOD),
                    (this.finalTemperature = 0.04),
                    (this.coolingAdjuster = 1)
                }),
                (O.prototype.layout = function () {
                  var k = v.DEFAULT_CREATE_BENDS_AS_NEEDED
                  return k && (this.createBendpoints(), this.graphManager.resetAllEdges()), (this.level = 0), this.classicLayout()
                }),
                (O.prototype.classicLayout = function () {
                  if (
                    ((this.nodesWithGravity = this.calculateNodesToApplyGravitationTo()),
                    this.graphManager.setAllNodesToApplyGravitation(this.nodesWithGravity),
                    this.calcNoOfChildrenForAllNodes(),
                    this.graphManager.calcLowestCommonAncestors(),
                    this.graphManager.calcInclusionTreeDepths(),
                    this.graphManager.getRoot().calcEstimatedSize(),
                    this.calcIdealEdgeLengths(),
                    this.incremental)
                  ) {
                    if (m.TREE_REDUCTION_ON_INCREMENTAL) {
                      this.reduceTrees(), this.graphManager.resetAllNodesToApplyGravitation()
                      var L = new Set(this.getAllNodes()),
                        A = this.nodesWithGravity.filter(function (P) {
                          return L.has(P)
                        })
                      this.graphManager.setAllNodesToApplyGravitation(A)
                    }
                  } else {
                    var k = this.getFlatForest()
                    if (k.length > 0) this.positionNodesRadially(k)
                    else {
                      this.reduceTrees(), this.graphManager.resetAllNodesToApplyGravitation()
                      var L = new Set(this.getAllNodes()),
                        A = this.nodesWithGravity.filter(function (I) {
                          return L.has(I)
                        })
                      this.graphManager.setAllNodesToApplyGravitation(A), this.positionNodesRandomly()
                    }
                  }
                  return (
                    Object.keys(this.constraints).length > 0 && (g.handleConstraints(this), this.initConstraintVariables()),
                    this.initSpringEmbedder(),
                    m.APPLY_LAYOUT && this.runSpringEmbedder(),
                    !0
                  )
                }),
                (O.prototype.tick = function () {
                  if ((this.totalIterations++, this.totalIterations === this.maxIterations && !this.isTreeGrowing && !this.isGrowthFinished))
                    if (this.prunedNodesAll.length > 0) this.isTreeGrowing = !0
                    else return !0
                  if (this.totalIterations % y.CONVERGENCE_CHECK_PERIOD == 0 && !this.isTreeGrowing && !this.isGrowthFinished) {
                    if (this.isConverged())
                      if (this.prunedNodesAll.length > 0) this.isTreeGrowing = !0
                      else return !0
                    this.coolingCycle++,
                      this.layoutQuality == 0 ? (this.coolingAdjuster = this.coolingCycle) : this.layoutQuality == 1 && (this.coolingAdjuster = this.coolingCycle / 3),
                      (this.coolingFactor = Math.max(
                        this.initialCoolingFactor -
                          (Math.pow(this.coolingCycle, Math.log(100 * (this.initialCoolingFactor - this.finalTemperature)) / Math.log(this.maxCoolingCycle)) / 100) *
                            this.coolingAdjuster,
                        this.finalTemperature
                      )),
                      (this.animationPeriod = Math.ceil(this.initialAnimationPeriod * Math.sqrt(this.coolingFactor)))
                  }
                  if (this.isTreeGrowing) {
                    if (this.growTreeIterations % 10 == 0)
                      if (this.prunedNodesAll.length > 0) {
                        this.graphManager.updateBounds(), this.updateGrid(), this.growTree(this.prunedNodesAll), this.graphManager.resetAllNodesToApplyGravitation()
                        var k = new Set(this.getAllNodes()),
                          L = this.nodesWithGravity.filter(function (M) {
                            return k.has(M)
                          })
                        this.graphManager.setAllNodesToApplyGravitation(L),
                          this.graphManager.updateBounds(),
                          this.updateGrid(),
                          m.PURE_INCREMENTAL ? (this.coolingFactor = y.DEFAULT_COOLING_FACTOR_INCREMENTAL / 2) : (this.coolingFactor = y.DEFAULT_COOLING_FACTOR_INCREMENTAL)
                      } else (this.isTreeGrowing = !1), (this.isGrowthFinished = !0)
                    this.growTreeIterations++
                  }
                  if (this.isGrowthFinished) {
                    if (this.isConverged()) return !0
                    this.afterGrowthIterations % 10 == 0 && (this.graphManager.updateBounds(), this.updateGrid()),
                      m.PURE_INCREMENTAL
                        ? (this.coolingFactor = (y.DEFAULT_COOLING_FACTOR_INCREMENTAL / 2) * ((100 - this.afterGrowthIterations) / 100))
                        : (this.coolingFactor = y.DEFAULT_COOLING_FACTOR_INCREMENTAL * ((100 - this.afterGrowthIterations) / 100)),
                      this.afterGrowthIterations++
                  }
                  var A = !this.isTreeGrowing && !this.isGrowthFinished,
                    I = (this.growTreeIterations % 10 == 1 && this.isTreeGrowing) || (this.afterGrowthIterations % 10 == 1 && this.isGrowthFinished)
                  return (
                    (this.totalDisplacement = 0),
                    this.graphManager.updateBounds(),
                    this.calcSpringForces(),
                    this.calcRepulsionForces(A, I),
                    this.calcGravitationalForces(),
                    this.moveNodes(),
                    this.animate(),
                    !1
                  )
                }),
                (O.prototype.getPositionsData = function () {
                  for (var k = this.graphManager.getAllNodes(), L = {}, A = 0; A < k.length; A++) {
                    var I = k[A].rect,
                      M = k[A].id
                    L[M] = { id: M, x: I.getCenterX(), y: I.getCenterY(), w: I.width, h: I.height }
                  }
                  return L
                }),
                (O.prototype.runSpringEmbedder = function () {
                  ;(this.initialAnimationPeriod = 25), (this.animationPeriod = this.initialAnimationPeriod)
                  var k = !1
                  if (y.ANIMATE === 'during') this.emit('layoutstarted')
                  else {
                    for (; !k; ) k = this.tick()
                    this.graphManager.updateBounds()
                  }
                }),
                (O.prototype.moveNodes = function () {
                  for (var k = this.getAllNodes(), L, A = 0; A < k.length; A++) (L = k[A]), L.calculateDisplacement()
                  Object.keys(this.constraints).length > 0 && this.updateDisplacements()
                  for (var A = 0; A < k.length; A++) (L = k[A]), L.move()
                }),
                (O.prototype.initConstraintVariables = function () {
                  var k = this
                  ;(this.idToNodeMap = new Map()), (this.fixedNodeSet = new Set())
                  for (var L = this.graphManager.getAllNodes(), A = 0; A < L.length; A++) {
                    var I = L[A]
                    this.idToNodeMap.set(I.id, I)
                  }
                  var M = o(function Z(ue) {
                    for (var Q = ue.getChild().getNodes(), j, ne = 0, te = 0; te < Q.length; te++)
                      (j = Q[te]), j.getChild() == null ? k.fixedNodeSet.has(j.id) && (ne += 100) : (ne += Z(j))
                    return ne
                  }, 'calculateCompoundWeight')
                  if (this.constraints.fixedNodeConstraint) {
                    this.constraints.fixedNodeConstraint.forEach(function (Q) {
                      k.fixedNodeSet.add(Q.nodeId)
                    })
                    for (var L = this.graphManager.getAllNodes(), I, A = 0; A < L.length; A++)
                      if (((I = L[A]), I.getChild() != null)) {
                        var P = M(I)
                        P > 0 && (I.fixedNodeWeight = P)
                      }
                  }
                  if (this.constraints.relativePlacementConstraint) {
                    var B = new Map(),
                      F = new Map()
                    if (
                      ((this.dummyToNodeForVerticalAlignment = new Map()),
                      (this.dummyToNodeForHorizontalAlignment = new Map()),
                      (this.fixedNodesOnHorizontal = new Set()),
                      (this.fixedNodesOnVertical = new Set()),
                      this.fixedNodeSet.forEach(function (Z) {
                        k.fixedNodesOnHorizontal.add(Z), k.fixedNodesOnVertical.add(Z)
                      }),
                      this.constraints.alignmentConstraint)
                    ) {
                      if (this.constraints.alignmentConstraint.vertical)
                        for (var z = this.constraints.alignmentConstraint.vertical, A = 0; A < z.length; A++)
                          this.dummyToNodeForVerticalAlignment.set('dummy' + A, []),
                            z[A].forEach(function (ue) {
                              B.set(ue, 'dummy' + A),
                                k.dummyToNodeForVerticalAlignment.get('dummy' + A).push(ue),
                                k.fixedNodeSet.has(ue) && k.fixedNodesOnHorizontal.add('dummy' + A)
                            })
                      if (this.constraints.alignmentConstraint.horizontal)
                        for (var $ = this.constraints.alignmentConstraint.horizontal, A = 0; A < $.length; A++)
                          this.dummyToNodeForHorizontalAlignment.set('dummy' + A, []),
                            $[A].forEach(function (ue) {
                              F.set(ue, 'dummy' + A),
                                k.dummyToNodeForHorizontalAlignment.get('dummy' + A).push(ue),
                                k.fixedNodeSet.has(ue) && k.fixedNodesOnVertical.add('dummy' + A)
                            })
                    }
                    if (m.RELAX_MOVEMENT_ON_CONSTRAINTS)
                      (this.shuffle = function (Z) {
                        var ue, Q, j
                        for (j = Z.length - 1; j >= (2 * Z.length) / 3; j--) (ue = Math.floor(Math.random() * (j + 1))), (Q = Z[j]), (Z[j] = Z[ue]), (Z[ue] = Q)
                        return Z
                      }),
                        (this.nodesInRelativeHorizontal = []),
                        (this.nodesInRelativeVertical = []),
                        (this.nodeToRelativeConstraintMapHorizontal = new Map()),
                        (this.nodeToRelativeConstraintMapVertical = new Map()),
                        (this.nodeToTempPositionMapHorizontal = new Map()),
                        (this.nodeToTempPositionMapVertical = new Map()),
                        this.constraints.relativePlacementConstraint.forEach(function (Z) {
                          if (Z.left) {
                            var ue = B.has(Z.left) ? B.get(Z.left) : Z.left,
                              Q = B.has(Z.right) ? B.get(Z.right) : Z.right
                            k.nodesInRelativeHorizontal.includes(ue) ||
                              (k.nodesInRelativeHorizontal.push(ue),
                              k.nodeToRelativeConstraintMapHorizontal.set(ue, []),
                              k.dummyToNodeForVerticalAlignment.has(ue)
                                ? k.nodeToTempPositionMapHorizontal.set(ue, k.idToNodeMap.get(k.dummyToNodeForVerticalAlignment.get(ue)[0]).getCenterX())
                                : k.nodeToTempPositionMapHorizontal.set(ue, k.idToNodeMap.get(ue).getCenterX())),
                              k.nodesInRelativeHorizontal.includes(Q) ||
                                (k.nodesInRelativeHorizontal.push(Q),
                                k.nodeToRelativeConstraintMapHorizontal.set(Q, []),
                                k.dummyToNodeForVerticalAlignment.has(Q)
                                  ? k.nodeToTempPositionMapHorizontal.set(Q, k.idToNodeMap.get(k.dummyToNodeForVerticalAlignment.get(Q)[0]).getCenterX())
                                  : k.nodeToTempPositionMapHorizontal.set(Q, k.idToNodeMap.get(Q).getCenterX())),
                              k.nodeToRelativeConstraintMapHorizontal.get(ue).push({ right: Q, gap: Z.gap }),
                              k.nodeToRelativeConstraintMapHorizontal.get(Q).push({ left: ue, gap: Z.gap })
                          } else {
                            var j = F.has(Z.top) ? F.get(Z.top) : Z.top,
                              ne = F.has(Z.bottom) ? F.get(Z.bottom) : Z.bottom
                            k.nodesInRelativeVertical.includes(j) ||
                              (k.nodesInRelativeVertical.push(j),
                              k.nodeToRelativeConstraintMapVertical.set(j, []),
                              k.dummyToNodeForHorizontalAlignment.has(j)
                                ? k.nodeToTempPositionMapVertical.set(j, k.idToNodeMap.get(k.dummyToNodeForHorizontalAlignment.get(j)[0]).getCenterY())
                                : k.nodeToTempPositionMapVertical.set(j, k.idToNodeMap.get(j).getCenterY())),
                              k.nodesInRelativeVertical.includes(ne) ||
                                (k.nodesInRelativeVertical.push(ne),
                                k.nodeToRelativeConstraintMapVertical.set(ne, []),
                                k.dummyToNodeForHorizontalAlignment.has(ne)
                                  ? k.nodeToTempPositionMapVertical.set(ne, k.idToNodeMap.get(k.dummyToNodeForHorizontalAlignment.get(ne)[0]).getCenterY())
                                  : k.nodeToTempPositionMapVertical.set(ne, k.idToNodeMap.get(ne).getCenterY())),
                              k.nodeToRelativeConstraintMapVertical.get(j).push({ bottom: ne, gap: Z.gap }),
                              k.nodeToRelativeConstraintMapVertical.get(ne).push({ top: j, gap: Z.gap })
                          }
                        })
                    else {
                      var U = new Map(),
                        K = new Map()
                      this.constraints.relativePlacementConstraint.forEach(function (Z) {
                        if (Z.left) {
                          var ue = B.has(Z.left) ? B.get(Z.left) : Z.left,
                            Q = B.has(Z.right) ? B.get(Z.right) : Z.right
                          U.has(ue) ? U.get(ue).push(Q) : U.set(ue, [Q]), U.has(Q) ? U.get(Q).push(ue) : U.set(Q, [ue])
                        } else {
                          var j = F.has(Z.top) ? F.get(Z.top) : Z.top,
                            ne = F.has(Z.bottom) ? F.get(Z.bottom) : Z.bottom
                          K.has(j) ? K.get(j).push(ne) : K.set(j, [ne]), K.has(ne) ? K.get(ne).push(j) : K.set(ne, [j])
                        }
                      })
                      var ee = o(function (ue, Q) {
                          var j = [],
                            ne = [],
                            te = new D(),
                            he = new Set(),
                            le = 0
                          return (
                            ue.forEach(function (J, Se) {
                              if (!he.has(Se)) {
                                ;(j[le] = []), (ne[le] = !1)
                                var se = Se
                                for (te.push(se), he.add(se), j[le].push(se); te.length != 0; ) {
                                  ;(se = te.shift()), Q.has(se) && (ne[le] = !0)
                                  var ae = ue.get(se)
                                  ae.forEach(function (Oe) {
                                    he.has(Oe) || (te.push(Oe), he.add(Oe), j[le].push(Oe))
                                  })
                                }
                                le++
                              }
                            }),
                            { components: j, isFixed: ne }
                          )
                        }, 'constructComponents'),
                        Y = ee(U, k.fixedNodesOnHorizontal)
                      ;(this.componentsOnHorizontal = Y.components), (this.fixedComponentsOnHorizontal = Y.isFixed)
                      var ce = ee(K, k.fixedNodesOnVertical)
                      ;(this.componentsOnVertical = ce.components), (this.fixedComponentsOnVertical = ce.isFixed)
                    }
                  }
                }),
                (O.prototype.updateDisplacements = function () {
                  var k = this
                  if (
                    (this.constraints.fixedNodeConstraint &&
                      this.constraints.fixedNodeConstraint.forEach(function (ce) {
                        var Z = k.idToNodeMap.get(ce.nodeId)
                        ;(Z.displacementX = 0), (Z.displacementY = 0)
                      }),
                    this.constraints.alignmentConstraint)
                  ) {
                    if (this.constraints.alignmentConstraint.vertical)
                      for (var L = this.constraints.alignmentConstraint.vertical, A = 0; A < L.length; A++) {
                        for (var I = 0, M = 0; M < L[A].length; M++) {
                          if (this.fixedNodeSet.has(L[A][M])) {
                            I = 0
                            break
                          }
                          I += this.idToNodeMap.get(L[A][M]).displacementX
                        }
                        for (var P = I / L[A].length, M = 0; M < L[A].length; M++) this.idToNodeMap.get(L[A][M]).displacementX = P
                      }
                    if (this.constraints.alignmentConstraint.horizontal)
                      for (var B = this.constraints.alignmentConstraint.horizontal, A = 0; A < B.length; A++) {
                        for (var F = 0, M = 0; M < B[A].length; M++) {
                          if (this.fixedNodeSet.has(B[A][M])) {
                            F = 0
                            break
                          }
                          F += this.idToNodeMap.get(B[A][M]).displacementY
                        }
                        for (var z = F / B[A].length, M = 0; M < B[A].length; M++) this.idToNodeMap.get(B[A][M]).displacementY = z
                      }
                  }
                  if (this.constraints.relativePlacementConstraint)
                    if (m.RELAX_MOVEMENT_ON_CONSTRAINTS)
                      this.totalIterations % 10 == 0 && (this.shuffle(this.nodesInRelativeHorizontal), this.shuffle(this.nodesInRelativeVertical)),
                        this.nodesInRelativeHorizontal.forEach(function (ce) {
                          if (!k.fixedNodesOnHorizontal.has(ce)) {
                            var Z = 0
                            k.dummyToNodeForVerticalAlignment.has(ce)
                              ? (Z = k.idToNodeMap.get(k.dummyToNodeForVerticalAlignment.get(ce)[0]).displacementX)
                              : (Z = k.idToNodeMap.get(ce).displacementX),
                              k.nodeToRelativeConstraintMapHorizontal.get(ce).forEach(function (ue) {
                                if (ue.right) {
                                  var Q = k.nodeToTempPositionMapHorizontal.get(ue.right) - k.nodeToTempPositionMapHorizontal.get(ce) - Z
                                  Q < ue.gap && (Z -= ue.gap - Q)
                                } else {
                                  var Q = k.nodeToTempPositionMapHorizontal.get(ce) - k.nodeToTempPositionMapHorizontal.get(ue.left) + Z
                                  Q < ue.gap && (Z += ue.gap - Q)
                                }
                              }),
                              k.nodeToTempPositionMapHorizontal.set(ce, k.nodeToTempPositionMapHorizontal.get(ce) + Z),
                              k.dummyToNodeForVerticalAlignment.has(ce)
                                ? k.dummyToNodeForVerticalAlignment.get(ce).forEach(function (ue) {
                                    k.idToNodeMap.get(ue).displacementX = Z
                                  })
                                : (k.idToNodeMap.get(ce).displacementX = Z)
                          }
                        }),
                        this.nodesInRelativeVertical.forEach(function (ce) {
                          if (!k.fixedNodesOnHorizontal.has(ce)) {
                            var Z = 0
                            k.dummyToNodeForHorizontalAlignment.has(ce)
                              ? (Z = k.idToNodeMap.get(k.dummyToNodeForHorizontalAlignment.get(ce)[0]).displacementY)
                              : (Z = k.idToNodeMap.get(ce).displacementY),
                              k.nodeToRelativeConstraintMapVertical.get(ce).forEach(function (ue) {
                                if (ue.bottom) {
                                  var Q = k.nodeToTempPositionMapVertical.get(ue.bottom) - k.nodeToTempPositionMapVertical.get(ce) - Z
                                  Q < ue.gap && (Z -= ue.gap - Q)
                                } else {
                                  var Q = k.nodeToTempPositionMapVertical.get(ce) - k.nodeToTempPositionMapVertical.get(ue.top) + Z
                                  Q < ue.gap && (Z += ue.gap - Q)
                                }
                              }),
                              k.nodeToTempPositionMapVertical.set(ce, k.nodeToTempPositionMapVertical.get(ce) + Z),
                              k.dummyToNodeForHorizontalAlignment.has(ce)
                                ? k.dummyToNodeForHorizontalAlignment.get(ce).forEach(function (ue) {
                                    k.idToNodeMap.get(ue).displacementY = Z
                                  })
                                : (k.idToNodeMap.get(ce).displacementY = Z)
                          }
                        })
                    else {
                      for (var A = 0; A < this.componentsOnHorizontal.length; A++) {
                        var $ = this.componentsOnHorizontal[A]
                        if (this.fixedComponentsOnHorizontal[A])
                          for (var M = 0; M < $.length; M++)
                            this.dummyToNodeForVerticalAlignment.has($[M])
                              ? this.dummyToNodeForVerticalAlignment.get($[M]).forEach(function (ue) {
                                  k.idToNodeMap.get(ue).displacementX = 0
                                })
                              : (this.idToNodeMap.get($[M]).displacementX = 0)
                        else {
                          for (var U = 0, K = 0, M = 0; M < $.length; M++)
                            if (this.dummyToNodeForVerticalAlignment.has($[M])) {
                              var ee = this.dummyToNodeForVerticalAlignment.get($[M])
                              ;(U += ee.length * this.idToNodeMap.get(ee[0]).displacementX), (K += ee.length)
                            } else (U += this.idToNodeMap.get($[M]).displacementX), K++
                          for (var Y = U / K, M = 0; M < $.length; M++)
                            this.dummyToNodeForVerticalAlignment.has($[M])
                              ? this.dummyToNodeForVerticalAlignment.get($[M]).forEach(function (ue) {
                                  k.idToNodeMap.get(ue).displacementX = Y
                                })
                              : (this.idToNodeMap.get($[M]).displacementX = Y)
                        }
                      }
                      for (var A = 0; A < this.componentsOnVertical.length; A++) {
                        var $ = this.componentsOnVertical[A]
                        if (this.fixedComponentsOnVertical[A])
                          for (var M = 0; M < $.length; M++)
                            this.dummyToNodeForHorizontalAlignment.has($[M])
                              ? this.dummyToNodeForHorizontalAlignment.get($[M]).forEach(function (Q) {
                                  k.idToNodeMap.get(Q).displacementY = 0
                                })
                              : (this.idToNodeMap.get($[M]).displacementY = 0)
                        else {
                          for (var U = 0, K = 0, M = 0; M < $.length; M++)
                            if (this.dummyToNodeForHorizontalAlignment.has($[M])) {
                              var ee = this.dummyToNodeForHorizontalAlignment.get($[M])
                              ;(U += ee.length * this.idToNodeMap.get(ee[0]).displacementY), (K += ee.length)
                            } else (U += this.idToNodeMap.get($[M]).displacementY), K++
                          for (var Y = U / K, M = 0; M < $.length; M++)
                            this.dummyToNodeForHorizontalAlignment.has($[M])
                              ? this.dummyToNodeForHorizontalAlignment.get($[M]).forEach(function (te) {
                                  k.idToNodeMap.get(te).displacementY = Y
                                })
                              : (this.idToNodeMap.get($[M]).displacementY = Y)
                        }
                      }
                    }
                }),
                (O.prototype.calculateNodesToApplyGravitationTo = function () {
                  var k = [],
                    L,
                    A = this.graphManager.getGraphs(),
                    I = A.length,
                    M
                  for (M = 0; M < I; M++) (L = A[M]), L.updateConnected(), L.isConnected || (k = k.concat(L.getNodes()))
                  return k
                }),
                (O.prototype.createBendpoints = function () {
                  var k = []
                  k = k.concat(this.graphManager.getAllEdges())
                  var L = new Set(),
                    A
                  for (A = 0; A < k.length; A++) {
                    var I = k[A]
                    if (!L.has(I)) {
                      var M = I.getSource(),
                        P = I.getTarget()
                      if (M == P) I.getBendpoints().push(new b()), I.getBendpoints().push(new b()), this.createDummyNodesForBendpoints(I), L.add(I)
                      else {
                        var B = []
                        if (((B = B.concat(M.getEdgeListToNode(P))), (B = B.concat(P.getEdgeListToNode(M))), !L.has(B[0]))) {
                          if (B.length > 1) {
                            var F
                            for (F = 0; F < B.length; F++) {
                              var z = B[F]
                              z.getBendpoints().push(new b()), this.createDummyNodesForBendpoints(z)
                            }
                          }
                          B.forEach(function ($) {
                            L.add($)
                          })
                        }
                      }
                    }
                    if (L.size == k.length) break
                  }
                }),
                (O.prototype.positionNodesRadially = function (k) {
                  for (var L = new x(0, 0), A = Math.ceil(Math.sqrt(k.length)), I = 0, M = 0, P = 0, B = new b(0, 0), F = 0; F < k.length; F++) {
                    F % A == 0 && ((P = 0), (M = I), F != 0 && (M += m.DEFAULT_COMPONENT_SEPERATION), (I = 0))
                    var z = k[F],
                      $ = S.findCenterOfTree(z)
                    ;(L.x = P), (L.y = M), (B = O.radialLayout(z, $, L)), B.y > I && (I = Math.floor(B.y)), (P = Math.floor(B.x + m.DEFAULT_COMPONENT_SEPERATION))
                  }
                  this.transform(new b(v.WORLD_CENTER_X - B.x / 2, v.WORLD_CENTER_Y - B.y / 2))
                }),
                (O.radialLayout = function (k, L, A) {
                  var I = Math.max(this.maxDiagonalInTree(k), m.DEFAULT_RADIAL_SEPARATION)
                  O.branchRadialLayout(L, null, 0, 359, 0, I)
                  var M = _.calculateBounds(k),
                    P = new C()
                  P.setDeviceOrgX(M.getMinX()), P.setDeviceOrgY(M.getMinY()), P.setWorldOrgX(A.x), P.setWorldOrgY(A.y)
                  for (var B = 0; B < k.length; B++) {
                    var F = k[B]
                    F.transform(P)
                  }
                  var z = new b(M.getMaxX(), M.getMaxY())
                  return P.inverseTransformPoint(z)
                }),
                (O.branchRadialLayout = function (k, L, A, I, M, P) {
                  var B = (I - A + 1) / 2
                  B < 0 && (B += 180)
                  var F = (B + A) % 360,
                    z = (F * E.TWO_PI) / 360,
                    $ = Math.cos(z),
                    U = M * Math.cos(z),
                    K = M * Math.sin(z)
                  k.setCenter(U, K)
                  var ee = []
                  ee = ee.concat(k.getEdges())
                  var Y = ee.length
                  L != null && Y--
                  for (var ce = 0, Z = ee.length, ue, Q = k.getEdgesBetween(L); Q.length > 1; ) {
                    var j = Q[0]
                    Q.splice(0, 1)
                    var ne = ee.indexOf(j)
                    ne >= 0 && ee.splice(ne, 1), Z--, Y--
                  }
                  L != null ? (ue = (ee.indexOf(Q[0]) + 1) % Z) : (ue = 0)
                  for (var te = Math.abs(I - A) / Y, he = ue; ce != Y; he = ++he % Z) {
                    var le = ee[he].getOtherEnd(k)
                    if (le != L) {
                      var J = (A + ce * te) % 360,
                        Se = (J + te) % 360
                      O.branchRadialLayout(le, k, J, Se, M + P, P), ce++
                    }
                  }
                }),
                (O.maxDiagonalInTree = function (k) {
                  for (var L = w.MIN_VALUE, A = 0; A < k.length; A++) {
                    var I = k[A],
                      M = I.getDiagonal()
                    M > L && (L = M)
                  }
                  return L
                }),
                (O.prototype.calcRepulsionRange = function () {
                  return 2 * (this.level + 1) * this.idealEdgeLength
                }),
                (O.prototype.groupZeroDegreeMembers = function () {
                  var k = this,
                    L = {}
                  ;(this.memberGroups = {}), (this.idToDummyNode = {})
                  for (var A = [], I = this.graphManager.getAllNodes(), M = 0; M < I.length; M++) {
                    var P = I[M],
                      B = P.getParent()
                    this.getNodeDegreeWithChildren(P) === 0 && (B.id == null || !this.getToBeTiled(B)) && A.push(P)
                  }
                  for (var M = 0; M < A.length; M++) {
                    var P = A[M],
                      F = P.getParent().id
                    typeof L[F] > 'u' && (L[F] = []), (L[F] = L[F].concat(P))
                  }
                  Object.keys(L).forEach(function (z) {
                    if (L[z].length > 1) {
                      var $ = 'DummyCompound_' + z
                      k.memberGroups[$] = L[z]
                      var U = L[z][0].getParent(),
                        K = new d(k.graphManager)
                      ;(K.id = $),
                        (K.paddingLeft = U.paddingLeft || 0),
                        (K.paddingRight = U.paddingRight || 0),
                        (K.paddingBottom = U.paddingBottom || 0),
                        (K.paddingTop = U.paddingTop || 0),
                        (k.idToDummyNode[$] = K)
                      var ee = k.getGraphManager().add(k.newGraph(), K),
                        Y = U.getChild()
                      Y.add(K)
                      for (var ce = 0; ce < L[z].length; ce++) {
                        var Z = L[z][ce]
                        Y.remove(Z), ee.add(Z)
                      }
                    }
                  })
                }),
                (O.prototype.clearCompounds = function () {
                  var k = {},
                    L = {}
                  this.performDFSOnCompounds()
                  for (var A = 0; A < this.compoundOrder.length; A++)
                    (L[this.compoundOrder[A].id] = this.compoundOrder[A]),
                      (k[this.compoundOrder[A].id] = [].concat(this.compoundOrder[A].getChild().getNodes())),
                      this.graphManager.remove(this.compoundOrder[A].getChild()),
                      (this.compoundOrder[A].child = null)
                  this.graphManager.resetAllNodes(), this.tileCompoundMembers(k, L)
                }),
                (O.prototype.clearZeroDegreeMembers = function () {
                  var k = this,
                    L = (this.tiledZeroDegreePack = [])
                  Object.keys(this.memberGroups).forEach(function (A) {
                    var I = k.idToDummyNode[A]
                    if (
                      ((L[A] = k.tileNodes(k.memberGroups[A], I.paddingLeft + I.paddingRight)),
                      (I.rect.width = L[A].width),
                      (I.rect.height = L[A].height),
                      I.setCenter(L[A].centerX, L[A].centerY),
                      (I.labelMarginLeft = 0),
                      (I.labelMarginTop = 0),
                      m.NODE_DIMENSIONS_INCLUDE_LABELS)
                    ) {
                      var M = I.rect.width,
                        P = I.rect.height
                      I.labelWidth &&
                        (I.labelPosHorizontal == 'left'
                          ? ((I.rect.x -= I.labelWidth), I.setWidth(M + I.labelWidth), (I.labelMarginLeft = I.labelWidth))
                          : I.labelPosHorizontal == 'center' && I.labelWidth > M
                            ? ((I.rect.x -= (I.labelWidth - M) / 2), I.setWidth(I.labelWidth), (I.labelMarginLeft = (I.labelWidth - M) / 2))
                            : I.labelPosHorizontal == 'right' && I.setWidth(M + I.labelWidth)),
                        I.labelHeight &&
                          (I.labelPosVertical == 'top'
                            ? ((I.rect.y -= I.labelHeight), I.setHeight(P + I.labelHeight), (I.labelMarginTop = I.labelHeight))
                            : I.labelPosVertical == 'center' && I.labelHeight > P
                              ? ((I.rect.y -= (I.labelHeight - P) / 2), I.setHeight(I.labelHeight), (I.labelMarginTop = (I.labelHeight - P) / 2))
                              : I.labelPosVertical == 'bottom' && I.setHeight(P + I.labelHeight))
                    }
                  })
                }),
                (O.prototype.repopulateCompounds = function () {
                  for (var k = this.compoundOrder.length - 1; k >= 0; k--) {
                    var L = this.compoundOrder[k],
                      A = L.id,
                      I = L.paddingLeft,
                      M = L.paddingTop,
                      P = L.labelMarginLeft,
                      B = L.labelMarginTop
                    this.adjustLocations(this.tiledMemberPack[A], L.rect.x, L.rect.y, I, M, P, B)
                  }
                }),
                (O.prototype.repopulateZeroDegreeMembers = function () {
                  var k = this,
                    L = this.tiledZeroDegreePack
                  Object.keys(L).forEach(function (A) {
                    var I = k.idToDummyNode[A],
                      M = I.paddingLeft,
                      P = I.paddingTop,
                      B = I.labelMarginLeft,
                      F = I.labelMarginTop
                    k.adjustLocations(L[A], I.rect.x, I.rect.y, M, P, B, F)
                  })
                }),
                (O.prototype.getToBeTiled = function (k) {
                  var L = k.id
                  if (this.toBeTiled[L] != null) return this.toBeTiled[L]
                  var A = k.getChild()
                  if (A == null) return (this.toBeTiled[L] = !1), !1
                  for (var I = A.getNodes(), M = 0; M < I.length; M++) {
                    var P = I[M]
                    if (this.getNodeDegree(P) > 0) return (this.toBeTiled[L] = !1), !1
                    if (P.getChild() == null) {
                      this.toBeTiled[P.id] = !1
                      continue
                    }
                    if (!this.getToBeTiled(P)) return (this.toBeTiled[L] = !1), !1
                  }
                  return (this.toBeTiled[L] = !0), !0
                }),
                (O.prototype.getNodeDegree = function (k) {
                  for (var L = k.id, A = k.getEdges(), I = 0, M = 0; M < A.length; M++) {
                    var P = A[M]
                    P.getSource().id !== P.getTarget().id && (I = I + 1)
                  }
                  return I
                }),
                (O.prototype.getNodeDegreeWithChildren = function (k) {
                  var L = this.getNodeDegree(k)
                  if (k.getChild() == null) return L
                  for (var A = k.getChild().getNodes(), I = 0; I < A.length; I++) {
                    var M = A[I]
                    L += this.getNodeDegreeWithChildren(M)
                  }
                  return L
                }),
                (O.prototype.performDFSOnCompounds = function () {
                  ;(this.compoundOrder = []), this.fillCompexOrderByDFS(this.graphManager.getRoot().getNodes())
                }),
                (O.prototype.fillCompexOrderByDFS = function (k) {
                  for (var L = 0; L < k.length; L++) {
                    var A = k[L]
                    A.getChild() != null && this.fillCompexOrderByDFS(A.getChild().getNodes()), this.getToBeTiled(A) && this.compoundOrder.push(A)
                  }
                }),
                (O.prototype.adjustLocations = function (k, L, A, I, M, P, B) {
                  ;(L += I + P), (A += M + B)
                  for (var F = L, z = 0; z < k.rows.length; z++) {
                    var $ = k.rows[z]
                    L = F
                    for (var U = 0, K = 0; K < $.length; K++) {
                      var ee = $[K]
                      ;(ee.rect.x = L), (ee.rect.y = A), (L += ee.rect.width + k.horizontalPadding), ee.rect.height > U && (U = ee.rect.height)
                    }
                    A += U + k.verticalPadding
                  }
                }),
                (O.prototype.tileCompoundMembers = function (k, L) {
                  var A = this
                  ;(this.tiledMemberPack = []),
                    Object.keys(k).forEach(function (I) {
                      var M = L[I]
                      if (
                        ((A.tiledMemberPack[I] = A.tileNodes(k[I], M.paddingLeft + M.paddingRight)),
                        (M.rect.width = A.tiledMemberPack[I].width),
                        (M.rect.height = A.tiledMemberPack[I].height),
                        M.setCenter(A.tiledMemberPack[I].centerX, A.tiledMemberPack[I].centerY),
                        (M.labelMarginLeft = 0),
                        (M.labelMarginTop = 0),
                        m.NODE_DIMENSIONS_INCLUDE_LABELS)
                      ) {
                        var P = M.rect.width,
                          B = M.rect.height
                        M.labelWidth &&
                          (M.labelPosHorizontal == 'left'
                            ? ((M.rect.x -= M.labelWidth), M.setWidth(P + M.labelWidth), (M.labelMarginLeft = M.labelWidth))
                            : M.labelPosHorizontal == 'center' && M.labelWidth > P
                              ? ((M.rect.x -= (M.labelWidth - P) / 2), M.setWidth(M.labelWidth), (M.labelMarginLeft = (M.labelWidth - P) / 2))
                              : M.labelPosHorizontal == 'right' && M.setWidth(P + M.labelWidth)),
                          M.labelHeight &&
                            (M.labelPosVertical == 'top'
                              ? ((M.rect.y -= M.labelHeight), M.setHeight(B + M.labelHeight), (M.labelMarginTop = M.labelHeight))
                              : M.labelPosVertical == 'center' && M.labelHeight > B
                                ? ((M.rect.y -= (M.labelHeight - B) / 2), M.setHeight(M.labelHeight), (M.labelMarginTop = (M.labelHeight - B) / 2))
                                : M.labelPosVertical == 'bottom' && M.setHeight(B + M.labelHeight))
                      }
                    })
                }),
                (O.prototype.tileNodes = function (k, L) {
                  var A = this.tileNodesByFavoringDim(k, L, !0),
                    I = this.tileNodesByFavoringDim(k, L, !1),
                    M = this.getOrgRatio(A),
                    P = this.getOrgRatio(I),
                    B
                  return P < M ? (B = I) : (B = A), B
                }),
                (O.prototype.getOrgRatio = function (k) {
                  var L = k.width,
                    A = k.height,
                    I = L / A
                  return I < 1 && (I = 1 / I), I
                }),
                (O.prototype.calcIdealRowWidth = function (k, L) {
                  var A = m.TILING_PADDING_VERTICAL,
                    I = m.TILING_PADDING_HORIZONTAL,
                    M = k.length,
                    P = 0,
                    B = 0,
                    F = 0
                  k.forEach(function (ce) {
                    ;(P += ce.getWidth()), (B += ce.getHeight()), ce.getWidth() > F && (F = ce.getWidth())
                  })
                  var z = P / M,
                    $ = B / M,
                    U = Math.pow(A - I, 2) + 4 * (z + I) * ($ + A) * M,
                    K = (I - A + Math.sqrt(U)) / (2 * (z + I)),
                    ee
                  L ? ((ee = Math.ceil(K)), ee == K && ee++) : (ee = Math.floor(K))
                  var Y = ee * (z + I) - I
                  return F > Y && (Y = F), (Y += I * 2), Y
                }),
                (O.prototype.tileNodesByFavoringDim = function (k, L, A) {
                  var I = m.TILING_PADDING_VERTICAL,
                    M = m.TILING_PADDING_HORIZONTAL,
                    P = m.TILING_COMPARE_BY,
                    B = { rows: [], rowWidth: [], rowHeight: [], width: 0, height: L, verticalPadding: I, horizontalPadding: M, centerX: 0, centerY: 0 }
                  P && (B.idealRowWidth = this.calcIdealRowWidth(k, A))
                  var F = o(function (Z) {
                      return Z.rect.width * Z.rect.height
                    }, 'getNodeArea'),
                    z = o(function (Z, ue) {
                      return F(ue) - F(Z)
                    }, 'areaCompareFcn')
                  k.sort(function (ce, Z) {
                    var ue = z
                    return B.idealRowWidth ? ((ue = P), ue(ce.id, Z.id)) : ue(ce, Z)
                  })
                  for (var $ = 0, U = 0, K = 0; K < k.length; K++) {
                    var ee = k[K]
                    ;($ += ee.getCenterX()), (U += ee.getCenterY())
                  }
                  ;(B.centerX = $ / k.length), (B.centerY = U / k.length)
                  for (var K = 0; K < k.length; K++) {
                    var ee = k[K]
                    if (B.rows.length == 0) this.insertNodeToRow(B, ee, 0, L)
                    else if (this.canAddHorizontal(B, ee.rect.width, ee.rect.height)) {
                      var Y = B.rows.length - 1
                      B.idealRowWidth || (Y = this.getShortestRowIndex(B)), this.insertNodeToRow(B, ee, Y, L)
                    } else this.insertNodeToRow(B, ee, B.rows.length, L)
                    this.shiftToLastRow(B)
                  }
                  return B
                }),
                (O.prototype.insertNodeToRow = function (k, L, A, I) {
                  var M = I
                  if (A == k.rows.length) {
                    var P = []
                    k.rows.push(P), k.rowWidth.push(M), k.rowHeight.push(0)
                  }
                  var B = k.rowWidth[A] + L.rect.width
                  k.rows[A].length > 0 && (B += k.horizontalPadding), (k.rowWidth[A] = B), k.width < B && (k.width = B)
                  var F = L.rect.height
                  A > 0 && (F += k.verticalPadding)
                  var z = 0
                  F > k.rowHeight[A] && ((z = k.rowHeight[A]), (k.rowHeight[A] = F), (z = k.rowHeight[A] - z)), (k.height += z), k.rows[A].push(L)
                }),
                (O.prototype.getShortestRowIndex = function (k) {
                  for (var L = -1, A = Number.MAX_VALUE, I = 0; I < k.rows.length; I++) k.rowWidth[I] < A && ((L = I), (A = k.rowWidth[I]))
                  return L
                }),
                (O.prototype.getLongestRowIndex = function (k) {
                  for (var L = -1, A = Number.MIN_VALUE, I = 0; I < k.rows.length; I++) k.rowWidth[I] > A && ((L = I), (A = k.rowWidth[I]))
                  return L
                }),
                (O.prototype.canAddHorizontal = function (k, L, A) {
                  if (k.idealRowWidth) {
                    var I = k.rows.length - 1,
                      M = k.rowWidth[I]
                    return M + L + k.horizontalPadding <= k.idealRowWidth
                  }
                  var P = this.getShortestRowIndex(k)
                  if (P < 0) return !0
                  var B = k.rowWidth[P]
                  if (B + k.horizontalPadding + L <= k.width) return !0
                  var F = 0
                  k.rowHeight[P] < A && P > 0 && (F = A + k.verticalPadding - k.rowHeight[P])
                  var z
                  k.width - B >= L + k.horizontalPadding ? (z = (k.height + F) / (B + L + k.horizontalPadding)) : (z = (k.height + F) / k.width), (F = A + k.verticalPadding)
                  var $
                  return k.width < L ? ($ = (k.height + F) / L) : ($ = (k.height + F) / k.width), $ < 1 && ($ = 1 / $), z < 1 && (z = 1 / z), z < $
                }),
                (O.prototype.shiftToLastRow = function (k) {
                  var L = this.getLongestRowIndex(k),
                    A = k.rowWidth.length - 1,
                    I = k.rows[L],
                    M = I[I.length - 1],
                    P = M.width + k.horizontalPadding
                  if (k.width - k.rowWidth[A] > P && L != A) {
                    I.splice(-1, 1),
                      k.rows[A].push(M),
                      (k.rowWidth[L] = k.rowWidth[L] - P),
                      (k.rowWidth[A] = k.rowWidth[A] + P),
                      (k.width = k.rowWidth[instance.getLongestRowIndex(k)])
                    for (var B = Number.MIN_VALUE, F = 0; F < I.length; F++) I[F].height > B && (B = I[F].height)
                    L > 0 && (B += k.verticalPadding)
                    var z = k.rowHeight[L] + k.rowHeight[A]
                    ;(k.rowHeight[L] = B), k.rowHeight[A] < M.height + k.verticalPadding && (k.rowHeight[A] = M.height + k.verticalPadding)
                    var $ = k.rowHeight[L] + k.rowHeight[A]
                    ;(k.height += $ - z), this.shiftToLastRow(k)
                  }
                }),
                (O.prototype.tilingPreLayout = function () {
                  m.TILE && (this.groupZeroDegreeMembers(), this.clearCompounds(), this.clearZeroDegreeMembers())
                }),
                (O.prototype.tilingPostLayout = function () {
                  m.TILE && (this.repopulateZeroDegreeMembers(), this.repopulateCompounds())
                }),
                (O.prototype.reduceTrees = function () {
                  for (var k = [], L = !0, A; L; ) {
                    var I = this.graphManager.getAllNodes(),
                      M = []
                    L = !1
                    for (var P = 0; P < I.length; P++)
                      if (((A = I[P]), A.getEdges().length == 1 && !A.getEdges()[0].isInterGraph && A.getChild() == null)) {
                        if (m.PURE_INCREMENTAL) {
                          var B = A.getEdges()[0].getOtherEnd(A),
                            F = new T(A.getCenterX() - B.getCenterX(), A.getCenterY() - B.getCenterY())
                          M.push([A, A.getEdges()[0], A.getOwner(), F])
                        } else M.push([A, A.getEdges()[0], A.getOwner()])
                        L = !0
                      }
                    if (L == !0) {
                      for (var z = [], $ = 0; $ < M.length; $++) M[$][0].getEdges().length == 1 && (z.push(M[$]), M[$][0].getOwner().remove(M[$][0]))
                      k.push(z), this.graphManager.resetAllNodes(), this.graphManager.resetAllEdges()
                    }
                  }
                  this.prunedNodesAll = k
                }),
                (O.prototype.growTree = function (k) {
                  for (var L = k.length, A = k[L - 1], I, M = 0; M < A.length; M++)
                    (I = A[M]), this.findPlaceforPrunedNode(I), I[2].add(I[0]), I[2].add(I[1], I[1].source, I[1].target)
                  k.splice(k.length - 1, 1), this.graphManager.resetAllNodes(), this.graphManager.resetAllEdges()
                }),
                (O.prototype.findPlaceforPrunedNode = function (k) {
                  var L,
                    A,
                    I = k[0]
                  if ((I == k[1].source ? (A = k[1].target) : (A = k[1].source), m.PURE_INCREMENTAL))
                    I.setCenter(A.getCenterX() + k[3].getWidth(), A.getCenterY() + k[3].getHeight())
                  else {
                    var M = A.startX,
                      P = A.finishX,
                      B = A.startY,
                      F = A.finishY,
                      z = 0,
                      $ = 0,
                      U = 0,
                      K = 0,
                      ee = [z, U, $, K]
                    if (B > 0) for (var Y = M; Y <= P; Y++) ee[0] += this.grid[Y][B - 1].length + this.grid[Y][B].length - 1
                    if (P < this.grid.length - 1) for (var Y = B; Y <= F; Y++) ee[1] += this.grid[P + 1][Y].length + this.grid[P][Y].length - 1
                    if (F < this.grid[0].length - 1) for (var Y = M; Y <= P; Y++) ee[2] += this.grid[Y][F + 1].length + this.grid[Y][F].length - 1
                    if (M > 0) for (var Y = B; Y <= F; Y++) ee[3] += this.grid[M - 1][Y].length + this.grid[M][Y].length - 1
                    for (var ce = w.MAX_VALUE, Z, ue, Q = 0; Q < ee.length; Q++) ee[Q] < ce ? ((ce = ee[Q]), (Z = 1), (ue = Q)) : ee[Q] == ce && Z++
                    if (Z == 3 && ce == 0)
                      ee[0] == 0 && ee[1] == 0 && ee[2] == 0
                        ? (L = 1)
                        : ee[0] == 0 && ee[1] == 0 && ee[3] == 0
                          ? (L = 0)
                          : ee[0] == 0 && ee[2] == 0 && ee[3] == 0
                            ? (L = 3)
                            : ee[1] == 0 && ee[2] == 0 && ee[3] == 0 && (L = 2)
                    else if (Z == 2 && ce == 0) {
                      var j = Math.floor(Math.random() * 2)
                      ee[0] == 0 && ee[1] == 0
                        ? j == 0
                          ? (L = 0)
                          : (L = 1)
                        : ee[0] == 0 && ee[2] == 0
                          ? j == 0
                            ? (L = 0)
                            : (L = 2)
                          : ee[0] == 0 && ee[3] == 0
                            ? j == 0
                              ? (L = 0)
                              : (L = 3)
                            : ee[1] == 0 && ee[2] == 0
                              ? j == 0
                                ? (L = 1)
                                : (L = 2)
                              : ee[1] == 0 && ee[3] == 0
                                ? j == 0
                                  ? (L = 1)
                                  : (L = 3)
                                : j == 0
                                  ? (L = 2)
                                  : (L = 3)
                    } else if (Z == 4 && ce == 0) {
                      var j = Math.floor(Math.random() * 4)
                      L = j
                    } else L = ue
                    L == 0
                      ? I.setCenter(A.getCenterX(), A.getCenterY() - A.getHeight() / 2 - y.DEFAULT_EDGE_LENGTH - I.getHeight() / 2)
                      : L == 1
                        ? I.setCenter(A.getCenterX() + A.getWidth() / 2 + y.DEFAULT_EDGE_LENGTH + I.getWidth() / 2, A.getCenterY())
                        : L == 2
                          ? I.setCenter(A.getCenterX(), A.getCenterY() + A.getHeight() / 2 + y.DEFAULT_EDGE_LENGTH + I.getHeight() / 2)
                          : I.setCenter(A.getCenterX() - A.getWidth() / 2 - y.DEFAULT_EDGE_LENGTH - I.getWidth() / 2, A.getCenterY())
                  }
                }),
                (a.exports = O)
            },
            991: (a, s, l) => {
              var u = l(551).FDLayoutNode,
                h = l(551).IMath
              function f(p, m, g, y) {
                u.call(this, p, m, g, y)
              }
              o(f, 'CoSENode'), (f.prototype = Object.create(u.prototype))
              for (var d in u) f[d] = u[d]
              ;(f.prototype.calculateDisplacement = function () {
                var p = this.graphManager.getLayout()
                this.getChild() != null && this.fixedNodeWeight
                  ? ((this.displacementX += (p.coolingFactor * (this.springForceX + this.repulsionForceX + this.gravitationForceX)) / this.fixedNodeWeight),
                    (this.displacementY += (p.coolingFactor * (this.springForceY + this.repulsionForceY + this.gravitationForceY)) / this.fixedNodeWeight))
                  : ((this.displacementX += (p.coolingFactor * (this.springForceX + this.repulsionForceX + this.gravitationForceX)) / this.noOfChildren),
                    (this.displacementY += (p.coolingFactor * (this.springForceY + this.repulsionForceY + this.gravitationForceY)) / this.noOfChildren)),
                  Math.abs(this.displacementX) > p.coolingFactor * p.maxNodeDisplacement &&
                    (this.displacementX = p.coolingFactor * p.maxNodeDisplacement * h.sign(this.displacementX)),
                  Math.abs(this.displacementY) > p.coolingFactor * p.maxNodeDisplacement &&
                    (this.displacementY = p.coolingFactor * p.maxNodeDisplacement * h.sign(this.displacementY)),
                  this.child && this.child.getNodes().length > 0 && this.propogateDisplacementToChildren(this.displacementX, this.displacementY)
              }),
                (f.prototype.propogateDisplacementToChildren = function (p, m) {
                  for (var g = this.getChild().getNodes(), y, v = 0; v < g.length; v++)
                    (y = g[v]), y.getChild() == null ? ((y.displacementX += p), (y.displacementY += m)) : y.propogateDisplacementToChildren(p, m)
                }),
                (f.prototype.move = function () {
                  var p = this.graphManager.getLayout()
                  ;(this.child == null || this.child.getNodes().length == 0) &&
                    (this.moveBy(this.displacementX, this.displacementY), (p.totalDisplacement += Math.abs(this.displacementX) + Math.abs(this.displacementY))),
                    (this.springForceX = 0),
                    (this.springForceY = 0),
                    (this.repulsionForceX = 0),
                    (this.repulsionForceY = 0),
                    (this.gravitationForceX = 0),
                    (this.gravitationForceY = 0),
                    (this.displacementX = 0),
                    (this.displacementY = 0)
                }),
                (f.prototype.setPred1 = function (p) {
                  this.pred1 = p
                }),
                (f.prototype.getPred1 = function () {
                  return pred1
                }),
                (f.prototype.getPred2 = function () {
                  return pred2
                }),
                (f.prototype.setNext = function (p) {
                  this.next = p
                }),
                (f.prototype.getNext = function () {
                  return next
                }),
                (f.prototype.setProcessed = function (p) {
                  this.processed = p
                }),
                (f.prototype.isProcessed = function () {
                  return processed
                }),
                (a.exports = f)
            },
            902: (a, s, l) => {
              function u(g) {
                if (Array.isArray(g)) {
                  for (var y = 0, v = Array(g.length); y < g.length; y++) v[y] = g[y]
                  return v
                } else return Array.from(g)
              }
              o(u, '_toConsumableArray')
              var h = l(806),
                f = l(551).LinkedList,
                d = l(551).Matrix,
                p = l(551).SVD
              function m() {}
              o(m, 'ConstraintHandler'),
                (m.handleConstraints = function (g) {
                  var y = {}
                  ;(y.fixedNodeConstraint = g.constraints.fixedNodeConstraint),
                    (y.alignmentConstraint = g.constraints.alignmentConstraint),
                    (y.relativePlacementConstraint = g.constraints.relativePlacementConstraint)
                  for (var v = new Map(), x = new Map(), b = [], T = [], S = g.getAllNodes(), w = 0, E = 0; E < S.length; E++) {
                    var _ = S[E]
                    _.getChild() == null && (x.set(_.id, w++), b.push(_.getCenterX()), T.push(_.getCenterY()), v.set(_.id, _))
                  }
                  y.relativePlacementConstraint &&
                    y.relativePlacementConstraint.forEach(function (oe) {
                      !oe.gap &&
                        oe.gap != 0 &&
                        (oe.left
                          ? (oe.gap = h.DEFAULT_EDGE_LENGTH + v.get(oe.left).getWidth() / 2 + v.get(oe.right).getWidth() / 2)
                          : (oe.gap = h.DEFAULT_EDGE_LENGTH + v.get(oe.top).getHeight() / 2 + v.get(oe.bottom).getHeight() / 2))
                    })
                  var C = o(function (V, Te) {
                      return { x: V.x - Te.x, y: V.y - Te.y }
                    }, 'calculatePositionDiff'),
                    D = o(function (V) {
                      var Te = 0,
                        W = 0
                      return (
                        V.forEach(function (pe) {
                          ;(Te += b[x.get(pe)]), (W += T[x.get(pe)])
                        }),
                        { x: Te / V.size, y: W / V.size }
                      )
                    }, 'calculateAvgPosition'),
                    O = o(function (V, Te, W, pe, ve) {
                      function Pe(st, Ue) {
                        var ct = new Set(st),
                          We = !0,
                          ot = !1,
                          Yt = void 0
                        try {
                          for (var Tt = Ue[Symbol.iterator](), Mt; !(We = (Mt = Tt.next()).done); We = !0) {
                            var bt = Mt.value
                            ct.add(bt)
                          }
                        } catch (ut) {
                          ;(ot = !0), (Yt = ut)
                        } finally {
                          try {
                            !We && Tt.return && Tt.return()
                          } finally {
                            if (ot) throw Yt
                          }
                        }
                        return ct
                      }
                      o(Pe, 'setUnion')
                      var _e = new Map()
                      V.forEach(function (st, Ue) {
                        _e.set(Ue, 0)
                      }),
                        V.forEach(function (st, Ue) {
                          st.forEach(function (ct) {
                            _e.set(ct.id, _e.get(ct.id) + 1)
                          })
                        })
                      var be = new Map(),
                        Ve = new Map(),
                        De = new f()
                      _e.forEach(function (st, Ue) {
                        st == 0
                          ? (De.push(Ue), W || (Te == 'horizontal' ? be.set(Ue, x.has(Ue) ? b[x.get(Ue)] : pe.get(Ue)) : be.set(Ue, x.has(Ue) ? T[x.get(Ue)] : pe.get(Ue))))
                          : be.set(Ue, Number.NEGATIVE_INFINITY),
                          W && Ve.set(Ue, new Set([Ue]))
                      }),
                        W &&
                          ve.forEach(function (st) {
                            var Ue = []
                            if (
                              (st.forEach(function (ot) {
                                W.has(ot) && Ue.push(ot)
                              }),
                              Ue.length > 0)
                            ) {
                              var ct = 0
                              Ue.forEach(function (ot) {
                                Te == 'horizontal'
                                  ? (be.set(ot, x.has(ot) ? b[x.get(ot)] : pe.get(ot)), (ct += be.get(ot)))
                                  : (be.set(ot, x.has(ot) ? T[x.get(ot)] : pe.get(ot)), (ct += be.get(ot)))
                              }),
                                (ct = ct / Ue.length),
                                st.forEach(function (ot) {
                                  W.has(ot) || be.set(ot, ct)
                                })
                            } else {
                              var We = 0
                              st.forEach(function (ot) {
                                Te == 'horizontal' ? (We += x.has(ot) ? b[x.get(ot)] : pe.get(ot)) : (We += x.has(ot) ? T[x.get(ot)] : pe.get(ot))
                              }),
                                (We = We / st.length),
                                st.forEach(function (ot) {
                                  be.set(ot, We)
                                })
                            }
                          })
                      for (
                        var qe = o(function () {
                          var Ue = De.shift(),
                            ct = V.get(Ue)
                          ct.forEach(function (We) {
                            if (be.get(We.id) < be.get(Ue) + We.gap)
                              if (W && W.has(We.id)) {
                                var ot = void 0
                                if (
                                  (Te == 'horizontal' ? (ot = x.has(We.id) ? b[x.get(We.id)] : pe.get(We.id)) : (ot = x.has(We.id) ? T[x.get(We.id)] : pe.get(We.id)),
                                  be.set(We.id, ot),
                                  ot < be.get(Ue) + We.gap)
                                ) {
                                  var Yt = be.get(Ue) + We.gap - ot
                                  Ve.get(Ue).forEach(function (Tt) {
                                    be.set(Tt, be.get(Tt) - Yt)
                                  })
                                }
                              } else be.set(We.id, be.get(Ue) + We.gap)
                            _e.set(We.id, _e.get(We.id) - 1), _e.get(We.id) == 0 && De.push(We.id), W && Ve.set(We.id, Pe(Ve.get(Ue), Ve.get(We.id)))
                          })
                        }, '_loop');
                        De.length != 0;

                      )
                        qe()
                      if (W) {
                        var at = new Set()
                        V.forEach(function (st, Ue) {
                          st.length == 0 && at.add(Ue)
                        })
                        var Rt = []
                        Ve.forEach(function (st, Ue) {
                          if (at.has(Ue)) {
                            var ct = !1,
                              We = !0,
                              ot = !1,
                              Yt = void 0
                            try {
                              for (var Tt = st[Symbol.iterator](), Mt; !(We = (Mt = Tt.next()).done); We = !0) {
                                var bt = Mt.value
                                W.has(bt) && (ct = !0)
                              }
                            } catch (ft) {
                              ;(ot = !0), (Yt = ft)
                            } finally {
                              try {
                                !We && Tt.return && Tt.return()
                              } finally {
                                if (ot) throw Yt
                              }
                            }
                            if (!ct) {
                              var ut = !1,
                                St = void 0
                              Rt.forEach(function (ft, vt) {
                                ft.has([].concat(u(st))[0]) && ((ut = !0), (St = vt))
                              }),
                                ut
                                  ? st.forEach(function (ft) {
                                      Rt[St].add(ft)
                                    })
                                  : Rt.push(new Set(st))
                            }
                          }
                        }),
                          Rt.forEach(function (st, Ue) {
                            var ct = Number.POSITIVE_INFINITY,
                              We = Number.POSITIVE_INFINITY,
                              ot = Number.NEGATIVE_INFINITY,
                              Yt = Number.NEGATIVE_INFINITY,
                              Tt = !0,
                              Mt = !1,
                              bt = void 0
                            try {
                              for (var ut = st[Symbol.iterator](), St; !(Tt = (St = ut.next()).done); Tt = !0) {
                                var ft = St.value,
                                  vt = void 0
                                Te == 'horizontal' ? (vt = x.has(ft) ? b[x.get(ft)] : pe.get(ft)) : (vt = x.has(ft) ? T[x.get(ft)] : pe.get(ft))
                                var nt = be.get(ft)
                                vt < ct && (ct = vt), vt > ot && (ot = vt), nt < We && (We = nt), nt > Yt && (Yt = nt)
                              }
                            } catch (Dt) {
                              ;(Mt = !0), (bt = Dt)
                            } finally {
                              try {
                                !Tt && ut.return && ut.return()
                              } finally {
                                if (Mt) throw bt
                              }
                            }
                            var pn = (ct + ot) / 2 - (We + Yt) / 2,
                              kt = !0,
                              On = !1,
                              tn = void 0
                            try {
                              for (var Mr = st[Symbol.iterator](), Ir; !(kt = (Ir = Mr.next()).done); kt = !0) {
                                var Pn = Ir.value
                                be.set(Pn, be.get(Pn) + pn)
                              }
                            } catch (Dt) {
                              ;(On = !0), (tn = Dt)
                            } finally {
                              try {
                                !kt && Mr.return && Mr.return()
                              } finally {
                                if (On) throw tn
                              }
                            }
                          })
                      }
                      return be
                    }, 'findAppropriatePositionForRelativePlacement'),
                    R = o(function (V) {
                      var Te = 0,
                        W = 0,
                        pe = 0,
                        ve = 0
                      if (
                        (V.forEach(function (Ve) {
                          Ve.left ? (b[x.get(Ve.left)] - b[x.get(Ve.right)] >= 0 ? Te++ : W++) : T[x.get(Ve.top)] - T[x.get(Ve.bottom)] >= 0 ? pe++ : ve++
                        }),
                        Te > W && pe > ve)
                      )
                        for (var Pe = 0; Pe < x.size; Pe++) (b[Pe] = -1 * b[Pe]), (T[Pe] = -1 * T[Pe])
                      else if (Te > W) for (var _e = 0; _e < x.size; _e++) b[_e] = -1 * b[_e]
                      else if (pe > ve) for (var be = 0; be < x.size; be++) T[be] = -1 * T[be]
                    }, 'applyReflectionForRelativePlacement'),
                    k = o(function (V) {
                      var Te = [],
                        W = new f(),
                        pe = new Set(),
                        ve = 0
                      return (
                        V.forEach(function (Pe, _e) {
                          if (!pe.has(_e)) {
                            Te[ve] = []
                            var be = _e
                            for (W.push(be), pe.add(be), Te[ve].push(be); W.length != 0; ) {
                              be = W.shift()
                              var Ve = V.get(be)
                              Ve.forEach(function (De) {
                                pe.has(De.id) || (W.push(De.id), pe.add(De.id), Te[ve].push(De.id))
                              })
                            }
                            ve++
                          }
                        }),
                        Te
                      )
                    }, 'findComponents'),
                    L = o(function (V) {
                      var Te = new Map()
                      return (
                        V.forEach(function (W, pe) {
                          Te.set(pe, [])
                        }),
                        V.forEach(function (W, pe) {
                          W.forEach(function (ve) {
                            Te.get(pe).push(ve), Te.get(ve.id).push({ id: pe, gap: ve.gap, direction: ve.direction })
                          })
                        }),
                        Te
                      )
                    }, 'dagToUndirected'),
                    A = o(function (V) {
                      var Te = new Map()
                      return (
                        V.forEach(function (W, pe) {
                          Te.set(pe, [])
                        }),
                        V.forEach(function (W, pe) {
                          W.forEach(function (ve) {
                            Te.get(ve.id).push({ id: pe, gap: ve.gap, direction: ve.direction })
                          })
                        }),
                        Te
                      )
                    }, 'dagToReversed'),
                    I = [],
                    M = [],
                    P = !1,
                    B = !1,
                    F = new Set(),
                    z = new Map(),
                    $ = new Map(),
                    U = []
                  if (
                    (y.fixedNodeConstraint &&
                      y.fixedNodeConstraint.forEach(function (oe) {
                        F.add(oe.nodeId)
                      }),
                    y.relativePlacementConstraint &&
                      (y.relativePlacementConstraint.forEach(function (oe) {
                        oe.left
                          ? (z.has(oe.left)
                              ? z.get(oe.left).push({ id: oe.right, gap: oe.gap, direction: 'horizontal' })
                              : z.set(oe.left, [{ id: oe.right, gap: oe.gap, direction: 'horizontal' }]),
                            z.has(oe.right) || z.set(oe.right, []))
                          : (z.has(oe.top)
                              ? z.get(oe.top).push({ id: oe.bottom, gap: oe.gap, direction: 'vertical' })
                              : z.set(oe.top, [{ id: oe.bottom, gap: oe.gap, direction: 'vertical' }]),
                            z.has(oe.bottom) || z.set(oe.bottom, []))
                      }),
                      ($ = L(z)),
                      (U = k($))),
                    h.TRANSFORM_ON_CONSTRAINT_HANDLING)
                  ) {
                    if (y.fixedNodeConstraint && y.fixedNodeConstraint.length > 1)
                      y.fixedNodeConstraint.forEach(function (oe, V) {
                        ;(I[V] = [oe.position.x, oe.position.y]), (M[V] = [b[x.get(oe.nodeId)], T[x.get(oe.nodeId)]])
                      }),
                        (P = !0)
                    else if (y.alignmentConstraint)
                      (function () {
                        var oe = 0
                        if (y.alignmentConstraint.vertical) {
                          for (
                            var V = y.alignmentConstraint.vertical,
                              Te = o(function (be) {
                                var Ve = new Set()
                                V[be].forEach(function (at) {
                                  Ve.add(at)
                                })
                                var De = new Set(
                                    [].concat(u(Ve)).filter(function (at) {
                                      return F.has(at)
                                    })
                                  ),
                                  qe = void 0
                                De.size > 0 ? (qe = b[x.get(De.values().next().value)]) : (qe = D(Ve).x),
                                  V[be].forEach(function (at) {
                                    ;(I[oe] = [qe, T[x.get(at)]]), (M[oe] = [b[x.get(at)], T[x.get(at)]]), oe++
                                  })
                              }, '_loop2'),
                              W = 0;
                            W < V.length;
                            W++
                          )
                            Te(W)
                          P = !0
                        }
                        if (y.alignmentConstraint.horizontal) {
                          for (
                            var pe = y.alignmentConstraint.horizontal,
                              ve = o(function (be) {
                                var Ve = new Set()
                                pe[be].forEach(function (at) {
                                  Ve.add(at)
                                })
                                var De = new Set(
                                    [].concat(u(Ve)).filter(function (at) {
                                      return F.has(at)
                                    })
                                  ),
                                  qe = void 0
                                De.size > 0 ? (qe = b[x.get(De.values().next().value)]) : (qe = D(Ve).y),
                                  pe[be].forEach(function (at) {
                                    ;(I[oe] = [b[x.get(at)], qe]), (M[oe] = [b[x.get(at)], T[x.get(at)]]), oe++
                                  })
                              }, '_loop3'),
                              Pe = 0;
                            Pe < pe.length;
                            Pe++
                          )
                            ve(Pe)
                          P = !0
                        }
                        y.relativePlacementConstraint && (B = !0)
                      })()
                    else if (y.relativePlacementConstraint) {
                      for (var K = 0, ee = 0, Y = 0; Y < U.length; Y++) U[Y].length > K && ((K = U[Y].length), (ee = Y))
                      if (K < $.size / 2) R(y.relativePlacementConstraint), (P = !1), (B = !1)
                      else {
                        var ce = new Map(),
                          Z = new Map(),
                          ue = []
                        U[ee].forEach(function (oe) {
                          z.get(oe).forEach(function (V) {
                            V.direction == 'horizontal'
                              ? (ce.has(oe) ? ce.get(oe).push(V) : ce.set(oe, [V]), ce.has(V.id) || ce.set(V.id, []), ue.push({ left: oe, right: V.id }))
                              : (Z.has(oe) ? Z.get(oe).push(V) : Z.set(oe, [V]), Z.has(V.id) || Z.set(V.id, []), ue.push({ top: oe, bottom: V.id }))
                          })
                        }),
                          R(ue),
                          (B = !1)
                        var Q = O(ce, 'horizontal'),
                          j = O(Z, 'vertical')
                        U[ee].forEach(function (oe, V) {
                          ;(M[V] = [b[x.get(oe)], T[x.get(oe)]]),
                            (I[V] = []),
                            Q.has(oe) ? (I[V][0] = Q.get(oe)) : (I[V][0] = b[x.get(oe)]),
                            j.has(oe) ? (I[V][1] = j.get(oe)) : (I[V][1] = T[x.get(oe)])
                        }),
                          (P = !0)
                      }
                    }
                    if (P) {
                      for (var ne = void 0, te = d.transpose(I), he = d.transpose(M), le = 0; le < te.length; le++) (te[le] = d.multGamma(te[le])), (he[le] = d.multGamma(he[le]))
                      var J = d.multMat(te, d.transpose(he)),
                        Se = p.svd(J)
                      ne = d.multMat(Se.V, d.transpose(Se.U))
                      for (var se = 0; se < x.size; se++) {
                        var ae = [b[se], T[se]],
                          Oe = [ne[0][0], ne[1][0]],
                          ye = [ne[0][1], ne[1][1]]
                        ;(b[se] = d.dotProduct(ae, Oe)), (T[se] = d.dotProduct(ae, ye))
                      }
                      B && R(y.relativePlacementConstraint)
                    }
                  }
                  if (h.ENFORCE_CONSTRAINTS) {
                    if (y.fixedNodeConstraint && y.fixedNodeConstraint.length > 0) {
                      var Be = { x: 0, y: 0 }
                      y.fixedNodeConstraint.forEach(function (oe, V) {
                        var Te = { x: b[x.get(oe.nodeId)], y: T[x.get(oe.nodeId)] },
                          W = oe.position,
                          pe = C(W, Te)
                        ;(Be.x += pe.x), (Be.y += pe.y)
                      }),
                        (Be.x /= y.fixedNodeConstraint.length),
                        (Be.y /= y.fixedNodeConstraint.length),
                        b.forEach(function (oe, V) {
                          b[V] += Be.x
                        }),
                        T.forEach(function (oe, V) {
                          T[V] += Be.y
                        }),
                        y.fixedNodeConstraint.forEach(function (oe) {
                          ;(b[x.get(oe.nodeId)] = oe.position.x), (T[x.get(oe.nodeId)] = oe.position.y)
                        })
                    }
                    if (y.alignmentConstraint) {
                      if (y.alignmentConstraint.vertical)
                        for (
                          var He = y.alignmentConstraint.vertical,
                            ze = o(function (V) {
                              var Te = new Set()
                              He[V].forEach(function (ve) {
                                Te.add(ve)
                              })
                              var W = new Set(
                                  [].concat(u(Te)).filter(function (ve) {
                                    return F.has(ve)
                                  })
                                ),
                                pe = void 0
                              W.size > 0 ? (pe = b[x.get(W.values().next().value)]) : (pe = D(Te).x),
                                Te.forEach(function (ve) {
                                  F.has(ve) || (b[x.get(ve)] = pe)
                                })
                            }, '_loop4'),
                            Le = 0;
                          Le < He.length;
                          Le++
                        )
                          ze(Le)
                      if (y.alignmentConstraint.horizontal)
                        for (
                          var Ie = y.alignmentConstraint.horizontal,
                            xe = o(function (V) {
                              var Te = new Set()
                              Ie[V].forEach(function (ve) {
                                Te.add(ve)
                              })
                              var W = new Set(
                                  [].concat(u(Te)).filter(function (ve) {
                                    return F.has(ve)
                                  })
                                ),
                                pe = void 0
                              W.size > 0 ? (pe = T[x.get(W.values().next().value)]) : (pe = D(Te).y),
                                Te.forEach(function (ve) {
                                  F.has(ve) || (T[x.get(ve)] = pe)
                                })
                            }, '_loop5'),
                            q = 0;
                          q < Ie.length;
                          q++
                        )
                          xe(q)
                    }
                    y.relativePlacementConstraint &&
                      (function () {
                        var oe = new Map(),
                          V = new Map(),
                          Te = new Map(),
                          W = new Map(),
                          pe = new Map(),
                          ve = new Map(),
                          Pe = new Set(),
                          _e = new Set()
                        if (
                          (F.forEach(function (Hr) {
                            Pe.add(Hr), _e.add(Hr)
                          }),
                          y.alignmentConstraint)
                        ) {
                          if (y.alignmentConstraint.vertical)
                            for (
                              var be = y.alignmentConstraint.vertical,
                                Ve = o(function (et) {
                                  Te.set('dummy' + et, []),
                                    be[et].forEach(function (gt) {
                                      oe.set(gt, 'dummy' + et), Te.get('dummy' + et).push(gt), F.has(gt) && Pe.add('dummy' + et)
                                    }),
                                    pe.set('dummy' + et, b[x.get(be[et][0])])
                                }, '_loop6'),
                                De = 0;
                              De < be.length;
                              De++
                            )
                              Ve(De)
                          if (y.alignmentConstraint.horizontal)
                            for (
                              var qe = y.alignmentConstraint.horizontal,
                                at = o(function (et) {
                                  W.set('dummy' + et, []),
                                    qe[et].forEach(function (gt) {
                                      V.set(gt, 'dummy' + et), W.get('dummy' + et).push(gt), F.has(gt) && _e.add('dummy' + et)
                                    }),
                                    ve.set('dummy' + et, T[x.get(qe[et][0])])
                                }, '_loop7'),
                                Rt = 0;
                              Rt < qe.length;
                              Rt++
                            )
                              at(Rt)
                        }
                        var st = new Map(),
                          Ue = new Map(),
                          ct = o(function (et) {
                            z.get(et).forEach(function (gt) {
                              var Kt = void 0,
                                lt = void 0
                              gt.direction == 'horizontal'
                                ? ((Kt = oe.get(et) ? oe.get(et) : et),
                                  oe.get(gt.id) ? (lt = { id: oe.get(gt.id), gap: gt.gap, direction: gt.direction }) : (lt = gt),
                                  st.has(Kt) ? st.get(Kt).push(lt) : st.set(Kt, [lt]),
                                  st.has(lt.id) || st.set(lt.id, []))
                                : ((Kt = V.get(et) ? V.get(et) : et),
                                  V.get(gt.id) ? (lt = { id: V.get(gt.id), gap: gt.gap, direction: gt.direction }) : (lt = gt),
                                  Ue.has(Kt) ? Ue.get(Kt).push(lt) : Ue.set(Kt, [lt]),
                                  Ue.has(lt.id) || Ue.set(lt.id, []))
                            })
                          }, '_loop8'),
                          We = !0,
                          ot = !1,
                          Yt = void 0
                        try {
                          for (var Tt = z.keys()[Symbol.iterator](), Mt; !(We = (Mt = Tt.next()).done); We = !0) {
                            var bt = Mt.value
                            ct(bt)
                          }
                        } catch (Hr) {
                          ;(ot = !0), (Yt = Hr)
                        } finally {
                          try {
                            !We && Tt.return && Tt.return()
                          } finally {
                            if (ot) throw Yt
                          }
                        }
                        var ut = L(st),
                          St = L(Ue),
                          ft = k(ut),
                          vt = k(St),
                          nt = A(st),
                          pn = A(Ue),
                          kt = [],
                          On = []
                        ft.forEach(function (Hr, et) {
                          ;(kt[et] = []),
                            Hr.forEach(function (gt) {
                              nt.get(gt).length == 0 && kt[et].push(gt)
                            })
                        }),
                          vt.forEach(function (Hr, et) {
                            ;(On[et] = []),
                              Hr.forEach(function (gt) {
                                pn.get(gt).length == 0 && On[et].push(gt)
                              })
                          })
                        var tn = O(st, 'horizontal', Pe, pe, kt),
                          Mr = O(Ue, 'vertical', _e, ve, On),
                          Ir = o(function (et) {
                            Te.get(et)
                              ? Te.get(et).forEach(function (gt) {
                                  b[x.get(gt)] = tn.get(et)
                                })
                              : (b[x.get(et)] = tn.get(et))
                          }, '_loop9'),
                          Pn = !0,
                          Dt = !1,
                          Ce = void 0
                        try {
                          for (var tt = tn.keys()[Symbol.iterator](), Ct; !(Pn = (Ct = tt.next()).done); Pn = !0) {
                            var gr = Ct.value
                            Ir(gr)
                          }
                        } catch (Hr) {
                          ;(Dt = !0), (Ce = Hr)
                        } finally {
                          try {
                            !Pn && tt.return && tt.return()
                          } finally {
                            if (Dt) throw Ce
                          }
                        }
                        var rn = o(function (et) {
                            W.get(et)
                              ? W.get(et).forEach(function (gt) {
                                  T[x.get(gt)] = Mr.get(et)
                                })
                              : (T[x.get(et)] = Mr.get(et))
                          }, '_loop10'),
                          yn = !0,
                          Zr = !1,
                          Oi = void 0
                        try {
                          for (var ei = Mr.keys()[Symbol.iterator](), Sn; !(yn = (Sn = ei.next()).done); yn = !0) {
                            var gr = Sn.value
                            rn(gr)
                          }
                        } catch (Hr) {
                          ;(Zr = !0), (Oi = Hr)
                        } finally {
                          try {
                            !yn && ei.return && ei.return()
                          } finally {
                            if (Zr) throw Oi
                          }
                        }
                      })()
                  }
                  for (var de = 0; de < S.length; de++) {
                    var ie = S[de]
                    ie.getChild() == null && ie.setCenter(b[x.get(ie.id)], T[x.get(ie.id)])
                  }
                }),
                (a.exports = m)
            },
            551: a => {
              a.exports = t
            }
          },
          r = {}
        function n(a) {
          var s = r[a]
          if (s !== void 0) return s.exports
          var l = (r[a] = { exports: {} })
          return e[a](l, l.exports, n), l.exports
        }
        o(n, '__webpack_require__')
        var i = n(45)
        return i
      })()
    })
  })
  var Y2e = Pi((O4, e$) => {
    'use strict'
    o(function (e, r) {
      typeof O4 == 'object' && typeof e$ == 'object'
        ? (e$.exports = r(JF()))
        : typeof define == 'function' && define.amd
          ? define(['cose-base'], r)
          : typeof O4 == 'object'
            ? (O4.cytoscapeFcose = r(JF()))
            : (e.cytoscapeFcose = r(e.coseBase))
    }, 'webpackUniversalModuleDefinition')(O4, function (t) {
      return (() => {
        'use strict'
        var e = {
            658: a => {
              a.exports =
                Object.assign != null
                  ? Object.assign.bind(Object)
                  : function (s) {
                      for (var l = arguments.length, u = Array(l > 1 ? l - 1 : 0), h = 1; h < l; h++) u[h - 1] = arguments[h]
                      return (
                        u.forEach(function (f) {
                          Object.keys(f).forEach(function (d) {
                            return (s[d] = f[d])
                          })
                        }),
                        s
                      )
                    }
            },
            548: (a, s, l) => {
              var u = (function () {
                  function d(p, m) {
                    var g = [],
                      y = !0,
                      v = !1,
                      x = void 0
                    try {
                      for (var b = p[Symbol.iterator](), T; !(y = (T = b.next()).done) && (g.push(T.value), !(m && g.length === m)); y = !0);
                    } catch (S) {
                      ;(v = !0), (x = S)
                    } finally {
                      try {
                        !y && b.return && b.return()
                      } finally {
                        if (v) throw x
                      }
                    }
                    return g
                  }
                  return (
                    o(d, 'sliceIterator'),
                    function (p, m) {
                      if (Array.isArray(p)) return p
                      if (Symbol.iterator in Object(p)) return d(p, m)
                      throw new TypeError('Invalid attempt to destructure non-iterable instance')
                    }
                  )
                })(),
                h = l(140).layoutBase.LinkedList,
                f = {}
              ;(f.getTopMostNodes = function (d) {
                for (var p = {}, m = 0; m < d.length; m++) p[d[m].id()] = !0
                var g = d.filter(function (y, v) {
                  typeof y == 'number' && (y = v)
                  for (var x = y.parent()[0]; x != null; ) {
                    if (p[x.id()]) return !1
                    x = x.parent()[0]
                  }
                  return !0
                })
                return g
              }),
                (f.connectComponents = function (d, p, m, g) {
                  var y = new h(),
                    v = new Set(),
                    x = [],
                    b = void 0,
                    T = void 0,
                    S = void 0,
                    w = !1,
                    E = 1,
                    _ = [],
                    C = [],
                    D = o(function () {
                      var R = d.collection()
                      C.push(R)
                      var k = m[0],
                        L = d.collection()
                      L.merge(k).merge(k.descendants().intersection(p)),
                        x.push(k),
                        L.forEach(function (M) {
                          y.push(M), v.add(M), R.merge(M)
                        })
                      for (
                        var A = o(function () {
                          k = y.shift()
                          var P = d.collection()
                          k.neighborhood()
                            .nodes()
                            .forEach(function ($) {
                              p.intersection(k.edgesWith($)).length > 0 && P.merge($)
                            })
                          for (var B = 0; B < P.length; B++) {
                            var F = P[B]
                            if (((b = m.intersection(F.union(F.ancestors()))), b != null && !v.has(b[0]))) {
                              var z = b.union(b.descendants())
                              z.forEach(function ($) {
                                y.push($), v.add($), R.merge($), m.has($) && x.push($)
                              })
                            }
                          }
                        }, '_loop2');
                        y.length != 0;

                      )
                        A()
                      if (
                        (R.forEach(function (M) {
                          p.intersection(M.connectedEdges()).forEach(function (P) {
                            R.has(P.source()) && R.has(P.target()) && R.merge(P)
                          })
                        }),
                        x.length == m.length && (w = !0),
                        !w || (w && E > 1))
                      ) {
                        ;(T = x[0]),
                          (S = T.connectedEdges().length),
                          x.forEach(function (M) {
                            M.connectedEdges().length < S && ((S = M.connectedEdges().length), (T = M))
                          }),
                          _.push(T.id())
                        var I = d.collection()
                        I.merge(x[0]),
                          x.forEach(function (M) {
                            I.merge(M)
                          }),
                          (x = []),
                          (m = m.difference(I)),
                          E++
                      }
                    }, '_loop')
                  do D()
                  while (!w)
                  return g && _.length > 0 && g.set('dummy' + (g.size + 1), _), C
                }),
                (f.relocateComponent = function (d, p, m) {
                  if (!m.fixedNodeConstraint) {
                    var g = Number.POSITIVE_INFINITY,
                      y = Number.NEGATIVE_INFINITY,
                      v = Number.POSITIVE_INFINITY,
                      x = Number.NEGATIVE_INFINITY
                    if (m.quality == 'draft') {
                      var b = !0,
                        T = !1,
                        S = void 0
                      try {
                        for (var w = p.nodeIndexes[Symbol.iterator](), E; !(b = (E = w.next()).done); b = !0) {
                          var _ = E.value,
                            C = u(_, 2),
                            D = C[0],
                            O = C[1],
                            R = m.cy.getElementById(D)
                          if (R) {
                            var k = R.boundingBox(),
                              L = p.xCoords[O] - k.w / 2,
                              A = p.xCoords[O] + k.w / 2,
                              I = p.yCoords[O] - k.h / 2,
                              M = p.yCoords[O] + k.h / 2
                            L < g && (g = L), A > y && (y = A), I < v && (v = I), M > x && (x = M)
                          }
                        }
                      } catch ($) {
                        ;(T = !0), (S = $)
                      } finally {
                        try {
                          !b && w.return && w.return()
                        } finally {
                          if (T) throw S
                        }
                      }
                      var P = d.x - (y + g) / 2,
                        B = d.y - (x + v) / 2
                      ;(p.xCoords = p.xCoords.map(function ($) {
                        return $ + P
                      })),
                        (p.yCoords = p.yCoords.map(function ($) {
                          return $ + B
                        }))
                    } else {
                      Object.keys(p).forEach(function ($) {
                        var U = p[$],
                          K = U.getRect().x,
                          ee = U.getRect().x + U.getRect().width,
                          Y = U.getRect().y,
                          ce = U.getRect().y + U.getRect().height
                        K < g && (g = K), ee > y && (y = ee), Y < v && (v = Y), ce > x && (x = ce)
                      })
                      var F = d.x - (y + g) / 2,
                        z = d.y - (x + v) / 2
                      Object.keys(p).forEach(function ($) {
                        var U = p[$]
                        U.setCenter(U.getCenterX() + F, U.getCenterY() + z)
                      })
                    }
                  }
                }),
                (f.calcBoundingBox = function (d, p, m, g) {
                  for (
                    var y = Number.MAX_SAFE_INTEGER,
                      v = Number.MIN_SAFE_INTEGER,
                      x = Number.MAX_SAFE_INTEGER,
                      b = Number.MIN_SAFE_INTEGER,
                      T = void 0,
                      S = void 0,
                      w = void 0,
                      E = void 0,
                      _ = d.descendants().not(':parent'),
                      C = _.length,
                      D = 0;
                    D < C;
                    D++
                  ) {
                    var O = _[D]
                    ;(T = p[g.get(O.id())] - O.width() / 2),
                      (S = p[g.get(O.id())] + O.width() / 2),
                      (w = m[g.get(O.id())] - O.height() / 2),
                      (E = m[g.get(O.id())] + O.height() / 2),
                      y > T && (y = T),
                      v < S && (v = S),
                      x > w && (x = w),
                      b < E && (b = E)
                  }
                  var R = {}
                  return (R.topLeftX = y), (R.topLeftY = x), (R.width = v - y), (R.height = b - x), R
                }),
                (f.calcParentsWithoutChildren = function (d, p) {
                  var m = d.collection()
                  return (
                    p.nodes(':parent').forEach(function (g) {
                      var y = !1
                      g.children().forEach(function (v) {
                        v.css('display') != 'none' && (y = !0)
                      }),
                        y || m.merge(g)
                    }),
                    m
                  )
                }),
                (a.exports = f)
            },
            816: (a, s, l) => {
              var u = l(548),
                h = l(140).CoSELayout,
                f = l(140).CoSENode,
                d = l(140).layoutBase.PointD,
                p = l(140).layoutBase.DimensionD,
                m = l(140).layoutBase.LayoutConstants,
                g = l(140).layoutBase.FDLayoutConstants,
                y = l(140).CoSEConstants,
                v = o(function (b, T) {
                  var S = b.cy,
                    w = b.eles,
                    E = w.nodes(),
                    _ = w.edges(),
                    C = void 0,
                    D = void 0,
                    O = void 0,
                    R = {}
                  b.randomize && ((C = T.nodeIndexes), (D = T.xCoords), (O = T.yCoords))
                  var k = o(function ($) {
                      return typeof $ == 'function'
                    }, 'isFn'),
                    L = o(function ($, U) {
                      return k($) ? $(U) : $
                    }, 'optFn'),
                    A = u.calcParentsWithoutChildren(S, w),
                    I = o(function z($, U, K, ee) {
                      for (var Y = U.length, ce = 0; ce < Y; ce++) {
                        var Z = U[ce],
                          ue = null
                        Z.intersection(A).length == 0 && (ue = Z.children())
                        var Q = void 0,
                          j = Z.layoutDimensions({ nodeDimensionsIncludeLabels: ee.nodeDimensionsIncludeLabels })
                        if (Z.outerWidth() != null && Z.outerHeight() != null)
                          if (ee.randomize)
                            if (!Z.isParent())
                              Q = $.add(new f(K.graphManager, new d(D[C.get(Z.id())] - j.w / 2, O[C.get(Z.id())] - j.h / 2), new p(parseFloat(j.w), parseFloat(j.h))))
                            else {
                              var ne = u.calcBoundingBox(Z, D, O, C)
                              Z.intersection(A).length == 0
                                ? (Q = $.add(new f(K.graphManager, new d(ne.topLeftX, ne.topLeftY), new p(ne.width, ne.height))))
                                : (Q = $.add(new f(K.graphManager, new d(ne.topLeftX, ne.topLeftY), new p(parseFloat(j.w), parseFloat(j.h)))))
                            }
                          else Q = $.add(new f(K.graphManager, new d(Z.position('x') - j.w / 2, Z.position('y') - j.h / 2), new p(parseFloat(j.w), parseFloat(j.h))))
                        else Q = $.add(new f(this.graphManager))
                        if (
                          ((Q.id = Z.data('id')),
                          (Q.nodeRepulsion = L(ee.nodeRepulsion, Z)),
                          (Q.paddingLeft = parseInt(Z.css('padding'))),
                          (Q.paddingTop = parseInt(Z.css('padding'))),
                          (Q.paddingRight = parseInt(Z.css('padding'))),
                          (Q.paddingBottom = parseInt(Z.css('padding'))),
                          ee.nodeDimensionsIncludeLabels &&
                            ((Q.labelWidth = Z.boundingBox({ includeLabels: !0, includeNodes: !1, includeOverlays: !1 }).w),
                            (Q.labelHeight = Z.boundingBox({ includeLabels: !0, includeNodes: !1, includeOverlays: !1 }).h),
                            (Q.labelPosVertical = Z.css('text-valign')),
                            (Q.labelPosHorizontal = Z.css('text-halign'))),
                          (R[Z.data('id')] = Q),
                          isNaN(Q.rect.x) && (Q.rect.x = 0),
                          isNaN(Q.rect.y) && (Q.rect.y = 0),
                          ue != null && ue.length > 0)
                        ) {
                          var te = void 0
                          ;(te = K.getGraphManager().add(K.newGraph(), Q)), z(te, ue, K, ee)
                        }
                      }
                    }, 'processChildrenList'),
                    M = o(function ($, U, K) {
                      for (var ee = 0, Y = 0, ce = 0; ce < K.length; ce++) {
                        var Z = K[ce],
                          ue = R[Z.data('source')],
                          Q = R[Z.data('target')]
                        if (ue && Q && ue !== Q && ue.getEdgesBetween(Q).length == 0) {
                          var j = U.add($.newEdge(), ue, Q)
                          ;(j.id = Z.id()), (j.idealLength = L(b.idealEdgeLength, Z)), (j.edgeElasticity = L(b.edgeElasticity, Z)), (ee += j.idealLength), Y++
                        }
                      }
                      b.idealEdgeLength != null &&
                        (Y > 0
                          ? (y.DEFAULT_EDGE_LENGTH = g.DEFAULT_EDGE_LENGTH = ee / Y)
                          : k(b.idealEdgeLength)
                            ? (y.DEFAULT_EDGE_LENGTH = g.DEFAULT_EDGE_LENGTH = 50)
                            : (y.DEFAULT_EDGE_LENGTH = g.DEFAULT_EDGE_LENGTH = b.idealEdgeLength),
                        (y.MIN_REPULSION_DIST = g.MIN_REPULSION_DIST = g.DEFAULT_EDGE_LENGTH / 10),
                        (y.DEFAULT_RADIAL_SEPARATION = g.DEFAULT_EDGE_LENGTH))
                    }, 'processEdges'),
                    P = o(function ($, U) {
                      U.fixedNodeConstraint && ($.constraints.fixedNodeConstraint = U.fixedNodeConstraint),
                        U.alignmentConstraint && ($.constraints.alignmentConstraint = U.alignmentConstraint),
                        U.relativePlacementConstraint && ($.constraints.relativePlacementConstraint = U.relativePlacementConstraint)
                    }, 'processConstraints')
                  b.nestingFactor != null && (y.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = g.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR = b.nestingFactor),
                    b.gravity != null && (y.DEFAULT_GRAVITY_STRENGTH = g.DEFAULT_GRAVITY_STRENGTH = b.gravity),
                    b.numIter != null && (y.MAX_ITERATIONS = g.MAX_ITERATIONS = b.numIter),
                    b.gravityRange != null && (y.DEFAULT_GRAVITY_RANGE_FACTOR = g.DEFAULT_GRAVITY_RANGE_FACTOR = b.gravityRange),
                    b.gravityCompound != null && (y.DEFAULT_COMPOUND_GRAVITY_STRENGTH = g.DEFAULT_COMPOUND_GRAVITY_STRENGTH = b.gravityCompound),
                    b.gravityRangeCompound != null && (y.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = g.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR = b.gravityRangeCompound),
                    b.initialEnergyOnIncremental != null && (y.DEFAULT_COOLING_FACTOR_INCREMENTAL = g.DEFAULT_COOLING_FACTOR_INCREMENTAL = b.initialEnergyOnIncremental),
                    b.tilingCompareBy != null && (y.TILING_COMPARE_BY = b.tilingCompareBy),
                    b.quality == 'proof' ? (m.QUALITY = 2) : (m.QUALITY = 0),
                    (y.NODE_DIMENSIONS_INCLUDE_LABELS = g.NODE_DIMENSIONS_INCLUDE_LABELS = m.NODE_DIMENSIONS_INCLUDE_LABELS = b.nodeDimensionsIncludeLabels),
                    (y.DEFAULT_INCREMENTAL = g.DEFAULT_INCREMENTAL = m.DEFAULT_INCREMENTAL = !b.randomize),
                    (y.ANIMATE = g.ANIMATE = m.ANIMATE = b.animate),
                    (y.TILE = b.tile),
                    (y.TILING_PADDING_VERTICAL = typeof b.tilingPaddingVertical == 'function' ? b.tilingPaddingVertical.call() : b.tilingPaddingVertical),
                    (y.TILING_PADDING_HORIZONTAL = typeof b.tilingPaddingHorizontal == 'function' ? b.tilingPaddingHorizontal.call() : b.tilingPaddingHorizontal),
                    (y.DEFAULT_INCREMENTAL = g.DEFAULT_INCREMENTAL = m.DEFAULT_INCREMENTAL = !0),
                    (y.PURE_INCREMENTAL = !b.randomize),
                    (m.DEFAULT_UNIFORM_LEAF_NODE_SIZES = b.uniformNodeDimensions),
                    b.step == 'transformed' && ((y.TRANSFORM_ON_CONSTRAINT_HANDLING = !0), (y.ENFORCE_CONSTRAINTS = !1), (y.APPLY_LAYOUT = !1)),
                    b.step == 'enforced' && ((y.TRANSFORM_ON_CONSTRAINT_HANDLING = !1), (y.ENFORCE_CONSTRAINTS = !0), (y.APPLY_LAYOUT = !1)),
                    b.step == 'cose' && ((y.TRANSFORM_ON_CONSTRAINT_HANDLING = !1), (y.ENFORCE_CONSTRAINTS = !1), (y.APPLY_LAYOUT = !0)),
                    b.step == 'all' &&
                      (b.randomize ? (y.TRANSFORM_ON_CONSTRAINT_HANDLING = !0) : (y.TRANSFORM_ON_CONSTRAINT_HANDLING = !1), (y.ENFORCE_CONSTRAINTS = !0), (y.APPLY_LAYOUT = !0)),
                    b.fixedNodeConstraint || b.alignmentConstraint || b.relativePlacementConstraint
                      ? (y.TREE_REDUCTION_ON_INCREMENTAL = !1)
                      : (y.TREE_REDUCTION_ON_INCREMENTAL = !0)
                  var B = new h(),
                    F = B.newGraphManager()
                  return I(F.addRoot(), u.getTopMostNodes(E), B, b), M(B, F, _), P(B, b), B.runLayout(), R
                }, 'coseLayout')
              a.exports = { coseLayout: v }
            },
            212: (a, s, l) => {
              var u = (function () {
                function b(T, S) {
                  for (var w = 0; w < S.length; w++) {
                    var E = S[w]
                    ;(E.enumerable = E.enumerable || !1), (E.configurable = !0), 'value' in E && (E.writable = !0), Object.defineProperty(T, E.key, E)
                  }
                }
                return (
                  o(b, 'defineProperties'),
                  function (T, S, w) {
                    return S && b(T.prototype, S), w && b(T, w), T
                  }
                )
              })()
              function h(b, T) {
                if (!(b instanceof T)) throw new TypeError('Cannot call a class as a function')
              }
              o(h, '_classCallCheck')
              var f = l(658),
                d = l(548),
                p = l(657),
                m = p.spectralLayout,
                g = l(816),
                y = g.coseLayout,
                v = Object.freeze({
                  quality: 'default',
                  randomize: !0,
                  animate: !0,
                  animationDuration: 1e3,
                  animationEasing: void 0,
                  fit: !0,
                  padding: 30,
                  nodeDimensionsIncludeLabels: !1,
                  uniformNodeDimensions: !1,
                  packComponents: !0,
                  step: 'all',
                  samplingType: !0,
                  sampleSize: 25,
                  nodeSeparation: 75,
                  piTol: 1e-7,
                  nodeRepulsion: o(function (T) {
                    return 4500
                  }, 'nodeRepulsion'),
                  idealEdgeLength: o(function (T) {
                    return 50
                  }, 'idealEdgeLength'),
                  edgeElasticity: o(function (T) {
                    return 0.45
                  }, 'edgeElasticity'),
                  nestingFactor: 0.1,
                  gravity: 0.25,
                  numIter: 2500,
                  tile: !0,
                  tilingCompareBy: void 0,
                  tilingPaddingVertical: 10,
                  tilingPaddingHorizontal: 10,
                  gravityRangeCompound: 1.5,
                  gravityCompound: 1,
                  gravityRange: 3.8,
                  initialEnergyOnIncremental: 0.3,
                  fixedNodeConstraint: void 0,
                  alignmentConstraint: void 0,
                  relativePlacementConstraint: void 0,
                  ready: o(function () {}, 'ready'),
                  stop: o(function () {}, 'stop')
                }),
                x = (function () {
                  function b(T) {
                    h(this, b), (this.options = f({}, v, T))
                  }
                  return (
                    o(b, 'Layout'),
                    u(b, [
                      {
                        key: 'run',
                        value: o(function () {
                          var S = this,
                            w = this.options,
                            E = w.cy,
                            _ = w.eles,
                            C = [],
                            D = void 0,
                            O = void 0,
                            R = [],
                            k = void 0,
                            L = []
                          w.fixedNodeConstraint && (!Array.isArray(w.fixedNodeConstraint) || w.fixedNodeConstraint.length == 0) && (w.fixedNodeConstraint = void 0),
                            w.alignmentConstraint &&
                              (w.alignmentConstraint.vertical &&
                                (!Array.isArray(w.alignmentConstraint.vertical) || w.alignmentConstraint.vertical.length == 0) &&
                                (w.alignmentConstraint.vertical = void 0),
                              w.alignmentConstraint.horizontal &&
                                (!Array.isArray(w.alignmentConstraint.horizontal) || w.alignmentConstraint.horizontal.length == 0) &&
                                (w.alignmentConstraint.horizontal = void 0)),
                            w.relativePlacementConstraint &&
                              (!Array.isArray(w.relativePlacementConstraint) || w.relativePlacementConstraint.length == 0) &&
                              (w.relativePlacementConstraint = void 0)
                          var A = w.fixedNodeConstraint || w.alignmentConstraint || w.relativePlacementConstraint
                          A && ((w.tile = !1), (w.packComponents = !1))
                          var I = void 0,
                            M = !1
                          if ((E.layoutUtilities && w.packComponents && ((I = E.layoutUtilities('get')), I || (I = E.layoutUtilities()), (M = !0)), _.nodes().length > 0))
                            if (M) {
                              var F = d.getTopMostNodes(w.eles.nodes())
                              if (
                                ((k = d.connectComponents(E, w.eles, F)),
                                k.forEach(function (se) {
                                  var ae = se.boundingBox()
                                  L.push({ x: ae.x1 + ae.w / 2, y: ae.y1 + ae.h / 2 })
                                }),
                                w.randomize &&
                                  k.forEach(function (se) {
                                    ;(w.eles = se), C.push(m(w))
                                  }),
                                w.quality == 'default' || w.quality == 'proof')
                              ) {
                                var z = E.collection()
                                if (w.tile) {
                                  var $ = new Map(),
                                    U = [],
                                    K = [],
                                    ee = 0,
                                    Y = { nodeIndexes: $, xCoords: U, yCoords: K },
                                    ce = []
                                  if (
                                    (k.forEach(function (se, ae) {
                                      se.edges().length == 0 &&
                                        (se.nodes().forEach(function (Oe, ye) {
                                          z.merge(se.nodes()[ye]),
                                            Oe.isParent() ||
                                              (Y.nodeIndexes.set(se.nodes()[ye].id(), ee++), Y.xCoords.push(se.nodes()[0].position().x), Y.yCoords.push(se.nodes()[0].position().y))
                                        }),
                                        ce.push(ae))
                                    }),
                                    z.length > 1)
                                  ) {
                                    var Z = z.boundingBox()
                                    L.push({ x: Z.x1 + Z.w / 2, y: Z.y1 + Z.h / 2 }), k.push(z), C.push(Y)
                                    for (var ue = ce.length - 1; ue >= 0; ue--) k.splice(ce[ue], 1), C.splice(ce[ue], 1), L.splice(ce[ue], 1)
                                  }
                                }
                                k.forEach(function (se, ae) {
                                  ;(w.eles = se), R.push(y(w, C[ae])), d.relocateComponent(L[ae], R[ae], w)
                                })
                              } else
                                k.forEach(function (se, ae) {
                                  d.relocateComponent(L[ae], C[ae], w)
                                })
                              var Q = new Set()
                              if (k.length > 1) {
                                var j = [],
                                  ne = _.filter(function (se) {
                                    return se.css('display') == 'none'
                                  })
                                k.forEach(function (se, ae) {
                                  var Oe = void 0
                                  if ((w.quality == 'draft' && (Oe = C[ae].nodeIndexes), se.nodes().not(ne).length > 0)) {
                                    var ye = {}
                                    ;(ye.edges = []), (ye.nodes = [])
                                    var Be = void 0
                                    se
                                      .nodes()
                                      .not(ne)
                                      .forEach(function (He) {
                                        if (w.quality == 'draft')
                                          if (!He.isParent())
                                            (Be = Oe.get(He.id())),
                                              ye.nodes.push({
                                                x: C[ae].xCoords[Be] - He.boundingbox().w / 2,
                                                y: C[ae].yCoords[Be] - He.boundingbox().h / 2,
                                                width: He.boundingbox().w,
                                                height: He.boundingbox().h
                                              })
                                          else {
                                            var ze = d.calcBoundingBox(He, C[ae].xCoords, C[ae].yCoords, Oe)
                                            ye.nodes.push({ x: ze.topLeftX, y: ze.topLeftY, width: ze.width, height: ze.height })
                                          }
                                        else
                                          R[ae][He.id()] &&
                                            ye.nodes.push({
                                              x: R[ae][He.id()].getLeft(),
                                              y: R[ae][He.id()].getTop(),
                                              width: R[ae][He.id()].getWidth(),
                                              height: R[ae][He.id()].getHeight()
                                            })
                                      }),
                                      se.edges().forEach(function (He) {
                                        var ze = He.source(),
                                          Le = He.target()
                                        if (ze.css('display') != 'none' && Le.css('display') != 'none')
                                          if (w.quality == 'draft') {
                                            var Ie = Oe.get(ze.id()),
                                              xe = Oe.get(Le.id()),
                                              q = [],
                                              de = []
                                            if (ze.isParent()) {
                                              var ie = d.calcBoundingBox(ze, C[ae].xCoords, C[ae].yCoords, Oe)
                                              q.push(ie.topLeftX + ie.width / 2), q.push(ie.topLeftY + ie.height / 2)
                                            } else q.push(C[ae].xCoords[Ie]), q.push(C[ae].yCoords[Ie])
                                            if (Le.isParent()) {
                                              var oe = d.calcBoundingBox(Le, C[ae].xCoords, C[ae].yCoords, Oe)
                                              de.push(oe.topLeftX + oe.width / 2), de.push(oe.topLeftY + oe.height / 2)
                                            } else de.push(C[ae].xCoords[xe]), de.push(C[ae].yCoords[xe])
                                            ye.edges.push({ startX: q[0], startY: q[1], endX: de[0], endY: de[1] })
                                          } else
                                            R[ae][ze.id()] &&
                                              R[ae][Le.id()] &&
                                              ye.edges.push({
                                                startX: R[ae][ze.id()].getCenterX(),
                                                startY: R[ae][ze.id()].getCenterY(),
                                                endX: R[ae][Le.id()].getCenterX(),
                                                endY: R[ae][Le.id()].getCenterY()
                                              })
                                      }),
                                      ye.nodes.length > 0 && (j.push(ye), Q.add(ae))
                                  }
                                })
                                var te = I.packComponents(j, w.randomize).shifts
                                if (w.quality == 'draft')
                                  C.forEach(function (se, ae) {
                                    var Oe = se.xCoords.map(function (Be) {
                                        return Be + te[ae].dx
                                      }),
                                      ye = se.yCoords.map(function (Be) {
                                        return Be + te[ae].dy
                                      })
                                    ;(se.xCoords = Oe), (se.yCoords = ye)
                                  })
                                else {
                                  var he = 0
                                  Q.forEach(function (se) {
                                    Object.keys(R[se]).forEach(function (ae) {
                                      var Oe = R[se][ae]
                                      Oe.setCenter(Oe.getCenterX() + te[he].dx, Oe.getCenterY() + te[he].dy)
                                    }),
                                      he++
                                  })
                                }
                              }
                            } else {
                              var P = w.eles.boundingBox()
                              if ((L.push({ x: P.x1 + P.w / 2, y: P.y1 + P.h / 2 }), w.randomize)) {
                                var B = m(w)
                                C.push(B)
                              }
                              w.quality == 'default' || w.quality == 'proof' ? (R.push(y(w, C[0])), d.relocateComponent(L[0], R[0], w)) : d.relocateComponent(L[0], C[0], w)
                            }
                          var le = o(function (ae, Oe) {
                            if (w.quality == 'default' || w.quality == 'proof') {
                              typeof ae == 'number' && (ae = Oe)
                              var ye = void 0,
                                Be = void 0,
                                He = ae.data('id')
                              return (
                                R.forEach(function (Le) {
                                  He in Le && ((ye = { x: Le[He].getRect().getCenterX(), y: Le[He].getRect().getCenterY() }), (Be = Le[He]))
                                }),
                                w.nodeDimensionsIncludeLabels &&
                                  (Be.labelWidth &&
                                    (Be.labelPosHorizontal == 'left' ? (ye.x += Be.labelWidth / 2) : Be.labelPosHorizontal == 'right' && (ye.x -= Be.labelWidth / 2)),
                                  Be.labelHeight &&
                                    (Be.labelPosVertical == 'top' ? (ye.y += Be.labelHeight / 2) : Be.labelPosVertical == 'bottom' && (ye.y -= Be.labelHeight / 2))),
                                ye == null && (ye = { x: ae.position('x'), y: ae.position('y') }),
                                { x: ye.x, y: ye.y }
                              )
                            } else {
                              var ze = void 0
                              return (
                                C.forEach(function (Le) {
                                  var Ie = Le.nodeIndexes.get(ae.id())
                                  Ie != null && (ze = { x: Le.xCoords[Ie], y: Le.yCoords[Ie] })
                                }),
                                ze == null && (ze = { x: ae.position('x'), y: ae.position('y') }),
                                { x: ze.x, y: ze.y }
                              )
                            }
                          }, 'getPositions')
                          if (w.quality == 'default' || w.quality == 'proof' || w.randomize) {
                            var J = d.calcParentsWithoutChildren(E, _),
                              Se = _.filter(function (se) {
                                return se.css('display') == 'none'
                              })
                            ;(w.eles = _.not(Se)),
                              _.nodes().not(':parent').not(Se).layoutPositions(S, w, le),
                              J.length > 0 &&
                                J.forEach(function (se) {
                                  se.position(le(se))
                                })
                          } else console.log("If randomize option is set to false, then quality option must be 'default' or 'proof'.")
                        }, 'run')
                      }
                    ]),
                    b
                  )
                })()
              a.exports = x
            },
            657: (a, s, l) => {
              var u = l(548),
                h = l(140).layoutBase.Matrix,
                f = l(140).layoutBase.SVD,
                d = o(function (m) {
                  var g = m.cy,
                    y = m.eles,
                    v = y.nodes(),
                    x = y.nodes(':parent'),
                    b = new Map(),
                    T = new Map(),
                    S = new Map(),
                    w = [],
                    E = [],
                    _ = [],
                    C = [],
                    D = [],
                    O = [],
                    R = [],
                    k = [],
                    L = void 0,
                    A = void 0,
                    I = 1e8,
                    M = 1e-9,
                    P = m.piTol,
                    B = m.samplingType,
                    F = m.nodeSeparation,
                    z = void 0,
                    $ = o(function () {
                      for (var Te = 0, W = 0, pe = !1; W < z; ) {
                        ;(Te = Math.floor(Math.random() * A)), (pe = !1)
                        for (var ve = 0; ve < W; ve++)
                          if (C[ve] == Te) {
                            pe = !0
                            break
                          }
                        if (!pe) (C[W] = Te), W++
                        else continue
                      }
                    }, 'randomSampleCR'),
                    U = o(function (Te, W, pe) {
                      for (var ve = [], Pe = 0, _e = 0, be = 0, Ve = void 0, De = [], qe = 0, at = 1, Rt = 0; Rt < A; Rt++) De[Rt] = I
                      for (ve[_e] = Te, De[Te] = 0; _e >= Pe; ) {
                        be = ve[Pe++]
                        for (var st = w[be], Ue = 0; Ue < st.length; Ue++) (Ve = T.get(st[Ue])), De[Ve] == I && ((De[Ve] = De[be] + 1), (ve[++_e] = Ve))
                        O[be][W] = De[be] * F
                      }
                      if (pe) {
                        for (var ct = 0; ct < A; ct++) O[ct][W] < D[ct] && (D[ct] = O[ct][W])
                        for (var We = 0; We < A; We++) D[We] > qe && ((qe = D[We]), (at = We))
                      }
                      return at
                    }, 'BFS'),
                    K = o(function (Te) {
                      var W = void 0
                      if (Te) {
                        ;(W = Math.floor(Math.random() * A)), (L = W)
                        for (var ve = 0; ve < A; ve++) D[ve] = I
                        for (var Pe = 0; Pe < z; Pe++) (C[Pe] = W), (W = U(W, Pe, Te))
                      } else {
                        $()
                        for (var pe = 0; pe < z; pe++) U(C[pe], pe, Te, !1)
                      }
                      for (var _e = 0; _e < A; _e++) for (var be = 0; be < z; be++) O[_e][be] *= O[_e][be]
                      for (var Ve = 0; Ve < z; Ve++) R[Ve] = []
                      for (var De = 0; De < z; De++) for (var qe = 0; qe < z; qe++) R[De][qe] = O[C[qe]][De]
                    }, 'allBFS'),
                    ee = o(function () {
                      for (var Te = f.svd(R), W = Te.S, pe = Te.U, ve = Te.V, Pe = W[0] * W[0] * W[0], _e = [], be = 0; be < z; be++) {
                        _e[be] = []
                        for (var Ve = 0; Ve < z; Ve++) (_e[be][Ve] = 0), be == Ve && (_e[be][Ve] = W[be] / (W[be] * W[be] + Pe / (W[be] * W[be])))
                      }
                      k = h.multMat(h.multMat(ve, _e), h.transpose(pe))
                    }, 'sample'),
                    Y = o(function () {
                      for (var Te = void 0, W = void 0, pe = [], ve = [], Pe = [], _e = [], be = 0; be < A; be++) (pe[be] = Math.random()), (ve[be] = Math.random())
                      ;(pe = h.normalize(pe)), (ve = h.normalize(ve))
                      for (var Ve = 0, De = M, qe = M, at = void 0; ; ) {
                        Ve++
                        for (var Rt = 0; Rt < A; Rt++) Pe[Rt] = pe[Rt]
                        if (
                          ((pe = h.multGamma(h.multL(h.multGamma(Pe), O, k))),
                          (Te = h.dotProduct(Pe, pe)),
                          (pe = h.normalize(pe)),
                          (De = h.dotProduct(Pe, pe)),
                          (at = Math.abs(De / qe)),
                          at <= 1 + P && at >= 1)
                        )
                          break
                        qe = De
                      }
                      for (var st = 0; st < A; st++) Pe[st] = pe[st]
                      for (Ve = 0, qe = M; ; ) {
                        Ve++
                        for (var Ue = 0; Ue < A; Ue++) _e[Ue] = ve[Ue]
                        if (
                          ((_e = h.minusOp(_e, h.multCons(Pe, h.dotProduct(Pe, _e)))),
                          (ve = h.multGamma(h.multL(h.multGamma(_e), O, k))),
                          (W = h.dotProduct(_e, ve)),
                          (ve = h.normalize(ve)),
                          (De = h.dotProduct(_e, ve)),
                          (at = Math.abs(De / qe)),
                          at <= 1 + P && at >= 1)
                        )
                          break
                        qe = De
                      }
                      for (var ct = 0; ct < A; ct++) _e[ct] = ve[ct]
                      ;(E = h.multCons(Pe, Math.sqrt(Math.abs(Te)))), (_ = h.multCons(_e, Math.sqrt(Math.abs(W))))
                    }, 'powerIteration')
                  u.connectComponents(g, y, u.getTopMostNodes(v), b),
                    x.forEach(function (V) {
                      u.connectComponents(g, y, u.getTopMostNodes(V.descendants().intersection(y)), b)
                    })
                  for (var ce = 0, Z = 0; Z < v.length; Z++) v[Z].isParent() || T.set(v[Z].id(), ce++)
                  var ue = !0,
                    Q = !1,
                    j = void 0
                  try {
                    for (var ne = b.keys()[Symbol.iterator](), te; !(ue = (te = ne.next()).done); ue = !0) {
                      var he = te.value
                      T.set(he, ce++)
                    }
                  } catch (V) {
                    ;(Q = !0), (j = V)
                  } finally {
                    try {
                      !ue && ne.return && ne.return()
                    } finally {
                      if (Q) throw j
                    }
                  }
                  for (var le = 0; le < T.size; le++) w[le] = []
                  x.forEach(function (V) {
                    for (var Te = V.children().intersection(y); Te.nodes(':childless').length == 0; ) Te = Te.nodes()[0].children().intersection(y)
                    var W = 0,
                      pe = Te.nodes(':childless')[0].connectedEdges().length
                    Te.nodes(':childless').forEach(function (ve, Pe) {
                      ve.connectedEdges().length < pe && ((pe = ve.connectedEdges().length), (W = Pe))
                    }),
                      S.set(V.id(), Te.nodes(':childless')[W].id())
                  }),
                    v.forEach(function (V) {
                      var Te = void 0
                      V.isParent() ? (Te = T.get(S.get(V.id()))) : (Te = T.get(V.id())),
                        V.neighborhood()
                          .nodes()
                          .forEach(function (W) {
                            y.intersection(V.edgesWith(W)).length > 0 && (W.isParent() ? w[Te].push(S.get(W.id())) : w[Te].push(W.id()))
                          })
                    })
                  var J = o(function (Te) {
                      var W = T.get(Te),
                        pe = void 0
                      b.get(Te).forEach(function (ve) {
                        g.getElementById(ve).isParent() ? (pe = S.get(ve)) : (pe = ve), w[W].push(pe), w[T.get(pe)].push(Te)
                      })
                    }, '_loop'),
                    Se = !0,
                    se = !1,
                    ae = void 0
                  try {
                    for (var Oe = b.keys()[Symbol.iterator](), ye; !(Se = (ye = Oe.next()).done); Se = !0) {
                      var Be = ye.value
                      J(Be)
                    }
                  } catch (V) {
                    ;(se = !0), (ae = V)
                  } finally {
                    try {
                      !Se && Oe.return && Oe.return()
                    } finally {
                      if (se) throw ae
                    }
                  }
                  A = T.size
                  var He = void 0
                  if (A > 2) {
                    z = A < m.sampleSize ? A : m.sampleSize
                    for (var ze = 0; ze < A; ze++) O[ze] = []
                    for (var Le = 0; Le < z; Le++) k[Le] = []
                    return (
                      m.quality == 'draft' || m.step == 'all'
                        ? (K(B), ee(), Y(), (He = { nodeIndexes: T, xCoords: E, yCoords: _ }))
                        : (T.forEach(function (V, Te) {
                            E.push(g.getElementById(Te).position('x')), _.push(g.getElementById(Te).position('y'))
                          }),
                          (He = { nodeIndexes: T, xCoords: E, yCoords: _ })),
                      He
                    )
                  } else {
                    var Ie = T.keys(),
                      xe = g.getElementById(Ie.next().value),
                      q = xe.position(),
                      de = xe.outerWidth()
                    if ((E.push(q.x), _.push(q.y), A == 2)) {
                      var ie = g.getElementById(Ie.next().value),
                        oe = ie.outerWidth()
                      E.push(q.x + de / 2 + oe / 2 + m.idealEdgeLength), _.push(q.y)
                    }
                    return (He = { nodeIndexes: T, xCoords: E, yCoords: _ }), He
                  }
                }, 'spectralLayout')
              a.exports = { spectralLayout: d }
            },
            579: (a, s, l) => {
              var u = l(212),
                h = o(function (d) {
                  d && d('layout', 'fcose', u)
                }, 'register')
              typeof cytoscape < 'u' && h(cytoscape), (a.exports = h)
            },
            140: a => {
              a.exports = t
            }
          },
          r = {}
        function n(a) {
          var s = r[a]
          if (s !== void 0) return s.exports
          var l = (r[a] = { exports: {} })
          return e[a](l, l.exports, n), l.exports
        }
        o(n, '__webpack_require__')
        var i = n(579)
        return i
      })()
    })
  })
  var xy,
    l0,
    t$ = N(() => {
      'use strict'
      jl()
      ;(xy = o(t => `<g><rect width="80" height="80" style="fill: #087ebf; stroke-width: 0px;"/>${t}</g>`, 'wrapIcon')),
        (l0 = {
          prefix: 'mermaid-architecture',
          height: 80,
          width: 80,
          icons: {
            database: {
              body: xy(
                '<path id="b" data-name="4" d="m20,57.86c0,3.94,8.95,7.14,20,7.14s20-3.2,20-7.14" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><path id="c" data-name="3" d="m20,45.95c0,3.94,8.95,7.14,20,7.14s20-3.2,20-7.14" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><path id="d" data-name="2" d="m20,34.05c0,3.94,8.95,7.14,20,7.14s20-3.2,20-7.14" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><ellipse id="e" data-name="1" cx="40" cy="22.14" rx="20" ry="7.14" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><line x1="20" y1="57.86" x2="20" y2="22.14" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><line x1="60" y1="57.86" x2="60" y2="22.14" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/>'
              )
            },
            server: {
              body: xy(
                '<rect x="17.5" y="17.5" width="45" height="45" rx="2" ry="2" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><line x1="17.5" y1="32.5" x2="62.5" y2="32.5" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><line x1="17.5" y1="47.5" x2="62.5" y2="47.5" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><g><path d="m56.25,25c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z" style="fill: #fff; stroke-width: 0px;"/><path d="m56.25,25c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z" style="fill: none; stroke: #fff; stroke-miterlimit: 10;"/></g><g><path d="m56.25,40c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z" style="fill: #fff; stroke-width: 0px;"/><path d="m56.25,40c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z" style="fill: none; stroke: #fff; stroke-miterlimit: 10;"/></g><g><path d="m56.25,55c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z" style="fill: #fff; stroke-width: 0px;"/><path d="m56.25,55c0,.27-.45.5-1,.5h-10.5c-.55,0-1-.23-1-.5s.45-.5,1-.5h10.5c.55,0,1,.23,1,.5Z" style="fill: none; stroke: #fff; stroke-miterlimit: 10;"/></g><g><circle cx="32.5" cy="25" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/><circle cx="27.5" cy="25" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/><circle cx="22.5" cy="25" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/></g><g><circle cx="32.5" cy="40" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/><circle cx="27.5" cy="40" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/><circle cx="22.5" cy="40" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/></g><g><circle cx="32.5" cy="55" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/><circle cx="27.5" cy="55" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/><circle cx="22.5" cy="55" r=".75" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10;"/></g>'
              )
            },
            disk: {
              body: xy(
                '<rect x="20" y="15" width="40" height="50" rx="1" ry="1" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><ellipse cx="24" cy="19.17" rx=".8" ry=".83" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><ellipse cx="56" cy="19.17" rx=".8" ry=".83" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><ellipse cx="24" cy="60.83" rx=".8" ry=".83" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><ellipse cx="56" cy="60.83" rx=".8" ry=".83" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><ellipse cx="40" cy="33.75" rx="14" ry="14.58" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><ellipse cx="40" cy="33.75" rx="4" ry="4.17" style="fill: #fff; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><path d="m37.51,42.52l-4.83,13.22c-.26.71-1.1,1.02-1.76.64l-4.18-2.42c-.66-.38-.81-1.26-.33-1.84l9.01-10.8c.88-1.05,2.56-.08,2.09,1.2Z" style="fill: #fff; stroke-width: 0px;"/>'
              )
            },
            internet: {
              body: xy(
                '<circle cx="40" cy="40" r="22.5" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><line x1="40" y1="17.5" x2="40" y2="62.5" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><line x1="17.5" y1="40" x2="62.5" y2="40" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><path d="m39.99,17.51c-15.28,11.1-15.28,33.88,0,44.98" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><path d="m40.01,17.51c15.28,11.1,15.28,33.88,0,44.98" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><line x1="19.75" y1="30.1" x2="60.25" y2="30.1" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/><line x1="19.75" y1="49.9" x2="60.25" y2="49.9" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/>'
              )
            },
            cloud: {
              body: xy(
                '<path d="m65,47.5c0,2.76-2.24,5-5,5H20c-2.76,0-5-2.24-5-5,0-1.87,1.03-3.51,2.56-4.36-.04-.21-.06-.42-.06-.64,0-2.6,2.48-4.74,5.65-4.97,1.65-4.51,6.34-7.76,11.85-7.76.86,0,1.69.08,2.5.23,2.09-1.57,4.69-2.5,7.5-2.5,6.1,0,11.19,4.38,12.28,10.17,2.14.56,3.72,2.51,3.72,4.83,0,.03,0,.07-.01.1,2.29.46,4.01,2.48,4.01,4.9Z" style="fill: none; stroke: #fff; stroke-miterlimit: 10; stroke-width: 2px;"/>'
              )
            },
            unknown: t7,
            blank: { body: xy('') }
          }
        })
    })
  var X2e,
    j2e,
    K2e,
    Q2e,
    Z2e = N(() => {
      'use strict'
      jl()
      Gt()
      ao()
      N4()
      t$()
      AC()
      ;(X2e = o(async function (t, e) {
        let r = Mi('padding'),
          n = Mi('iconSize'),
          i = n / 2,
          a = n / 6,
          s = a / 2
        await Promise.all(
          e.edges().map(async l => {
            let { source: u, sourceDir: h, sourceArrow: f, sourceGroup: d, target: p, targetDir: m, targetArrow: g, targetGroup: y, label: v } = CC(l),
              { x, y: b } = l[0].sourceEndpoint(),
              { x: T, y: S } = l[0].midpoint(),
              { x: w, y: E } = l[0].targetEndpoint(),
              _ = r + 4
            if (
              (d && (ja(h) ? (x += h === 'L' ? -_ : _) : (b += h === 'T' ? -_ : _ + 18)),
              y && (ja(m) ? (w += m === 'L' ? -_ : _) : (E += m === 'T' ? -_ : _ + 18)),
              !d && o0.getNode(u)?.type === 'junction' && (ja(h) ? (x += h === 'L' ? i : -i) : (b += h === 'T' ? i : -i)),
              !y && o0.getNode(p)?.type === 'junction' && (ja(m) ? (w += m === 'L' ? i : -i) : (E += m === 'T' ? i : -i)),
              l[0]._private.rscratch)
            ) {
              let C = t.insert('g')
              if ((C.insert('path').attr('d', `M ${x},${b} L ${T},${S} L${w},${E} `).attr('class', 'edge'), f)) {
                let D = ja(h) ? D4[h](x, a) : x - s,
                  O = ru(h) ? D4[h](b, a) : b - s
                C.insert('polygon').attr('points', YF[h](a)).attr('transform', `translate(${D},${O})`).attr('class', 'arrow')
              }
              if (g) {
                let D = ja(m) ? D4[m](w, a) : w - s,
                  O = ru(m) ? D4[m](E, a) : E - s
                C.insert('polygon').attr('points', YF[m](a)).attr('transform', `translate(${D},${O})`).attr('class', 'arrow')
              }
              if (v) {
                let D = L4(h, m) ? 'XY' : ja(h) ? 'X' : 'Y',
                  O = 0
                D === 'X' ? (O = Math.abs(x - w)) : D === 'Y' ? (O = Math.abs(b - E) / 1.5) : (O = Math.abs(x - w) / 2)
                let R = C.append('g')
                if (
                  (await qn(R, v, { useHtmlLabels: !1, width: O, classes: 'architecture-service-label' }, me()),
                  R.attr('dy', '1em').attr('alignment-baseline', 'middle').attr('dominant-baseline', 'middle').attr('text-anchor', 'middle'),
                  D === 'X')
                )
                  R.attr('transform', 'translate(' + T + ', ' + S + ')')
                else if (D === 'Y') R.attr('transform', 'translate(' + T + ', ' + S + ') rotate(-90)')
                else if (D === 'XY') {
                  let k = R4(h, m)
                  if (k && O2e(k)) {
                    let L = R.node().getBoundingClientRect(),
                      [A, I] = B2e(k)
                    R.attr('dominant-baseline', 'auto').attr('transform', `rotate(${-1 * A * I * 45})`)
                    let M = R.node().getBoundingClientRect()
                    R.attr(
                      'transform',
                      `
                translate(${T}, ${S - L.height / 2})
                translate(${(A * M.width) / 2}, ${(I * M.height) / 2})
                rotate(${-1 * A * I * 45}, 0, ${L.height / 2})
              `
                    )
                  }
                }
              }
            }
          })
        )
      }, 'drawEdges')),
        (j2e = o(async function (t, e) {
          let n = Mi('padding') * 0.75,
            i = Mi('fontSize'),
            s = Mi('iconSize') / 2
          await Promise.all(
            e.nodes().map(async l => {
              let u = Yf(l)
              if (u.type === 'group') {
                let { h, w: f, x1: d, y1: p } = l.boundingBox()
                t.append('rect')
                  .attr('x', d + s)
                  .attr('y', p + s)
                  .attr('width', f)
                  .attr('height', h)
                  .attr('class', 'node-bkg')
                let m = t.append('g'),
                  g = d,
                  y = p
                if (u.icon) {
                  let v = m.append('g')
                  v.html(`<g>${await Es(u.icon, { height: n, width: n, fallbackPrefix: l0.prefix })}</g>`),
                    v.attr('transform', 'translate(' + (g + s + 1) + ', ' + (y + s + 1) + ')'),
                    (g += n),
                    (y += i / 2 - 1 - 2)
                }
                if (u.label) {
                  let v = m.append('g')
                  await qn(v, u.label, { useHtmlLabels: !1, width: f, classes: 'architecture-service-label' }, me()),
                    v.attr('dy', '1em').attr('alignment-baseline', 'middle').attr('dominant-baseline', 'start').attr('text-anchor', 'start'),
                    v.attr('transform', 'translate(' + (g + s + 4) + ', ' + (y + s + 2) + ')')
                }
              }
            })
          )
        }, 'drawGroups')),
        (K2e = o(async function (t, e, r) {
          for (let n of r) {
            let i = e.append('g'),
              a = Mi('iconSize')
            if (n.title) {
              let h = i.append('g')
              await qn(h, n.title, { useHtmlLabels: !1, width: a * 1.5, classes: 'architecture-service-label' }, me()),
                h.attr('dy', '1em').attr('alignment-baseline', 'middle').attr('dominant-baseline', 'middle').attr('text-anchor', 'middle'),
                h.attr('transform', 'translate(' + a / 2 + ', ' + a + ')')
            }
            let s = i.append('g')
            if (n.icon) s.html(`<g>${await Es(n.icon, { height: a, width: a, fallbackPrefix: l0.prefix })}</g>`)
            else if (n.iconText) {
              s.html(`<g>${await Es('blank', { height: a, width: a, fallbackPrefix: l0.prefix })}</g>`)
              let d = s
                  .append('g')
                  .append('foreignObject')
                  .attr('width', a)
                  .attr('height', a)
                  .append('div')
                  .attr('class', 'node-icon-text')
                  .attr('style', `height: ${a}px;`)
                  .append('div')
                  .html(n.iconText),
                p = parseInt(window.getComputedStyle(d.node(), null).getPropertyValue('font-size').replace(/\D/g, '')) ?? 16
              d.attr('style', `-webkit-line-clamp: ${Math.floor((a - 2) / p)};`)
            } else
              s.append('path')
                .attr('class', 'node-bkg')
                .attr('id', 'node-' + n.id)
                .attr('d', `M0 ${a} v${-a} q0,-5 5,-5 h${a} q5,0 5,5 v${a} H0 Z`)
            i.attr('class', 'architecture-service')
            let { width: l, height: u } = i._groups[0][0].getBBox()
            ;(n.width = l), (n.height = u), t.setElementForId(n.id, i)
          }
          return 0
        }, 'drawServices')),
        (Q2e = o(function (t, e, r) {
          r.forEach(n => {
            let i = e.append('g'),
              a = Mi('iconSize')
            i
              .append('g')
              .append('rect')
              .attr('id', 'node-' + n.id)
              .attr('fill-opacity', '0')
              .attr('width', a)
              .attr('height', a),
              i.attr('class', 'architecture-junction')
            let { width: l, height: u } = i._groups[0][0].getBBox()
            ;(i.width = l), (i.height = u), t.setElementForId(n.id, i)
          })
        }, 'drawJunctions'))
    })
  function Hnt(t, e) {
    t.forEach(r => {
      e.add({
        group: 'nodes',
        data: { type: 'service', id: r.id, icon: r.icon, label: r.title, parent: r.in, width: Mi('iconSize'), height: Mi('iconSize') },
        classes: 'node-service'
      })
    })
  }
  function Wnt(t, e) {
    t.forEach(r => {
      e.add({ group: 'nodes', data: { type: 'junction', id: r.id, parent: r.in, width: Mi('iconSize'), height: Mi('iconSize') }, classes: 'node-junction' })
    })
  }
  function qnt(t, e) {
    e.nodes().map(r => {
      let n = Yf(r)
      if (n.type === 'group') return
      ;(n.x = r.position().x), (n.y = r.position().y), t.getElementById(n.id).attr('transform', 'translate(' + (n.x || 0) + ',' + (n.y || 0) + ')')
    })
  }
  function Ynt(t, e) {
    t.forEach(r => {
      e.add({ group: 'nodes', data: { type: 'group', id: r.id, icon: r.icon, label: r.title, parent: r.in }, classes: 'node-group' })
    })
  }
  function Xnt(t, e) {
    t.forEach(r => {
      let { lhsId: n, rhsId: i, lhsInto: a, lhsGroup: s, rhsInto: l, lhsDir: u, rhsDir: h, rhsGroup: f, title: d } = r,
        p = L4(r.lhsDir, r.rhsDir) ? 'segments' : 'straight',
        m = {
          id: `${n}-${i}`,
          label: d,
          source: n,
          sourceDir: u,
          sourceArrow: a,
          sourceGroup: s,
          sourceEndpoint: u === 'L' ? '0 50%' : u === 'R' ? '100% 50%' : u === 'T' ? '50% 0' : '50% 100%',
          target: i,
          targetDir: h,
          targetArrow: l,
          targetGroup: f,
          targetEndpoint: h === 'L' ? '0 50%' : h === 'R' ? '100% 50%' : h === 'T' ? '50% 0' : '50% 100%'
        }
      e.add({ group: 'edges', data: m, classes: p })
    })
  }
  function jnt(t, e, r) {
    let n = o(
        (l, u) =>
          Object.entries(l).reduce((h, [f, d]) => {
            let p = 0,
              m = Object.entries(d)
            if (m.length === 1) return (h[f] = m[0][1]), h
            for (let g = 0; g < m.length - 1; g++)
              for (let y = g + 1; y < m.length; y++) {
                let [v, x] = m[g],
                  [b, T] = m[y]
                if (r[v]?.[b] === u) (h[f] ??= []), (h[f] = [...h[f], ...x, ...T])
                else if (v === 'default' || b === 'default') (h[f] ??= []), (h[f] = [...h[f], ...x, ...T])
                else {
                  let w = `${f}-${p++}`
                  h[w] = x
                  let E = `${f}-${p++}`
                  h[E] = T
                }
              }
            return h
          }, {}),
        'flattenAlignments'
      ),
      i = e.map(l => {
        let u = {},
          h = {}
        return (
          Object.entries(l).forEach(([f, [d, p]]) => {
            let m = t.getNode(f)?.in ?? 'default'
            ;(u[p] ??= {}), (u[p][m] ??= []), u[p][m].push(f), (h[d] ??= {}), (h[d][m] ??= []), h[d][m].push(f)
          }),
          { horiz: Object.values(n(u, 'horizontal')).filter(f => f.length > 1), vert: Object.values(n(h, 'vertical')).filter(f => f.length > 1) }
        )
      }),
      [a, s] = i.reduce(
        ([l, u], { horiz: h, vert: f }) => [
          [...l, ...h],
          [...u, ...f]
        ],
        [[], []]
      )
    return { horizontal: a, vertical: s }
  }
  function Knt(t) {
    let e = [],
      r = o(i => `${i[0]},${i[1]}`, 'posToStr'),
      n = o(i => i.split(',').map(a => parseInt(a)), 'strToPos')
    return (
      t.forEach(i => {
        let a = Object.fromEntries(Object.entries(i).map(([h, f]) => [r(f), h])),
          s = [r([0, 0])],
          l = {},
          u = { L: [-1, 0], R: [1, 0], T: [0, 1], B: [0, -1] }
        for (; s.length > 0; ) {
          let h = s.shift()
          if (h) {
            l[h] = 1
            let f = a[h]
            if (f) {
              let d = n(h)
              Object.entries(u).forEach(([p, m]) => {
                let g = r([d[0] + m[0], d[1] + m[1]]),
                  y = a[g]
                y && !l[g] && (s.push(g), e.push({ [qF[p]]: y, [qF[I2e(p)]]: f, gap: 1.5 * Mi('iconSize') }))
              })
            }
          }
        }
      }),
      e
    )
  }
  function Qnt(t, e, r, n, i, { spatialMaps: a, groupAlignments: s }) {
    return new Promise(l => {
      let u = Ge('body').append('div').attr('id', 'cy').attr('style', 'display:none'),
        h = sl({
          container: document.getElementById('cy'),
          style: [
            { selector: 'edge', style: { 'curve-style': 'straight', label: 'data(label)', 'source-endpoint': 'data(sourceEndpoint)', 'target-endpoint': 'data(targetEndpoint)' } },
            {
              selector: 'edge.segments',
              style: {
                'curve-style': 'segments',
                'segment-weights': '0',
                'segment-distances': [0.5],
                'edge-distances': 'endpoints',
                'source-endpoint': 'data(sourceEndpoint)',
                'target-endpoint': 'data(targetEndpoint)'
              }
            },
            { selector: 'node', style: { 'compound-sizing-wrt-labels': 'include' } },
            { selector: 'node[label]', style: { 'text-valign': 'bottom', 'text-halign': 'center', 'font-size': `${Mi('fontSize')}px` } },
            { selector: '.node-service', style: { label: 'data(label)', width: 'data(width)', height: 'data(height)' } },
            { selector: '.node-junction', style: { width: 'data(width)', height: 'data(height)' } },
            { selector: '.node-group', style: { padding: `${Mi('padding')}px` } }
          ],
          layout: { name: 'grid', boundingBox: { x1: 0, x2: 100, y1: 0, y2: 100 } }
        })
      u.remove(), Ynt(r, h), Hnt(t, h), Wnt(e, h), Xnt(n, h)
      let f = jnt(i, a, s),
        d = Knt(a),
        p = h.layout({
          name: 'fcose',
          quality: 'proof',
          styleEnabled: !1,
          animate: !1,
          nodeDimensionsIncludeLabels: !1,
          idealEdgeLength(m) {
            let [g, y] = m.connectedNodes(),
              { parent: v } = Yf(g),
              { parent: x } = Yf(y)
            return v === x ? 1.5 * Mi('iconSize') : 0.5 * Mi('iconSize')
          },
          edgeElasticity(m) {
            let [g, y] = m.connectedNodes(),
              { parent: v } = Yf(g),
              { parent: x } = Yf(y)
            return v === x ? 0.45 : 0.001
          },
          alignmentConstraint: f,
          relativePlacementConstraint: d
        })
      p.one('layoutstop', () => {
        function m(g, y, v, x) {
          let b,
            T,
            { x: S, y: w } = g,
            { x: E, y: _ } = y
          ;(T = (x - w + ((S - v) * (w - _)) / (S - E)) / Math.sqrt(1 + Math.pow((w - _) / (S - E), 2))), (b = Math.sqrt(Math.pow(x - w, 2) + Math.pow(v - S, 2) - Math.pow(T, 2)))
          let C = Math.sqrt(Math.pow(E - S, 2) + Math.pow(_ - w, 2))
          b = b / C
          let D = (E - S) * (x - w) - (_ - w) * (v - S)
          switch (!0) {
            case D >= 0:
              D = 1
              break
            case D < 0:
              D = -1
              break
          }
          let O = (E - S) * (v - S) + (_ - w) * (x - w)
          switch (!0) {
            case O >= 0:
              O = 1
              break
            case O < 0:
              O = -1
              break
          }
          return (T = Math.abs(T) * D), (b = b * O), { distances: T, weights: b }
        }
        o(m, 'getSegmentWeights'), h.startBatch()
        for (let g of Object.values(h.edges()))
          if (g.data?.()) {
            let { x: y, y: v } = g.source().position(),
              { x, y: b } = g.target().position()
            if (y !== x && v !== b) {
              let T = g.sourceEndpoint(),
                S = g.targetEndpoint(),
                { sourceDir: w } = CC(g),
                [E, _] = ru(w) ? [T.x, S.y] : [S.x, T.y],
                { weights: C, distances: D } = m(T, S, E, _)
              g.style('segment-distances', D), g.style('segment-weights', C)
            }
          }
        h.endBatch(), p.run()
      }),
        p.run(),
        h.ready(m => {
          X.info('Ready', m), l(h)
        })
    })
  }
  var J2e,
    Znt,
    exe,
    txe = N(() => {
      'use strict'
      jl()
      oF()
      J2e = Aa(Y2e(), 1)
      fr()
      yt()
      Vl()
      xi()
      N4()
      t$()
      AC()
      Z2e()
      X4([{ name: l0.prefix, icons: l0 }])
      sl.use(J2e.default)
      o(Hnt, 'addServices')
      o(Wnt, 'addJunctions')
      o(qnt, 'positionNodes')
      o(Ynt, 'addGroups')
      o(Xnt, 'addEdges')
      o(jnt, 'getAlignments')
      o(Knt, 'getRelativeConstraints')
      o(Qnt, 'layoutArchitecture')
      ;(Znt = o(async (t, e, r, n) => {
        let i = n.db,
          a = i.getServices(),
          s = i.getJunctions(),
          l = i.getGroups(),
          u = i.getEdges(),
          h = i.getDataStructures(),
          f = Li(e),
          d = f.append('g')
        d.attr('class', 'architecture-edges')
        let p = f.append('g')
        p.attr('class', 'architecture-services')
        let m = f.append('g')
        m.attr('class', 'architecture-groups'), await K2e(i, p, a), Q2e(i, p, s)
        let g = await Qnt(a, s, l, u, i, h)
        await X2e(d, g), await j2e(m, g), qnt(i, g), Lo(void 0, f, Mi('padding'), Mi('useMaxWidth'))
      }, 'draw')),
        (exe = { draw: Znt })
    })
  var rxe = {}
  ur(rxe, { diagram: () => Jnt })
  var Jnt,
    nxe = N(() => {
      'use strict'
      H2e()
      N4()
      q2e()
      txe()
      Jnt = { parser: U2e, db: o0, renderer: exe, styles: W2e }
    })
  var by,
    r$ = N(() => {
      'use strict'
      _a()
      mi()
      er()
      zt()
      ci()
      by = class {
        constructor() {
          this.nodes = []
          this.levels = new Map()
          this.outerNodes = []
          this.classes = new Map()
          this.setAccTitle = Ar
          this.getAccTitle = Dr
          this.setDiagramTitle = Or
          this.getDiagramTitle = Nr
          this.getAccDescription = Rr
          this.setAccDescription = Lr
        }
        static {
          o(this, 'TreeMapDB')
        }
        getNodes() {
          return this.nodes
        }
        getConfig() {
          let e = or,
            r = tr()
          return $n({ ...e.treemap, ...(r.treemap ?? {}) })
        }
        addNode(e, r) {
          this.nodes.push(e), this.levels.set(e, r), r === 0 && (this.outerNodes.push(e), (this.root ??= e))
        }
        getRoot() {
          return { name: '', children: this.outerNodes }
        }
        addClass(e, r) {
          let n = this.classes.get(e) ?? { id: e, styles: [], textStyles: [] },
            i = r.replace(/\\,/g, '\xA7\xA7\xA7').replace(/,/g, ';').replace(/§§§/g, ',').split(';')
          i &&
            i.forEach(a => {
              S2(a) && (n?.textStyles ? n.textStyles.push(a) : (n.textStyles = [a])), n?.styles ? n.styles.push(a) : (n.styles = [a])
            }),
            this.classes.set(e, n)
        }
        getClasses() {
          return this.classes
        }
        getStylesForClass(e) {
          return this.classes.get(e)?.styles ?? []
        }
        clear() {
          kr(), (this.nodes = []), (this.levels = new Map()), (this.outerNodes = []), (this.classes = new Map()), (this.root = void 0)
        }
      }
    })
  function sxe(t) {
    if (!t.length) return []
    let e = [],
      r = []
    return (
      t.forEach(n => {
        let i = { name: n.name, children: n.type === 'Leaf' ? void 0 : [] }
        for (
          i.classSelector = n?.classSelector, n?.cssCompiledStyles && (i.cssCompiledStyles = [n.cssCompiledStyles]), n.type === 'Leaf' && n.value !== void 0 && (i.value = n.value);
          r.length > 0 && r[r.length - 1].level >= n.level;

        )
          r.pop()
        if (r.length === 0) e.push(i)
        else {
          let a = r[r.length - 1].node
          a.children ? a.children.push(i) : (a.children = [i])
        }
        n.type !== 'Leaf' && r.push({ node: i, level: n.level })
      }),
      e
    )
  }
  var oxe = N(() => {
    'use strict'
    o(sxe, 'buildHierarchy')
  })
  var nit,
    iit,
    n$,
    lxe = N(() => {
      'use strict'
      bf()
      yt()
      Mp()
      oxe()
      r$()
      ;(nit = o((t, e) => {
        Jo(t, e)
        let r = []
        for (let a of t.TreemapRows ?? []) a.$type === 'ClassDefStatement' && e.addClass(a.className ?? '', a.styleText ?? '')
        for (let a of t.TreemapRows ?? []) {
          let s = a.item
          if (!s) continue
          let l = a.indent ? parseInt(a.indent) : 0,
            u = iit(s),
            h = s.classSelector ? e.getStylesForClass(s.classSelector) : [],
            f = h.length > 0 ? h.join(';') : void 0,
            d = { level: l, name: u, type: s.$type, value: s.value, classSelector: s.classSelector, cssCompiledStyles: f }
          r.push(d)
        }
        let n = sxe(r),
          i = o((a, s) => {
            for (let l of a) e.addNode(l, s), l.children && l.children.length > 0 && i(l.children, s + 1)
          }, 'addNodesRecursively')
        i(n, 0)
      }, 'populate')),
        (iit = o(t => (t.name ? String(t.name) : ''), 'getItemName')),
        (n$ = {
          parser: { yy: void 0 },
          parse: o(async t => {
            try {
              let r = await vs('treemap', t)
              X.debug('Treemap AST:', r)
              let n = n$.parser?.yy
              if (!(n instanceof by))
                throw new Error(
                  'parser.parser?.yy was not a TreemapDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.'
                )
              nit(r, n)
            } catch (e) {
              throw (X.error('Error parsing treemap:', e), e)
            }
          }, 'parse')
        })
    })
  var ait,
    Ty,
    P4,
    sit,
    oit,
    cxe,
    uxe = N(() => {
      'use strict'
      Vl()
      np()
      xi()
      fr()
      zt()
      mi()
      yt()
      ;(ait = 10),
        (Ty = 10),
        (P4 = 25),
        (sit = o((t, e, r, n) => {
          let i = n.db,
            a = i.getConfig(),
            s = a.padding ?? ait,
            l = i.getDiagramTitle(),
            u = i.getRoot(),
            { themeVariables: h } = tr()
          if (!u) return
          let f = l ? 30 : 0,
            d = Li(e),
            p = a.nodeWidth ? a.nodeWidth * Ty : 960,
            m = a.nodeHeight ? a.nodeHeight * Ty : 500,
            g = p,
            y = m + f
          d.attr('viewBox', `0 0 ${g} ${y}`), fn(d, y, g, a.useMaxWidth)
          let v
          try {
            let A = a.valueFormat || ','
            if (A === '$0,0') v = o(I => '$' + cc(',')(I), 'valueFormat')
            else if (A.startsWith('$') && A.includes(',')) {
              let I = /\.\d+/.exec(A),
                M = I ? I[0] : ''
              v = o(P => '$' + cc(',' + M)(P), 'valueFormat')
            } else if (A.startsWith('$')) {
              let I = A.substring(1)
              v = o(M => '$' + cc(I || '')(M), 'valueFormat')
            } else v = cc(A)
          } catch (A) {
            X.error('Error creating format function:', A), (v = cc(','))
          }
          let x = Js().range(['transparent', h.cScale0, h.cScale1, h.cScale2, h.cScale3, h.cScale4, h.cScale5, h.cScale6, h.cScale7, h.cScale8, h.cScale9, h.cScale10, h.cScale11]),
            b = Js().range([
              'transparent',
              h.cScalePeer0,
              h.cScalePeer1,
              h.cScalePeer2,
              h.cScalePeer3,
              h.cScalePeer4,
              h.cScalePeer5,
              h.cScalePeer6,
              h.cScalePeer7,
              h.cScalePeer8,
              h.cScalePeer9,
              h.cScalePeer10,
              h.cScalePeer11
            ]),
            T = Js().range([
              h.cScaleLabel0,
              h.cScaleLabel1,
              h.cScaleLabel2,
              h.cScaleLabel3,
              h.cScaleLabel4,
              h.cScaleLabel5,
              h.cScaleLabel6,
              h.cScaleLabel7,
              h.cScaleLabel8,
              h.cScaleLabel9,
              h.cScaleLabel10,
              h.cScaleLabel11
            ])
          l &&
            d
              .append('text')
              .attr('x', g / 2)
              .attr('y', f / 2)
              .attr('class', 'treemapTitle')
              .attr('text-anchor', 'middle')
              .attr('dominant-baseline', 'middle')
              .text(l)
          let S = d.append('g').attr('transform', `translate(0, ${f})`).attr('class', 'treemapContainer'),
            w = z0(u)
              .sum(A => A.value ?? 0)
              .sort((A, I) => (I.value ?? 0) - (A.value ?? 0)),
            _ = D5()
              .size([p, m])
              .paddingTop(A => (A.children && A.children.length > 0 ? P4 + Ty : 0))
              .paddingInner(s)
              .paddingLeft(A => (A.children && A.children.length > 0 ? Ty : 0))
              .paddingRight(A => (A.children && A.children.length > 0 ? Ty : 0))
              .paddingBottom(A => (A.children && A.children.length > 0 ? Ty : 0))
              .round(!0)(w),
            C = _.descendants().filter(A => A.children && A.children.length > 0),
            D = S.selectAll('.treemapSection')
              .data(C)
              .enter()
              .append('g')
              .attr('class', 'treemapSection')
              .attr('transform', A => `translate(${A.x0},${A.y0})`)
          D.append('rect')
            .attr('width', A => A.x1 - A.x0)
            .attr('height', P4)
            .attr('class', 'treemapSectionHeader')
            .attr('fill', 'none')
            .attr('fill-opacity', 0.6)
            .attr('stroke-width', 0.6)
            .attr('style', A => (A.depth === 0 ? 'display: none;' : '')),
            D.append('clipPath')
              .attr('id', (A, I) => `clip-section-${e}-${I}`)
              .append('rect')
              .attr('width', A => Math.max(0, A.x1 - A.x0 - 12))
              .attr('height', P4),
            D.append('rect')
              .attr('width', A => A.x1 - A.x0)
              .attr('height', A => A.y1 - A.y0)
              .attr('class', (A, I) => `treemapSection section${I}`)
              .attr('fill', A => x(A.data.name))
              .attr('fill-opacity', 0.6)
              .attr('stroke', A => b(A.data.name))
              .attr('stroke-width', 2)
              .attr('stroke-opacity', 0.4)
              .attr('style', A => {
                if (A.depth === 0) return 'display: none;'
                let I = Ye({ cssCompiledStyles: A.data.cssCompiledStyles })
                return I.nodeStyles + ';' + I.borderStyles.join(';')
              }),
            D.append('text')
              .attr('class', 'treemapSectionLabel')
              .attr('x', 6)
              .attr('y', P4 / 2)
              .attr('dominant-baseline', 'middle')
              .text(A => (A.depth === 0 ? '' : A.data.name))
              .attr('font-weight', 'bold')
              .attr('style', A => {
                if (A.depth === 0) return 'display: none;'
                let I = 'dominant-baseline: middle; font-size: 12px; fill:' + T(A.data.name) + '; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;',
                  M = Ye({ cssCompiledStyles: A.data.cssCompiledStyles })
                return I + M.labelStyles.replace('color:', 'fill:')
              })
              .each(function (A) {
                if (A.depth === 0) return
                let I = Ge(this),
                  M = A.data.name
                I.text(M)
                let P = A.x1 - A.x0,
                  B = 6,
                  F
                a.showValues !== !1 && A.value ? (F = P - 10 - 30 - 10 - B) : (F = P - B - 6)
                let $ = Math.max(15, F),
                  U = I.node()
                if (U.getComputedTextLength() > $) {
                  let ee = '...',
                    Y = M
                  for (; Y.length > 0; ) {
                    if (((Y = M.substring(0, Y.length - 1)), Y.length === 0)) {
                      I.text(ee), U.getComputedTextLength() > $ && I.text('')
                      break
                    }
                    if ((I.text(Y + ee), U.getComputedTextLength() <= $)) break
                  }
                }
              }),
            a.showValues !== !1 &&
              D.append('text')
                .attr('class', 'treemapSectionValue')
                .attr('x', A => A.x1 - A.x0 - 10)
                .attr('y', P4 / 2)
                .attr('text-anchor', 'end')
                .attr('dominant-baseline', 'middle')
                .text(A => (A.value ? v(A.value) : ''))
                .attr('font-style', 'italic')
                .attr('style', A => {
                  if (A.depth === 0) return 'display: none;'
                  let I =
                      'text-anchor: end; dominant-baseline: middle; font-size: 10px; fill:' + T(A.data.name) + '; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;',
                    M = Ye({ cssCompiledStyles: A.data.cssCompiledStyles })
                  return I + M.labelStyles.replace('color:', 'fill:')
                })
          let O = _.leaves(),
            R = S.selectAll('.treemapLeafGroup')
              .data(O)
              .enter()
              .append('g')
              .attr('class', (A, I) => `treemapNode treemapLeafGroup leaf${I}${A.data.classSelector ? ` ${A.data.classSelector}` : ''}x`)
              .attr('transform', A => `translate(${A.x0},${A.y0})`)
          R.append('rect')
            .attr('width', A => A.x1 - A.x0)
            .attr('height', A => A.y1 - A.y0)
            .attr('class', 'treemapLeaf')
            .attr('fill', A => (A.parent ? x(A.parent.data.name) : x(A.data.name)))
            .attr('style', A => Ye({ cssCompiledStyles: A.data.cssCompiledStyles }).nodeStyles)
            .attr('fill-opacity', 0.3)
            .attr('stroke', A => (A.parent ? x(A.parent.data.name) : x(A.data.name)))
            .attr('stroke-width', 3),
            R.append('clipPath')
              .attr('id', (A, I) => `clip-${e}-${I}`)
              .append('rect')
              .attr('width', A => Math.max(0, A.x1 - A.x0 - 4))
              .attr('height', A => Math.max(0, A.y1 - A.y0 - 4)),
            R.append('text')
              .attr('class', 'treemapLabel')
              .attr('x', A => (A.x1 - A.x0) / 2)
              .attr('y', A => (A.y1 - A.y0) / 2)
              .attr('style', A => {
                let I = 'text-anchor: middle; dominant-baseline: middle; font-size: 38px;fill:' + T(A.data.name) + ';',
                  M = Ye({ cssCompiledStyles: A.data.cssCompiledStyles })
                return I + M.labelStyles.replace('color:', 'fill:')
              })
              .attr('clip-path', (A, I) => `url(#clip-${e}-${I})`)
              .text(A => A.data.name)
              .each(function (A) {
                let I = Ge(this),
                  M = A.x1 - A.x0,
                  P = A.y1 - A.y0,
                  B = I.node(),
                  F = 4,
                  z = M - 2 * F,
                  $ = P - 2 * F
                if (z < 10 || $ < 10) {
                  I.style('display', 'none')
                  return
                }
                let U = parseInt(I.style('font-size'), 10),
                  K = 8,
                  ee = 28,
                  Y = 0.6,
                  ce = 6,
                  Z = 2
                for (; B.getComputedTextLength() > z && U > K; ) U--, I.style('font-size', `${U}px`)
                let ue = Math.max(ce, Math.min(ee, Math.round(U * Y))),
                  Q = U + Z + ue
                for (; Q > $ && U > K && (U--, (ue = Math.max(ce, Math.min(ee, Math.round(U * Y)))), !(ue < ce && U === K)); )
                  I.style('font-size', `${U}px`), (Q = U + Z + ue), ue <= ce && Q > $
                I.style('font-size', `${U}px`), (B.getComputedTextLength() > z || U < K || $ < U) && I.style('display', 'none')
              }),
            a.showValues !== !1 &&
              R.append('text')
                .attr('class', 'treemapValue')
                .attr('x', I => (I.x1 - I.x0) / 2)
                .attr('y', function (I) {
                  return (I.y1 - I.y0) / 2
                })
                .attr('style', I => {
                  let M = 'text-anchor: middle; dominant-baseline: hanging; font-size: 28px;fill:' + T(I.data.name) + ';',
                    P = Ye({ cssCompiledStyles: I.data.cssCompiledStyles })
                  return M + P.labelStyles.replace('color:', 'fill:')
                })
                .attr('clip-path', (I, M) => `url(#clip-${e}-${M})`)
                .text(I => (I.value ? v(I.value) : ''))
                .each(function (I) {
                  let M = Ge(this),
                    P = this.parentNode
                  if (!P) {
                    M.style('display', 'none')
                    return
                  }
                  let B = Ge(P).select('.treemapLabel')
                  if (B.empty() || B.style('display') === 'none') {
                    M.style('display', 'none')
                    return
                  }
                  let F = parseFloat(B.style('font-size')),
                    z = 28,
                    $ = 0.6,
                    U = 6,
                    K = 2,
                    ee = Math.max(U, Math.min(z, Math.round(F * $)))
                  M.style('font-size', `${ee}px`)
                  let ce = (I.y1 - I.y0) / 2 + F / 2 + K
                  M.attr('y', ce)
                  let Z = I.x1 - I.x0,
                    j = I.y1 - I.y0 - 4,
                    ne = Z - 2 * 4
                  M.node().getComputedTextLength() > ne || ce + ee > j || ee < U ? M.style('display', 'none') : M.style('display', null)
                })
          let L = a.diagramPadding ?? 8
          Yo(d, L, 'flowchart', a?.useMaxWidth || !1)
        }, 'draw')),
        (oit = o(function (t, e) {
          return e.db.getClasses()
        }, 'getClasses')),
        (cxe = { draw: sit, getClasses: oit })
    })
  var lit,
    cit,
    hxe,
    fxe = N(() => {
      'use strict'
      er()
      ;(lit = {
        sectionStrokeColor: 'black',
        sectionStrokeWidth: '1',
        sectionFillColor: '#efefef',
        leafStrokeColor: 'black',
        leafStrokeWidth: '1',
        leafFillColor: '#efefef',
        labelColor: 'black',
        labelFontSize: '12px',
        valueFontSize: '10px',
        valueColor: 'black',
        titleColor: 'black',
        titleFontSize: '14px'
      }),
        (cit = o(({ treemap: t } = {}) => {
          let e = $n(lit, t)
          return `
  .treemapNode.section {
    stroke: ${e.sectionStrokeColor};
    stroke-width: ${e.sectionStrokeWidth};
    fill: ${e.sectionFillColor};
  }
  .treemapNode.leaf {
    stroke: ${e.leafStrokeColor};
    stroke-width: ${e.leafStrokeWidth};
    fill: ${e.leafFillColor};
  }
  .treemapLabel {
    fill: ${e.labelColor};
    font-size: ${e.labelFontSize};
  }
  .treemapValue {
    fill: ${e.valueColor};
    font-size: ${e.valueFontSize};
  }
  .treemapTitle {
    fill: ${e.titleColor};
    font-size: ${e.titleFontSize};
  }
  `
        }, 'getStyles')),
        (hxe = cit)
    })
  var dxe = {}
  ur(dxe, { diagram: () => uit })
  var uit,
    pxe = N(() => {
      'use strict'
      r$()
      lxe()
      uxe()
      fxe()
      uit = {
        parser: n$,
        get db() {
          return new by()
        },
        renderer: cxe,
        styles: hxe
      }
    })
  var Kit = {}
  ur(Kit, { default: () => jit })
  jl()
  r7()
  rd()
  var cK = 'c4',
    lAe = o(t => /^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(t), 'detector'),
    cAe = o(async () => {
      let { diagram: t } = await Promise.resolve().then(() => (lK(), oK))
      return { id: cK, diagram: t }
    }, 'loader'),
    uAe = { id: cK, detector: lAe, loader: cAe },
    uK = uAe
  var use = 'flowchart',
    qPe = o((t, e) => (e?.flowchart?.defaultRenderer === 'dagre-wrapper' || e?.flowchart?.defaultRenderer === 'elk' ? !1 : /^\s*graph/.test(t)), 'detector'),
    YPe = o(async () => {
      let { diagram: t } = await Promise.resolve().then(() => (bk(), xk))
      return { id: use, diagram: t }
    }, 'loader'),
    XPe = { id: use, detector: qPe, loader: YPe },
    hse = XPe
  var fse = 'flowchart-v2',
    jPe = o(
      (t, e) =>
        e?.flowchart?.defaultRenderer === 'dagre-d3'
          ? !1
          : (e?.flowchart?.defaultRenderer === 'elk' && (e.layout = 'elk'),
            /^\s*graph/.test(t) && e?.flowchart?.defaultRenderer === 'dagre-wrapper' ? !0 : /^\s*flowchart/.test(t)),
      'detector'
    ),
    KPe = o(async () => {
      let { diagram: t } = await Promise.resolve().then(() => (bk(), xk))
      return { id: fse, diagram: t }
    }, 'loader'),
    QPe = { id: fse, detector: jPe, loader: KPe },
    dse = QPe
  var wse = 'er',
    rBe = o(t => /^\s*erDiagram/.test(t), 'detector'),
    nBe = o(async () => {
      let { diagram: t } = await Promise.resolve().then(() => (Tse(), bse))
      return { id: wse, diagram: t }
    }, 'loader'),
    iBe = { id: wse, detector: rBe, loader: nBe },
    kse = iBe
  var Lhe = 'gitGraph',
    IGe = o(t => /^\s*gitGraph/.test(t), 'detector'),
    OGe = o(async () => {
      let { diagram: t } = await Promise.resolve().then(() => (Dhe(), _he))
      return { id: Lhe, diagram: t }
    }, 'loader'),
    PGe = { id: Lhe, detector: IGe, loader: OGe },
    Rhe = PGe
  var ofe = 'gantt',
    kVe = o(t => /^\s*gantt/.test(t), 'detector'),
    EVe = o(async () => {
      let { diagram: t } = await Promise.resolve().then(() => (sfe(), afe))
      return { id: ofe, diagram: t }
    }, 'loader'),
    SVe = { id: ofe, detector: kVe, loader: EVe },
    lfe = SVe
  var yfe = 'info',
    RVe = o(t => /^\s*info/.test(t), 'detector'),
    NVe = o(async () => {
      let { diagram: t } = await Promise.resolve().then(() => (gfe(), mfe))
      return { id: yfe, diagram: t }
    }, 'loader'),
    vfe = { id: yfe, detector: RVe, loader: NVe }
  var _fe = 'pie',
    WVe = o(t => /^\s*pie/.test(t), 'detector'),
    qVe = o(async () => {
      let { diagram: t } = await Promise.resolve().then(() => (Afe(), Cfe))
      return { id: _fe, diagram: t }
    }, 'loader'),
    Dfe = { id: _fe, detector: WVe, loader: qVe }
  var Vfe = 'quadrantChart',
    uUe = o(t => /^\s*quadrantChart/.test(t), 'detector'),
    hUe = o(async () => {
      let { diagram: t } = await Promise.resolve().then(() => (Gfe(), zfe))
      return { id: Vfe, diagram: t }
    }, 'loader'),
    fUe = { id: Vfe, detector: uUe, loader: hUe },
    Ufe = fUe
  var gde = 'xychart',
    DUe = o(t => /^\s*xychart-beta/.test(t), 'detector'),
    LUe = o(async () => {
      let { diagram: t } = await Promise.resolve().then(() => (mde(), pde))
      return { id: gde, diagram: t }
    }, 'loader'),
    RUe = { id: gde, detector: DUe, loader: LUe },
    yde = RUe
  var Cde = 'requirement',
    OUe = o(t => /^\s*requirement(Diagram)?/.test(t), 'detector'),
    PUe = o(async () => {
      let { diagram: t } = await Promise.resolve().then(() => (Sde(), Ede))
      return { id: Cde, diagram: t }
    }, 'loader'),
    BUe = { id: Cde, detector: OUe, loader: PUe },
    Ade = BUe
  var Yde = 'sequence',
    bHe = o(t => /^\s*sequenceDiagram/.test(t), 'detector'),
    THe = o(async () => {
      let { diagram: t } = await Promise.resolve().then(() => (qde(), Wde))
      return { id: Yde, diagram: t }
    }, 'loader'),
    wHe = { id: Yde, detector: bHe, loader: THe },
    Xde = wHe
  var epe = 'class',
    _He = o((t, e) => (e?.class?.defaultRenderer === 'dagre-wrapper' ? !1 : /^\s*classDiagram/.test(t)), 'detector'),
    DHe = o(async () => {
      let { diagram: t } = await Promise.resolve().then(() => (Jde(), Zde))
      return { id: epe, diagram: t }
    }, 'loader'),
    LHe = { id: epe, detector: _He, loader: DHe },
    tpe = LHe
  var ipe = 'classDiagram',
    NHe = o((t, e) => (/^\s*classDiagram/.test(t) && e?.class?.defaultRenderer === 'dagre-wrapper' ? !0 : /^\s*classDiagram-v2/.test(t)), 'detector'),
    MHe = o(async () => {
      let { diagram: t } = await Promise.resolve().then(() => (npe(), rpe))
      return { id: ipe, diagram: t }
    }, 'loader'),
    IHe = { id: ipe, detector: NHe, loader: MHe },
    ape = IHe
  var Ppe = 'state',
    aWe = o((t, e) => (e?.state?.defaultRenderer === 'dagre-wrapper' ? !1 : /^\s*stateDiagram/.test(t)), 'detector'),
    sWe = o(async () => {
      let { diagram: t } = await Promise.resolve().then(() => (Ope(), Ipe))
      return { id: Ppe, diagram: t }
    }, 'loader'),
    oWe = { id: Ppe, detector: aWe, loader: sWe },
    Bpe = oWe
  var zpe = 'stateDiagram',
    cWe = o((t, e) => !!(/^\s*stateDiagram-v2/.test(t) || (/^\s*stateDiagram/.test(t) && e?.state?.defaultRenderer === 'dagre-wrapper')), 'detector'),
    uWe = o(async () => {
      let { diagram: t } = await Promise.resolve().then(() => ($pe(), Fpe))
      return { id: zpe, diagram: t }
    }, 'loader'),
    hWe = { id: zpe, detector: cWe, loader: uWe },
    Gpe = hWe
  var n0e = 'journey',
    NWe = o(t => /^\s*journey/.test(t), 'detector'),
    MWe = o(async () => {
      let { diagram: t } = await Promise.resolve().then(() => (r0e(), t0e))
      return { id: n0e, diagram: t }
    }, 'loader'),
    IWe = { id: n0e, detector: NWe, loader: MWe },
    i0e = IWe
  yt()
  Vl()
  xi()
  var OWe = o((t, e, r) => {
      X.debug(`rendering svg for syntax error
`)
      let n = Li(e),
        i = n.append('g')
      n.attr('viewBox', '0 0 2412 512'),
        fn(n, 100, 512, !0),
        i
          .append('path')
          .attr('class', 'error-icon')
          .attr(
            'd',
            'm411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z'
          ),
        i
          .append('path')
          .attr('class', 'error-icon')
          .attr(
            'd',
            'm459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z'
          ),
        i
          .append('path')
          .attr('class', 'error-icon')
          .attr(
            'd',
            'm340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z'
          ),
        i.append('path').attr('class', 'error-icon').attr('d', 'm400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z'),
        i.append('path').attr('class', 'error-icon').attr('d', 'm496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z'),
        i
          .append('path')
          .attr('class', 'error-icon')
          .attr(
            'd',
            'm436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z'
          ),
        i.append('text').attr('class', 'error-text').attr('x', 1440).attr('y', 250).attr('font-size', '150px').style('text-anchor', 'middle').text('Syntax error in text'),
        i.append('text').attr('class', 'error-text').attr('x', 1250).attr('y', 400).attr('font-size', '100px').style('text-anchor', 'middle').text(`mermaid version ${r}`)
    }, 'draw'),
    QP = { draw: OWe },
    a0e = QP
  var PWe = { db: {}, renderer: QP, parser: { parse: o(() => {}, 'parse') } },
    s0e = PWe
  var o0e = 'flowchart-elk',
    BWe = o((t, e = {}) => (/^\s*flowchart-elk/.test(t) || (/^\s*flowchart|graph/.test(t) && e?.flowchart?.defaultRenderer === 'elk') ? ((e.layout = 'elk'), !0) : !1), 'detector'),
    FWe = o(async () => {
      let { diagram: t } = await Promise.resolve().then(() => (bk(), xk))
      return { id: o0e, diagram: t }
    }, 'loader'),
    $We = { id: o0e, detector: BWe, loader: FWe },
    l0e = $We
  var I0e = 'timeline',
    iqe = o(t => /^\s*timeline/.test(t), 'detector'),
    aqe = o(async () => {
      let { diagram: t } = await Promise.resolve().then(() => (M0e(), N0e))
      return { id: I0e, diagram: t }
    }, 'loader'),
    sqe = { id: I0e, detector: iqe, loader: aqe },
    O0e = sqe
  var uye = 'mindmap',
    Let = o(t => /^\s*mindmap/.test(t), 'detector'),
    Ret = o(async () => {
      let { diagram: t } = await Promise.resolve().then(() => (cye(), lye))
      return { id: uye, diagram: t }
    }, 'loader'),
    Net = { id: uye, detector: Let, loader: Ret },
    hye = Net
  var kye = 'kanban',
    Xet = o(t => /^\s*kanban/.test(t), 'detector'),
    jet = o(async () => {
      let { diagram: t } = await Promise.resolve().then(() => (wye(), Tye))
      return { id: kye, diagram: t }
    }, 'loader'),
    Ket = { id: kye, detector: Xet, loader: jet },
    Eye = Ket
  var ave = 'sankey',
    xtt = o(t => /^\s*sankey-beta/.test(t), 'detector'),
    btt = o(async () => {
      let { diagram: t } = await Promise.resolve().then(() => (ive(), nve))
      return { id: ave, diagram: t }
    }, 'loader'),
    Ttt = { id: ave, detector: xtt, loader: btt },
    sve = Ttt
  var gve = 'packet',
    Itt = o(t => /^\s*packet(-beta)?/.test(t), 'detector'),
    Ott = o(async () => {
      let { diagram: t } = await Promise.resolve().then(() => (mve(), pve))
      return { id: gve, diagram: t }
    }, 'loader'),
    yve = { id: gve, detector: Itt, loader: Ott }
  var _ve = 'radar',
    nrt = o(t => /^\s*radar-beta/.test(t), 'detector'),
    irt = o(async () => {
      let { diagram: t } = await Promise.resolve().then(() => (Ave(), Cve))
      return { id: _ve, diagram: t }
    }, 'loader'),
    Dve = { id: _ve, detector: nrt, loader: irt }
  var N2e = 'block',
    Snt = o(t => /^\s*block-beta/.test(t), 'detector'),
    Cnt = o(async () => {
      let { diagram: t } = await Promise.resolve().then(() => (R2e(), L2e))
      return { id: N2e, diagram: t }
    }, 'loader'),
    Ant = { id: N2e, detector: Snt, loader: Cnt },
    M2e = Ant
  var ixe = 'architecture',
    eit = o(t => /^\s*architecture/.test(t), 'detector'),
    tit = o(async () => {
      let { diagram: t } = await Promise.resolve().then(() => (nxe(), rxe))
      return { id: ixe, diagram: t }
    }, 'loader'),
    rit = { id: ixe, detector: eit, loader: tit },
    axe = rit
  rd()
  Gt()
  var mxe = 'treemap',
    hit = o(t => /^\s*treemap/.test(t), 'detector'),
    fit = o(async () => {
      let { diagram: t } = await Promise.resolve().then(() => (pxe(), dxe))
      return { id: mxe, diagram: t }
    }, 'loader'),
    gxe = { id: mxe, detector: hit, loader: fit }
  var yxe = !1,
    wy = o(() => {
      yxe ||
        ((yxe = !0),
        dd('error', s0e, t => t.toLowerCase().trim() === 'error'),
        dd(
          '---',
          {
            db: { clear: o(() => {}, 'clear') },
            styles: {},
            renderer: { draw: o(() => {}, 'draw') },
            parser: {
              parse: o(() => {
                throw new Error(
                  "Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks"
                )
              }, 'parse')
            },
            init: o(() => null, 'init')
          },
          t => t.toLowerCase().trimStart().startsWith('---')
        ),
        Ly(l0e, hye, axe),
        Ly(uK, Eye, ape, tpe, kse, lfe, vfe, Dfe, Ade, Xde, dse, hse, O0e, Rhe, Gpe, Bpe, i0e, Ufe, sve, yve, yde, M2e, Dve, gxe))
    }, 'addDiagrams')
  yt()
  rd()
  Gt()
  var vxe = o(async () => {
    X.debug('Loading registered diagrams')
    let e = (
      await Promise.allSettled(
        Object.entries(au).map(async ([r, { detector: n, loader: i }]) => {
          if (i)
            try {
              iv(r)
            } catch {
              try {
                let { diagram: a, id: s } = await i()
                dd(s, a, n)
              } catch (a) {
                throw (X.error(`Failed to load external diagram with key ${r}. Removing from detectors.`), delete au[r], a)
              }
            }
        })
      )
    ).filter(r => r.status === 'rejected')
    if (e.length > 0) {
      X.error(`Failed to load ${e.length} external diagrams`)
      for (let r of e) X.error(r)
      throw new Error(`Failed to load ${e.length} external diagrams`)
    }
  }, 'loadRegisteredDiagrams')
  yt()
  fr()
  var _C = 'comm',
    DC = 'rule',
    LC = 'decl'
  var xxe = '@import'
  var bxe = '@namespace',
    Txe = '@keyframes'
  var wxe = '@layer'
  var i$ = Math.abs,
    B4 = String.fromCharCode
  function RC(t) {
    return t.trim()
  }
  o(RC, 'trim')
  function F4(t, e, r) {
    return t.replace(e, r)
  }
  o(F4, 'replace')
  function kxe(t, e, r) {
    return t.indexOf(e, r)
  }
  o(kxe, 'indexof')
  function Xf(t, e) {
    return t.charCodeAt(e) | 0
  }
  o(Xf, 'charat')
  function jf(t, e, r) {
    return t.slice(e, r)
  }
  o(jf, 'substr')
  function To(t) {
    return t.length
  }
  o(To, 'strlen')
  function Exe(t) {
    return t.length
  }
  o(Exe, 'sizeof')
  function ky(t, e) {
    return e.push(t), t
  }
  o(ky, 'append')
  var NC = 1,
    Ey = 1,
    Sxe = 0,
    ll = 0,
    Ii = 0,
    Cy = ''
  function MC(t, e, r, n, i, a, s, l) {
    return { value: t, root: e, parent: r, type: n, props: i, children: a, line: NC, column: Ey, length: s, return: '', siblings: l }
  }
  o(MC, 'node')
  function Cxe() {
    return Ii
  }
  o(Cxe, 'char')
  function Axe() {
    return (Ii = ll > 0 ? Xf(Cy, --ll) : 0), Ey--, Ii === 10 && ((Ey = 1), NC--), Ii
  }
  o(Axe, 'prev')
  function cl() {
    return (Ii = ll < Sxe ? Xf(Cy, ll++) : 0), Ey++, Ii === 10 && ((Ey = 1), NC++), Ii
  }
  o(cl, 'next')
  function lh() {
    return Xf(Cy, ll)
  }
  o(lh, 'peek')
  function $4() {
    return ll
  }
  o($4, 'caret')
  function IC(t, e) {
    return jf(Cy, t, e)
  }
  o(IC, 'slice')
  function Sy(t) {
    switch (t) {
      case 0:
      case 9:
      case 10:
      case 13:
      case 32:
        return 5
      case 33:
      case 43:
      case 44:
      case 47:
      case 62:
      case 64:
      case 126:
      case 59:
      case 123:
      case 125:
        return 4
      case 58:
        return 3
      case 34:
      case 39:
      case 40:
      case 91:
        return 2
      case 41:
      case 93:
        return 1
    }
    return 0
  }
  o(Sy, 'token')
  function _xe(t) {
    return (NC = Ey = 1), (Sxe = To((Cy = t))), (ll = 0), []
  }
  o(_xe, 'alloc')
  function Dxe(t) {
    return (Cy = ''), t
  }
  o(Dxe, 'dealloc')
  function OC(t) {
    return RC(IC(ll - 1, a$(t === 91 ? t + 2 : t === 40 ? t + 1 : t)))
  }
  o(OC, 'delimit')
  function Lxe(t) {
    for (; (Ii = lh()) && Ii < 33; ) cl()
    return Sy(t) > 2 || Sy(Ii) > 3 ? '' : ' '
  }
  o(Lxe, 'whitespace')
  function Rxe(t, e) {
    for (; --e && cl() && !(Ii < 48 || Ii > 102 || (Ii > 57 && Ii < 65) || (Ii > 70 && Ii < 97)); );
    return IC(t, $4() + (e < 6 && lh() == 32 && cl() == 32))
  }
  o(Rxe, 'escaping')
  function a$(t) {
    for (; cl(); )
      switch (Ii) {
        case t:
          return ll
        case 34:
        case 39:
          t !== 34 && t !== 39 && a$(Ii)
          break
        case 40:
          t === 41 && a$(t)
          break
        case 92:
          cl()
          break
      }
    return ll
  }
  o(a$, 'delimiter')
  function Nxe(t, e) {
    for (; cl() && t + Ii !== 57; ) if (t + Ii === 84 && lh() === 47) break
    return '/*' + IC(e, ll - 1) + '*' + B4(t === 47 ? t : cl())
  }
  o(Nxe, 'commenter')
  function Mxe(t) {
    for (; !Sy(lh()); ) cl()
    return IC(t, ll)
  }
  o(Mxe, 'identifier')
  function Pxe(t) {
    return Dxe(PC('', null, null, null, [''], (t = _xe(t)), 0, [0], t))
  }
  o(Pxe, 'compile')
  function PC(t, e, r, n, i, a, s, l, u) {
    for (var h = 0, f = 0, d = s, p = 0, m = 0, g = 0, y = 1, v = 1, x = 1, b = 0, T = '', S = i, w = a, E = n, _ = T; v; )
      switch (((g = b), (b = cl()))) {
        case 40:
          if (g != 108 && Xf(_, d - 1) == 58) {
            kxe((_ += F4(OC(b), '&', '&\f')), '&\f', i$(h ? l[h - 1] : 0)) != -1 && (x = -1)
            break
          }
        case 34:
        case 39:
        case 91:
          _ += OC(b)
          break
        case 9:
        case 10:
        case 13:
        case 32:
          _ += Lxe(g)
          break
        case 92:
          _ += Rxe($4() - 1, 7)
          continue
        case 47:
          switch (lh()) {
            case 42:
            case 47:
              ky(dit(Nxe(cl(), $4()), e, r, u), u), (Sy(g || 1) == 5 || Sy(lh() || 1) == 5) && To(_) && jf(_, -1, void 0) !== ' ' && (_ += ' ')
              break
            default:
              _ += '/'
          }
          break
        case 123 * y:
          l[h++] = To(_) * x
        case 125 * y:
        case 59:
        case 0:
          switch (b) {
            case 0:
            case 125:
              v = 0
            case 59 + f:
              x == -1 && (_ = F4(_, /\f/g, '')),
                m > 0 && (To(_) - d || (y === 0 && g === 47)) && ky(m > 32 ? Oxe(_ + ';', n, r, d - 1, u) : Oxe(F4(_, ' ', '') + ';', n, r, d - 2, u), u)
              break
            case 59:
              _ += ';'
            default:
              if ((ky((E = Ixe(_, e, r, h, f, i, l, T, (S = []), (w = []), d, a)), a), b === 123))
                if (f === 0) PC(_, e, E, E, S, a, d, l, w)
                else {
                  switch (p) {
                    case 99:
                      if (Xf(_, 3) === 110) break
                    case 108:
                      if (Xf(_, 2) === 97) break
                    default:
                      f = 0
                    case 100:
                    case 109:
                    case 115:
                  }
                  f ? PC(t, E, E, n && ky(Ixe(t, E, E, 0, 0, i, l, T, i, (S = []), d, w), w), i, w, d, l, n ? S : w) : PC(_, E, E, E, [''], w, 0, l, w)
                }
          }
          ;(h = f = m = 0), (y = x = 1), (T = _ = ''), (d = s)
          break
        case 58:
          ;(d = 1 + To(_)), (m = g)
        default:
          if (y < 1) {
            if (b == 123) --y
            else if (b == 125 && y++ == 0 && Axe() == 125) continue
          }
          switch (((_ += B4(b)), b * y)) {
            case 38:
              x = f > 0 ? 1 : ((_ += '\f'), -1)
              break
            case 44:
              ;(l[h++] = (To(_) - 1) * x), (x = 1)
              break
            case 64:
              lh() === 45 && (_ += OC(cl())), (p = lh()), (f = d = To((T = _ += Mxe($4())))), b++
              break
            case 45:
              g === 45 && To(_) == 2 && (y = 0)
          }
      }
    return a
  }
  o(PC, 'parse')
  function Ixe(t, e, r, n, i, a, s, l, u, h, f, d) {
    for (var p = i - 1, m = i === 0 ? a : [''], g = Exe(m), y = 0, v = 0, x = 0; y < n; ++y)
      for (var b = 0, T = jf(t, p + 1, (p = i$((v = s[y])))), S = t; b < g; ++b) (S = RC(v > 0 ? m[b] + ' ' + T : F4(T, /&\f/g, m[b]))) && (u[x++] = S)
    return MC(t, e, r, i === 0 ? DC : l, u, h, f, d)
  }
  o(Ixe, 'ruleset')
  function dit(t, e, r, n) {
    return MC(t, e, r, _C, B4(Cxe()), jf(t, 2, -2), 0, n)
  }
  o(dit, 'comment')
  function Oxe(t, e, r, n, i) {
    return MC(t, e, r, LC, jf(t, 0, n), jf(t, n + 1, -1), n, i)
  }
  o(Oxe, 'declaration')
  function BC(t, e) {
    for (var r = '', n = 0; n < t.length; n++) r += e(t[n], n, t, e) || ''
    return r
  }
  o(BC, 'serialize')
  function Bxe(t, e, r, n) {
    switch (t.type) {
      case wxe:
        if (t.children.length) break
      case xxe:
      case bxe:
      case LC:
        return (t.return = t.return || t.value)
      case _C:
        return ''
      case Txe:
        return (t.return = t.value + '{' + BC(t.children, n) + '}')
      case DC:
        if (!To((t.value = t.props.join(',')))) return ''
    }
    return To((r = BC(t.children, n))) ? (t.return = t.value + '{' + r + '}') : ''
  }
  o(Bxe, 'stringify')
  L7()
  ak()
  XO()
  var pit = 'graphics-document document'
  function Fxe(t, e) {
    t.attr('role', pit), e !== '' && t.attr('aria-roledescription', e)
  }
  o(Fxe, 'setA11yDiagramInfo')
  function $xe(t, e, r, n) {
    if (t.insert !== void 0) {
      if (r) {
        let i = `chart-desc-${n}`
        t.attr('aria-describedby', i), t.insert('desc', ':first-child').attr('id', i).text(r)
      }
      if (e) {
        let i = `chart-title-${n}`
        t.attr('aria-labelledby', i), t.insert('title', ':first-child').attr('id', i).text(e)
      }
    }
  }
  o($xe, 'addSVGa11yTitleDescription')
  g0()
  mi()
  mi()
  Gt()
  rd()
  n7()
  er()
  var Ay = class t {
    constructor(e, r, n, i, a) {
      this.type = e
      this.text = r
      this.db = n
      this.parser = i
      this.renderer = a
    }
    static {
      o(this, 'Diagram')
    }
    static async fromText(e, r = {}) {
      let n = tr(),
        i = m0(e, n)
      e =
        Zj(e) +
        `
`
      try {
        iv(i)
      } catch {
        let h = z$(i)
        if (!h) throw new p0(`Diagram ${i} not found.`)
        let { id: f, diagram: d } = await h()
        dd(f, d)
      }
      let { db: a, parser: s, renderer: l, init: u } = iv(i)
      return s.parser && (s.parser.yy = a), a.clear?.(), u?.(n), r.title && a.setDiagramTitle?.(r.title), await s.parse(e), new t(i, e, a, s, l)
    }
    async render(e, r) {
      await this.renderer.draw(this.text, e, r, this)
    }
    getParser() {
      return this.parser
    }
    getType() {
      return this.type
    }
  }
  pr()
  var zxe = []
  var Gxe = o(() => {
    zxe.forEach(t => {
      t()
    }),
      (zxe = [])
  }, 'attachFunctions')
  yt()
  var Vxe = o(t => t.replace(/^\s*%%(?!{)[^\n]+\n?/gm, '').trimStart(), 'cleanupComments')
  Q4()
  PT()
  function Uxe(t) {
    let e = t.match(K4)
    if (!e) return { text: t, metadata: {} }
    let r = Tm(e[1], { schema: bm }) ?? {}
    r = typeof r == 'object' && !Array.isArray(r) ? r : {}
    let n = {}
    return (
      r.displayMode && (n.displayMode = r.displayMode.toString()),
      r.title && (n.title = r.title.toString()),
      r.config && (n.config = r.config),
      { text: t.slice(e[0].length), metadata: n }
    )
  }
  o(Uxe, 'extractFrontMatter')
  er()
  var mit = o(
      t =>
        t
          .replace(
            /\r\n?/g,
            `
`
          )
          .replace(/<(\w+)([^>]*)>/g, (e, r, n) => '<' + r + n.replace(/="([^"]*)"/g, "='$1'") + '>'),
      'cleanupText'
    ),
    git = o(t => {
      let { text: e, metadata: r } = Uxe(t),
        { displayMode: n, title: i, config: a = {} } = r
      return n && (a.gantt || (a.gantt = {}), (a.gantt.displayMode = n)), { title: i, config: a, text: e }
    }, 'processFrontmatter'),
    yit = o(t => {
      let e = Vt.detectInit(t) ?? {},
        r = Vt.detectDirective(t, 'wrap')
      return Array.isArray(r) ? (e.wrap = r.some(({ type: n }) => n === 'wrap')) : r?.type === 'wrap' && (e.wrap = !0), { text: Kj(t), directive: e }
    }, 'processDirectives')
  function s$(t) {
    let e = mit(t),
      r = git(e),
      n = yit(r.text),
      i = $n(r.config, n.directive)
    return (t = Vxe(n.text)), { code: t, title: r.title, config: i }
  }
  o(s$, 'preprocessDiagram')
  TA()
  n3()
  er()
  function Hxe(t) {
    let e = new TextEncoder().encode(t),
      r = Array.from(e, n => String.fromCodePoint(n)).join('')
    return btoa(r)
  }
  o(Hxe, 'toBase64')
  var vit = 5e4,
    xit = 'graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa',
    bit = 'sandbox',
    Tit = 'loose',
    wit = 'http://www.w3.org/2000/svg',
    kit = 'http://www.w3.org/1999/xlink',
    Eit = 'http://www.w3.org/1999/xhtml',
    Sit = '100%',
    Cit = '100%',
    Ait = 'border:0;margin:0;',
    _it = 'margin:0',
    Dit = 'allow-top-navigation-by-user-activation allow-popups',
    Lit = 'The "iframe" tag is not supported by your browser.',
    Rit = ['foreignobject'],
    Nit = ['dominant-baseline']
  function Xxe(t) {
    let e = s$(t)
    return $y(), Mz(e.config ?? {}), e
  }
  o(Xxe, 'processAndSetConfigs')
  async function Mit(t, e) {
    wy()
    try {
      let { code: r, config: n } = Xxe(t)
      return { diagramType: (await jxe(r)).type, config: n }
    } catch (r) {
      if (e?.suppressErrors) return !1
      throw r
    }
  }
  o(Mit, 'parse')
  var Wxe = o(
      (t, e, r = []) => `
.${t} ${e} { ${r.join(' !important; ')} !important; }`,
      'cssImportantStyles'
    ),
    Iit = o((t, e = new Map()) => {
      let r = ''
      if (
        (t.themeCSS !== void 0 &&
          (r += `
${t.themeCSS}`),
        t.fontFamily !== void 0 &&
          (r += `
:root { --mermaid-font-family: ${t.fontFamily}}`),
        t.altFontFamily !== void 0 &&
          (r += `
:root { --mermaid-alt-font-family: ${t.altFontFamily}}`),
        e instanceof Map)
      ) {
        let s = t.htmlLabels ?? t.flowchart?.htmlLabels ? ['> *', 'span'] : ['rect', 'polygon', 'ellipse', 'circle', 'path']
        e.forEach(l => {
          hr(l.styles) ||
            s.forEach(u => {
              r += Wxe(l.id, u, l.styles)
            }),
            hr(l.textStyles) ||
              (r += Wxe(
                l.id,
                'tspan',
                (l?.textStyles || []).map(u => u.replace('color', 'fill'))
              ))
        })
      }
      return r
    }, 'createCssStyles'),
    Oit = o((t, e, r, n) => {
      let i = Iit(t, r),
        a = MV(e, i, t.themeVariables)
      return BC(Pxe(`${n}{${a}}`), Bxe)
    }, 'createUserStyles'),
    Pit = o((t = '', e, r) => {
      let n = t
      return !r && !e && (n = n.replace(/marker-end="url\([\d+./:=?A-Za-z-]*?#/g, 'marker-end="url(#')), (n = na(n)), (n = n.replace(/<br>/g, '<br/>')), n
    }, 'cleanUpSvgCode'),
    Bit = o((t = '', e) => {
      let r = e?.viewBox?.baseVal?.height ? e.viewBox.baseVal.height + 'px' : Cit,
        n = Hxe(`<body style="${_it}">${t}</body>`)
      return `<iframe style="width:${Sit};height:${r};${Ait}" src="data:text/html;charset=UTF-8;base64,${n}" sandbox="${Dit}">
  ${Lit}
</iframe>`
    }, 'putIntoIFrame'),
    qxe = o((t, e, r, n, i) => {
      let a = t.append('div')
      a.attr('id', r), n && a.attr('style', n)
      let s = a.append('svg').attr('id', e).attr('width', '100%').attr('xmlns', wit)
      return i && s.attr('xmlns:xlink', i), s.append('g'), t
    }, 'appendDivSvgG')
  function Yxe(t, e) {
    return t.append('iframe').attr('id', e).attr('style', 'width: 100%; height: 100%;').attr('sandbox', '')
  }
  o(Yxe, 'sandboxedIframe')
  var Fit = o((t, e, r, n) => {
      t.getElementById(e)?.remove(), t.getElementById(r)?.remove(), t.getElementById(n)?.remove()
    }, 'removeExistingElements'),
    $it = o(async function (t, e, r) {
      wy()
      let n = Xxe(e)
      e = n.code
      let i = tr()
      X.debug(i), e.length > (i?.maxTextSize ?? vit) && (e = xit)
      let a = '#' + t,
        s = 'i' + t,
        l = '#' + s,
        u = 'd' + t,
        h = '#' + u,
        f = o(() => {
          let L = Ge(p ? l : h).node()
          L && 'remove' in L && L.remove()
        }, 'removeTempElements'),
        d = Ge('body'),
        p = i.securityLevel === bit,
        m = i.securityLevel === Tit,
        g = i.fontFamily
      if (r !== void 0) {
        if ((r && (r.innerHTML = ''), p)) {
          let k = Yxe(Ge(r), s)
          ;(d = Ge(k.nodes()[0].contentDocument.body)), (d.node().style.margin = 0)
        } else d = Ge(r)
        qxe(d, t, u, `font-family: ${g}`, kit)
      } else {
        if ((Fit(document, t, u, s), p)) {
          let k = Yxe(Ge('body'), s)
          ;(d = Ge(k.nodes()[0].contentDocument.body)), (d.node().style.margin = 0)
        } else d = Ge('body')
        qxe(d, t, u)
      }
      let y, v
      try {
        y = await Ay.fromText(e, { title: n.title })
      } catch (k) {
        if (i.suppressErrorRendering) throw (f(), k)
        ;(y = await Ay.fromText('error')), (v = k)
      }
      let x = d.select(h).node(),
        b = y.type,
        T = x.firstChild,
        S = T.firstChild,
        w = y.renderer.getClasses?.(e, y),
        E = Oit(i, b, w, a),
        _ = document.createElement('style')
      ;(_.innerHTML = E), T.insertBefore(_, S)
      try {
        await y.renderer.draw(e, t, Db.version, y)
      } catch (k) {
        throw (i.suppressErrorRendering ? f() : a0e.draw(e, t, Db.version), k)
      }
      let C = d.select(`${h} svg`),
        D = y.db.getAccTitle?.(),
        O = y.db.getAccDescription?.()
      Git(b, C, D, O), d.select(`[id="${t}"]`).selectAll('foreignobject > *').attr('xmlns', Eit)
      let R = d.select(h).node().innerHTML
      if ((X.debug('config.arrowMarkerAbsolute', i.arrowMarkerAbsolute), (R = Pit(R, p, dr(i.arrowMarkerAbsolute))), p)) {
        let k = d.select(h + ' svg').node()
        R = Bit(R, k)
      } else m || (R = mh.sanitize(R, { ADD_TAGS: Rit, ADD_ATTR: Nit, HTML_INTEGRATION_POINTS: { foreignobject: !0 } }))
      if ((Gxe(), v)) throw v
      return f(), { diagramType: b, svg: R, bindFunctions: y.db.bindFunctions }
    }, 'render')
  function zit(t = {}) {
    let e = Un({}, t)
    e?.fontFamily && !e.themeVariables?.fontFamily && (e.themeVariables || (e.themeVariables = {}), (e.themeVariables.fontFamily = e.fontFamily)),
      Lz(e),
      e?.theme && e.theme in Eo ? (e.themeVariables = Eo[e.theme].getThemeVariables(e.themeVariables)) : e && (e.themeVariables = Eo.default.getThemeVariables(e.themeVariables))
    let r = typeof e == 'object' ? T7(e) : w7()
    Dy(r.logLevel), wy()
  }
  o(zit, 'initialize')
  var jxe = o((t, e = {}) => {
    let { code: r } = s$(t)
    return Ay.fromText(r, e)
  }, 'getDiagramFromText')
  function Git(t, e, r, n) {
    Fxe(e, t), $xe(e, r, n, e.attr('id'))
  }
  o(Git, 'addA11yInfo')
  var Kf = Object.freeze({
    render: $it,
    parse: Mit,
    getDiagramFromText: jxe,
    initialize: zit,
    getConfig: tr,
    setConfig: a3,
    getSiteConfig: w7,
    updateSiteConfig: Rz,
    reset: o(() => {
      $y()
    }, 'reset'),
    globalReset: o(() => {
      $y(ph)
    }, 'globalReset'),
    defaultConfig: ph
  })
  Dy(tr().logLevel)
  $y(tr())
  rp()
  er()
  var Vit = o((t, e, r) => {
      X.warn(t),
        I9(t)
          ? (r && r(t.str, t.hash), e.push({ ...t, message: t.str, error: t }))
          : (r && r(t), t instanceof Error && e.push({ str: t.message, message: t.message, hash: t.name, error: t }))
    }, 'handleError'),
    Kxe = o(async function (t = { querySelector: '.mermaid' }) {
      try {
        await Uit(t)
      } catch (e) {
        if ((I9(e) && X.error(e.str), ch.parseError && ch.parseError(e), !t.suppressErrors)) throw (X.error('Use the suppressErrors option to suppress these errors'), e)
      }
    }, 'run'),
    Uit = o(async function ({ postRenderCallback: t, querySelector: e, nodes: r } = { querySelector: '.mermaid' }) {
      let n = Kf.getConfig()
      X.debug(`${t ? '' : 'No '}Callback function found`)
      let i
      if (r) i = r
      else if (e) i = document.querySelectorAll(e)
      else throw new Error('Nodes and querySelector are both undefined')
      X.debug(`Found ${i.length} diagrams`), n?.startOnLoad !== void 0 && (X.debug('Start On Load: ' + n?.startOnLoad), Kf.updateSiteConfig({ startOnLoad: n?.startOnLoad }))
      let a = new Vt.InitIDGenerator(n.deterministicIds, n.deterministicIDSeed),
        s,
        l = []
      for (let u of Array.from(i)) {
        X.info('Rendering diagram: ' + u.id)
        if (u.getAttribute('data-processed')) continue
        u.setAttribute('data-processed', 'true')
        let h = `mermaid-${a.next()}`
        ;(s = u.innerHTML),
          (s = j4(Vt.entityDecode(s))
            .trim()
            .replace(/<br\s*\/?>/gi, '<br/>'))
        let f = Vt.detectInit(s)
        f && X.debug('Detected early reinit: ', f)
        try {
          let { svg: d, bindFunctions: p } = await ebe(h, s, u)
          ;(u.innerHTML = d), t && (await t(h)), p && p(u)
        } catch (d) {
          Vit(d, l, ch.parseError)
        }
      }
      if (l.length > 0) throw l[0]
    }, 'runThrowsErrors'),
    Qxe = o(function (t) {
      Kf.initialize(t)
    }, 'initialize'),
    Hit = o(async function (t, e, r) {
      X.warn('mermaid.init is deprecated. Please use run instead.'), t && Qxe(t)
      let n = { postRenderCallback: r, querySelector: '.mermaid' }
      typeof e == 'string' ? (n.querySelector = e) : e && (e instanceof HTMLElement ? (n.nodes = [e]) : (n.nodes = e)), await Kxe(n)
    }, 'init'),
    Wit = o(async (t, { lazyLoad: e = !0 } = {}) => {
      wy(), Ly(...t), e === !1 && (await vxe())
    }, 'registerExternalDiagrams'),
    Zxe = o(function () {
      if (ch.startOnLoad) {
        let { startOnLoad: t } = Kf.getConfig()
        t && ch.run().catch(e => X.error('Mermaid failed to initialize', e))
      }
    }, 'contentLoaded')
  if (typeof document < 'u') {
    window.addEventListener('load', Zxe, !1)
  }
  var qit = o(function (t) {
      ch.parseError = t
    }, 'setParseErrorHandler'),
    FC = [],
    o$ = !1,
    Jxe = o(async () => {
      if (!o$) {
        for (o$ = !0; FC.length > 0; ) {
          let t = FC.shift()
          if (t)
            try {
              await t()
            } catch (e) {
              X.error('Error executing queue', e)
            }
        }
        o$ = !1
      }
    }, 'executeQueue'),
    Yit = o(
      async (t, e) =>
        new Promise((r, n) => {
          let i = o(
            () =>
              new Promise((a, s) => {
                Kf.parse(t, e).then(
                  l => {
                    a(l), r(l)
                  },
                  l => {
                    X.error('Error parsing', l), ch.parseError?.(l), s(l), n(l)
                  }
                )
              }),
            'performCall'
          )
          FC.push(i), Jxe().catch(n)
        }),
      'parse'
    ),
    ebe = o(
      (t, e, r) =>
        new Promise((n, i) => {
          let a = o(
            () =>
              new Promise((s, l) => {
                Kf.render(t, e, r).then(
                  u => {
                    s(u), n(u)
                  },
                  u => {
                    X.error('Error parsing', u), ch.parseError?.(u), l(u), i(u)
                  }
                )
              }),
            'performCall'
          )
          FC.push(a), Jxe().catch(i)
        }),
      'render'
    ),
    Xit = o(() => Object.keys(au).map(t => ({ id: t })), 'getRegisteredDiagramsMetadata'),
    ch = {
      startOnLoad: !0,
      mermaidAPI: Kf,
      parse: Yit,
      render: ebe,
      init: Hit,
      run: Kxe,
      registerExternalDiagrams: Wit,
      registerLayoutLoaders: tN,
      initialize: Qxe,
      parseError: void 0,
      contentLoaded: Zxe,
      setParseErrorHandler: qit,
      detectType: m0,
      registerIconPacks: X4,
      getRegisteredDiagramsMetadata: Xit
    },
    jit = ch
  return ube(Kit)
})()
/*! Check if previously processed */
/*!
 * Wait for document loaded before starting the execution
 */
/*! Bundled license information:

dompurify/dist/purify.es.mjs:
  (*! @license DOMPurify 3.2.5 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.5/LICENSE *)

js-yaml/dist/js-yaml.mjs:
  (*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT *)

lodash-es/lodash.js:
  (**
   * @license
   * Lodash (Custom Build) <https://lodash.com/>
   * Build: `lodash modularize exports="es" -o ./`
   * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
   * Released under MIT license <https://lodash.com/license>
   * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
   * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
   *)

cytoscape/dist/cytoscape.esm.mjs:
  (*!
  Embeddable Minimum Strictly-Compliant Promises/A+ 1.1.1 Thenable
  Copyright (c) 2013-2014 Ralf S. Engelschall (http://engelschall.com)
  Licensed under The MIT License (http://opensource.org/licenses/MIT)
  *)
  (*!
  Event object based on jQuery events, MIT license
  
  https://jquery.org/license/
  https://tldrlegal.com/license/mit-license
  https://github.com/jquery/jquery/blob/master/src/event.js
  *)
  (*! Bezier curve function generator. Copyright Gaetan Renaudeau. MIT License: http://en.wikipedia.org/wiki/MIT_License *)
  (*! Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License *)
*/
globalThis['mermaid'] = globalThis.__esbuild_esm_mermaid_nm['mermaid'].default
