;(self.webpackChunk_N_E = self.webpackChunk_N_E || []).push([
  [906],
  {
    676: function (e, t, n) {
      'use strict'
      function r(e, t) {
        ;(null == t || t > e.length) && (t = e.length)
        for (var n = 0, r = new Array(t); n < t; n++) r[n] = e[n]
        return r
      }
      n.d(t, {
        Z: function () {
          return r
        },
      })
    },
    2137: function (e, t, n) {
      'use strict'
      function r(e, t, n, r, i, o, a) {
        try {
          var s = e[o](a),
            u = s.value
        } catch (l) {
          return void n(l)
        }
        s.done ? t(u) : Promise.resolve(u).then(r, i)
      }
      function i(e) {
        return function () {
          var t = this,
            n = arguments
          return new Promise(function (i, o) {
            var a = e.apply(t, n)
            function s(e) {
              r(a, i, o, s, u, 'next', e)
            }
            function u(e) {
              r(a, i, o, s, u, 'throw', e)
            }
            s(void 0)
          })
        }
      }
      n.d(t, {
        Z: function () {
          return i
        },
      })
    },
    7375: function (e, t, n) {
      'use strict'
      function r(e, t) {
        if (null == e) return {}
        var n,
          r,
          i = (function (e, t) {
            if (null == e) return {}
            var n,
              r,
              i = {},
              o = Object.keys(e)
            for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n])
            return i
          })(e, t)
        if (Object.getOwnPropertySymbols) {
          var o = Object.getOwnPropertySymbols(e)
          for (r = 0; r < o.length; r++)
            (n = o[r]),
              t.indexOf(n) >= 0 ||
                (Object.prototype.propertyIsEnumerable.call(e, n) && (i[n] = e[n]))
        }
        return i
      }
      n.d(t, {
        Z: function () {
          return r
        },
      })
    },
    4699: function (e, t, n) {
      'use strict'
      n.d(t, {
        Z: function () {
          return i
        },
      })
      var r = n(2961)
      function i(e, t) {
        return (
          (function (e) {
            if (Array.isArray(e)) return e
          })(e) ||
          (function (e, t) {
            if ('undefined' !== typeof Symbol && Symbol.iterator in Object(e)) {
              var n = [],
                r = !0,
                i = !1,
                o = void 0
              try {
                for (
                  var a, s = e[Symbol.iterator]();
                  !(r = (a = s.next()).done) && (n.push(a.value), !t || n.length !== t);
                  r = !0
                );
              } catch (u) {
                ;(i = !0), (o = u)
              } finally {
                try {
                  r || null == s.return || s.return()
                } finally {
                  if (i) throw o
                }
              }
              return n
            }
          })(e, t) ||
          (0, r.Z)(e, t) ||
          (function () {
            throw new TypeError(
              'Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.',
            )
          })()
        )
      }
    },
    7329: function (e, t, n) {
      'use strict'
      n.d(t, {
        Z: function () {
          return o
        },
      })
      var r = n(676)
      var i = n(2961)
      function o(e) {
        return (
          (function (e) {
            if (Array.isArray(e)) return (0, r.Z)(e)
          })(e) ||
          (function (e) {
            if ('undefined' !== typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e)
          })(e) ||
          (0, i.Z)(e) ||
          (function () {
            throw new TypeError(
              'Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.',
            )
          })()
        )
      }
    },
    2961: function (e, t, n) {
      'use strict'
      n.d(t, {
        Z: function () {
          return i
        },
      })
      var r = n(676)
      function i(e, t) {
        if (e) {
          if ('string' === typeof e) return (0, r.Z)(e, t)
          var n = Object.prototype.toString.call(e).slice(8, -1)
          return (
            'Object' === n && e.constructor && (n = e.constructor.name),
            'Map' === n || 'Set' === n
              ? Array.from(e)
              : 'Arguments' === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)
              ? (0, r.Z)(e, t)
              : void 0
          )
        }
      }
    },
    6769: function (e, t, n) {
      'use strict'
      n.d(t, {
        UQ: function () {
          return D
        },
        KF: function () {
          return z
        },
        XE: function () {
          return B
        },
        Qd: function () {
          return I
        },
        Hk: function () {
          return H
        },
      })
      var r = n(58),
        i = n(63),
        o = n(2326),
        a = n(5284),
        s = n(9676),
        u = n(3782),
        l = n(5267),
        c = n(4461),
        d = n(3808),
        f = n(658),
        h = n(8500),
        p = n(7294),
        v = n(1888),
        m = n(7581),
        g = n(1034),
        y = n(4577),
        b = n(2947),
        w = n(7277),
        x = n(7248)
      function E() {
        return (E =
          Object.assign ||
          function (e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t]
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }).apply(this, arguments)
      }
      function k(e, t) {
        if (null == e) return {}
        var n,
          r,
          i = {},
          o = Object.keys(e)
        for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n])
        return i
      }
      var [_, T, O, C] = (0, v.n)()
      function S(e) {
        var { onChange: t, defaultIndex: n, index: r, allowMultiple: i, allowToggle: o } = e,
          a = k(e, ['onChange', 'defaultIndex', 'index', 'allowMultiple', 'allowToggle'])
        !(function (e) {
          var t = e.index || e.defaultIndex,
            n = !(0, d.o8)(t) && !(0, d.kJ)(t) && e.allowMultiple
          ;(0, f.ZK)({
            condition: !!n,
            message:
              "If 'allowMultiple' is passed, then 'index' or 'defaultIndex' must be an array. You passed: " +
              typeof t +
              ',',
          })
        })(e),
          (function (e) {
            ;(0, f.ZK)({
              condition: !(!e.allowMultiple || !e.allowToggle),
              message:
                "If 'allowMultiple' is passed, 'allowToggle' will be ignored. Either remove 'allowToggle' or 'allowMultiple' depending on whether you want multiple accordions visible or not",
            })
          })(e)
        var s = O(),
          [u, l] = (0, p.useState)(-1)
        ;(0, m.z)(() => {
          l(-1)
        })
        var [c, h] = (0, g.T)({
          value: r,
          defaultValue: () => (i ? (null != n ? n : []) : null != n ? n : -1),
          onChange: t,
        })
        return {
          index: c,
          setIndex: h,
          htmlProps: a,
          getAccordionItemProps: (e) => {
            var t = !1
            null !== e && (t = (0, d.kJ)(c) ? c.includes(e) : c === e)
            return {
              isOpen: t,
              onChange: (t) => {
                if (null !== e)
                  if (i && (0, d.kJ)(c)) {
                    var n = t ? (0, w.jX)(c, e) : (0, w.cl)(c, e)
                    h(n)
                  } else t ? h(e) : o && h(-1)
              },
            }
          },
          focusedIndex: u,
          setFocusedIndex: l,
          descendants: s,
        }
      }
      var [A, P] = (0, h.k)({
        name: 'AccordionContext',
        errorMessage:
          'useAccordionContext: `context` is undefined. Seems you forgot to wrap the accordion components in `<Accordion />`',
      })
      function M(e) {
        var { isDisabled: t, isFocusable: n, id: r } = e,
          i = k(e, ['isDisabled', 'isFocusable', 'id']),
          { getAccordionItemProps: o, setFocusedIndex: a } = P(),
          s = (0, p.useRef)(null),
          [u, l] = (0, y.ZS)(r, 'accordion-button', 'accordion-panel')
        !(function (e) {
          ;(0, f.ZK)({
            condition: !(!e.isFocusable || e.isDisabled),
            message:
              "Using only 'isFocusable', this prop is reserved for situations where you pass 'isDisabled' but you still want the element to receive focus (A11y). Either remove it or pass 'isDisabled' as well.\n    ",
          })
        })(e)
        var { register: d, index: h, descendants: v } = C({ disabled: t && !n }),
          { isOpen: m, onChange: g } = o(-1 === h ? null : h)
        !(function (e) {
          ;(0, f.ZK)({
            condition: e.isOpen && !!e.isDisabled,
            message: 'Cannot open a disabled accordion item',
          })
        })({ isOpen: m, isDisabled: t })
        var w = (0, p.useCallback)(() => {
            null == g || g(!m), a(h)
          }, [h, a, m, g]),
          _ = (0, p.useCallback)(
            (e) => {
              var t = {
                ArrowDown: () => {
                  var e = v.nextEnabled(h)
                  e && (0, x.T)(e.node)
                },
                ArrowUp: () => {
                  var e = v.prevEnabled(h)
                  e && (0, x.T)(e.node)
                },
                Home: () => {
                  var e = v.firstEnabled()
                  e && (0, x.T)(e.node)
                },
                End: () => {
                  var e = v.lastEnabled()
                  e && (0, x.T)(e.node)
                },
              }[(0, c.uh)(e)]
              t && (e.preventDefault(), t(e))
            },
            [v, h],
          ),
          T = (0, p.useCallback)(() => {
            a(h)
          }, [a, h]),
          O = (0, p.useCallback)(
            function (e, n) {
              return (
                void 0 === e && (e = {}),
                void 0 === n && (n = null),
                E({}, e, {
                  type: 'button',
                  ref: (0, b.l)(d, s, n),
                  id: u,
                  disabled: !!t,
                  'aria-expanded': !!m,
                  'aria-controls': l,
                  onClick: (0, f.v0)(e.onClick, w),
                  onFocus: (0, f.v0)(e.onFocus, T),
                  onKeyDown: (0, f.v0)(e.onKeyDown, _),
                })
              )
            },
            [u, t, m, w, T, _, l, d],
          ),
          S = (0, p.useCallback)(
            function (e, t) {
              return (
                void 0 === e && (e = {}),
                void 0 === t && (t = null),
                E({}, e, { ref: t, role: 'region', id: l, 'aria-labelledby': u, hidden: !m })
              )
            },
            [u, m, l],
          )
        return {
          isOpen: m,
          isDisabled: t,
          isFocusable: n,
          onOpen: () => {
            null == g || g(!0)
          },
          onClose: () => {
            null == g || g(!1)
          },
          getButtonProps: O,
          getPanelProps: S,
          htmlProps: i,
        }
      }
      function R() {
        return (R =
          Object.assign ||
          function (e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t]
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }).apply(this, arguments)
      }
      function j(e, t) {
        if (null == e) return {}
        var n,
          r,
          i = {},
          o = Object.keys(e)
        for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n])
        return i
      }
      var D = (0, i.G)((e, t) => {
        var { children: n, reduceMotion: r } = e,
          i = j(e, ['children', 'reduceMotion']),
          l = (0, o.j)('Accordion', i),
          d = S((0, a.Lr)(i)),
          { htmlProps: f, descendants: h } = d,
          v = j(d, ['htmlProps', 'descendants']),
          m = p.useMemo(() => R({}, v, { reduceMotion: !!r }), [v, r])
        return p.createElement(
          _,
          { value: h },
          p.createElement(
            A,
            { value: m },
            p.createElement(
              s.Fo,
              { value: l },
              p.createElement(
                u.m$.div,
                R({ ref: t }, f, { className: (0, c.cx)('chakra-accordion', i.className) }),
                n,
              ),
            ),
          ),
        )
      })
      d.Ts && (D.displayName = 'Accordion')
      var [L, N] = (0, h.k)({
          name: 'AccordionItemContext',
          errorMessage:
            'useAccordionItemContext: `context` is undefined. Seems you forgot to wrap the accordion item parts in `<AccordionItem />` ',
        }),
        I = (0, i.G)((e, t) => {
          var { children: n, className: r } = e,
            i = M(e),
            { htmlProps: o } = i,
            a = j(i, ['htmlProps']),
            l = R({}, (0, s.yK)().container, { overflowAnchor: 'none' }),
            d = p.useMemo(() => a, [a])
          return p.createElement(
            L,
            { value: d },
            p.createElement(
              u.m$.div,
              R({ ref: t }, o, { className: (0, c.cx)('chakra-accordion__item', r), __css: l }),
              (0, f.Pu)(n, { isExpanded: !!a.isOpen, isDisabled: !!a.isDisabled }),
            ),
          )
        })
      d.Ts && (I.displayName = 'AccordionItem')
      var z = (0, i.G)((e, t) => {
        var { getButtonProps: n } = N(),
          r = n(e, t),
          i = R(
            { display: 'flex', alignItems: 'center', width: '100%', outline: 0 },
            (0, s.yK)().button,
          )
        return p.createElement(
          u.m$.button,
          R({}, r, { className: (0, c.cx)('chakra-accordion__button', e.className), __css: i }),
        )
      })
      d.Ts && (z.displayName = 'AccordionButton')
      var H = (0, i.G)((e, t) => {
        var { reduceMotion: n } = P(),
          { getPanelProps: r, isOpen: i } = N(),
          o = r(e, t),
          a = (0, c.cx)('chakra-accordion__panel', e.className),
          d = (0, s.yK)()
        n || delete o.hidden
        var f = p.createElement(u.m$.div, R({}, o, { __css: d.panel, className: a }))
        return n ? f : p.createElement(l.U, { in: i }, f)
      })
      d.Ts && (H.displayName = 'AccordionPanel')
      var B = (e) => {
        var { isOpen: t, isDisabled: n } = N(),
          { reduceMotion: i } = P(),
          o = (0, c.cx)('chakra-accordion__icon', e.className),
          a = R(
            {
              opacity: n ? 0.4 : 1,
              transform: t ? 'rotate(-180deg)' : void 0,
              transition: i ? void 0 : 'transform 0.2s',
              transformOrigin: 'center',
            },
            (0, s.yK)().icon,
          )
        return p.createElement(
          r.J,
          R({ viewBox: '0 0 24 24', 'aria-hidden': !0, className: o, __css: a }, e),
          p.createElement('path', {
            fill: 'currentColor',
            d: 'M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z',
          }),
        )
      }
      d.Ts && (B.displayName = 'AccordionIcon')
    },
    155: function (e, t, n) {
      'use strict'
      n.d(t, {
        z: function () {
          return T
        },
      })
      var r = n(2947),
        i = n(917),
        o = n(63),
        a = n(2326),
        s = n(5284),
        u = n(3782),
        l = n(4461),
        c = n(3808),
        d = n(5415),
        f = n(7294)
      function h() {
        return (h =
          Object.assign ||
          function (e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t]
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }).apply(this, arguments)
      }
      var p = (0, i.F4)({
          '0%': { transform: 'rotate(0deg)' },
          '100%': { transform: 'rotate(360deg)' },
        }),
        v = (0, o.G)((e, t) => {
          var n = (0, a.m)('Spinner', e),
            r = (0, s.Lr)(e),
            {
              label: i = 'Loading...',
              thickness: o = '2px',
              speed: c = '0.45s',
              emptyColor: v = 'transparent',
              className: m,
            } = r,
            g = (function (e, t) {
              if (null == e) return {}
              var n,
                r,
                i = {},
                o = Object.keys(e)
              for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n])
              return i
            })(r, ['label', 'thickness', 'speed', 'emptyColor', 'className']),
            y = (0, l.cx)('chakra-spinner', m),
            b = h(
              {
                display: 'inline-block',
                borderColor: 'currentColor',
                borderStyle: 'solid',
                borderRadius: '99999px',
                borderWidth: o,
                borderBottomColor: v,
                borderLeftColor: v,
                animation: p + ' ' + c + ' linear infinite',
              },
              n,
            )
          return f.createElement(
            u.m$.div,
            h({ ref: t, __css: b, className: y }, g),
            i && f.createElement(d.TX, null, i),
          )
        })
      c.Ts && (v.displayName = 'Spinner')
      var m = n(8554),
        g = n.n(m),
        y = n(8500)
      function b() {
        return (b =
          Object.assign ||
          function (e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t]
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }).apply(this, arguments)
      }
      var [w, x] = (0, y.k)({ strict: !1, name: 'ButtonGroupContext' }),
        E = (0, o.G)((e, t) => {
          var {
              size: n,
              colorScheme: r,
              variant: i,
              className: o,
              spacing: a = '0.5rem',
              isAttached: s,
              isDisabled: c,
            } = e,
            d = (function (e, t) {
              if (null == e) return {}
              var n,
                r,
                i = {},
                o = Object.keys(e)
              for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n])
              return i
            })(e, [
              'size',
              'colorScheme',
              'variant',
              'className',
              'spacing',
              'isAttached',
              'isDisabled',
            ]),
            h = (0, l.cx)('chakra-button__group', o),
            p = f.useMemo(
              () => ({ size: n, colorScheme: r, variant: i, isDisabled: c }),
              [n, r, i, c],
            ),
            v = { display: 'inline-flex' }
          return (
            (v = b(
              {},
              v,
              s
                ? {
                    '> *:first-of-type:not(:last-of-type)': { borderEndRadius: 0 },
                    '> *:not(:first-of-type):not(:last-of-type)': { borderRadius: 0 },
                    '> *:not(:first-of-type):last-of-type': { borderStartRadius: 0 },
                  }
                : { '& > *:not(style) ~ *:not(style)': { marginStart: a } },
            )),
            f.createElement(
              w,
              { value: p },
              f.createElement(u.m$.div, b({ ref: t, role: 'group', __css: v, className: h }, d)),
            )
          )
        })
      function k(e, t) {
        if (null == e) return {}
        var n,
          r,
          i = {},
          o = Object.keys(e)
        for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n])
        return i
      }
      function _() {
        return (_ =
          Object.assign ||
          function (e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t]
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }).apply(this, arguments)
      }
      c.Ts && (E.displayName = 'ButtonGroup')
      var T = (0, o.G)((e, t) => {
        var n,
          i = x(),
          o = (0, a.m)('Button', _({}, i, e)),
          c = (0, s.Lr)(e),
          {
            isDisabled: d = null == i ? void 0 : i.isDisabled,
            isLoading: h,
            isActive: p,
            isFullWidth: v,
            children: m,
            leftIcon: y,
            rightIcon: b,
            loadingText: w,
            iconSpacing: E = '0.5rem',
            type: T,
            spinner: S,
            spinnerPlacement: A = 'start',
            className: P,
            as: M,
          } = c,
          R = k(c, [
            'isDisabled',
            'isLoading',
            'isActive',
            'isFullWidth',
            'children',
            'leftIcon',
            'rightIcon',
            'loadingText',
            'iconSpacing',
            'type',
            'spinner',
            'spinnerPlacement',
            'className',
            'as',
          ]),
          j = g()({}, null != (n = null == o ? void 0 : o._focus) ? n : {}, { zIndex: 1 }),
          D = _(
            {
              display: 'inline-flex',
              appearance: 'none',
              alignItems: 'center',
              justifyContent: 'center',
              userSelect: 'none',
              position: 'relative',
              whiteSpace: 'nowrap',
              verticalAlign: 'middle',
              outline: 'none',
              width: v ? '100%' : 'auto',
            },
            o,
            !!i && { _focus: j },
          ),
          { ref: L, type: N } = (function (e) {
            var [t, n] = f.useState(!e),
              r = f.useCallback((e) => {
                e && n('BUTTON' === e.tagName)
              }, []),
              i = t ? 'button' : void 0
            return { ref: r, type: i }
          })(M)
        return f.createElement(
          u.m$.button,
          _(
            {
              disabled: d || h,
              ref: (0, r.l)(t, L),
              as: M,
              type: null != T ? T : N,
              'data-active': (0, l.PB)(p),
              'data-loading': (0, l.PB)(h),
              __css: D,
              className: (0, l.cx)('chakra-button', P),
            },
            R,
          ),
          y && !h && f.createElement(O, { marginEnd: E }, y),
          h &&
            'start' === A &&
            f.createElement(
              C,
              { className: 'chakra-button__spinner--start', label: w, placement: 'start' },
              S,
            ),
          h ? w || f.createElement(u.m$.span, { opacity: 0 }, m) : m,
          h &&
            'end' === A &&
            f.createElement(
              C,
              { className: 'chakra-button__spinner--end', label: w, placement: 'end' },
              S,
            ),
          b && !h && f.createElement(O, { marginStart: E }, b),
        )
      })
      c.Ts && (T.displayName = 'Button')
      var O = (e) => {
        var { children: t, className: n } = e,
          r = k(e, ['children', 'className']),
          i = f.isValidElement(t) ? f.cloneElement(t, { 'aria-hidden': !0, focusable: !1 }) : t,
          o = (0, l.cx)('chakra-button__icon', n)
        return f.createElement(
          u.m$.span,
          _({ display: 'inline-flex', alignSelf: 'center', flexShrink: 0 }, r, { className: o }),
          i,
        )
      }
      c.Ts && (O.displayName = 'ButtonIcon')
      var C = (e) => {
        var {
            label: t,
            placement: n,
            children: r = f.createElement(v, {
              color: 'currentColor',
              width: '1em',
              height: '1em',
            }),
            className: i,
            __css: o,
          } = e,
          a = k(e, ['label', 'placement', 'spacing', 'children', 'className', '__css']),
          s = (0, l.cx)('chakra-button__spinner', i),
          c = _(
            {
              display: 'flex',
              alignItems: 'center',
              position: t ? 'relative' : 'absolute',
              ['start' === n ? 'marginEnd' : 'marginStart']: t ? '0.5rem' : 0,
              fontSize: '1em',
              lineHeight: 'normal',
            },
            o,
          )
        return f.createElement(u.m$.div, _({ className: s }, a, { __css: c }), r)
      }
      c.Ts && (C.displayName = 'ButtonSpinner')
    },
    8420: function (e, t, n) {
      'use strict'
      n.d(t, {
        h: function () {
          return u
        },
      })
      var r = n(63),
        i = n(3808),
        o = n(7294),
        a = n(155)
      function s() {
        return (s =
          Object.assign ||
          function (e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t]
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }).apply(this, arguments)
      }
      var u = (0, r.G)((e, t) => {
        var { icon: n, children: r, isRound: i, 'aria-label': u } = e,
          l = (function (e, t) {
            if (null == e) return {}
            var n,
              r,
              i = {},
              o = Object.keys(e)
            for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n])
            return i
          })(e, ['icon', 'children', 'isRound', 'aria-label']),
          c = n || r,
          d = o.isValidElement(c) ? o.cloneElement(c, { 'aria-hidden': !0, focusable: !1 }) : null
        return o.createElement(
          a.z,
          s({ padding: '0', borderRadius: i ? 'full' : void 0, ref: t, 'aria-label': u }, l),
          d,
        )
      })
      i.Ts && (u.displayName = 'IconButton')
    },
    2300: function (e, t, n) {
      'use strict'
      var r = n(3782),
        i = n(3808),
        o = n(7294)
      function a() {
        return (a =
          Object.assign ||
          function (e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t]
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }).apply(this, arguments)
      }
      var s = (e) => {
        var {
            type: t = 'checkbox',
            _hover: n,
            _invalid: i,
            _disabled: s,
            _focus: u,
            _checked: l,
            _child: c = { opacity: 0 },
            _checkedAndChild: d = { opacity: 1 },
            _checkedAndDisabled: f,
            _checkedAndFocus: h,
            _checkedAndHover: p,
            children: v,
          } = e,
          m = (function (e, t) {
            if (null == e) return {}
            var n,
              r,
              i = {},
              o = Object.keys(e)
            for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n])
            return i
          })(e, [
            'type',
            '_hover',
            '_invalid',
            '_disabled',
            '_focus',
            '_checked',
            '_child',
            '_checkedAndChild',
            '_checkedAndDisabled',
            '_checkedAndFocus',
            '_checkedAndHover',
            'children',
          ]),
          g = 'input[type=' + t + ']:checked:disabled + &',
          y = 'input[type=' + t + ']:checked:hover:not(:disabled) + &',
          b = 'input[type=' + t + ']:checked:focus + &',
          w = 'input[type=' + t + ']:disabled + &',
          x = 'input[type=' + t + ']:focus + &',
          E = 'input[type=' + t + ']:hover:not(:disabled):not(:checked) + &',
          k = 'input[type=' + t + ']:checked + &, input[type=' + t + '][aria-checked=mixed] + &',
          _ = 'input[type=' + t + '][aria-invalid=true] + &',
          T = '& > *'
        return o.createElement(
          r.m$.div,
          a({}, m, {
            'aria-hidden': !0,
            __css: {
              display: 'inline-flex',
              alignItems: 'center',
              justifyContent: 'center',
              transitionProperty: 'common',
              transitionDuration: 'fast',
              flexShrink: 0,
              [x]: u,
              [E]: n,
              [w]: s,
              [_]: i,
              [g]: f,
              [b]: h,
              [y]: p,
              [T]: c,
              [k]: a({}, l, { [T]: d }),
            },
          }),
          v,
        )
      }
      i.Ts && (s.displayName = 'ControlBox')
    },
    1888: function (e, t, n) {
      'use strict'
      n.d(t, {
        n: function () {
          return v
        },
      })
      var r = n(8500),
        i = n(2947),
        o = n(7294)
      function a(e) {
        return e.sort((e, t) => {
          var n = e.compareDocumentPosition(t)
          if (n & Node.DOCUMENT_POSITION_FOLLOWING || n & Node.DOCUMENT_POSITION_CONTAINED_BY)
            return -1
          if (n & Node.DOCUMENT_POSITION_PRECEDING || n & Node.DOCUMENT_POSITION_CONTAINS) return 1
          if (
            n & Node.DOCUMENT_POSITION_DISCONNECTED ||
            n & Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC
          )
            throw Error('Cannot sort the given nodes.')
          return 0
        })
      }
      function s(e, t, n) {
        var r = e + 1
        return n && r >= t && (r = 0), r
      }
      function u(e, t, n) {
        var r = e - 1
        return n && r < 0 && (r = t), r
      }
      var l = 'undefined' !== typeof window ? o.useLayoutEffect : o.useEffect
      function c() {
        return (c =
          Object.assign ||
          function (e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t]
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }).apply(this, arguments)
      }
      function d(e, t, n) {
        return (
          t in e
            ? Object.defineProperty(e, t, {
                value: n,
                enumerable: !0,
                configurable: !0,
                writable: !0,
              })
            : (e[t] = n),
          e
        )
      }
      class f {
        constructor() {
          var e = this
          d(this, 'descendants', new Map()),
            d(this, 'register', (e) => {
              var t
              if (null != e)
                return 'object' == typeof (t = e) &&
                  'nodeType' in t &&
                  t.nodeType === Node.ELEMENT_NODE
                  ? this.registerNode(e)
                  : (t) => {
                      this.registerNode(t, e)
                    }
            }),
            d(this, 'unregister', (e) => {
              this.descendants.delete(e)
              var t = a(Array.from(this.descendants.keys()))
              this.assignIndex(t)
            }),
            d(this, 'destroy', () => {
              this.descendants.clear()
            }),
            d(this, 'assignIndex', (e) => {
              this.descendants.forEach((t) => {
                var n = e.indexOf(t.node)
                ;(t.index = n), (t.node.dataset.index = t.index.toString())
              })
            }),
            d(this, 'count', () => this.descendants.size),
            d(this, 'enabledCount', () => this.enabledValues().length),
            d(this, 'values', () =>
              Array.from(this.descendants.values()).sort((e, t) => e.index - t.index),
            ),
            d(this, 'enabledValues', () => this.values().filter((e) => !e.disabled)),
            d(this, 'item', (e) => {
              if (0 !== this.count()) return this.values()[e]
            }),
            d(this, 'enabledItem', (e) => {
              if (0 !== this.enabledCount()) return this.enabledValues()[e]
            }),
            d(this, 'first', () => this.item(0)),
            d(this, 'firstEnabled', () => this.enabledItem(0)),
            d(this, 'last', () => this.item(this.descendants.size - 1)),
            d(this, 'lastEnabled', () => {
              var e = this.enabledValues().length - 1
              return this.enabledItem(e)
            }),
            d(this, 'indexOf', (e) => {
              var t, n
              return e && null != (t = null == (n = this.descendants.get(e)) ? void 0 : n.index)
                ? t
                : -1
            }),
            d(this, 'enabledIndexOf', (e) =>
              null == e ? -1 : this.enabledValues().findIndex((t) => t.node.isSameNode(e)),
            ),
            d(this, 'next', function (t, n) {
              void 0 === n && (n = !0)
              var r = s(t, e.count(), n)
              return e.item(r)
            }),
            d(this, 'nextEnabled', function (t, n) {
              void 0 === n && (n = !0)
              var r = e.item(t)
              if (r) {
                var i = s(e.enabledIndexOf(r.node), e.enabledCount(), n)
                return e.enabledItem(i)
              }
            }),
            d(this, 'prev', function (t, n) {
              void 0 === n && (n = !0)
              var r = u(t, e.count() - 1, n)
              return e.item(r)
            }),
            d(this, 'prevEnabled', function (t, n) {
              void 0 === n && (n = !0)
              var r = e.item(t)
              if (r) {
                var i = u(e.enabledIndexOf(r.node), e.enabledCount() - 1, n)
                return e.enabledItem(i)
              }
            }),
            d(this, 'registerNode', (e, t) => {
              if (e && !this.descendants.has(e)) {
                var n = a(Array.from(this.descendants.keys()).concat(e))
                null != t && t.disabled && (t.disabled = !!t.disabled)
                var r = c({ node: e, index: -1 }, t)
                this.descendants.set(e, r), this.assignIndex(n)
              }
            })
        }
      }
      var [h, p] = (0, r.k)({
        name: 'DescendantsProvider',
        errorMessage: 'useDescendantsContext must be used within DescendantsProvider',
      })
      function v() {
        return [
          h,
          () => p(),
          () =>
            (function () {
              var [e] = (0, o.useState)(() => new f())
              return l(() => () => e.destroy()), e
            })(),
          (e) =>
            (function (e) {
              var t = p(),
                [n, r] = (0, o.useState)(-1),
                a = (0, o.useRef)(null)
              l(
                () => () => {
                  a.current && t.unregister(a.current)
                },
                [],
              ),
                l(() => {
                  if (a.current) {
                    var e = Number(a.current.dataset.index)
                    n == e || Number.isNaN(e) || r(e)
                  }
                })
              var s = e ? t.register(e) : t.register
              return {
                descendants: t,
                index: n,
                enabledIndex: t.enabledIndexOf(a.current),
                register: (0, i.l)(s, a),
              }
            })(e),
        ]
      }
    },
    639: function (e, t, n) {
      'use strict'
      n.d(t, {
        k: function () {
          return i
        },
      })
      var r = n(7294)
      function i(e) {
        void 0 === e && (e = !1)
        var [t, n] = (0, r.useState)(e)
        return [
          t,
          {
            on: (0, r.useCallback)(() => {
              n(!0)
            }, []),
            off: (0, r.useCallback)(() => {
              n(!1)
            }, []),
            toggle: (0, r.useCallback)(() => {
              n((e) => !e)
            }, []),
          },
        ]
      }
    },
    762: function (e, t, n) {
      'use strict'
      n.d(t, {
        W: function () {
          return o
        },
      })
      var r = n(7294),
        i = n(8327)
      function o(e, t) {
        void 0 === t && (t = [])
        var n = r.useRef(e)
        return (
          (0, i.G)(() => {
            n.current = e
          }),
          r.useCallback(function () {
            for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r]
            return null == n.current ? void 0 : n.current(...t)
          }, t)
        )
      }
    },
    1034: function (e, t, n) {
      'use strict'
      n.d(t, {
        p: function () {
          return a
        },
        T: function () {
          return s
        },
      })
      var r = n(658),
        i = n(7294),
        o = n(762)
      function a(e, t) {
        var n = void 0 !== e
        return [n, n && 'undefined' !== typeof e ? e : t]
      }
      function s(e) {
        var { value: t, defaultValue: n, onChange: a, shouldUpdate: s = (e, t) => e !== t } = e,
          u = (0, o.W)(a),
          l = (0, o.W)(s),
          [c, d] = i.useState(n),
          f = void 0 !== t,
          h = f ? t : c,
          p = i.useCallback(
            (e) => {
              var t = (0, r.Pu)(e, h)
              l(h, t) && (f || d(t), u(t))
            },
            [f, u, h, l],
          )
        return [h, p]
      }
    },
    4860: function (e, t, n) {
      'use strict'
      n.d(t, {
        q: function () {
          return u
        },
      })
      var r = n(658),
        i = n(7294),
        o = n(1034),
        a = n(4577)
      function s() {
        return (s =
          Object.assign ||
          function (e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t]
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }).apply(this, arguments)
      }
      function u(e) {
        void 0 === e && (e = {})
        var { onClose: t, onOpen: n, isOpen: u, id: l } = e,
          [c, d] = i.useState(e.defaultIsOpen || !1),
          [f, h] = (0, o.p)(u, c),
          p = (0, a.Me)(l, 'disclosure'),
          v = i.useCallback(() => {
            f || d(!1), null == t || t()
          }, [f, t]),
          m = i.useCallback(() => {
            f || d(!0), null == n || n()
          }, [f, n]),
          g = i.useCallback(() => {
            ;(h ? v : m)()
          }, [h, m, v])
        return {
          isOpen: !!h,
          onOpen: m,
          onClose: v,
          onToggle: g,
          isControlled: f,
          getButtonProps: function (e) {
            return (
              void 0 === e && (e = {}),
              s({}, e, {
                'aria-expanded': 'true',
                'aria-controls': p,
                onClick: (0, r.v0)(e.onClick, g),
              })
            )
          },
          getDisclosureProps: function (e) {
            return void 0 === e && (e = {}), s({}, e, { hidden: !h, id: p })
          },
        }
      }
    },
    4941: function (e, t, n) {
      'use strict'
      n.d(t, {
        O: function () {
          return a
        },
      })
      var r = n(658),
        i = n(7294),
        o = n(762)
      function a(e, t, n, a) {
        var s = (0, o.W)(t)
        return (
          i.useEffect(() => {
            var t,
              i = null != (t = (0, r.Pu)(n)) ? t : document
            return (
              i.addEventListener(e, s, a),
              () => {
                i.removeEventListener(e, s, a)
              }
            )
          }, [e, n, a, s]),
          () => {
            var t
            ;(null != (t = (0, r.Pu)(n)) ? t : document).removeEventListener(e, s, a)
          }
        )
      }
    },
    8327: function (e, t, n) {
      'use strict'
      n.d(t, {
        G: function () {
          return i
        },
      })
      var r = n(7294),
        i = n(4461).jU ? r.useLayoutEffect : r.useEffect
    },
    7581: function (e, t, n) {
      'use strict'
      n.d(t, {
        z: function () {
          return i
        },
      })
      var r = n(7294)
      function i(e, t) {
        return void 0 === t && (t = []), r.useEffect(() => () => e(), t)
      }
    },
    2653: function (e, t, n) {
      'use strict'
      n.d(t, {
        r: function () {
          return i
        },
      })
      var r = n(7294),
        i = (e, t) => {
          var n = r.useRef(!1)
          return (
            r.useEffect(() => {
              if (n.current) return e()
              n.current = !0
            }, t),
            n.current
          )
        }
    },
    9867: function (e, t, n) {
      'use strict'
      n.d(t, {
        I: function () {
          return u
        },
      })
      var r = n(63),
        i = n(3808),
        o = n(7294),
        a = n(58)
      function s() {
        return (s =
          Object.assign ||
          function (e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t]
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }).apply(this, arguments)
      }
      function u(e) {
        var { viewBox: t = '0 0 24 24', d: n, path: u, displayName: l, defaultProps: c = {} } = e,
          d = (0, r.G)((e, r) =>
            o.createElement(
              a.J,
              s({ ref: r, viewBox: t }, c, e),
              null != u ? u : o.createElement('path', { fill: 'currentColor', d: n }),
            ),
          )
        return i.Ts && (d.displayName = l), d
      }
    },
    58: function (e, t, n) {
      'use strict'
      n.d(t, {
        J: function () {
          return c
        },
      })
      var r = n(63),
        i = n(3782),
        o = n(4461),
        a = n(3808),
        s = n(7294)
      function u() {
        return (u =
          Object.assign ||
          function (e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t]
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }).apply(this, arguments)
      }
      var l = {
          path: s.createElement(
            'g',
            { stroke: 'currentColor', strokeWidth: '1.5' },
            s.createElement('path', {
              strokeLinecap: 'round',
              fill: 'none',
              d: 'M9,9a3,3,0,1,1,4,2.829,1.5,1.5,0,0,0-1,1.415V14.25',
            }),
            s.createElement('path', {
              fill: 'currentColor',
              strokeLinecap: 'round',
              d: 'M12,17.25a.375.375,0,1,0,.375.375A.375.375,0,0,0,12,17.25h0',
            }),
            s.createElement('circle', {
              fill: 'none',
              strokeMiterlimit: '10',
              cx: '12',
              cy: '12',
              r: '11.25',
            }),
          ),
          viewBox: '0 0 24 24',
        },
        c = (0, r.G)((e, t) => {
          var {
              as: n,
              viewBox: r,
              color: a = 'currentColor',
              focusable: c = !1,
              children: d,
              className: f,
              __css: h,
            } = e,
            p = (function (e, t) {
              if (null == e) return {}
              var n,
                r,
                i = {},
                o = Object.keys(e)
              for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n])
              return i
            })(e, ['as', 'viewBox', 'color', 'focusable', 'children', 'className', '__css']),
            v = {
              ref: t,
              focusable: c,
              className: (0, o.cx)('chakra-icon', f),
              __css: u(
                {
                  w: '1em',
                  h: '1em',
                  display: 'inline-block',
                  lineHeight: '1em',
                  flexShrink: 0,
                  color: a,
                },
                h,
              ),
            },
            m = null != r ? r : l.viewBox
          if (n && 'string' !== typeof n) return s.createElement(i.m$.svg, u({ as: n }, v, p))
          var g = null != d ? d : l.path
          return s.createElement(i.m$.svg, u({ verticalAlign: 'middle', viewBox: m }, v, p), g)
        })
      a.Ts && (c.displayName = 'Icon')
    },
    3441: function (e, t, n) {
      'use strict'
      n.d(t, {
        L: function () {
          return o
        },
      })
      var r = n(9867),
        i = n(7294),
        o = (0, r.I)({
          displayName: 'ArrowRightIcon',
          path: i.createElement(
            'g',
            { fill: 'currentColor' },
            i.createElement('path', {
              d: 'M13.584,12a2.643,2.643,0,0,1-.775,1.875L3.268,23.416a1.768,1.768,0,0,1-2.5-2.5l8.739-8.739a.25.25,0,0,0,0-.354L.768,3.084a1.768,1.768,0,0,1,2.5-2.5l9.541,9.541A2.643,2.643,0,0,1,13.584,12Z',
            }),
            i.createElement('path', {
              d: 'M23.75,12a2.643,2.643,0,0,1-.775,1.875l-9.541,9.541a1.768,1.768,0,0,1-2.5-2.5l8.739-8.739a.25.25,0,0,0,0-.354L10.934,3.084a1.768,1.768,0,0,1,2.5-2.5l9.541,9.541A2.643,2.643,0,0,1,23.75,12Z',
            }),
          ),
        })
    },
    6569: function (e, t, n) {
      'use strict'
      n.d(t, {
        v: function () {
          return r
        },
      })
      var r = (0, n(9867).I)({
        displayName: 'ChevronDownIcon',
        d: 'M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z',
      })
    },
    9641: function (e, t, n) {
      'use strict'
      n.d(t, {
        T: function () {
          return r
        },
      })
      var r = (0, n(9867).I)({
        displayName: 'CloseIcon',
        d: 'M.439,21.44a1.5,1.5,0,0,0,2.122,2.121L11.823,14.3a.25.25,0,0,1,.354,0l9.262,9.263a1.5,1.5,0,1,0,2.122-2.121L14.3,12.177a.25.25,0,0,1,0-.354l9.263-9.262A1.5,1.5,0,0,0,21.439.44L12.177,9.7a.25.25,0,0,1-.354,0L2.561.44A1.5,1.5,0,0,0,.439,2.561L9.7,11.823a.25.25,0,0,1,0,.354Z',
      })
    },
    4189: function (e, t, n) {
      'use strict'
      n.d(t, {
        h: function () {
          return o
        },
      })
      var r = n(9867),
        i = n(7294),
        o = (0, r.I)({
          displayName: 'InfoOutlineIcon',
          path: i.createElement(
            'g',
            {
              fill: 'currentColor',
              stroke: 'currentColor',
              strokeLinecap: 'square',
              strokeWidth: '2',
            },
            i.createElement('circle', {
              cx: '12',
              cy: '12',
              fill: 'none',
              r: '11',
              stroke: 'currentColor',
            }),
            i.createElement('line', {
              fill: 'none',
              x1: '11.959',
              x2: '11.959',
              y1: '11',
              y2: '17',
            }),
            i.createElement('circle', { cx: '11.959', cy: '7', r: '1', stroke: 'none' }),
          ),
        })
    },
    7546: function (e, t, n) {
      'use strict'
      n.d(t, {
        n: function () {
          return o
        },
      })
      var r = n(9867),
        i = n(7294),
        o = (0, r.I)({
          displayName: 'RepeatIcon',
          path: i.createElement(
            'g',
            { fill: 'currentColor' },
            i.createElement('path', {
              d: 'M10.319,4.936a7.239,7.239,0,0,1,7.1,2.252,1.25,1.25,0,1,0,1.872-1.657A9.737,9.737,0,0,0,9.743,2.5,10.269,10.269,0,0,0,2.378,9.61a.249.249,0,0,1-.271.178l-1.033-.13A.491.491,0,0,0,.6,9.877a.5.5,0,0,0-.019.526l2.476,4.342a.5.5,0,0,0,.373.248.43.43,0,0,0,.062,0,.5.5,0,0,0,.359-.152l3.477-3.593a.5.5,0,0,0-.3-.844L5.15,10.172a.25.25,0,0,1-.2-.333A7.7,7.7,0,0,1,10.319,4.936Z',
            }),
            i.createElement('path', {
              d: 'M23.406,14.1a.5.5,0,0,0,.015-.526l-2.5-4.329A.5.5,0,0,0,20.546,9a.489.489,0,0,0-.421.151l-3.456,3.614a.5.5,0,0,0,.3.842l1.848.221a.249.249,0,0,1,.183.117.253.253,0,0,1,.023.216,7.688,7.688,0,0,1-5.369,4.9,7.243,7.243,0,0,1-7.1-2.253,1.25,1.25,0,1,0-1.872,1.656,9.74,9.74,0,0,0,9.549,3.03,10.261,10.261,0,0,0,7.369-7.12.251.251,0,0,1,.27-.179l1.058.127a.422.422,0,0,0,.06,0A.5.5,0,0,0,23.406,14.1Z',
            }),
          ),
        })
    },
    3986: function (e, t, n) {
      'use strict'
      n.d(t, {
        A: function () {
          return o
        },
      })
      var r = n(9867),
        i = n(7294),
        o = (0, r.I)({
          displayName: 'RepeatClockIcon',
          path: i.createElement(
            'g',
            { fill: 'currentColor' },
            i.createElement('path', {
              d: 'M12.965,6a1,1,0,0,0-1,1v5.5a1,1,0,0,0,1,1h5a1,1,0,0,0,0-2h-3.75a.25.25,0,0,1-.25-.25V7A1,1,0,0,0,12.965,6Z',
            }),
            i.createElement('path', {
              d: 'M12.567,1.258A10.822,10.822,0,0,0,2.818,8.4a.25.25,0,0,1-.271.163L.858,8.309a.514.514,0,0,0-.485.213.5.5,0,0,0-.021.53l2.679,4.7a.5.5,0,0,0,.786.107l3.77-3.746a.5.5,0,0,0-.279-.85L5.593,9.007a.25.25,0,0,1-.192-.35,8.259,8.259,0,1,1,7.866,11.59,1.25,1.25,0,0,0,.045,2.5h.047a10.751,10.751,0,1,0-.792-21.487Z',
            }),
          ),
        })
    },
    3924: function (e, t, n) {
      'use strict'
      n.d(t, {
        e: function () {
          return r
        },
      })
      var r = (0, n(9867).I)({
        viewBox: '0 0 14 14',
        d: 'M14,7.77 L14,6.17 L12.06,5.53 L11.61,4.44 L12.49,2.6 L11.36,1.47 L9.55,2.38 L8.46,1.93 L7.77,0.01 L6.17,0.01 L5.54,1.95 L4.43,2.4 L2.59,1.52 L1.46,2.65 L2.37,4.46 L1.92,5.55 L0,6.23 L0,7.82 L1.94,8.46 L2.39,9.55 L1.51,11.39 L2.64,12.52 L4.45,11.61 L5.54,12.06 L6.23,13.98 L7.82,13.98 L8.45,12.04 L9.56,11.59 L11.4,12.47 L12.53,11.34 L11.61,9.53 L12.08,8.44 L14,7.75 L14,7.77 Z M7,10 C5.34,10 4,8.66 4,7 C4,5.34 5.34,4 7,4 C8.66,4 10,5.34 10,7 C10,8.66 8.66,10 7,10 Z',
        displayName: 'SettingsIcon',
      })
    },
    8017: function (e, t, n) {
      'use strict'
      n.d(t, {
        xu: function () {
          return l
        },
      })
      var r = n(3782),
        i = n(63),
        o = n(3808),
        a = n(7294)
      function s() {
        return (s =
          Object.assign ||
          function (e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t]
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }).apply(this, arguments)
      }
      function u(e, t) {
        if (null == e) return {}
        var n,
          r,
          i = {},
          o = Object.keys(e)
        for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n])
        return i
      }
      var l = (0, r.m$)('div')
      o.Ts && (l.displayName = 'Box')
      var c = (0, i.G)((e, t) => {
        var { size: n, centerContent: r = !0 } = e,
          i = u(e, ['size', 'centerContent']),
          o = r ? { display: 'flex', alignItems: 'center', justifyContent: 'center' } : {}
        return a.createElement(
          l,
          s({ ref: t, boxSize: n, __css: s({}, o, { flexShrink: 0, flexGrow: 0 }) }, i),
        )
      })
      o.Ts && (c.displayName = 'Square')
      var d = (0, i.G)((e, t) => {
        var { size: n } = e,
          r = u(e, ['size'])
        return a.createElement(c, s({ size: n, ref: t, borderRadius: '9999px' }, r))
      })
      o.Ts && (d.displayName = 'Circle')
    },
    4096: function (e, t, n) {
      'use strict'
      n.d(t, {
        k: function () {
          return u
        },
      })
      var r = n(63),
        i = n(3782),
        o = n(3808),
        a = n(7294)
      function s() {
        return (s =
          Object.assign ||
          function (e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t]
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }).apply(this, arguments)
      }
      var u = (0, r.G)((e, t) => {
        var { direction: n, align: r, justify: o, wrap: u, basis: l, grow: c, shrink: d } = e,
          f = (function (e, t) {
            if (null == e) return {}
            var n,
              r,
              i = {},
              o = Object.keys(e)
            for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n])
            return i
          })(e, ['direction', 'align', 'justify', 'wrap', 'basis', 'grow', 'shrink']),
          h = {
            display: 'flex',
            flexDirection: n,
            alignItems: r,
            justifyContent: o,
            flexWrap: u,
            flexBasis: l,
            flexGrow: c,
            flexShrink: d,
          }
        return a.createElement(i.m$.div, s({ ref: t, __css: h }, f))
      })
      o.Ts && (u.displayName = 'Flex')
    },
    336: function (e, t, n) {
      'use strict'
      n.d(t, {
        X: function () {
          return d
        },
      })
      var r = n(63),
        i = n(2326),
        o = n(5284),
        a = n(3782),
        s = n(4461),
        u = n(3808),
        l = n(7294)
      function c() {
        return (c =
          Object.assign ||
          function (e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t]
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }).apply(this, arguments)
      }
      var d = (0, r.G)((e, t) => {
        var n = (0, i.m)('Heading', e),
          r = (function (e, t) {
            if (null == e) return {}
            var n,
              r,
              i = {},
              o = Object.keys(e)
            for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n])
            return i
          })((0, o.Lr)(e), ['className'])
        return l.createElement(
          a.m$.h2,
          c({ ref: t, className: (0, s.cx)('chakra-heading', e.className) }, r, { __css: n }),
        )
      })
      u.Ts && (d.displayName = 'Heading')
    },
    2026: function (e, t, n) {
      'use strict'
      n.d(t, {
        cX: function () {
          return h
        },
        gC: function () {
          return g
        },
      })
      var r = n(3782),
        i = n(63),
        o = n(4461),
        a = n(3808),
        s = n(4255),
        u = n(7294),
        l = n(5505)
      Object.freeze(['base', 'sm', 'md', 'lg', 'xl', '2xl'])
      function c(e, t) {
        return (0, a.kJ)(e)
          ? e.map((e) => (null === e ? null : t(e)))
          : (0, a.Kn)(e)
          ? (0, l.Yd)(e).reduce((n, r) => ((n[r] = t(e[r])), n), {})
          : null != e
          ? t(e)
          : null
      }
      var d = '& > *:not(style) ~ *:not(style)'
      function f() {
        return (f =
          Object.assign ||
          function (e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t]
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }).apply(this, arguments)
      }
      var h = (e) =>
          u.createElement(
            r.m$.div,
            f({ className: 'chakra-stack__divider' }, e, {
              __css: f({}, e.__css, {
                borderWidth: 0,
                alignSelf: 'stretch',
                borderColor: 'inherit',
                width: 'auto',
                height: 'auto',
              }),
            }),
          ),
        p = (e) =>
          u.createElement(
            r.m$.div,
            f({ className: 'chakra-stack__item' }, e, {
              __css: f({ display: 'inline-block', flex: '0 0 auto', minWidth: 0 }, e.__css),
            }),
          ),
        v = (0, i.G)((e, t) => {
          var {
              isInline: n,
              direction: i,
              align: a,
              justify: l,
              spacing: h = '0.5rem',
              wrap: v,
              children: m,
              divider: g,
              className: y,
              shouldWrapChildren: b,
            } = e,
            w = (function (e, t) {
              if (null == e) return {}
              var n,
                r,
                i = {},
                o = Object.keys(e)
              for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n])
              return i
            })(e, [
              'isInline',
              'direction',
              'align',
              'justify',
              'spacing',
              'wrap',
              'children',
              'divider',
              'className',
              'shouldWrapChildren',
            ]),
            x = n ? 'row' : null != i ? i : 'column',
            E = u.useMemo(
              () =>
                (function (e) {
                  var { spacing: t, direction: n } = e,
                    r = {
                      column: { marginTop: t, marginEnd: 0, marginBottom: 0, marginStart: 0 },
                      row: { marginTop: 0, marginEnd: 0, marginBottom: 0, marginStart: t },
                      'column-reverse': {
                        marginTop: 0,
                        marginEnd: 0,
                        marginBottom: t,
                        marginStart: 0,
                      },
                      'row-reverse': {
                        marginTop: 0,
                        marginEnd: t,
                        marginBottom: 0,
                        marginStart: 0,
                      },
                    }
                  return { flexDirection: n, [d]: c(n, (e) => r[e]) }
                })({ direction: x, spacing: h }),
              [x, h],
            ),
            k = u.useMemo(
              () =>
                (function (e) {
                  var { spacing: t, direction: n } = e,
                    r = {
                      column: { my: t, mx: 0, borderLeftWidth: 0, borderBottomWidth: '1px' },
                      'column-reverse': {
                        my: t,
                        mx: 0,
                        borderLeftWidth: 0,
                        borderBottomWidth: '1px',
                      },
                      row: { mx: t, my: 0, borderLeftWidth: '1px', borderBottomWidth: 0 },
                      'row-reverse': { mx: t, my: 0, borderLeftWidth: '1px', borderBottomWidth: 0 },
                    }
                  return { '&': c(n, (e) => r[e]) }
                })({ spacing: h, direction: x }),
              [h, x],
            ),
            _ = !!g,
            T = !b && !_,
            O = (0, s.W)(m),
            C = T
              ? O
              : O.map((e, t) => {
                  var n = t + 1 === O.length,
                    r = b ? u.createElement(p, { key: t }, e) : e
                  if (!_) return r
                  var i = n ? null : u.cloneElement(g, { __css: k })
                  return u.createElement(u.Fragment, { key: t }, r, i)
                }),
            S = (0, o.cx)('chakra-stack', y)
          return u.createElement(
            r.m$.div,
            f(
              {
                ref: t,
                display: 'flex',
                alignItems: a,
                justifyContent: l,
                flexDirection: E.flexDirection,
                flexWrap: v,
                className: S,
                __css: _ ? {} : { [d]: E[d] },
              },
              w,
            ),
            C,
          )
        })
      a.Ts && (v.displayName = 'Stack')
      var m = (0, i.G)((e, t) =>
        u.createElement(v, f({ align: 'center' }, e, { direction: 'row', ref: t })),
      )
      a.Ts && (m.displayName = 'HStack')
      var g = (0, i.G)((e, t) =>
        u.createElement(v, f({ align: 'center' }, e, { direction: 'column', ref: t })),
      )
      a.Ts && (g.displayName = 'VStack')
    },
    4115: function (e, t, n) {
      'use strict'
      n.d(t, {
        x: function () {
          return f
        },
      })
      var r = n(63),
        i = n(2326),
        o = n(5284),
        a = n(3782),
        s = n(5505),
        u = n(4461),
        l = n(3808),
        c = n(7294)
      function d() {
        return (d =
          Object.assign ||
          function (e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t]
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }).apply(this, arguments)
      }
      var f = (0, r.G)((e, t) => {
        var n = (0, i.m)('Text', e),
          r = (function (e, t) {
            if (null == e) return {}
            var n,
              r,
              i = {},
              o = Object.keys(e)
            for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n])
            return i
          })((0, o.Lr)(e), ['className', 'align', 'decoration', 'casing']),
          l = (0, s.YU)({
            textAlign: e.align,
            textDecoration: e.decoration,
            textTransform: e.casing,
          })
        return c.createElement(
          a.m$.p,
          d({ ref: t, className: (0, u.cx)('chakra-text', e.className) }, l, r, { __css: n }),
        )
      })
      l.Ts && (f.displayName = 'Text')
    },
    8235: function (e, t, n) {
      'use strict'
      n.d(t, {
        v2: function () {
          return W
        },
        j2: function () {
          return Z
        },
        sN: function () {
          return J
        },
        ii: function () {
          return te
        },
        qy: function () {
          return Y
        },
        __: function () {
          return ne
        },
      })
      var r = n(2326),
        i = n(5284),
        o = n(9676),
        a = n(63),
        s = n(3782),
        u = n(658),
        l = n(3808),
        c = n(4461),
        d = n(7554),
        f = n(7294),
        h = n(2947)
      function p() {
        return (p =
          Object.assign ||
          function (e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t]
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }).apply(this, arguments)
      }
      function v(e) {
        var t = e.target,
          { tagName: n, isContentEditable: r } = t
        return 'INPUT' !== n && 'TEXTAREA' !== n && !0 !== r
      }
      function m(e) {
        void 0 === e && (e = {})
        var {
            ref: t,
            isDisabled: n,
            isFocusable: r,
            clickOnEnter: i = !0,
            clickOnSpace: o = !0,
            onMouseDown: a,
            onMouseUp: s,
            onClick: u,
            onKeyDown: l,
            onKeyUp: d,
            tabIndex: m,
            onMouseOver: g,
            onMouseLeave: y,
          } = e,
          b = (function (e, t) {
            if (null == e) return {}
            var n,
              r,
              i = {},
              o = Object.keys(e)
            for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n])
            return i
          })(e, [
            'ref',
            'isDisabled',
            'isFocusable',
            'clickOnEnter',
            'clickOnSpace',
            'onMouseDown',
            'onMouseUp',
            'onClick',
            'onKeyDown',
            'onKeyUp',
            'tabIndex',
            'onMouseOver',
            'onMouseLeave',
          ]),
          [w, x] = f.useState(!0),
          [E, k] = f.useState(!1),
          _ = (function () {
            var e = f.useRef(new Map()),
              t = e.current,
              n = f.useCallback((t, n, r, i) => {
                e.current.set(r, { type: n, el: t, options: i }), t.addEventListener(n, r, i)
              }, []),
              r = f.useCallback((t, n, r, i) => {
                t.removeEventListener(n, r, i), e.current.delete(r)
              }, [])
            return (
              f.useEffect(
                () => () => {
                  t.forEach((e, t) => {
                    r(e.el, e.type, t, e.options)
                  })
                },
                [r, t],
              ),
              { add: n, remove: r }
            )
          })(),
          T = w ? m : m || 0,
          O = n && !r,
          C = f.useCallback(
            (e) => {
              if (n) return e.stopPropagation(), void e.preventDefault()
              e.currentTarget.focus(), null == u || u(e)
            },
            [n, u],
          ),
          S = f.useCallback(
            (e) => {
              E &&
                v(e) &&
                (e.preventDefault(), e.stopPropagation(), k(!1), _.remove(document, 'keyup', S, !1))
            },
            [E, _],
          ),
          A = f.useCallback(
            (e) => {
              if (
                (null == l || l(e),
                !(n || e.defaultPrevented || e.metaKey) && v(e.nativeEvent) && !w)
              ) {
                var t = i && 'Enter' === e.key
                if ((o && ' ' === e.key && (e.preventDefault(), k(!0)), t))
                  e.preventDefault(), e.currentTarget.click()
                _.add(document, 'keyup', S, !1)
              }
            },
            [n, w, l, i, o, _, S],
          ),
          P = f.useCallback(
            (e) => {
              ;(null == d || d(e), n || e.defaultPrevented || e.metaKey) ||
                (v(e.nativeEvent) &&
                  !w &&
                  o &&
                  ' ' === e.key &&
                  (e.preventDefault(), k(!1), e.currentTarget.click()))
            },
            [o, w, n, d],
          ),
          M = f.useCallback(
            (e) => {
              0 === e.button && (k(!1), _.remove(document, 'mouseup', M, !1))
            },
            [_],
          ),
          R = f.useCallback(
            (e) => {
              if (!(0, c.dO)(e)) {
                if (n) return e.stopPropagation(), void e.preventDefault()
                w || k(!0),
                  e.currentTarget.focus({ preventScroll: !0 }),
                  _.add(document, 'mouseup', M, !1),
                  null == a || a(e)
              }
            },
            [n, w, a, _, M],
          ),
          j = f.useCallback(
            (e) => {
              ;(0, c.dO)(e) || (w || k(!1), null == s || s(e))
            },
            [s, w],
          ),
          D = f.useCallback(
            (e) => {
              n ? e.preventDefault() : null == g || g(e)
            },
            [n, g],
          ),
          L = f.useCallback(
            (e) => {
              E && (e.preventDefault(), k(!1)), null == y || y(e)
            },
            [E, y],
          ),
          N = (0, h.l)(t, (e) => {
            e && 'BUTTON' !== e.tagName && x(!1)
          })
        return p(
          {},
          b,
          w
            ? {
                ref: N,
                type: 'button',
                'aria-disabled': O ? void 0 : n,
                disabled: O,
                onClick: C,
                onMouseDown: a,
                onMouseUp: s,
                onKeyUp: d,
                onKeyDown: l,
                onMouseOver: g,
                onMouseLeave: y,
              }
            : {
                ref: N,
                role: 'button',
                'data-active': (0, c.PB)(E),
                'aria-disabled': n ? 'true' : void 0,
                tabIndex: O ? void 0 : T,
                onClick: C,
                onMouseDown: R,
                onMouseUp: j,
                onKeyUp: P,
                onKeyDown: A,
                onMouseOver: D,
                onMouseLeave: L,
              },
        )
      }
      var g = n(1888),
        y = n(4860),
        b = n(762)
      function w(e, t) {
        var n,
          r = e.target
        if (e.button > 0) return !1
        if (r && !(0, c.lZ)(r).body.contains(r)) return !1
        return !(null != (n = t.current) && n.contains(r))
      }
      var x = n(2653),
        E = n(7768),
        k = n(7248)
      function _(e, t) {
        var { shouldFocus: n, visible: r, focusRef: i } = t,
          o = n && !r
        ;(0, x.r)(() => {
          if (
            o &&
            !(function (e) {
              var t = e.current
              if (!t) return !1
              var n = (0, c.vY)(t)
              return !!n && !(0, c.r3)(t, n) && !!(0, E.Wq)(n)
            })(e)
          ) {
            var t = (null == i ? void 0 : i.current) || e.current
            t && (0, k.T)(t, { nextTick: !0 })
          }
        }, [o, e, i])
      }
      var T = n(4577),
        O = n(7581)
      function C(e) {
        void 0 === e && (e = {})
        var { timeout: t = 300, preventDefault: n = () => !0 } = e,
          [r, i] = f.useState([]),
          o = f.useRef(),
          a = () => {
            o.current && (clearTimeout(o.current), (o.current = null))
          }
        return (
          f.useEffect(() => a, []),
          function (e) {
            return (s) => {
              if ('Backspace' === s.key) {
                var u = [...r]
                return u.pop(), void i(u)
              }
              if (
                (function (e) {
                  var { key: t } = e
                  return 1 === t.length || (t.length > 1 && /[^a-zA-Z0-9]/.test(t))
                })(s)
              ) {
                var l = r.concat(s.key)
                n(s) && (s.preventDefault(), s.stopPropagation()),
                  i(l),
                  e(l.join('')),
                  a(),
                  (o.current = setTimeout(() => {
                    i([]), (o.current = null)
                  }, t))
              }
            }
          }
        )
      }
      var S = n(1034),
        A = n(8931),
        P = n(8500),
        M = n(4255),
        R = n(7277)
      function j() {
        return (j =
          Object.assign ||
          function (e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t]
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }).apply(this, arguments)
      }
      function D(e, t) {
        if (null == e) return {}
        var n,
          r,
          i = {},
          o = Object.keys(e)
        for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n])
        return i
      }
      var [L, N, I, z] = (0, g.n)(),
        [H, B] = (0, P.k)({ strict: !1, name: 'MenuContext' })
      function F(e) {
        void 0 === e && (e = {})
        var {
            id: t,
            closeOnSelect: n = !0,
            closeOnBlur: r = !0,
            autoSelect: i = !0,
            isLazy: o,
            isOpen: a,
            defaultIsOpen: s,
            onClose: u,
            onOpen: l,
            placement: d = 'bottom-start',
            lazyBehavior: h = 'unmount',
            computePositionOnMount: p,
          } = e,
          v = D(e, [
            'id',
            'closeOnSelect',
            'closeOnBlur',
            'autoSelect',
            'isLazy',
            'isOpen',
            'defaultIsOpen',
            'onClose',
            'onOpen',
            'placement',
            'lazyBehavior',
            'computePositionOnMount',
          ]),
          {
            isOpen: m,
            onOpen: g,
            onClose: E,
            onToggle: C,
          } = (0, y.q)({ isOpen: a, defaultIsOpen: s, onClose: u, onOpen: l }),
          S = f.useRef(null),
          P = f.useRef(null)
        !(function (e) {
          var { ref: t, handler: n } = e,
            r = (0, b.W)(n),
            i = (0, f.useRef)({ isPointerDown: !1, ignoreEmulatedMouseEvents: !1 }).current
          ;(0, f.useEffect)(() => {
            var e = (e) => {
                w(e, t) && (i.isPointerDown = !0)
              },
              o = (e) => {
                i.ignoreEmulatedMouseEvents
                  ? (i.ignoreEmulatedMouseEvents = !1)
                  : i.isPointerDown && n && w(e, t) && ((i.isPointerDown = !1), r(e))
              },
              a = (e) => {
                ;(i.ignoreEmulatedMouseEvents = !0),
                  n && i.isPointerDown && w(e, t) && ((i.isPointerDown = !1), r(e))
              },
              s = (0, c.lZ)(t.current)
            return (
              s.addEventListener('mousedown', e, !0),
              s.addEventListener('mouseup', o, !0),
              s.addEventListener('touchstart', e, !0),
              s.addEventListener('touchend', a, !0),
              () => {
                s.removeEventListener('mousedown', e, !0),
                  s.removeEventListener('mouseup', o, !0),
                  s.removeEventListener('touchstart', e, !0),
                  s.removeEventListener('touchend', a, !0)
              }
            )
          }, [n, t, r, i])
        })({
          ref: S,
          handler: (e) => {
            var t
            !m || !r || (null != (t = P.current) && t.contains(e.target)) || E()
          },
        })
        var M = (0, A.D)(j({}, v, { enabled: m || p, placement: d })),
          [R, L] = f.useState(-1),
          N = I()
        ;(0, x.r)(() => {
          m || L(-1)
        }, [m]),
          _(S, { focusRef: P, visible: m, shouldFocus: !0 })
        var [z, H] = (0, T.ZS)(t, 'menu-button', 'menu-list'),
          B = f.useCallback(() => {
            g(), (0, k.T)(S.current, { nextTick: !0, selectTextIfInput: !1 })
          }, [g, S]),
          F = f.useRef(new Set([]))
        return (
          (0, O.z)(() => {
            F.current.forEach((e) => clearTimeout(e)), F.current.clear()
          }),
          {
            openAndFocusMenu: B,
            openAndFocusFirstItem: f.useCallback(() => {
              g()
              var e = setTimeout(() => {
                var e = N.firstEnabled()
                e && L(e.index)
              })
              F.current.add(e)
            }, [g, L, N]),
            openAndFocusLastItem: f.useCallback(() => {
              g()
              var e = setTimeout(() => {
                var e = N.lastEnabled()
                e && L(e.index)
              })
              F.current.add(e)
            }, [g, L, N]),
            onTransitionEnd: f.useCallback(() => {
              var e,
                t,
                n = (0, c.lZ)(S.current),
                r = null == (e = S.current) ? void 0 : e.contains(n.activeElement)
              if (m && !r) {
                var i = null == (t = N.item(R)) ? void 0 : t.node
                i && (0, k.T)(i, { selectTextIfInput: !1 })
              }
            }, [m, R, N]),
            descendants: N,
            popper: M,
            buttonId: z,
            menuId: H,
            forceUpdate: M.forceUpdate,
            orientation: 'vertical',
            isOpen: m,
            onToggle: C,
            onOpen: g,
            onClose: E,
            menuRef: S,
            buttonRef: P,
            focusedIndex: R,
            closeOnSelect: n,
            closeOnBlur: r,
            autoSelect: i,
            setFocusedIndex: L,
            isLazy: o,
            lazyBehavior: h,
          }
        )
      }
      function V(e) {
        var t
        return (
          e instanceof HTMLElement &&
          !(null == (t = e.getAttribute('role')) || !t.startsWith('menuitem'))
        )
      }
      function U(e, t) {
        void 0 === e && (e = {}), void 0 === t && (t = null)
        var {
            onMouseEnter: n,
            onMouseMove: r,
            onMouseLeave: i,
            onClick: o,
            isDisabled: a,
            isFocusable: s,
            closeOnSelect: u,
          } = e,
          l = D(e, [
            'onMouseEnter',
            'onMouseMove',
            'onMouseLeave',
            'onClick',
            'isDisabled',
            'isFocusable',
            'closeOnSelect',
          ]),
          c = B(),
          {
            setFocusedIndex: d,
            focusedIndex: p,
            closeOnSelect: v,
            onClose: g,
            menuRef: y,
            isOpen: b,
            menuId: w,
          } = c,
          _ = f.useRef(null),
          O = w + '-menuitem-' + (0, T.Me)(),
          { index: C, register: S } = z({ disabled: a && !s }),
          A = f.useCallback(
            (e) => {
              null == n || n(e), a || d(C)
            },
            [d, C, a, n],
          ),
          P = f.useCallback(
            (e) => {
              null == r || r(e), _.current && !(0, E.H9)(_.current) && A(e)
            },
            [A, r],
          ),
          M = f.useCallback(
            (e) => {
              null == i || i(e), a || d(-1)
            },
            [d, a, i],
          ),
          R = f.useCallback(
            (e) => {
              null == o || o(e), V(e.currentTarget) && (null != u ? u : v) && g()
            },
            [g, o, v, u],
          ),
          L = C === p,
          N = a && !s
        return (
          (0, x.r)(() => {
            b &&
              (L && !N && _.current
                ? (0, k.T)(_.current, { nextTick: !0, selectTextIfInput: !1 })
                : y.current && !(0, E.H9)(y.current) && (0, k.T)(y.current))
          }, [L, N, y, b]),
          j(
            {},
            l,
            m({
              onClick: R,
              onMouseEnter: A,
              onMouseMove: P,
              onMouseLeave: M,
              ref: (0, h.l)(S, _, t),
              isDisabled: a,
              isFocusable: s,
            }),
            { id: O, role: 'menuitem', tabIndex: L ? 0 : -1 },
          )
        )
      }
      function G() {
        return (G =
          Object.assign ||
          function (e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t]
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }).apply(this, arguments)
      }
      function q(e, t) {
        if (null == e) return {}
        var n,
          r,
          i = {},
          o = Object.keys(e)
        for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n])
        return i
      }
      var W = (e) => {
        var { children: t } = e,
          n = (0, r.j)('Menu', e),
          a = F((0, i.Lr)(e)),
          { descendants: s } = a,
          l = q(a, ['descendants']),
          c = f.useMemo(() => l, [l]),
          { isOpen: d, onClose: h, forceUpdate: p } = c
        return f.createElement(
          L,
          { value: s },
          f.createElement(
            H,
            { value: c },
            f.createElement(
              o.Fo,
              { value: n },
              (0, u.Pu)(t, { isOpen: d, onClose: h, forceUpdate: p }),
            ),
          ),
        )
      }
      l.Ts && (W.displayName = 'Menu')
      var K = (0, a.G)((e, t) => {
          var n = (0, o.yK)()
          return f.createElement(
            s.m$.button,
            G({ ref: t }, e, {
              __css: G(
                { display: 'inline-flex', appearance: 'none', alignItems: 'center', outline: 0 },
                n.button,
              ),
            }),
          )
        }),
        Z = (0, a.G)((e, t) => {
          var { as: n } = e,
            r = (function (e, t) {
              void 0 === e && (e = {}), void 0 === t && (t = null)
              var n = B(),
                {
                  isOpen: r,
                  onClose: i,
                  autoSelect: o,
                  popper: a,
                  openAndFocusFirstItem: s,
                  openAndFocusLastItem: l,
                  openAndFocusMenu: d,
                } = n,
                p = f.useCallback(() => {
                  r ? i() : (o ? s : d)()
                }, [o, r, i, s, d]),
                v = f.useCallback(
                  (e) => {
                    var t = (0, c.uh)(e),
                      n = { Enter: s, ArrowDown: s, ArrowUp: l }[t]
                    n && (e.preventDefault(), e.stopPropagation(), n(e))
                  },
                  [s, l],
                )
              return j({}, e, {
                ref: (0, h.l)(n.buttonRef, t, a.referenceRef),
                id: n.buttonId,
                'data-active': (0, c.PB)(n.isOpen),
                'aria-expanded': n.isOpen,
                'aria-haspopup': 'menu',
                'aria-controls': n.menuId,
                onClick: (0, u.v0)(e.onClick, p),
                onKeyDown: (0, u.v0)(e.onKeyDown, v),
              })
            })(q(e, ['children', 'as']), t),
            i = n || K
          return f.createElement(
            i,
            G({}, r, { className: (0, c.cx)('chakra-menu__menu-button', e.className) }),
            f.createElement(
              s.m$.span,
              { __css: { pointerEvents: 'none', flex: '1 1 auto', minW: 0 } },
              e.children,
            ),
          )
        })
      l.Ts && (Z.displayName = 'MenuButton')
      var $ = {
          enter: {
            visibility: 'visible',
            opacity: 1,
            scale: 1,
            transition: { duration: 0.2, ease: [0.4, 0, 0.2, 1] },
          },
          exit: {
            transitionEnd: { visibility: 'hidden' },
            opacity: 0,
            scale: 0.8,
            transition: { duration: 0.1, easings: 'easeOut' },
          },
        },
        X = 'custom' in d.E ? d.E.custom(s.m$.div) : (0, d.E)(s.m$.div),
        Y = (0, a.G)((e, t) => {
          var n,
            r,
            { rootProps: i } = e,
            a = q(e, ['rootProps']),
            { isOpen: l, onTransitionEnd: d } = B(),
            p = (function (e, t) {
              void 0 === e && (e = {}), void 0 === t && (t = null)
              var n = B()
              if (!n)
                throw new Error(
                  'useMenuContext: context is undefined. Seems you forgot to wrap component within <Menu>',
                )
              var {
                  focusedIndex: r,
                  setFocusedIndex: i,
                  menuRef: o,
                  isOpen: a,
                  onClose: s,
                  menuId: l,
                  isLazy: d,
                  lazyBehavior: p,
                } = n,
                v = N(),
                m = C({ preventDefault: (e) => ' ' !== e.key && V(e.target) }),
                g = f.useCallback(
                  (e) => {
                    var t = (0, c.uh)(e),
                      n = {
                        Tab: (e) => e.preventDefault(),
                        Escape: s,
                        ArrowDown: () => {
                          var e = v.nextEnabled(r)
                          e && i(e.index)
                        },
                        ArrowUp: () => {
                          var e = v.prevEnabled(r)
                          e && i(e.index)
                        },
                      }[t]
                    if (n) return e.preventDefault(), void n(e)
                    var o = m((e) => {
                      var t = (0, R.LP)(
                        v.values(),
                        e,
                        (e) => {
                          var t, n
                          return null !=
                            (t = null == e || null == (n = e.node) ? void 0 : n.textContent)
                            ? t
                            : ''
                        },
                        v.item(r),
                      )
                      if (t) {
                        var n = v.indexOf(t.node)
                        i(n)
                      }
                    })
                    V(e.target) && o(e)
                  },
                  [v, r, m, s, i],
                ),
                y = f.useRef(!1)
              a && (y.current = !0)
              var b = (function (e) {
                var {
                  hasBeenSelected: t,
                  isLazy: n,
                  isSelected: r,
                  lazyBehavior: i = 'unmount',
                } = e
                return !n || !!r || !('keepMounted' !== i || !t)
              })({ hasBeenSelected: y.current, isLazy: d, lazyBehavior: p, isSelected: a })
              return j({}, e, {
                ref: (0, h.l)(o, t),
                children: b ? e.children : null,
                tabIndex: -1,
                role: 'menu',
                id: l,
                style: j({}, e.style, { transformOrigin: 'var(--popper-transform-origin)' }),
                'aria-orientation': 'vertical',
                onKeyDown: (0, u.v0)(e.onKeyDown, g),
              })
            })(a, t),
            v = (function (e) {
              void 0 === e && (e = {})
              var { popper: t, isOpen: n } = B()
              return t.getPopperProps(
                j({}, e, { style: j({ visibility: n ? 'visible' : 'hidden' }, e.style) }),
              )
            })(i),
            m = (0, o.yK)()
          return f.createElement(
            s.m$.div,
            G({}, v, {
              __css: {
                zIndex: null != (n = e.zIndex) ? n : null == (r = m.list) ? void 0 : r.zIndex,
              },
            }),
            f.createElement(
              X,
              G({}, p, {
                onUpdate: d,
                className: (0, c.cx)('chakra-menu__menu-list', p.className),
                variants: $,
                initial: !1,
                animate: l ? 'enter' : 'exit',
                __css: G({ outline: 0 }, m.list),
              }),
            ),
          )
        })
      l.Ts && (Y.displayName = 'MenuList')
      var Q = (0, a.G)((e, t) => {
          var { type: n } = e,
            r = q(e, ['type']),
            i = (0, o.yK)(),
            a = r.as ? (null != n ? n : void 0) : 'button',
            u = G(
              {
                textDecoration: 'none',
                color: 'inherit',
                userSelect: 'none',
                display: 'flex',
                width: '100%',
                alignItems: 'center',
                textAlign: 'start',
                flex: '0 0 auto',
                outline: 0,
              },
              i.item,
            )
          return f.createElement(s.m$.button, G({ ref: t, type: a }, r, { __css: u }))
        }),
        J = (0, a.G)((e, t) => {
          var {
              icon: n,
              iconSpacing: r = '0.75rem',
              command: i,
              commandSpacing: o = '0.75rem',
              children: a,
            } = e,
            s = U(q(e, ['icon', 'iconSpacing', 'command', 'commandSpacing', 'children']), t),
            u =
              n || i ? f.createElement('span', { style: { pointerEvents: 'none', flex: 1 } }, a) : a
          return f.createElement(
            Q,
            G({}, s, { className: (0, c.cx)('chakra-menu__menuitem', s.className) }),
            n && f.createElement(oe, { fontSize: '0.8em', marginEnd: r }, n),
            u,
            i && f.createElement(ie, { marginStart: o }, i),
          )
        })
      l.Ts && (J.displayName = 'MenuItem')
      var ee = (e) =>
          f.createElement(
            'svg',
            G({ viewBox: '0 0 14 14', width: '1em', height: '1em' }, e),
            f.createElement('polygon', {
              fill: 'currentColor',
              points:
                '5.5 11.9993304 14 3.49933039 12.5 2 5.5 8.99933039 1.5 4.9968652 0 6.49933039',
            }),
          ),
        te = (0, a.G)((e, t) => {
          var { icon: n, iconSpacing: r = '0.75rem' } = e,
            i = q(e, ['icon', 'iconSpacing']),
            o = (function (e, t) {
              void 0 === e && (e = {}), void 0 === t && (t = null)
              var { type: n = 'radio', isChecked: r } = e
              return j({}, U(D(e, ['type', 'isChecked']), t), {
                role: 'menuitem' + n,
                'aria-checked': r,
              })
            })(i, t)
          return f.createElement(
            Q,
            G({}, o, { className: (0, c.cx)('chakra-menu__menuitem-option', i.className) }),
            f.createElement(
              oe,
              { fontSize: '0.8em', marginEnd: r, opacity: e.isChecked ? 1 : 0 },
              n || f.createElement(ee, null),
            ),
            f.createElement('span', { style: { flex: 1 } }, o.children),
          )
        })
      ;(te.id = 'MenuItemOption'), l.Ts && (te.displayName = 'MenuItemOption')
      var ne = (e) => {
        var { className: t, title: n } = e,
          r = (function (e) {
            void 0 === e && (e = {})
            var { children: t, type: n = 'radio', value: r, defaultValue: i, onChange: o } = e,
              a = D(e, ['children', 'type', 'value', 'defaultValue', 'onChange']),
              s = 'radio' === n ? '' : [],
              [u, c] = (0, S.T)({ defaultValue: null != i ? i : s, value: r, onChange: o }),
              d = f.useCallback(
                (e) => {
                  if (('radio' === n && (0, l.HD)(u) && c(e), 'checkbox' === n && (0, l.kJ)(u))) {
                    var t = u.includes(e) ? (0, R.cl)(u, e) : (0, R.jX)(u, e)
                    c(t)
                  }
                },
                [u, c, n],
              )
            return j({}, a, {
              children: (0, M.W)(t).map((e) => {
                if ('MenuItemOption' !== e.type.id) return e
                var t = 'radio' === n ? e.props.value === u : u.includes(e.props.value)
                return f.cloneElement(e, {
                  type: n,
                  onClick: (t) => {
                    d(e.props.value), null == e.props.onClick || e.props.onClick(t)
                  },
                  isChecked: t,
                })
              }),
            })
          })(q(e, ['className', 'title']))
        return f.createElement(
          re,
          G({ title: n, className: (0, c.cx)('chakra-menu__option-group', t) }, r),
        )
      }
      l.Ts && (ne.displayName = 'MenuOptionGroup')
      var re = (0, a.G)((e, t) => {
        var { title: n, children: r, className: i } = e,
          a = q(e, ['title', 'children', 'className']),
          u = (0, c.cx)('chakra-menu__group__title', i),
          l = (0, o.yK)()
        return f.createElement(
          'div',
          { ref: t, className: 'chakra-menu__group', role: 'group' },
          n && f.createElement(s.m$.p, G({ className: u }, a, { __css: l.groupTitle }), n),
          r,
        )
      })
      l.Ts && (re.displayName = 'MenuGroup')
      var ie = (0, a.G)((e, t) => {
        var n = (0, o.yK)()
        return f.createElement(
          s.m$.span,
          G({ ref: t }, e, { __css: n.command, className: 'chakra-menu__command' }),
        )
      })
      l.Ts && (ie.displayName = 'MenuCommand')
      var oe = (e) => {
        var { className: t, children: n } = e,
          r = q(e, ['className', 'children']),
          i = f.Children.only(n),
          o = f.isValidElement(i)
            ? f.cloneElement(i, {
                focusable: 'false',
                'aria-hidden': !0,
                className: (0, c.cx)('chakra-menu__icon', i.props.className),
              })
            : null,
          a = (0, c.cx)('chakra-menu__icon-wrapper', t)
        return f.createElement(s.m$.span, G({ className: a }, r, { __css: { flexShrink: 0 } }), o)
      }
      l.Ts && (oe.displayName = 'MenuIcon')
      l.Ts
    },
    8931: function (e, t, n) {
      'use strict'
      n.d(t, {
        D: function () {
          return be
        },
      })
      var r = n(2947)
      function i(e) {
        var t = e.getBoundingClientRect()
        return {
          width: t.width,
          height: t.height,
          top: t.top,
          right: t.right,
          bottom: t.bottom,
          left: t.left,
          x: t.left,
          y: t.top,
        }
      }
      function o(e) {
        if ('[object Window]' !== e.toString()) {
          var t = e.ownerDocument
          return t ? t.defaultView : window
        }
        return e
      }
      function a(e) {
        var t = o(e)
        return { scrollLeft: t.pageXOffset, scrollTop: t.pageYOffset }
      }
      function s(e) {
        return e instanceof o(e).Element || e instanceof Element
      }
      function u(e) {
        return e instanceof o(e).HTMLElement || e instanceof HTMLElement
      }
      function l(e) {
        return e ? (e.nodeName || '').toLowerCase() : null
      }
      function c(e) {
        return (s(e) ? e.ownerDocument : e.document).documentElement
      }
      function d(e) {
        return i(c(e)).left + a(e).scrollLeft
      }
      function f(e) {
        return o(e).getComputedStyle(e)
      }
      function h(e) {
        var t = f(e),
          n = t.overflow,
          r = t.overflowX,
          i = t.overflowY
        return /auto|scroll|overlay|hidden/.test(n + i + r)
      }
      function p(e, t, n) {
        void 0 === n && (n = !1)
        var r = c(t),
          s = i(e),
          f = u(t),
          p = { scrollLeft: 0, scrollTop: 0 },
          v = { x: 0, y: 0 }
        return (
          (f || (!f && !n)) &&
            (('body' !== l(t) || h(r)) &&
              (p = (function (e) {
                return e !== o(e) && u(e)
                  ? { scrollLeft: (t = e).scrollLeft, scrollTop: t.scrollTop }
                  : a(e)
                var t
              })(t)),
            u(t) ? (((v = i(t)).x += t.clientLeft), (v.y += t.clientTop)) : r && (v.x = d(r))),
          {
            x: s.left + p.scrollLeft - v.x,
            y: s.top + p.scrollTop - v.y,
            width: s.width,
            height: s.height,
          }
        )
      }
      function v(e) {
        return { x: e.offsetLeft, y: e.offsetTop, width: e.offsetWidth, height: e.offsetHeight }
      }
      function m(e) {
        return 'html' === l(e) ? e : e.assignedSlot || e.parentNode || e.host || c(e)
      }
      function g(e) {
        return ['html', 'body', '#document'].indexOf(l(e)) >= 0
          ? e.ownerDocument.body
          : u(e) && h(e)
          ? e
          : g(m(e))
      }
      function y(e, t) {
        void 0 === t && (t = [])
        var n = g(e),
          r = 'body' === l(n),
          i = o(n),
          a = r ? [i].concat(i.visualViewport || [], h(n) ? n : []) : n,
          s = t.concat(a)
        return r ? s : s.concat(y(m(a)))
      }
      function b(e) {
        return ['table', 'td', 'th'].indexOf(l(e)) >= 0
      }
      function w(e) {
        if (!u(e) || 'fixed' === f(e).position) return null
        var t = e.offsetParent
        if (t) {
          var n = c(t)
          if ('body' === l(t) && 'static' === f(t).position && 'static' !== f(n).position) return n
        }
        return t
      }
      function x(e) {
        for (var t = o(e), n = w(e); n && b(n) && 'static' === f(n).position; ) n = w(n)
        return n && 'body' === l(n) && 'static' === f(n).position
          ? t
          : n ||
              (function (e) {
                for (var t = m(e); u(t) && ['html', 'body'].indexOf(l(t)) < 0; ) {
                  var n = f(t)
                  if (
                    'none' !== n.transform ||
                    'none' !== n.perspective ||
                    (n.willChange && 'auto' !== n.willChange)
                  )
                    return t
                  t = t.parentNode
                }
                return null
              })(e) ||
              t
      }
      var E = 'top',
        k = 'bottom',
        _ = 'right',
        T = 'left',
        O = 'auto',
        C = [E, k, _, T],
        S = 'start',
        A = 'end',
        P = 'viewport',
        M = 'popper',
        R = C.reduce(function (e, t) {
          return e.concat([t + '-' + S, t + '-' + A])
        }, []),
        j = [].concat(C, [O]).reduce(function (e, t) {
          return e.concat([t, t + '-' + S, t + '-' + A])
        }, []),
        D = [
          'beforeRead',
          'read',
          'afterRead',
          'beforeMain',
          'main',
          'afterMain',
          'beforeWrite',
          'write',
          'afterWrite',
        ]
      function L(e) {
        var t = new Map(),
          n = new Set(),
          r = []
        function i(e) {
          n.add(e.name),
            [].concat(e.requires || [], e.requiresIfExists || []).forEach(function (e) {
              if (!n.has(e)) {
                var r = t.get(e)
                r && i(r)
              }
            }),
            r.push(e)
        }
        return (
          e.forEach(function (e) {
            t.set(e.name, e)
          }),
          e.forEach(function (e) {
            n.has(e.name) || i(e)
          }),
          r
        )
      }
      function N(e) {
        var t
        return function () {
          return (
            t ||
              (t = new Promise(function (n) {
                Promise.resolve().then(function () {
                  ;(t = void 0), n(e())
                })
              })),
            t
          )
        }
      }
      var I = { placement: 'bottom', modifiers: [], strategy: 'absolute' }
      function z() {
        for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) t[n] = arguments[n]
        return !t.some(function (e) {
          return !(e && 'function' === typeof e.getBoundingClientRect)
        })
      }
      function H(e) {
        void 0 === e && (e = {})
        var t = e,
          n = t.defaultModifiers,
          r = void 0 === n ? [] : n,
          i = t.defaultOptions,
          o = void 0 === i ? I : i
        return function (e, t, n) {
          void 0 === n && (n = o)
          var i = {
              placement: 'bottom',
              orderedModifiers: [],
              options: Object.assign(Object.assign({}, I), o),
              modifiersData: {},
              elements: { reference: e, popper: t },
              attributes: {},
              styles: {},
            },
            a = [],
            u = !1,
            l = {
              state: i,
              setOptions: function (n) {
                c(),
                  (i.options = Object.assign(Object.assign(Object.assign({}, o), i.options), n)),
                  (i.scrollParents = {
                    reference: s(e) ? y(e) : e.contextElement ? y(e.contextElement) : [],
                    popper: y(t),
                  })
                var u = (function (e) {
                  var t = L(e)
                  return D.reduce(function (e, n) {
                    return e.concat(
                      t.filter(function (e) {
                        return e.phase === n
                      }),
                    )
                  }, [])
                })(
                  (function (e) {
                    var t = e.reduce(function (e, t) {
                      var n = e[t.name]
                      return (
                        (e[t.name] = n
                          ? Object.assign(
                              Object.assign(Object.assign({}, n), t),
                              {},
                              {
                                options: Object.assign(Object.assign({}, n.options), t.options),
                                data: Object.assign(Object.assign({}, n.data), t.data),
                              },
                            )
                          : t),
                        e
                      )
                    }, {})
                    return Object.keys(t).map(function (e) {
                      return t[e]
                    })
                  })([].concat(r, i.options.modifiers)),
                )
                return (
                  (i.orderedModifiers = u.filter(function (e) {
                    return e.enabled
                  })),
                  i.orderedModifiers.forEach(function (e) {
                    var t = e.name,
                      n = e.options,
                      r = void 0 === n ? {} : n,
                      o = e.effect
                    if ('function' === typeof o) {
                      var s = o({ state: i, name: t, instance: l, options: r }),
                        u = function () {}
                      a.push(s || u)
                    }
                  }),
                  l.update()
                )
              },
              forceUpdate: function () {
                if (!u) {
                  var e = i.elements,
                    t = e.reference,
                    n = e.popper
                  if (z(t, n)) {
                    ;(i.rects = {
                      reference: p(t, x(n), 'fixed' === i.options.strategy),
                      popper: v(n),
                    }),
                      (i.reset = !1),
                      (i.placement = i.options.placement),
                      i.orderedModifiers.forEach(function (e) {
                        return (i.modifiersData[e.name] = Object.assign({}, e.data))
                      })
                    for (var r = 0; r < i.orderedModifiers.length; r++)
                      if (!0 !== i.reset) {
                        var o = i.orderedModifiers[r],
                          a = o.fn,
                          s = o.options,
                          c = void 0 === s ? {} : s,
                          d = o.name
                        'function' === typeof a &&
                          (i = a({ state: i, options: c, name: d, instance: l }) || i)
                      } else (i.reset = !1), (r = -1)
                  }
                }
              },
              update: N(function () {
                return new Promise(function (e) {
                  l.forceUpdate(), e(i)
                })
              }),
              destroy: function () {
                c(), (u = !0)
              },
            }
          if (!z(e, t)) return l
          function c() {
            a.forEach(function (e) {
              return e()
            }),
              (a = [])
          }
          return (
            l.setOptions(n).then(function (e) {
              !u && n.onFirstUpdate && n.onFirstUpdate(e)
            }),
            l
          )
        }
      }
      var B = { passive: !0 }
      function F(e) {
        return e.split('-')[0]
      }
      function V(e) {
        return e.split('-')[1]
      }
      function U(e) {
        return ['top', 'bottom'].indexOf(e) >= 0 ? 'x' : 'y'
      }
      function G(e) {
        var t,
          n = e.reference,
          r = e.element,
          i = e.placement,
          o = i ? F(i) : null,
          a = i ? V(i) : null,
          s = n.x + n.width / 2 - r.width / 2,
          u = n.y + n.height / 2 - r.height / 2
        switch (o) {
          case E:
            t = { x: s, y: n.y - r.height }
            break
          case k:
            t = { x: s, y: n.y + n.height }
            break
          case _:
            t = { x: n.x + n.width, y: u }
            break
          case T:
            t = { x: n.x - r.width, y: u }
            break
          default:
            t = { x: n.x, y: n.y }
        }
        var l = o ? U(o) : null
        if (null != l) {
          var c = 'y' === l ? 'height' : 'width'
          switch (a) {
            case S:
              t[l] = Math.floor(t[l]) - Math.floor(n[c] / 2 - r[c] / 2)
              break
            case A:
              t[l] = Math.floor(t[l]) + Math.ceil(n[c] / 2 - r[c] / 2)
          }
        }
        return t
      }
      var q = { top: 'auto', right: 'auto', bottom: 'auto', left: 'auto' }
      function W(e) {
        var t,
          n = e.popper,
          r = e.popperRect,
          i = e.placement,
          a = e.offsets,
          s = e.position,
          u = e.gpuAcceleration,
          l = e.adaptive,
          d = (function (e) {
            var t = e.x,
              n = e.y,
              r = window.devicePixelRatio || 1
            return { x: Math.round(t * r) / r || 0, y: Math.round(n * r) / r || 0 }
          })(a),
          f = d.x,
          h = d.y,
          p = a.hasOwnProperty('x'),
          v = a.hasOwnProperty('y'),
          m = T,
          g = E,
          y = window
        if (l) {
          var b = x(n)
          b === o(n) && (b = c(n)),
            i === E && ((g = k), (h -= b.clientHeight - r.height), (h *= u ? 1 : -1)),
            i === T && ((m = _), (f -= b.clientWidth - r.width), (f *= u ? 1 : -1))
        }
        var w,
          O = Object.assign({ position: s }, l && q)
        return u
          ? Object.assign(
              Object.assign({}, O),
              {},
              (((w = {})[g] = v ? '0' : ''),
              (w[m] = p ? '0' : ''),
              (w.transform =
                (y.devicePixelRatio || 1) < 2
                  ? 'translate(' + f + 'px, ' + h + 'px)'
                  : 'translate3d(' + f + 'px, ' + h + 'px, 0)'),
              w),
            )
          : Object.assign(
              Object.assign({}, O),
              {},
              (((t = {})[g] = v ? h + 'px' : ''),
              (t[m] = p ? f + 'px' : ''),
              (t.transform = ''),
              t),
            )
      }
      var K = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' }
      function Z(e) {
        return e.replace(/left|right|bottom|top/g, function (e) {
          return K[e]
        })
      }
      var $ = { start: 'end', end: 'start' }
      function X(e) {
        return e.replace(/start|end/g, function (e) {
          return $[e]
        })
      }
      function Y(e, t) {
        var n = Boolean(t.getRootNode && t.getRootNode().host)
        if (e.contains(t)) return !0
        if (n) {
          var r = t
          do {
            if (r && e.isSameNode(r)) return !0
            r = r.parentNode || r.host
          } while (r)
        }
        return !1
      }
      function Q(e) {
        return Object.assign(
          Object.assign({}, e),
          {},
          { left: e.x, top: e.y, right: e.x + e.width, bottom: e.y + e.height },
        )
      }
      function J(e, t) {
        return t === P
          ? Q(
              (function (e) {
                var t = o(e),
                  n = c(e),
                  r = t.visualViewport,
                  i = n.clientWidth,
                  a = n.clientHeight,
                  s = 0,
                  u = 0
                return (
                  r &&
                    ((i = r.width),
                    (a = r.height),
                    /^((?!chrome|android).)*safari/i.test(navigator.userAgent) ||
                      ((s = r.offsetLeft), (u = r.offsetTop))),
                  { width: i, height: a, x: s + d(e), y: u }
                )
              })(e),
            )
          : u(t)
          ? (function (e) {
              var t = i(e)
              return (
                (t.top = t.top + e.clientTop),
                (t.left = t.left + e.clientLeft),
                (t.bottom = t.top + e.clientHeight),
                (t.right = t.left + e.clientWidth),
                (t.width = e.clientWidth),
                (t.height = e.clientHeight),
                (t.x = t.left),
                (t.y = t.top),
                t
              )
            })(t)
          : Q(
              (function (e) {
                var t = c(e),
                  n = a(e),
                  r = e.ownerDocument.body,
                  i = Math.max(
                    t.scrollWidth,
                    t.clientWidth,
                    r ? r.scrollWidth : 0,
                    r ? r.clientWidth : 0,
                  ),
                  o = Math.max(
                    t.scrollHeight,
                    t.clientHeight,
                    r ? r.scrollHeight : 0,
                    r ? r.clientHeight : 0,
                  ),
                  s = -n.scrollLeft + d(e),
                  u = -n.scrollTop
                return (
                  'rtl' === f(r || t).direction &&
                    (s += Math.max(t.clientWidth, r ? r.clientWidth : 0) - i),
                  { width: i, height: o, x: s, y: u }
                )
              })(c(e)),
            )
      }
      function ee(e, t, n) {
        var r =
            'clippingParents' === t
              ? (function (e) {
                  var t = y(m(e)),
                    n = ['absolute', 'fixed'].indexOf(f(e).position) >= 0 && u(e) ? x(e) : e
                  return s(n)
                    ? t.filter(function (e) {
                        return s(e) && Y(e, n) && 'body' !== l(e)
                      })
                    : []
                })(e)
              : [].concat(t),
          i = [].concat(r, [n]),
          o = i[0],
          a = i.reduce(function (t, n) {
            var r = J(e, n)
            return (
              (t.top = Math.max(r.top, t.top)),
              (t.right = Math.min(r.right, t.right)),
              (t.bottom = Math.min(r.bottom, t.bottom)),
              (t.left = Math.max(r.left, t.left)),
              t
            )
          }, J(e, o))
        return (
          (a.width = a.right - a.left),
          (a.height = a.bottom - a.top),
          (a.x = a.left),
          (a.y = a.top),
          a
        )
      }
      function te(e) {
        return Object.assign(Object.assign({}, { top: 0, right: 0, bottom: 0, left: 0 }), e)
      }
      function ne(e, t) {
        return t.reduce(function (t, n) {
          return (t[n] = e), t
        }, {})
      }
      function re(e, t) {
        void 0 === t && (t = {})
        var n = t,
          r = n.placement,
          o = void 0 === r ? e.placement : r,
          a = n.boundary,
          u = void 0 === a ? 'clippingParents' : a,
          l = n.rootBoundary,
          d = void 0 === l ? P : l,
          f = n.elementContext,
          h = void 0 === f ? M : f,
          p = n.altBoundary,
          v = void 0 !== p && p,
          m = n.padding,
          g = void 0 === m ? 0 : m,
          y = te('number' !== typeof g ? g : ne(g, C)),
          b = h === M ? 'reference' : M,
          w = e.elements.reference,
          x = e.rects.popper,
          T = e.elements[v ? b : h],
          O = ee(s(T) ? T : T.contextElement || c(e.elements.popper), u, d),
          S = i(w),
          A = G({ reference: S, element: x, strategy: 'absolute', placement: o }),
          R = Q(Object.assign(Object.assign({}, x), A)),
          j = h === M ? R : S,
          D = {
            top: O.top - j.top + y.top,
            bottom: j.bottom - O.bottom + y.bottom,
            left: O.left - j.left + y.left,
            right: j.right - O.right + y.right,
          },
          L = e.modifiersData.offset
        if (h === M && L) {
          var N = L[o]
          Object.keys(D).forEach(function (e) {
            var t = [_, k].indexOf(e) >= 0 ? 1 : -1,
              n = [E, k].indexOf(e) >= 0 ? 'y' : 'x'
            D[e] += N[n] * t
          })
        }
        return D
      }
      function ie(e, t, n) {
        return Math.max(e, Math.min(t, n))
      }
      function oe(e, t, n) {
        return (
          void 0 === n && (n = { x: 0, y: 0 }),
          {
            top: e.top - t.height - n.y,
            right: e.right - t.width + n.x,
            bottom: e.bottom - t.height + n.y,
            left: e.left - t.width - n.x,
          }
        )
      }
      function ae(e) {
        return [E, _, k, T].some(function (t) {
          return e[t] >= 0
        })
      }
      var se = H({
          defaultModifiers: [
            {
              name: 'eventListeners',
              enabled: !0,
              phase: 'write',
              fn: function () {},
              effect: function (e) {
                var t = e.state,
                  n = e.instance,
                  r = e.options,
                  i = r.scroll,
                  a = void 0 === i || i,
                  s = r.resize,
                  u = void 0 === s || s,
                  l = o(t.elements.popper),
                  c = [].concat(t.scrollParents.reference, t.scrollParents.popper)
                return (
                  a &&
                    c.forEach(function (e) {
                      e.addEventListener('scroll', n.update, B)
                    }),
                  u && l.addEventListener('resize', n.update, B),
                  function () {
                    a &&
                      c.forEach(function (e) {
                        e.removeEventListener('scroll', n.update, B)
                      }),
                      u && l.removeEventListener('resize', n.update, B)
                  }
                )
              },
              data: {},
            },
            {
              name: 'popperOffsets',
              enabled: !0,
              phase: 'read',
              fn: function (e) {
                var t = e.state,
                  n = e.name
                t.modifiersData[n] = G({
                  reference: t.rects.reference,
                  element: t.rects.popper,
                  strategy: 'absolute',
                  placement: t.placement,
                })
              },
              data: {},
            },
            {
              name: 'computeStyles',
              enabled: !0,
              phase: 'beforeWrite',
              fn: function (e) {
                var t = e.state,
                  n = e.options,
                  r = n.gpuAcceleration,
                  i = void 0 === r || r,
                  o = n.adaptive,
                  a = void 0 === o || o,
                  s = {
                    placement: F(t.placement),
                    popper: t.elements.popper,
                    popperRect: t.rects.popper,
                    gpuAcceleration: i,
                  }
                null != t.modifiersData.popperOffsets &&
                  (t.styles.popper = Object.assign(
                    Object.assign({}, t.styles.popper),
                    W(
                      Object.assign(
                        Object.assign({}, s),
                        {},
                        {
                          offsets: t.modifiersData.popperOffsets,
                          position: t.options.strategy,
                          adaptive: a,
                        },
                      ),
                    ),
                  )),
                  null != t.modifiersData.arrow &&
                    (t.styles.arrow = Object.assign(
                      Object.assign({}, t.styles.arrow),
                      W(
                        Object.assign(
                          Object.assign({}, s),
                          {},
                          { offsets: t.modifiersData.arrow, position: 'absolute', adaptive: !1 },
                        ),
                      ),
                    )),
                  (t.attributes.popper = Object.assign(
                    Object.assign({}, t.attributes.popper),
                    {},
                    { 'data-popper-placement': t.placement },
                  ))
              },
              data: {},
            },
            {
              name: 'applyStyles',
              enabled: !0,
              phase: 'write',
              fn: function (e) {
                var t = e.state
                Object.keys(t.elements).forEach(function (e) {
                  var n = t.styles[e] || {},
                    r = t.attributes[e] || {},
                    i = t.elements[e]
                  u(i) &&
                    l(i) &&
                    (Object.assign(i.style, n),
                    Object.keys(r).forEach(function (e) {
                      var t = r[e]
                      !1 === t ? i.removeAttribute(e) : i.setAttribute(e, !0 === t ? '' : t)
                    }))
                })
              },
              effect: function (e) {
                var t = e.state,
                  n = {
                    popper: { position: t.options.strategy, left: '0', top: '0', margin: '0' },
                    arrow: { position: 'absolute' },
                    reference: {},
                  }
                return (
                  Object.assign(t.elements.popper.style, n.popper),
                  t.elements.arrow && Object.assign(t.elements.arrow.style, n.arrow),
                  function () {
                    Object.keys(t.elements).forEach(function (e) {
                      var r = t.elements[e],
                        i = t.attributes[e] || {},
                        o = Object.keys(t.styles.hasOwnProperty(e) ? t.styles[e] : n[e]).reduce(
                          function (e, t) {
                            return (e[t] = ''), e
                          },
                          {},
                        )
                      u(r) &&
                        l(r) &&
                        (Object.assign(r.style, o),
                        Object.keys(i).forEach(function (e) {
                          r.removeAttribute(e)
                        }))
                    })
                  }
                )
              },
              requires: ['computeStyles'],
            },
            {
              name: 'offset',
              enabled: !0,
              phase: 'main',
              requires: ['popperOffsets'],
              fn: function (e) {
                var t = e.state,
                  n = e.options,
                  r = e.name,
                  i = n.offset,
                  o = void 0 === i ? [0, 0] : i,
                  a = j.reduce(function (e, n) {
                    return (
                      (e[n] = (function (e, t, n) {
                        var r = F(e),
                          i = [T, E].indexOf(r) >= 0 ? -1 : 1,
                          o =
                            'function' === typeof n
                              ? n(Object.assign(Object.assign({}, t), {}, { placement: e }))
                              : n,
                          a = o[0],
                          s = o[1]
                        return (
                          (a = a || 0),
                          (s = (s || 0) * i),
                          [T, _].indexOf(r) >= 0 ? { x: s, y: a } : { x: a, y: s }
                        )
                      })(n, t.rects, o)),
                      e
                    )
                  }, {}),
                  s = a[t.placement],
                  u = s.x,
                  l = s.y
                null != t.modifiersData.popperOffsets &&
                  ((t.modifiersData.popperOffsets.x += u), (t.modifiersData.popperOffsets.y += l)),
                  (t.modifiersData[r] = a)
              },
            },
            {
              name: 'flip',
              enabled: !0,
              phase: 'main',
              fn: function (e) {
                var t = e.state,
                  n = e.options,
                  r = e.name
                if (!t.modifiersData[r]._skip) {
                  for (
                    var i = n.mainAxis,
                      o = void 0 === i || i,
                      a = n.altAxis,
                      s = void 0 === a || a,
                      u = n.fallbackPlacements,
                      l = n.padding,
                      c = n.boundary,
                      d = n.rootBoundary,
                      f = n.altBoundary,
                      h = n.flipVariations,
                      p = void 0 === h || h,
                      v = n.allowedAutoPlacements,
                      m = t.options.placement,
                      g = F(m),
                      y =
                        u ||
                        (g === m || !p
                          ? [Z(m)]
                          : (function (e) {
                              if (F(e) === O) return []
                              var t = Z(e)
                              return [X(e), t, X(t)]
                            })(m)),
                      b = [m].concat(y).reduce(function (e, n) {
                        return e.concat(
                          F(n) === O
                            ? (function (e, t) {
                                void 0 === t && (t = {})
                                var n = t,
                                  r = n.placement,
                                  i = n.boundary,
                                  o = n.rootBoundary,
                                  a = n.padding,
                                  s = n.flipVariations,
                                  u = n.allowedAutoPlacements,
                                  l = void 0 === u ? j : u,
                                  c = V(r),
                                  d = c
                                    ? s
                                      ? R
                                      : R.filter(function (e) {
                                          return V(e) === c
                                        })
                                    : C,
                                  f = d.filter(function (e) {
                                    return l.indexOf(e) >= 0
                                  })
                                0 === f.length && (f = d)
                                var h = f.reduce(function (t, n) {
                                  return (
                                    (t[n] = re(e, {
                                      placement: n,
                                      boundary: i,
                                      rootBoundary: o,
                                      padding: a,
                                    })[F(n)]),
                                    t
                                  )
                                }, {})
                                return Object.keys(h).sort(function (e, t) {
                                  return h[e] - h[t]
                                })
                              })(t, {
                                placement: n,
                                boundary: c,
                                rootBoundary: d,
                                padding: l,
                                flipVariations: p,
                                allowedAutoPlacements: v,
                              })
                            : n,
                        )
                      }, []),
                      w = t.rects.reference,
                      x = t.rects.popper,
                      A = new Map(),
                      P = !0,
                      M = b[0],
                      D = 0;
                    D < b.length;
                    D++
                  ) {
                    var L = b[D],
                      N = F(L),
                      I = V(L) === S,
                      z = [E, k].indexOf(N) >= 0,
                      H = z ? 'width' : 'height',
                      B = re(t, {
                        placement: L,
                        boundary: c,
                        rootBoundary: d,
                        altBoundary: f,
                        padding: l,
                      }),
                      U = z ? (I ? _ : T) : I ? k : E
                    w[H] > x[H] && (U = Z(U))
                    var G = Z(U),
                      q = []
                    if (
                      (o && q.push(B[N] <= 0),
                      s && q.push(B[U] <= 0, B[G] <= 0),
                      q.every(function (e) {
                        return e
                      }))
                    ) {
                      ;(M = L), (P = !1)
                      break
                    }
                    A.set(L, q)
                  }
                  if (P)
                    for (
                      var W = function (e) {
                          var t = b.find(function (t) {
                            var n = A.get(t)
                            if (n)
                              return n.slice(0, e).every(function (e) {
                                return e
                              })
                          })
                          if (t) return (M = t), 'break'
                        },
                        K = p ? 3 : 1;
                      K > 0;
                      K--
                    ) {
                      if ('break' === W(K)) break
                    }
                  t.placement !== M &&
                    ((t.modifiersData[r]._skip = !0), (t.placement = M), (t.reset = !0))
                }
              },
              requiresIfExists: ['offset'],
              data: { _skip: !1 },
            },
            {
              name: 'preventOverflow',
              enabled: !0,
              phase: 'main',
              fn: function (e) {
                var t = e.state,
                  n = e.options,
                  r = e.name,
                  i = n.mainAxis,
                  o = void 0 === i || i,
                  a = n.altAxis,
                  s = void 0 !== a && a,
                  u = n.boundary,
                  l = n.rootBoundary,
                  c = n.altBoundary,
                  d = n.padding,
                  f = n.tether,
                  h = void 0 === f || f,
                  p = n.tetherOffset,
                  m = void 0 === p ? 0 : p,
                  g = re(t, { boundary: u, rootBoundary: l, padding: d, altBoundary: c }),
                  y = F(t.placement),
                  b = V(t.placement),
                  w = !b,
                  O = U(y),
                  C = 'x' === O ? 'y' : 'x',
                  A = t.modifiersData.popperOffsets,
                  P = t.rects.reference,
                  M = t.rects.popper,
                  R =
                    'function' === typeof m
                      ? m(Object.assign(Object.assign({}, t.rects), {}, { placement: t.placement }))
                      : m,
                  j = { x: 0, y: 0 }
                if (A) {
                  if (o) {
                    var D = 'y' === O ? E : T,
                      L = 'y' === O ? k : _,
                      N = 'y' === O ? 'height' : 'width',
                      I = A[O],
                      z = A[O] + g[D],
                      H = A[O] - g[L],
                      B = h ? -M[N] / 2 : 0,
                      G = b === S ? P[N] : M[N],
                      q = b === S ? -M[N] : -P[N],
                      W = t.elements.arrow,
                      K = h && W ? v(W) : { width: 0, height: 0 },
                      Z = t.modifiersData['arrow#persistent']
                        ? t.modifiersData['arrow#persistent'].padding
                        : { top: 0, right: 0, bottom: 0, left: 0 },
                      $ = Z[D],
                      X = Z[L],
                      Y = ie(0, P[N], K[N]),
                      Q = w ? P[N] / 2 - B - Y - $ - R : G - Y - $ - R,
                      J = w ? -P[N] / 2 + B + Y + X + R : q + Y + X + R,
                      ee = t.elements.arrow && x(t.elements.arrow),
                      te = ee ? ('y' === O ? ee.clientTop || 0 : ee.clientLeft || 0) : 0,
                      ne = t.modifiersData.offset ? t.modifiersData.offset[t.placement][O] : 0,
                      oe = A[O] + Q - ne - te,
                      ae = A[O] + J - ne,
                      se = ie(h ? Math.min(z, oe) : z, I, h ? Math.max(H, ae) : H)
                    ;(A[O] = se), (j[O] = se - I)
                  }
                  if (s) {
                    var ue = 'x' === O ? E : T,
                      le = 'x' === O ? k : _,
                      ce = A[C],
                      de = ie(ce + g[ue], ce, ce - g[le])
                    ;(A[C] = de), (j[C] = de - ce)
                  }
                  t.modifiersData[r] = j
                }
              },
              requiresIfExists: ['offset'],
            },
            {
              name: 'arrow',
              enabled: !0,
              phase: 'main',
              fn: function (e) {
                var t,
                  n = e.state,
                  r = e.name,
                  i = n.elements.arrow,
                  o = n.modifiersData.popperOffsets,
                  a = F(n.placement),
                  s = U(a),
                  u = [T, _].indexOf(a) >= 0 ? 'height' : 'width'
                if (i && o) {
                  var l = n.modifiersData[r + '#persistent'].padding,
                    c = v(i),
                    d = 'y' === s ? E : T,
                    f = 'y' === s ? k : _,
                    h = n.rects.reference[u] + n.rects.reference[s] - o[s] - n.rects.popper[u],
                    p = o[s] - n.rects.reference[s],
                    m = x(i),
                    g = m ? ('y' === s ? m.clientHeight || 0 : m.clientWidth || 0) : 0,
                    y = h / 2 - p / 2,
                    b = l[d],
                    w = g - c[u] - l[f],
                    O = g / 2 - c[u] / 2 + y,
                    C = ie(b, O, w),
                    S = s
                  n.modifiersData[r] = (((t = {})[S] = C), (t.centerOffset = C - O), t)
                }
              },
              effect: function (e) {
                var t = e.state,
                  n = e.options,
                  r = e.name,
                  i = n.element,
                  o = void 0 === i ? '[data-popper-arrow]' : i,
                  a = n.padding,
                  s = void 0 === a ? 0 : a
                null != o &&
                  ('string' !== typeof o || (o = t.elements.popper.querySelector(o))) &&
                  Y(t.elements.popper, o) &&
                  ((t.elements.arrow = o),
                  (t.modifiersData[r + '#persistent'] = {
                    padding: te('number' !== typeof s ? s : ne(s, C)),
                  }))
              },
              requires: ['popperOffsets'],
              requiresIfExists: ['preventOverflow'],
            },
            {
              name: 'hide',
              enabled: !0,
              phase: 'main',
              requiresIfExists: ['preventOverflow'],
              fn: function (e) {
                var t = e.state,
                  n = e.name,
                  r = t.rects.reference,
                  i = t.rects.popper,
                  o = t.modifiersData.preventOverflow,
                  a = re(t, { elementContext: 'reference' }),
                  s = re(t, { altBoundary: !0 }),
                  u = oe(a, r),
                  l = oe(s, i, o),
                  c = ae(u),
                  d = ae(l)
                ;(t.modifiersData[n] = {
                  referenceClippingOffsets: u,
                  popperEscapeOffsets: l,
                  isReferenceHidden: c,
                  hasPopperEscaped: d,
                }),
                  (t.attributes.popper = Object.assign(
                    Object.assign({}, t.attributes.popper),
                    {},
                    { 'data-popper-reference-hidden': c, 'data-popper-escaped': d },
                  ))
              },
            },
          ],
        }),
        ue = n(7294),
        le = n(3459),
        ce = {
          name: 'matchWidth',
          enabled: !0,
          phase: 'beforeWrite',
          requires: ['computeStyles'],
          fn: (e) => {
            var { state: t } = e
            t.styles.popper.width = t.rects.reference.width + 'px'
          },
          effect: (e) => {
            var { state: t } = e
            return () => {
              var e = t.elements.reference
              t.elements.popper.style.width = e.offsetWidth + 'px'
            }
          },
        },
        de = {
          name: 'transformOrigin',
          enabled: !0,
          phase: 'write',
          fn: (e) => {
            var { state: t } = e
            fe(t)
          },
          effect: (e) => {
            var { state: t } = e
            return () => {
              fe(t)
            }
          },
        },
        fe = (e) => {
          e.elements.popper.style.setProperty(le.Dq.transformOrigin.var, (0, le.mv)(e.placement))
        },
        he = {
          name: 'positionArrow',
          enabled: !0,
          phase: 'afterWrite',
          fn: (e) => {
            var { state: t } = e
            pe(t)
          },
        },
        pe = (e) => {
          var t
          if (e.placement) {
            var n = ve(e.placement)
            if (null != (t = e.elements) && t.arrow && n) {
              Object.assign(e.elements.arrow.style, {
                [n.property]: n.value,
                width: le.Dq.arrowSize.varRef,
                height: le.Dq.arrowSize.varRef,
                zIndex: -1,
              })
              var r = {
                [le.Dq.arrowSizeHalf.var]: 'calc(' + le.Dq.arrowSize.varRef + ' / 2)',
                [le.Dq.arrowOffset.var]: 'calc(' + le.Dq.arrowSizeHalf.varRef + ' * -1)',
              }
              for (var i in r) e.elements.arrow.style.setProperty(i, r[i])
            }
          }
        },
        ve = (e) =>
          e.startsWith('top')
            ? { property: 'bottom', value: le.Dq.arrowOffset.varRef }
            : e.startsWith('bottom')
            ? { property: 'top', value: le.Dq.arrowOffset.varRef }
            : e.startsWith('left')
            ? { property: 'right', value: le.Dq.arrowOffset.varRef }
            : e.startsWith('right')
            ? { property: 'left', value: le.Dq.arrowOffset.varRef }
            : void 0,
        me = {
          name: 'innerArrow',
          enabled: !0,
          phase: 'main',
          requires: ['arrow'],
          fn: (e) => {
            var { state: t } = e
            ge(t)
          },
          effect: (e) => {
            var { state: t } = e
            return () => {
              ge(t)
            }
          },
        },
        ge = (e) => {
          if (e.elements.arrow) {
            var t = e.elements.arrow.querySelector('[data-popper-arrow-inner]')
            t &&
              Object.assign(t.style, {
                transform: 'rotate(45deg)',
                background: le.Dq.arrowBg.varRef,
                top: 0,
                left: 0,
                width: '100%',
                height: '100%',
                position: 'absolute',
                zIndex: 'inherit',
                boxShadow: (0, le.Ke)(e.placement),
              })
          }
        }
      function ye() {
        return (ye =
          Object.assign ||
          function (e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t]
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }).apply(this, arguments)
      }
      function be(e) {
        void 0 === e && (e = {})
        var {
            enabled: t = !0,
            modifiers: n = [],
            placement: i = 'bottom',
            strategy: o = 'absolute',
            arrowPadding: a = 8,
            eventListeners: s = !0,
            offset: u,
            gutter: l = 8,
            flip: c = !0,
            boundary: d = 'clippingParents',
            preventOverflow: f = !0,
            matchWidth: h,
          } = e,
          p = (0, ue.useRef)(null),
          v = (0, ue.useRef)(null),
          m = (0, ue.useRef)(null),
          g = (0, ue.useRef)(() => {}),
          y = (0, ue.useCallback)(() => {
            t &&
              p.current &&
              v.current &&
              (null == g.current || g.current(),
              (m.current = se(p.current, v.current, {
                placement: i,
                modifiers: [
                  me,
                  he,
                  de,
                  ye({}, ce, { enabled: !!h }),
                  ye({ name: 'eventListeners' }, (0, le.$B)(s)),
                  { name: 'arrow', options: { padding: a } },
                  { name: 'offset', options: { offset: null != u ? u : [0, l] } },
                  { name: 'flip', enabled: !!c, options: { padding: 8 } },
                  { name: 'preventOverflow', enabled: !!f, options: { boundary: d } },
                  ...n,
                ],
                strategy: o,
              })),
              m.current.forceUpdate(),
              (g.current = m.current.destroy))
          }, [t, i, n, h, s, a, u, l, c, f, d, o])
        ;(0, ue.useEffect)(
          () => () => {
            var e
            p.current || v.current || (null == (e = m.current) || e.destroy(), (m.current = null))
          },
          [],
        )
        var b = (0, ue.useCallback)(
            (e) => {
              ;(p.current = e), y()
            },
            [y],
          ),
          w = (0, ue.useCallback)(
            function (e, t) {
              return (
                void 0 === e && (e = {}),
                void 0 === t && (t = null),
                ye({}, e, { ref: (0, r.l)(b, t) })
              )
            },
            [b],
          ),
          x = (0, ue.useCallback)(
            (e) => {
              ;(v.current = e), y()
            },
            [y],
          ),
          E = (0, ue.useCallback)(
            function (e, t) {
              return (
                void 0 === e && (e = {}),
                void 0 === t && (t = null),
                ye({}, e, {
                  ref: (0, r.l)(x, t),
                  style: ye({}, e.style, {
                    position: o,
                    minWidth: 'max-content',
                    inset: '0 auto auto 0',
                  }),
                })
              )
            },
            [o, x],
          ),
          k = (0, ue.useCallback)(function (e, t) {
            return (
              void 0 === e && (e = {}),
              void 0 === t && (t = null),
              ye(
                {},
                (function (e, t) {
                  if (null == e) return {}
                  var n,
                    r,
                    i = {},
                    o = Object.keys(e)
                  for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n])
                  return i
                })(e, ['size', 'shadowColor', 'bg', 'style']),
                { ref: t, 'data-popper-arrow': '', style: we(e) },
              )
            )
          }, []),
          _ = (0, ue.useCallback)(function (e, t) {
            return (
              void 0 === e && (e = {}),
              void 0 === t && (t = null),
              ye({}, e, { ref: t, 'data-popper-arrow-inner': '' })
            )
          }, [])
        return {
          update() {
            var e
            null == (e = m.current) || e.update()
          },
          forceUpdate() {
            var e
            null == (e = m.current) || e.forceUpdate()
          },
          transformOrigin: le.Dq.transformOrigin.varRef,
          referenceRef: b,
          popperRef: x,
          getPopperProps: E,
          getArrowProps: k,
          getArrowInnerProps: _,
          getReferenceProps: w,
        }
      }
      function we(e) {
        var { size: t, shadowColor: n, bg: r, style: i } = e,
          o = ye({}, i, { position: 'absolute' })
        return (
          t && (o['--popper-arrow-size'] = t),
          n && (o['--popper-arrow-shadow-color'] = n),
          r && (o['--popper-arrow-bg'] = r),
          o
        )
      }
    },
    3459: function (e, t, n) {
      'use strict'
      function r() {
        return (r =
          Object.assign ||
          function (e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t]
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }).apply(this, arguments)
      }
      n.d(t, {
        Dq: function () {
          return o
        },
        Ke: function () {
          return a
        },
        mv: function () {
          return u
        },
        $B: function () {
          return c
        },
      })
      var i = (e, t) => ({ var: e, varRef: t ? 'var(' + e + ', ' + t + ')' : 'var(' + e + ')' }),
        o = {
          arrowShadowColor: i('--popper-arrow-shadow-color'),
          arrowSize: i('--popper-arrow-size', '8px'),
          arrowSizeHalf: i('--popper-arrow-size-half'),
          arrowBg: i('--popper-arrow-bg'),
          transformOrigin: i('--popper-transform-origin'),
          arrowOffset: i('--popper-arrow-offset'),
        }
      function a(e) {
        return e.includes('top')
          ? '1px 1px 1px 0 var(--popper-arrow-shadow-color)'
          : e.includes('bottom')
          ? '-1px -1px 1px 0 var(--popper-arrow-shadow-color)'
          : e.includes('right')
          ? '-1px 1px 1px 0 var(--popper-arrow-shadow-color)'
          : e.includes('left')
          ? '1px -1px 1px 0 var(--popper-arrow-shadow-color)'
          : void 0
      }
      var s = {
          top: 'bottom center',
          'top-start': 'bottom left',
          'top-end': 'bottom right',
          bottom: 'top center',
          'bottom-start': 'top left',
          'bottom-end': 'top right',
          left: 'right center',
          'left-start': 'right top',
          'left-end': 'right bottom',
          right: 'left center',
          'right-start': 'left top',
          'right-end': 'left bottom',
        },
        u = (e) => s[e],
        l = { scroll: !0, resize: !0 }
      function c(e) {
        return 'object' === typeof e
          ? { enabled: !0, options: r({}, l, e) }
          : { enabled: e, options: l }
      }
    },
    7273: function (e, t, n) {
      'use strict'
      n.d(t, {
        h: function () {
          return b
        },
      })
      var r = n(7294),
        i = n(7581)
      function o() {
        var e = r.useRef(!1),
          [t, n] = r.useState(0)
        return (
          (0, i.z)(() => {
            e.current = !0
          }),
          r.useCallback(() => {
            e.current || n(t + 1)
          }, [t])
        )
      }
      var a = n(8327),
        s = n(4461),
        u = n(3808),
        l = n(8500),
        c = n(3935),
        d = n(4288)
      function f() {
        return (f =
          Object.assign ||
          function (e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t]
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }).apply(this, arguments)
      }
      var [h, p] = (0, l.k)({ strict: !1, name: 'PortalContext' }),
        v = 'chakra-portal',
        m = (e) =>
          r.createElement(
            'div',
            {
              className: 'chakra-portal-zIndex',
              style: { position: 'absolute', zIndex: e.zIndex, top: 0, left: 0, right: 0 },
            },
            e.children,
          ),
        g = (e) => {
          var { appendToParentPortal: t, children: n } = e,
            i = r.useRef(null),
            s = r.useRef(null),
            u = o(),
            l = p(),
            f = (0, d.L)()
          ;(0, a.G)(() => {
            if (i.current) {
              var e = i.current.ownerDocument,
                n = t && null != l ? l : e.body
              if (n) {
                ;(s.current = e.createElement('div')),
                  (s.current.className = v),
                  n.appendChild(s.current),
                  u()
                var r = s.current
                return () => {
                  n.contains(r) && n.removeChild(r)
                }
              }
            }
          }, [])
          var g =
            null != f && f.zIndex
              ? r.createElement(m, { zIndex: null == f ? void 0 : f.zIndex }, n)
              : n
          return s.current
            ? (0, c.createPortal)(r.createElement(h, { value: s.current }, g), s.current)
            : r.createElement('span', { ref: i })
        },
        y = (e) => {
          var { children: t, containerRef: n, appendToParentPortal: i } = e,
            u = n.current,
            l = null != u ? u : s.jU ? document.body : void 0,
            d = r.useMemo(() => {
              var e = null == u ? void 0 : u.ownerDocument.createElement('div')
              return e && (e.className = v), e
            }, [u]),
            f = o()
          return (
            (0, a.G)(() => {
              f()
            }, []),
            (0, a.G)(() => {
              if (d && l)
                return (
                  l.appendChild(d),
                  () => {
                    l.removeChild(d)
                  }
                )
            }, [d, l]),
            l && d ? (0, c.createPortal)(r.createElement(h, { value: i ? d : null }, t), d) : null
          )
        }
      function b(e) {
        var { containerRef: t } = e,
          n = (function (e, t) {
            if (null == e) return {}
            var n,
              r,
              i = {},
              o = Object.keys(e)
            for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n])
            return i
          })(e, ['containerRef'])
        return t ? r.createElement(y, f({ containerRef: t }, n)) : r.createElement(g, n)
      }
      ;(b.defaultProps = { appendToParentPortal: !0 }),
        (b.className = v),
        (b.selector = '.chakra-portal'),
        u.Ts && (b.displayName = 'Portal')
    },
    4255: function (e, t, n) {
      'use strict'
      n.d(t, {
        W: function () {
          return i
        },
      })
      var r = n(7294)
      function i(e) {
        return r.Children.toArray(e).filter((e) => r.isValidElement(e))
      }
    },
    2947: function (e, t, n) {
      'use strict'
      n.d(t, {
        l: function () {
          return o
        },
      })
      var r = n(3808)
      function i(e, t) {
        if (null != e)
          if ((0, r.mf)(e)) e(t)
          else
            try {
              e.current = t
            } catch (n) {
              throw new Error("Cannot assign value '" + t + "' to ref '" + e + "'")
            }
      }
      function o() {
        for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) t[n] = arguments[n]
        return (e) => {
          t.forEach((t) => i(t, e))
        }
      }
    },
    980: function (e, t, n) {
      'use strict'
      n.d(t, {
        useTheme: function () {
          return i.useTheme
        },
      })
      n(2300)
      var r = n(4806)
      n.o(r, 'useTheme') &&
        n.d(t, {
          useTheme: function () {
            return r.useTheme
          },
        })
      var i = n(1180)
    },
    6049: function (e, t, n) {
      'use strict'
      n.d(t, {
        Ph: function () {
          return R
        },
      })
      var r = n(4461),
        i = n(658),
        o = n(4577),
        a = n(639),
        s = n(63),
        u = n(2326),
        l = n(5284),
        c = n(9676),
        d = n(3782),
        f = n(3808),
        h = n(8500),
        p = n(2947),
        v = n(7294)
      function m() {
        return (m =
          Object.assign ||
          function (e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t]
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }).apply(this, arguments)
      }
      function g(e, t) {
        if (null == e) return {}
        var n,
          r,
          i = {},
          o = Object.keys(e)
        for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n])
        return i
      }
      var [y, b] = (0, h.k)({ strict: !1, name: 'FormControlContext' })
      var w = (0, s.G)((e, t) => {
        var n = (0, u.j)('Form', e),
          s = (function (e) {
            var { id: t, isRequired: n, isInvalid: s, isDisabled: u, isReadOnly: l } = e,
              c = g(e, ['id', 'isRequired', 'isInvalid', 'isDisabled', 'isReadOnly']),
              d = (0, o.Me)(),
              f = t || 'field-' + d,
              h = f + '-label',
              y = f + '-feedback',
              b = f + '-helptext',
              [w, x] = v.useState(!1),
              [E, k] = v.useState(!1),
              [_, T] = (0, a.k)(),
              O = v.useCallback(
                function (e, t) {
                  return (
                    void 0 === e && (e = {}),
                    void 0 === t && (t = null),
                    m({ id: b }, e, {
                      ref: (0, p.l)(t, (e) => {
                        e && k(!0)
                      }),
                    })
                  )
                },
                [b],
              ),
              C = v.useCallback(
                function (e, t) {
                  var n, i
                  return (
                    void 0 === e && (e = {}),
                    void 0 === t && (t = null),
                    m({}, e, {
                      ref: t,
                      'data-focus': (0, r.PB)(_),
                      'data-disabled': (0, r.PB)(u),
                      'data-invalid': (0, r.PB)(s),
                      'data-readonly': (0, r.PB)(l),
                      id: null != (n = e.id) ? n : h,
                      htmlFor: null != (i = e.htmlFor) ? i : f,
                    })
                  )
                },
                [f, u, _, s, l, h],
              ),
              S = v.useCallback(
                function (e, t) {
                  return (
                    void 0 === e && (e = {}),
                    void 0 === t && (t = null),
                    m({ id: y }, e, {
                      ref: (0, p.l)(t, (e) => {
                        e && x(!0)
                      }),
                      'aria-live': 'polite',
                    })
                  )
                },
                [y],
              ),
              A = v.useCallback(
                function (e, t) {
                  return (
                    void 0 === e && (e = {}),
                    void 0 === t && (t = null),
                    m({}, e, c, { ref: t, role: 'group' })
                  )
                },
                [c],
              ),
              P = v.useCallback(function (e, t) {
                return (
                  void 0 === e && (e = {}),
                  void 0 === t && (t = null),
                  m({}, e, {
                    ref: t,
                    role: 'presentation',
                    'aria-hidden': !0,
                    children: e.children || '*',
                  })
                )
              }, []),
              M = v.useCallback(() => {
                ;(0, i.A4)(T.on)
              }, [T])
            return {
              isRequired: !!n,
              isInvalid: !!s,
              isReadOnly: !!l,
              isDisabled: !!u,
              isFocused: !!_,
              onFocus: M,
              onBlur: T.off,
              hasFeedbackText: w,
              setHasFeedbackText: x,
              hasHelpText: E,
              setHasHelpText: k,
              id: f,
              labelId: h,
              feedbackId: y,
              helpTextId: b,
              htmlProps: c,
              getHelpTextProps: O,
              getErrorMessageProps: S,
              getRootProps: A,
              getLabelProps: C,
              getRequiredIndicatorProps: P,
            }
          })((0, l.Lr)(e)),
          { getRootProps: f } = s,
          h = g(s, ['getRootProps', 'htmlProps']),
          b = (0, r.cx)('chakra-form-control', e.className),
          w = v.useMemo(() => h, [h])
        return v.createElement(
          y,
          { value: w },
          v.createElement(
            c.Fo,
            { value: n },
            v.createElement(
              d.m$.div,
              m({}, f({}, t), { className: b, __css: { width: '100%', position: 'relative' } }),
            ),
          ),
        )
      })
      f.Ts && (w.displayName = 'FormControl')
      var x = (0, s.G)((e, t) => {
        var n = b(),
          i = (0, c.yK)(),
          o = (0, r.cx)('chakra-form__helper-text', e.className)
        return v.createElement(
          d.m$.div,
          m({}, null == n ? void 0 : n.getHelpTextProps(e, t), {
            __css: i.helperText,
            className: o,
          }),
        )
      })
      function E() {
        return (E =
          Object.assign ||
          function (e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t]
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }).apply(this, arguments)
      }
      function k(e, t) {
        if (null == e) return {}
        var n,
          r,
          i = {},
          o = Object.keys(e)
        for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n])
        return i
      }
      function _(e) {
        var t = (function (e) {
            var t,
              n,
              r,
              o = b(),
              {
                id: a,
                disabled: s,
                readOnly: u,
                required: l,
                isRequired: c,
                isInvalid: d,
                isReadOnly: f,
                isDisabled: h,
                onFocus: p,
                onBlur: v,
              } = e,
              m = k(e, [
                'id',
                'disabled',
                'readOnly',
                'required',
                'isRequired',
                'isInvalid',
                'isReadOnly',
                'isDisabled',
                'onFocus',
                'onBlur',
              ]),
              g = []
            null != o && o.hasFeedbackText && null != o && o.isInvalid && g.push(o.feedbackId)
            null != o && o.hasHelpText && g.push(o.helpTextId)
            return E({}, m, {
              'aria-describedby': g.join(' ') || void 0,
              id: null != a ? a : null == o ? void 0 : o.id,
              isDisabled: null != (t = null != s ? s : h) ? t : null == o ? void 0 : o.isDisabled,
              isReadOnly: null != (n = null != u ? u : f) ? n : null == o ? void 0 : o.isReadOnly,
              isRequired: null != (r = null != l ? l : c) ? r : null == o ? void 0 : o.isRequired,
              isInvalid: null != d ? d : null == o ? void 0 : o.isInvalid,
              onFocus: (0, i.v0)(null == o ? void 0 : o.onFocus, p),
              onBlur: (0, i.v0)(null == o ? void 0 : o.onBlur, v),
            })
          })(e),
          { isDisabled: n, isInvalid: o, isReadOnly: a, isRequired: s } = t
        return E({}, k(t, ['isDisabled', 'isInvalid', 'isReadOnly', 'isRequired']), {
          disabled: n,
          readOnly: a,
          required: s,
          'aria-invalid': (0, r.Qm)(o),
          'aria-required': (0, r.Qm)(s),
          'aria-readonly': (0, r.Qm)(a),
        })
      }
      f.Ts && (x.displayName = 'FormHelperText')
      var T = n(9421),
        O = n(5505),
        C = n(8554),
        S = n.n(C)
      function A() {
        return (A =
          Object.assign ||
          function (e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t]
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }).apply(this, arguments)
      }
      function P(e, t) {
        if (null == e) return {}
        var n,
          r,
          i = {},
          o = Object.keys(e)
        for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n])
        return i
      }
      var M = (0, s.G)((e, t) => {
        var { children: n, placeholder: i, className: o } = e,
          a = _(P(e, ['children', 'placeholder', 'className']))
        return v.createElement(
          d.m$.select,
          A({}, a, { ref: t, className: (0, r.cx)('chakra-select', o) }),
          i && v.createElement('option', { value: '' }, i),
          n,
        )
      })
      f.Ts && (M.displayName = 'SelectField')
      var R = (0, s.G)((e, t) => {
        var n = (0, u.j)('Select', e),
          r = (0, l.Lr)(e),
          {
            rootProps: i,
            placeholder: o,
            icon: a,
            color: s,
            height: c,
            h: f,
            minH: h,
            minHeight: p,
            iconColor: m,
            iconSize: g,
          } = r,
          y = P(r, [
            'rootProps',
            'placeholder',
            'icon',
            'color',
            'height',
            'h',
            'minH',
            'minHeight',
            'iconColor',
            'iconSize',
            'isFullWidth',
          ]),
          [b, w] = (0, O.Vl)(y, T.layoutPropNames),
          x = { width: '100%', height: 'fit-content', position: 'relative', color: s },
          E = S()({}, n.field, { paddingEnd: '2rem', _focus: { zIndex: 'unset' } })
        return v.createElement(
          d.m$.div,
          A({ className: 'chakra-select__wrapper', __css: x }, b, i),
          v.createElement(
            M,
            A({ ref: t, height: null != f ? f : c, minH: null != h ? h : p, placeholder: o }, w, {
              __css: E,
            }),
            e.children,
          ),
          v.createElement(
            L,
            A(
              { 'data-disabled': e.isDisabled },
              (m || s) && { color: m || s },
              { __css: n.icon },
              g && { fontSize: g },
            ),
            a,
          ),
        )
      })
      f.Ts && (R.displayName = 'Select')
      var j = (e) =>
          v.createElement(
            'svg',
            A({ viewBox: '0 0 24 24' }, e),
            v.createElement('path', {
              fill: 'currentColor',
              d: 'M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z',
            }),
          ),
        D = (0, d.m$)('div', {
          baseStyle: {
            position: 'absolute',
            display: 'inline-flex',
            alignItems: 'center',
            justifyContent: 'center',
            pointerEvents: 'none',
            top: '50%',
            transform: 'translateY(-50%)',
          },
        }),
        L = (e) => {
          var { children: t = v.createElement(j, null) } = e,
            n = P(e, ['children']),
            r = v.cloneElement(t, {
              role: 'presentation',
              className: 'chakra-select__icon',
              focusable: !1,
              'aria-hidden': !0,
              style: { width: '1em', height: '1em', color: 'currentColor' },
            })
          return v.createElement(
            D,
            A({}, n, { className: 'chakra-select__icon-wrapper' }),
            v.isValidElement(t) ? r : null,
          )
        }
      f.Ts && (L.displayName = 'SelectIcon')
    },
    3014: function (e, t, n) {
      'use strict'
      n.d(t, {
        iR: function () {
          return le
        },
        Ms: function () {
          return fe
        },
        gs: function () {
          return ce
        },
        Uj: function () {
          return de
        },
      })
      var r = n(63),
        i = n(2326),
        o = n(5284),
        a = n(9676),
        s = n(3782),
        u = n(3808),
        l = n(4461),
        c = n(8500),
        d = n(7294),
        f = n(762),
        h = n(1034),
        p = n(639)
      var v = n(4577),
        m = 'Invariant failed'
      var g = function (e, t) {
          if (!e) throw new Error(m)
        },
        y = function (e) {
          var t = e.top,
            n = e.right,
            r = e.bottom,
            i = e.left
          return {
            top: t,
            right: n,
            bottom: r,
            left: i,
            width: n - i,
            height: r - t,
            x: i,
            y: t,
            center: { x: (n + i) / 2, y: (r + t) / 2 },
          }
        },
        b = function (e, t) {
          return {
            top: e.top + t.top,
            left: e.left + t.left,
            bottom: e.bottom - t.bottom,
            right: e.right - t.right,
          }
        },
        w = { top: 0, right: 0, bottom: 0, left: 0 },
        x = function (e) {
          var t,
            n,
            r = e.borderBox,
            i = e.margin,
            o = void 0 === i ? w : i,
            a = e.border,
            s = void 0 === a ? w : a,
            u = e.padding,
            l = void 0 === u ? w : u,
            c = y(
              ((n = o),
              {
                top: (t = r).top - n.top,
                left: t.left - n.left,
                bottom: t.bottom + n.bottom,
                right: t.right + n.right,
              }),
            ),
            d = y(b(r, s)),
            f = y(b(d, l))
          return {
            marginBox: c,
            borderBox: y(r),
            paddingBox: d,
            contentBox: f,
            margin: o,
            border: s,
            padding: l,
          }
        },
        E = function (e) {
          var t = e.slice(0, -2)
          if ('px' !== e.slice(-2)) return 0
          var n = Number(t)
          return isNaN(n) && g(!1), n
        },
        k = function (e) {
          return (function (e, t) {
            var n = {
                top: E(t.marginTop),
                right: E(t.marginRight),
                bottom: E(t.marginBottom),
                left: E(t.marginLeft),
              },
              r = {
                top: E(t.paddingTop),
                right: E(t.paddingRight),
                bottom: E(t.paddingBottom),
                left: E(t.paddingLeft),
              },
              i = {
                top: E(t.borderTopWidth),
                right: E(t.borderRightWidth),
                bottom: E(t.borderBottomWidth),
                left: E(t.borderLeftWidth),
              }
            return x({ borderBox: e, margin: n, padding: r, border: i })
          })(e.getBoundingClientRect(), window.getComputedStyle(e))
        },
        _ = n(8327)
      var T = n(2653),
        O = n(9839)
      function C(e) {
        return !!e.touches
      }
      var S = { pageX: 0, pageY: 0 }
      function A(e, t) {
        void 0 === t && (t = 'page')
        var n = e.touches[0] || e.changedTouches[0] || S
        return { x: n[t + 'X'], y: n[t + 'Y'] }
      }
      function P(e, t) {
        return void 0 === t && (t = 'page'), { x: e[t + 'X'], y: e[t + 'Y'] }
      }
      function M(e, t) {
        return void 0 === t && (t = 'page'), { point: C(e) ? A(e, t) : P(e, t) }
      }
      var R = function (e, t) {
          void 0 === t && (t = !1)
          var n,
            r = (t) => e(t, M(t))
          return t
            ? ((n = r),
              (e) => {
                var t = e instanceof MouseEvent
                ;(!t || (t && 0 === e.button)) && n(e)
              })
            : r
        },
        j = {
          pointerdown: 'mousedown',
          pointermove: 'mousemove',
          pointerup: 'mouseup',
          pointercancel: 'mousecancel',
          pointerover: 'mouseover',
          pointerout: 'mouseout',
          pointerenter: 'mouseenter',
          pointerleave: 'mouseleave',
        },
        D = {
          pointerdown: 'touchstart',
          pointermove: 'touchmove',
          pointerup: 'touchend',
          pointercancel: 'touchcancel',
        }
      function L(e) {
        return l.jU && null === window.onpointerdown
          ? e
          : l.jU && null === window.ontouchstart
          ? D[e]
          : l.jU && null === window.onmousedown
          ? j[e]
          : e
      }
      function N(e, t, n, r) {
        return (0, l.EV)(e, L(t), R(n, 'pointerdown' === t), r)
      }
      var I = n(658)
      function z() {
        return (z =
          Object.assign ||
          function (e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t]
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }).apply(this, arguments)
      }
      function H(e, t, n) {
        return (
          t in e
            ? Object.defineProperty(e, t, {
                value: n,
                enumerable: !0,
                configurable: !0,
                writable: !0,
              })
            : (e[t] = n),
          e
        )
      }
      class B {
        constructor(e, t, n) {
          if (
            (H(this, 'history', []),
            H(this, 'startEvent', null),
            H(this, 'lastEvent', null),
            H(this, 'lastEventInfo', null),
            H(this, 'handlers', {}),
            H(this, 'removeListeners', I.ZT),
            H(this, 'threshold', 3),
            H(this, 'updatePoint', () => {
              if (this.lastEvent && this.lastEventInfo) {
                var e = G(this.lastEventInfo, this.history),
                  t = null !== this.startEvent,
                  n = (0, I.TE)(e.offset, { x: 0, y: 0 }) >= this.threshold
                if (t || n) {
                  var { timestamp: r } = (0, O.$B)()
                  this.history.push(z({}, e.point, { timestamp: r }))
                  var { onStart: i, onMove: o } = this.handlers
                  t || (null == i || i(this.lastEvent, e), (this.startEvent = this.lastEvent)),
                    null == o || o(this.lastEvent, e)
                }
              }
            }),
            H(this, 'onPointerMove', (e, t) => {
              ;(this.lastEvent = e),
                (this.lastEventInfo = t),
                (function (e) {
                  return 'undefined' !== typeof PointerEvent && e instanceof PointerEvent
                    ? !('mouse' !== e.pointerType)
                    : e instanceof MouseEvent
                })(e) && 0 === e.buttons
                  ? this.onPointerUp(e, t)
                  : O.ZP.update(this.updatePoint, !0)
            }),
            H(this, 'onPointerUp', (e, t) => {
              var n = G(t, this.history),
                { onEnd: r, onSessionEnd: i } = this.handlers
              null == i || i(e, n), this.end(), r && this.startEvent && (null == r || r(e, n))
            }),
            !(C((r = e)) && r.touches.length > 1))
          ) {
            var r
            ;(this.handlers = t), n && (this.threshold = n), e.stopPropagation(), e.preventDefault()
            var i = M(e),
              { timestamp: o } = (0, O.$B)()
            this.history = [z({}, i.point, { timestamp: o })]
            var { onSessionStart: a } = t
            null == a || a(e, G(i, this.history)),
              (this.removeListeners = (0, I.zG)(
                N(window, 'pointermove', this.onPointerMove),
                N(window, 'pointerup', this.onPointerUp),
                N(window, 'pointercancel', this.onPointerUp),
              ))
          }
        }
        updateHandlers(e) {
          this.handlers = e
        }
        end() {
          var e
          null == (e = this.removeListeners) || e.call(this), O.qY.update(this.updatePoint)
        }
      }
      function F(e, t) {
        return { x: e.x - t.x, y: e.y - t.y }
      }
      function V(e) {
        return e[0]
      }
      function U(e) {
        return e[e.length - 1]
      }
      function G(e, t) {
        return {
          point: e.point,
          delta: F(e.point, U(t)),
          offset: F(e.point, V(t)),
          velocity: q(t, 0.1),
        }
      }
      function q(e, t) {
        if (e.length < 2) return { x: 0, y: 0 }
        for (
          var n = e.length - 1,
            r = null,
            i = (function (e) {
              return e[e.length - 1]
            })(e);
          n >= 0 && ((r = e[n]), !(i.timestamp - r.timestamp > 1e3 * t));

        )
          n--
        if (!r) return { x: 0, y: 0 }
        var o = (i.timestamp - r.timestamp) / 1e3
        if (0 === o) return { x: 0, y: 0 }
        var a = { x: (i.x - r.x) / o, y: (i.y - r.y) / o }
        return a.x === 1 / 0 && (a.x = 0), a.y === 1 / 0 && (a.y = 0), a
      }
      var W = n(4941)
      var K = n(7581)
      function Z(e, t) {
        var n,
          r,
          i,
          o,
          { onPan: a, onPanStart: s, onPanEnd: u, onPanSessionStart: l, onPanSessionEnd: c } = t,
          f = Boolean(a || s || u || l || c),
          h = (0, d.useRef)(null),
          p = {
            onSessionStart: l,
            onSessionEnd: c,
            onStart: s,
            onMove: a,
            onEnd(e, t) {
              ;(h.current = null), null == u || u(e, t)
            },
          }
        ;(0, d.useEffect)(() => {
          var e
          null == (e = h.current) || e.updateHandlers(p)
        }),
          (n = () => e.current),
          (r = 'pointerdown'),
          (i = f
            ? function (e) {
                h.current = new B(e, p)
              }
            : I.ZT),
          (0, W.O)(L(r), R(i, 'pointerdown' === r), n, o),
          (0, K.z)(() => {
            var e
            null == (e = h.current) || e.end(), (h.current = null)
          })
      }
      var $ = n(2947)
      Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER
      function X(e, t) {
        var n = (function (e) {
            var t = parseFloat(e)
            return (0, u.iy)(t) ? 0 : t
          })(e),
          r = 10 ** (null != t ? t : 10)
        return (n = Math.round(n * r) / r), t ? n.toFixed(t) : n.toString()
      }
      function Y(e, t, n) {
        return (100 * (e - t)) / (n - t)
      }
      function Q(e, t, n) {
        return X(
          Math.round((e - t) / n) * n + t,
          (function (e) {
            if (!Number.isFinite(e)) return 0
            for (var t = 1, n = 0; Math.round(e * t) / t !== e; ) (t *= 10), (n += 1)
            return n
          })(n),
        )
      }
      function J(e, t, n) {
        return null == e
          ? e
          : ((0, I.ZK)({ condition: n < t, message: 'clamp: max cannot be less than min' }),
            Math.min(Math.max(e, t), n))
      }
      var ee = n(7248)
      function te() {
        return (te =
          Object.assign ||
          function (e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t]
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }).apply(this, arguments)
      }
      function ne(e) {
        var { orientation: t, vertical: n, horizontal: r } = e
        return 'vertical' === t ? n : r
      }
      function re() {
        return (re =
          Object.assign ||
          function (e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t]
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }).apply(this, arguments)
      }
      function ie(e) {
        var t,
          {
            min: n = 0,
            max: r = 100,
            onChange: i,
            value: o,
            defaultValue: a,
            isReversed: s,
            orientation: u = 'horizontal',
            id: c,
            isDisabled: m,
            isReadOnly: g,
            onChangeStart: y,
            onChangeEnd: b,
            step: w = 1,
            getAriaValueText: x,
            'aria-valuetext': E,
            'aria-label': O,
            'aria-labelledby': C,
            name: S,
            focusThumbOnChange: A = !0,
          } = e,
          P = (function (e, t) {
            if (null == e) return {}
            var n,
              r,
              i = {},
              o = Object.keys(e)
            for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n])
            return i
          })(e, [
            'min',
            'max',
            'onChange',
            'value',
            'defaultValue',
            'isReversed',
            'orientation',
            'id',
            'isDisabled',
            'isReadOnly',
            'onChangeStart',
            'onChangeEnd',
            'step',
            'getAriaValueText',
            'aria-valuetext',
            'aria-label',
            'aria-labelledby',
            'name',
            'focusThumbOnChange',
          ]),
          M = (0, f.W)(y),
          R = (0, f.W)(b),
          j = (0, f.W)(x),
          [D, L] = (0, h.T)({ value: o, defaultValue: null != a ? a : oe(n, r), onChange: i }),
          [N, z] = (0, p.k)(),
          H = (function (e) {
            var t = (0, d.useRef)()
            return (
              (0, d.useEffect)(() => {
                t.current = e
              }, [e]),
              t.current
            )
          })(N),
          [B, F] = (0, p.k)(),
          V = (0, d.useRef)(null),
          U = !(m || g),
          G = J(D, n, r),
          q = (function (e) {
            var t = d.useRef(null)
            return (t.current = e), t
          })(G),
          W = (0, d.useRef)(q.current),
          K = Y(s ? r - G + n : G, n, r),
          X = 'vertical' === u,
          ie = (0, d.useRef)(null),
          ae = (0, d.useRef)(null),
          se = (0, d.useRef)(null),
          [ue, le] = (0, v.ZS)(c, 'slider-thumb', 'slider-track'),
          ce = (0, d.useCallback)(
            (e) => {
              var t, i
              if (ie.current) {
                V.current = 'pointer'
                var o = k(ie.current).borderBox,
                  { clientX: a, clientY: u } =
                    null != (t = null == (i = e.touches) ? void 0 : i[0]) ? t : e,
                  l = (X ? o.bottom - u : a - o.left) / (X ? o.height : o.width)
                s && (l = 1 - l)
                var c = (function (e, t, n) {
                  return (n - t) * e + t
                })(l, n, r)
                return w && (c = parseFloat(Q(c, n, w))), (c = J(c, n, r))
              }
            },
            [X, s, r, n, w],
          ),
          de = (r - n) / 10,
          fe = w || (r - n) / 100,
          he = (0, d.useCallback)(
            (e) => {
              U && ((e = J((e = parseFloat(Q(e, n, fe))), n, r)), L(e))
            },
            [fe, r, n, L, U],
          ),
          pe = (0, d.useMemo)(
            () => ({
              stepUp: function (e) {
                void 0 === e && (e = fe), he(s ? G - e : G + e)
              },
              stepDown: function (e) {
                void 0 === e && (e = fe), he(s ? G + e : G - e)
              },
              reset: () => he(a || 0),
              stepTo: (e) => he(e),
            }),
            [he, s, G, fe, a],
          ),
          ve = (0, d.useCallback)(
            (e) => {
              var t = {
                ArrowRight: () => pe.stepUp(),
                ArrowUp: () => pe.stepUp(),
                ArrowLeft: () => pe.stepDown(),
                ArrowDown: () => pe.stepDown(),
                PageUp: () => pe.stepUp(de),
                PageDown: () => pe.stepDown(de),
                Home: () => he(n),
                End: () => he(r),
              }[(0, l.uh)(e)]
              t && (e.preventDefault(), e.stopPropagation(), t(e), (V.current = 'keyboard'))
            },
            [pe, he, r, n, de],
          ),
          me = null != (t = null == j ? void 0 : j(G)) ? t : E,
          ge = (function (e, t) {
            var [n, r] = d.useState(null),
              i = d.useRef()
            return (
              (0, _.G)(() => {
                if (e.current) {
                  var n = e.current
                  return (
                    o(),
                    t &&
                      (window.addEventListener('resize', o), window.addEventListener('scroll', o)),
                    () => {
                      t &&
                        (window.removeEventListener('resize', o),
                        window.removeEventListener('scroll', o)),
                        i.current && cancelAnimationFrame(i.current)
                    }
                  )
                }
                function o() {
                  i.current = requestAnimationFrame(() => {
                    var e = k(n)
                    r(e)
                  })
                }
              }, [t]),
              n
            )
          })(ae),
          {
            thumbStyle: ye,
            rootStyle: be,
            trackStyle: we,
            innerTrackStyle: xe,
          } = (0, d.useMemo)(() => {
            var e,
              t = null != (e = null == ge ? void 0 : ge.borderBox) ? e : { width: 0, height: 0 }
            return (function (e) {
              var { orientation: t, trackPercent: n, thumbRect: r, isReversed: i } = e,
                o = te(
                  {
                    position: 'absolute',
                    userSelect: 'none',
                    WebkitUserSelect: 'none',
                    MozUserSelect: 'none',
                    msUserSelect: 'none',
                    touchAction: 'none',
                  },
                  ne({
                    orientation: t,
                    vertical: { bottom: 'calc(' + n + '% - ' + r.height / 2 + 'px)' },
                    horizontal: { left: 'calc(' + n + '% - ' + r.width / 2 + 'px)' },
                  }),
                ),
                a = te(
                  {
                    position: 'relative',
                    touchAction: 'none',
                    WebkitTapHighlightColor: 'rgba(0,0,0,0)',
                    userSelect: 'none',
                    outline: 0,
                  },
                  ne({
                    orientation: t,
                    vertical: { paddingLeft: r.width / 2, paddingRight: r.width / 2 },
                    horizontal: { paddingTop: r.height / 2, paddingBottom: r.height / 2 },
                  }),
                ),
                s = te(
                  { position: 'absolute' },
                  ne({
                    orientation: t,
                    vertical: { left: '50%', transform: 'translateX(-50%)', height: '100%' },
                    horizontal: { top: '50%', transform: 'translateY(-50%)', width: '100%' },
                  }),
                )
              return {
                trackStyle: s,
                innerTrackStyle: te(
                  {},
                  s,
                  ne({
                    orientation: t,
                    vertical: i
                      ? { height: 100 - n + '%', top: 0 }
                      : { height: n + '%', bottom: 0 },
                    horizontal: i
                      ? { width: 100 - n + '%', right: 0 }
                      : { width: n + '%', left: 0 },
                  }),
                ),
                rootStyle: a,
                thumbStyle: o,
              }
            })({ isReversed: s, orientation: u, thumbRect: t, trackPercent: K })
          }, [s, u, null == ge ? void 0 : ge.borderBox, K]),
          Ee = (0, d.useCallback)(() => {
            ae.current && A && setTimeout(() => (0, ee.T)(ae.current))
          }, [A])
        ;(0, T.r)(() => {
          Ee(), 'keyboard' === V.current && (null == b || b(q.current))
        }, [G, b])
        var ke = (e) => {
          var t = ce(e)
          null != t && t !== q.current && L(t)
        }
        Z(se, {
          onPanSessionStart(e) {
            U && ke(e)
          },
          onPanSessionEnd() {
            U &&
              (H || W.current === q.current || (null == R || R(q.current), (W.current = q.current)))
          },
          onPanStart() {
            U && (z.on(), null == M || M(q.current))
          },
          onPan(e) {
            U && ke(e)
          },
          onPanEnd() {
            U && (z.off(), null == R || R(q.current))
          },
        })
        var _e = (0, d.useCallback)(
            function (e, t) {
              return (
                void 0 === e && (e = {}),
                void 0 === t && (t = null),
                re({}, e, P, {
                  ref: (0, $.l)(t, se),
                  tabIndex: -1,
                  'aria-disabled': (0, l.Qm)(m),
                  'data-focused': (0, l.PB)(B),
                  style: re({}, e.style, be),
                })
              )
            },
            [P, m, B, be],
          ),
          Te = (0, d.useCallback)(
            function (e, t) {
              return (
                void 0 === e && (e = {}),
                void 0 === t && (t = null),
                re({}, e, {
                  ref: (0, $.l)(t, ie),
                  id: le,
                  'data-disabled': (0, l.PB)(m),
                  style: re({}, e.style, we),
                })
              )
            },
            [m, le, we],
          ),
          Oe = (0, d.useCallback)(
            function (e, t) {
              return (
                void 0 === e && (e = {}),
                void 0 === t && (t = null),
                re({}, e, { ref: t, style: re({}, e.style, xe) })
              )
            },
            [xe],
          ),
          Ce = (0, d.useCallback)(
            function (e, t) {
              return (
                void 0 === e && (e = {}),
                void 0 === t && (t = null),
                re({}, e, {
                  ref: (0, $.l)(t, ae),
                  role: 'slider',
                  tabIndex: U ? 0 : void 0,
                  id: ue,
                  'data-active': (0, l.PB)(N),
                  'aria-valuetext': me,
                  'aria-valuemin': n,
                  'aria-valuemax': r,
                  'aria-valuenow': G,
                  'aria-orientation': u,
                  'aria-disabled': (0, l.Qm)(m),
                  'aria-readonly': (0, l.Qm)(g),
                  'aria-label': O,
                  'aria-labelledby': O ? void 0 : C,
                  style: re({}, e.style, ye),
                  onKeyDown: (0, I.v0)(e.onKeyDown, ve),
                  onFocus: (0, I.v0)(e.onFocus, F.on),
                  onBlur: (0, I.v0)(e.onBlur, F.off),
                })
              )
            },
            [O, C, m, N, g, U, r, n, ve, u, F.off, F.on, ue, ye, G, me],
          ),
          Se = (0, d.useCallback)(
            function (e, t) {
              void 0 === e && (e = {}), void 0 === t && (t = null)
              var i = !(e.value < n || e.value > r),
                o = G >= e.value,
                a = Y(e.value, n, r),
                c = re(
                  { position: 'absolute', pointerEvents: 'none' },
                  (function (e) {
                    var { orientation: t, vertical: n, horizontal: r } = e
                    return 'vertical' === t ? n : r
                  })({
                    orientation: u,
                    vertical: { bottom: s ? 100 - a + '%' : a + '%' },
                    horizontal: { left: s ? 100 - a + '%' : a + '%' },
                  }),
                )
              return re({}, e, {
                ref: t,
                role: 'presentation',
                'aria-hidden': !0,
                'data-disabled': (0, l.PB)(m),
                'data-invalid': (0, l.PB)(!i),
                'data-highlighted': (0, l.PB)(o),
                style: re({}, e.style, c),
              })
            },
            [m, s, r, n, u, G],
          ),
          Ae = (0, d.useCallback)(
            function (e, t) {
              return (
                void 0 === e && (e = {}),
                void 0 === t && (t = null),
                re({}, e, { ref: t, type: 'hidden', value: G, name: S })
              )
            },
            [S, G],
          )
        return {
          state: { value: G, isFocused: B, isDragging: N },
          actions: pe,
          getRootProps: _e,
          getTrackProps: Te,
          getInnerTrackProps: Oe,
          getThumbProps: Ce,
          getMarkerProps: Se,
          getInputProps: Ae,
        }
      }
      function oe(e, t) {
        return t < e ? e : e + (t - e) / 2
      }
      function ae() {
        return (ae =
          Object.assign ||
          function (e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t]
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }).apply(this, arguments)
      }
      var [se, ue] = (0, c.k)({
          name: 'SliderContext',
          errorMessage:
            'useSliderContext: `context` is undefined. Seems you forgot to wrap all slider components within <Slider />',
        }),
        le = (0, r.G)((e, t) => {
          var n = (0, i.j)('Slider', e),
            r = ie((0, o.Lr)(e)),
            { getInputProps: u, getRootProps: l } = r,
            c = (function (e, t) {
              if (null == e) return {}
              var n,
                r,
                i = {},
                o = Object.keys(e)
              for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n])
              return i
            })(r, ['getInputProps', 'getRootProps']),
            f = l(),
            h = u({}, t),
            p = ae(
              { display: 'inline-block', position: 'relative', cursor: 'pointer' },
              n.container,
            )
          return d.createElement(
            se,
            { value: c },
            d.createElement(
              a.Fo,
              { value: n },
              d.createElement(
                s.m$.div,
                ae({}, f, { className: 'chakra-slider', __css: p }),
                e.children,
                d.createElement('input', h),
              ),
            ),
          )
        })
      ;(le.defaultProps = { orientation: 'horizontal' }), u.Ts && (le.displayName = 'Slider')
      var ce = (0, r.G)((e, t) => {
        var { getThumbProps: n } = ue(),
          r = ae(
            {
              display: 'flex',
              alignItems: 'center',
              justifyContent: 'center',
              position: 'absolute',
              outline: 0,
            },
            (0, a.yK)().thumb,
          ),
          i = n(e, t)
        return d.createElement(
          s.m$.div,
          ae({}, i, { className: (0, l.cx)('chakra-slider__thumb', e.className), __css: r }),
        )
      })
      u.Ts && (ce.displayName = 'SliderThumb')
      var de = (0, r.G)((e, t) => {
        var { getTrackProps: n } = ue(),
          r = ae({ overflow: 'hidden' }, (0, a.yK)().track),
          i = n(e, t)
        return d.createElement(
          s.m$.div,
          ae({}, i, { className: (0, l.cx)('chakra-slider__track', e.className), __css: r }),
        )
      })
      u.Ts && (de.displayName = 'SliderTrack')
      var fe = (0, r.G)((e, t) => {
        var { getInnerTrackProps: n } = ue(),
          r = ae({ width: 'inherit', height: 'inherit' }, (0, a.yK)().filledTrack),
          i = n(e, t)
        return d.createElement(
          s.m$.div,
          ae({}, i, { className: 'chakra-slider__filled-track', __css: r }),
        )
      })
      u.Ts && (fe.displayName = 'SliderFilledTrack')
      var he = (0, r.G)((e, t) => {
        var { getMarkerProps: n } = ue(),
          r = n(e, t)
        return d.createElement(
          s.m$.div,
          ae({}, r, { className: (0, l.cx)('chakra-slider__marker', e.className) }),
        )
      })
      u.Ts && (he.displayName = 'SliderMark')
    },
    8134: function (e, t, n) {
      'use strict'
      n.d(t, {
        r: function () {
          return E
        },
      })
      var r = n(762),
        i = n(639),
        o = n(1034),
        a = n(8327),
        s = n(2947),
        u = n(658),
        l = n(4461),
        c = n(7248),
        d = n(5415),
        f = n(7294)
      function h() {
        return (h =
          Object.assign ||
          function (e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t]
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }).apply(this, arguments)
      }
      function p(e) {
        void 0 === e && (e = {})
        var {
            defaultIsChecked: t,
            defaultChecked: n = t,
            isChecked: p,
            isFocusable: m,
            isDisabled: g,
            isReadOnly: y,
            isRequired: b,
            onChange: w,
            isIndeterminate: x,
            isInvalid: E,
            name: k,
            value: _,
            id: T,
            onBlur: O,
            onFocus: C,
            'aria-label': S,
            'aria-labelledby': A,
            'aria-invalid': P,
            'aria-describedby': M,
          } = e,
          R = (function (e, t) {
            if (null == e) return {}
            var n,
              r,
              i = {},
              o = Object.keys(e)
            for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n])
            return i
          })(e, [
            'defaultIsChecked',
            'defaultChecked',
            'isChecked',
            'isFocusable',
            'isDisabled',
            'isReadOnly',
            'isRequired',
            'onChange',
            'isIndeterminate',
            'isInvalid',
            'name',
            'value',
            'id',
            'onBlur',
            'onFocus',
            'aria-label',
            'aria-labelledby',
            'aria-invalid',
            'aria-describedby',
          ]),
          j = (0, r.W)(w),
          D = (0, r.W)(O),
          L = (0, r.W)(C),
          [N, I] = (0, i.k)(),
          [z, H] = (0, i.k)(),
          [B, F] = (0, i.k)(),
          V = (0, f.useRef)(null),
          [U, G] = (0, f.useState)(!0),
          [q, W] = (0, f.useState)(!!n),
          [K, Z] = (0, o.p)(p, q)
        ;(0, u.ZK)({
          condition: !!t,
          message:
            'The "defaultIsChecked" prop has been deprecated and will be removed in a future version. Please use the "defaultChecked" prop instead, which mirrors default React checkbox behavior.',
        })
        var $ = (0, f.useCallback)(
          (e) => {
            y || g
              ? e.preventDefault()
              : (K || W(Z ? e.target.checked : !!x || e.target.checked), null == j || j(e))
          },
          [y, g, Z, K, x, j],
        )
        ;(0, a.G)(() => {
          V.current && (V.current.indeterminate = Boolean(x))
        }, [x])
        var X = g && !m,
          Y = (0, f.useCallback)(
            (e) => {
              ' ' === e.key && F.on()
            },
            [F],
          ),
          Q = (0, f.useCallback)(
            (e) => {
              ' ' === e.key && F.off()
            },
            [F],
          )
        ;(0, a.G)(() => {
          V.current && V.current.checked !== Z && W(V.current.checked)
        }, [V.current])
        var J = (0, f.useCallback)(
            function (e, t) {
              void 0 === e && (e = {}), void 0 === t && (t = null)
              return h({}, e, {
                ref: t,
                'data-active': (0, l.PB)(B),
                'data-hover': (0, l.PB)(z),
                'data-checked': (0, l.PB)(Z),
                'data-focus': (0, l.PB)(N),
                'data-indeterminate': (0, l.PB)(x),
                'data-disabled': (0, l.PB)(g),
                'data-invalid': (0, l.PB)(E),
                'data-readonly': (0, l.PB)(y),
                'aria-hidden': !0,
                onMouseDown: (0, u.v0)(e.onMouseDown, (e) => {
                  e.preventDefault(), F.on()
                }),
                onMouseUp: (0, u.v0)(e.onMouseUp, F.off),
                onMouseEnter: (0, u.v0)(e.onMouseEnter, H.on),
                onMouseLeave: (0, u.v0)(e.onMouseLeave, H.off),
              })
            },
            [B, Z, g, N, z, x, E, y, F, H.off, H.on],
          ),
          ee = (0, f.useCallback)(
            function (e, t) {
              return (
                void 0 === e && (e = {}),
                void 0 === t && (t = null),
                h({}, R, e, {
                  ref: (0, s.l)(t, (e) => {
                    e && G('LABEL' === e.tagName)
                  }),
                  onClick: (0, u.v0)(e.onClick, () => {
                    var e
                    U ||
                      (null == (e = V.current) || e.click(), (0, c.T)(V.current, { nextTick: !0 }))
                  }),
                  'data-disabled': (0, l.PB)(g),
                })
              )
            },
            [R, g, U],
          ),
          te = (0, f.useCallback)(
            function (e, t) {
              void 0 === e && (e = {}), void 0 === t && (t = null)
              return h({}, e, {
                ref: (0, s.l)(V, t),
                type: 'checkbox',
                name: k,
                value: _,
                id: T,
                onChange: (0, u.v0)(e.onChange, $),
                onBlur: (0, u.v0)(e.onBlur, D, I.off),
                onFocus: (0, u.v0)(e.onFocus, L, () => {
                  ;(0, u.A4)(I.on)
                }),
                onKeyDown: (0, u.v0)(e.onKeyDown, Y),
                onKeyUp: (0, u.v0)(e.onKeyUp, Q),
                required: b,
                checked: Z,
                disabled: X,
                readOnly: y,
                'aria-label': S,
                'aria-labelledby': A,
                'aria-invalid': P ? Boolean(P) : E,
                'aria-describedby': M,
                'aria-disabled': g,
                style: d.NL,
              })
            },
            [k, _, T, $, I.off, I.on, D, L, Y, Q, b, Z, X, y, S, A, P, E, M, g],
          ),
          ne = (0, f.useCallback)(
            function (e, t) {
              return (
                void 0 === e && (e = {}),
                void 0 === t && (t = null),
                h({}, e, {
                  ref: t,
                  onMouseDown: (0, u.v0)(e.onMouseDown, v),
                  onTouchStart: (0, u.v0)(e.onTouchStart, v),
                  'data-disabled': (0, l.PB)(g),
                  'data-checked': (0, l.PB)(Z),
                  'data-invalid': (0, l.PB)(E),
                })
              )
            },
            [Z, g, E],
          )
        return {
          state: {
            isInvalid: E,
            isFocused: N,
            isChecked: Z,
            isActive: B,
            isHovered: z,
            isIndeterminate: x,
            isDisabled: g,
            isReadOnly: y,
            isRequired: b,
          },
          getRootProps: ee,
          getCheckboxProps: J,
          getInputProps: te,
          getLabelProps: ne,
          htmlProps: R,
        }
      }
      function v(e) {
        e.preventDefault(), e.stopPropagation()
      }
      var m = n(63),
        g = n(2326),
        y = n(5284),
        b = n(3782),
        w = n(3808)
      function x() {
        return (x =
          Object.assign ||
          function (e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t]
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }).apply(this, arguments)
      }
      var E = (0, m.G)((e, t) => {
        var n = (0, g.j)('Switch', e),
          r = (0, y.Lr)(e),
          { spacing: i = '0.5rem', children: o } = r,
          a = (function (e, t) {
            if (null == e) return {}
            var n,
              r,
              i = {},
              o = Object.keys(e)
            for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n])
            return i
          })(r, ['spacing', 'children']),
          {
            state: s,
            getInputProps: u,
            getCheckboxProps: c,
            getRootProps: d,
            getLabelProps: h,
          } = p(a),
          v = f.useMemo(
            () =>
              x(
                { display: 'inline-block', verticalAlign: 'middle', lineHeight: 'normal' },
                n.container,
              ),
            [n.container],
          ),
          m = f.useMemo(
            () =>
              x(
                {
                  display: 'inline-flex',
                  flexShrink: 0,
                  justifyContent: 'flex-start',
                  boxSizing: 'content-box',
                  cursor: 'pointer',
                },
                n.track,
              ),
            [n.track],
          ),
          w = f.useMemo(() => x({ userSelect: 'none', marginStart: i }, n.label), [i, n.label])
        return f.createElement(
          b.m$.label,
          x({}, d(), { className: (0, l.cx)('chakra-switch', e.className), __css: v }),
          f.createElement('input', x({ className: 'chakra-switch__input' }, u({}, t))),
          f.createElement(
            b.m$.span,
            x({}, c(), { className: 'chakra-switch__track', __css: m }),
            f.createElement(b.m$.span, {
              __css: n.thumb,
              className: 'chakra-switch__thumb',
              'data-checked': (0, l.PB)(s.isChecked),
              'data-hover': (0, l.PB)(s.isHovered),
            }),
          ),
          o &&
            f.createElement(
              b.m$.span,
              x({ className: 'chakra-switch__label' }, h(), { __css: w }),
              o,
            ),
        )
      })
      w.Ts && (E.displayName = 'Switch')
    },
    63: function (e, t, n) {
      'use strict'
      n.d(t, {
        G: function () {
          return i
        },
      })
      var r = n(7294)
      function i(e) {
        return r.forwardRef(e)
      }
    },
    1180: function (e, t, n) {
      'use strict'
      n.d(t, {
        useTheme: function () {
          return o.Fg
        },
      })
      var r = n(9421)
      n.o(r, 'useTheme') &&
        n.d(t, {
          useTheme: function () {
            return r.useTheme
          },
        })
      var i = n(5070)
      n.o(i, 'useTheme') &&
        n.d(t, {
          useTheme: function () {
            return i.useTheme
          },
        })
      var o = n(9676)
    },
    3782: function (e, t, n) {
      'use strict'
      n.d(t, {
        m$: function () {
          return T
        },
      })
      var r = n(9421),
        i = n(5505),
        o = n(658),
        a = n(7294)
      function s() {
        return (s =
          Object.assign ||
          function (e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t]
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }).apply(this, arguments)
      }
      var u = n(7866),
        l =
          /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,
        c = (0, u.Z)(function (e) {
          return (
            l.test(e) ||
            (111 === e.charCodeAt(0) && 110 === e.charCodeAt(1) && e.charCodeAt(2) < 91)
          )
        }),
        d = n(2544),
        f = n(444),
        h = n(4199),
        p = c,
        v = function (e) {
          return 'theme' !== e
        },
        m = function (e) {
          return 'string' === typeof e && e.charCodeAt(0) > 96 ? p : v
        },
        g = function (e, t, n) {
          var r
          if (t) {
            var i = t.shouldForwardProp
            r =
              e.__emotion_forwardProp && i
                ? function (t) {
                    return e.__emotion_forwardProp(t) && i(t)
                  }
                : i
          }
          return 'function' !== typeof r && n && (r = e.__emotion_forwardProp), r
        },
        y = function e(t, n) {
          var r,
            i,
            o = t.__emotion_real === t,
            u = (o && t.__emotion_base) || t
          void 0 !== n && ((r = n.label), (i = n.target))
          var l = g(t, n, o),
            c = l || m(u),
            p = !c('as')
          return function () {
            var v = arguments,
              y = o && void 0 !== t.__emotion_styles ? t.__emotion_styles.slice(0) : []
            if ((void 0 !== r && y.push('label:' + r + ';'), null == v[0] || void 0 === v[0].raw))
              y.push.apply(y, v)
            else {
              0, y.push(v[0][0])
              for (var b = v.length, w = 1; w < b; w++) y.push(v[w], v[0][w])
            }
            var x = (0, d.w)(function (e, t, n) {
              var r = (p && e.as) || u,
                o = '',
                s = [],
                v = e
              if (null == e.theme) {
                for (var g in ((v = {}), e)) v[g] = e[g]
                v.theme = (0, a.useContext)(d.T)
              }
              'string' === typeof e.className
                ? (o = (0, f.f)(t.registered, s, e.className))
                : null != e.className && (o = e.className + ' ')
              var b = (0, h.O)(y.concat(s), t.registered, v)
              ;(0, f.M)(t, b, 'string' === typeof r)
              ;(o += t.key + '-' + b.name), void 0 !== i && (o += ' ' + i)
              var w = p && void 0 === l ? m(r) : c,
                x = {}
              for (var E in e) (p && 'as' === E) || (w(E) && (x[E] = e[E]))
              return (x.className = o), (x.ref = n), (0, a.createElement)(r, x)
            })
            return (
              (x.displayName =
                void 0 !== r
                  ? r
                  : 'Styled(' +
                    ('string' === typeof u ? u : u.displayName || u.name || 'Component') +
                    ')'),
              (x.defaultProps = t.defaultProps),
              (x.__emotion_real = x),
              (x.__emotion_base = u),
              (x.__emotion_styles = y),
              (x.__emotion_forwardProp = l),
              Object.defineProperty(x, 'toString', {
                value: function () {
                  return '.' + i
                },
              }),
              (x.withComponent = function (t, r) {
                return e(t, s({}, n, r, { shouldForwardProp: g(x, r, !0) })).apply(void 0, y)
              }),
              x
            )
          }
        }.bind()
      ;[
        'a',
        'abbr',
        'address',
        'area',
        'article',
        'aside',
        'audio',
        'b',
        'base',
        'bdi',
        'bdo',
        'big',
        'blockquote',
        'body',
        'br',
        'button',
        'canvas',
        'caption',
        'cite',
        'code',
        'col',
        'colgroup',
        'data',
        'datalist',
        'dd',
        'del',
        'details',
        'dfn',
        'dialog',
        'div',
        'dl',
        'dt',
        'em',
        'embed',
        'fieldset',
        'figcaption',
        'figure',
        'footer',
        'form',
        'h1',
        'h2',
        'h3',
        'h4',
        'h5',
        'h6',
        'head',
        'header',
        'hgroup',
        'hr',
        'html',
        'i',
        'iframe',
        'img',
        'input',
        'ins',
        'kbd',
        'keygen',
        'label',
        'legend',
        'li',
        'link',
        'main',
        'map',
        'mark',
        'marquee',
        'menu',
        'menuitem',
        'meta',
        'meter',
        'nav',
        'noscript',
        'object',
        'ol',
        'optgroup',
        'option',
        'output',
        'p',
        'param',
        'picture',
        'pre',
        'progress',
        'q',
        'rp',
        'rt',
        'ruby',
        's',
        'samp',
        'script',
        'section',
        'select',
        'small',
        'source',
        'span',
        'strong',
        'style',
        'sub',
        'summary',
        'sup',
        'table',
        'tbody',
        'td',
        'textarea',
        'tfoot',
        'th',
        'thead',
        'time',
        'title',
        'tr',
        'track',
        'u',
        'ul',
        'var',
        'video',
        'wbr',
        'circle',
        'clipPath',
        'defs',
        'ellipse',
        'foreignObject',
        'g',
        'image',
        'line',
        'linearGradient',
        'mask',
        'path',
        'pattern',
        'polygon',
        'polyline',
        'radialGradient',
        'rect',
        'stop',
        'svg',
        'text',
        'tspan',
      ].forEach(function (e) {
        y[e] = y(e)
      })
      var b = y,
        w = new Set([
          ...r.propNames,
          'textStyle',
          'layerStyle',
          'apply',
          'isTruncated',
          'noOfLines',
          'focusBorderColor',
          'errorBorderColor',
          'as',
          '__css',
          'css',
          'sx',
        ]),
        x = new Set(['htmlWidth', 'htmlHeight', 'htmlSize']),
        E = (e) => x.has(e) || !w.has(e),
        k = n(5284)
      function _(e, t) {
        if (null == e) return {}
        var n,
          r,
          i = {},
          o = Object.keys(e)
        for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n])
        return i
      }
      var T = function (e, t) {
        var n = null != t ? t : {},
          { baseStyle: a } = n,
          s = _(n, ['baseStyle'])
        s.shouldForwardProp || (s.shouldForwardProp = E)
        var u = ((e) => {
          var { baseStyle: t } = e
          return (e) => {
            var { css: n, __css: a, sx: s } = e,
              u = _(e, ['theme', 'css', '__css', 'sx']),
              l = (0, i.lw)(u, (e, t) => (0, r.isStyleProp)(t)),
              c = (0, o.Pu)(t, e),
              d = Object.assign({}, a, c, (0, i.YU)(l), s),
              f = (0, r.iv)(d)(e.theme)
            return n ? [f, n] : f
          }
        })({ baseStyle: a })
        return b(e, s)(u)
      }
      k.t6.forEach((e) => {
        T[e] = T(e)
      })
    },
    5070: function () {},
    5284: function (e, t, n) {
      'use strict'
      n.d(t, {
        t6: function () {
          return i
        },
        Lr: function () {
          return o
        },
      })
      var r = n(5505),
        i = [
          'a',
          'b',
          'article',
          'aside',
          'blockquote',
          'button',
          'caption',
          'cite',
          'circle',
          'code',
          'dd',
          'div',
          'dl',
          'dt',
          'fieldset',
          'figcaption',
          'figure',
          'footer',
          'form',
          'h1',
          'h2',
          'h3',
          'h4',
          'h5',
          'h6',
          'header',
          'hr',
          'img',
          'input',
          'kbd',
          'label',
          'li',
          'main',
          'mark',
          'nav',
          'ol',
          'p',
          'path',
          'pre',
          'q',
          'rect',
          's',
          'svg',
          'section',
          'select',
          'strong',
          'small',
          'span',
          'sub',
          'sup',
          'table',
          'tbody',
          'td',
          'textarea',
          'tfoot',
          'th',
          'thead',
          'tr',
          'ul',
        ]
      function o(e) {
        return (0, r.CE)(e, ['styleConfig', 'size', 'variant', 'colorScheme'])
      }
    },
    2326: function (e, t, n) {
      'use strict'
      n.d(t, {
        j: function () {
          return v
        },
        m: function () {
          return p
        },
      })
      var r = n(5505),
        i = n(8554),
        o = n.n(i),
        a = n(658),
        s = n(7294),
        u = n(9590),
        l = n.n(u),
        c = n(4738),
        d = n(9676)
      function f() {
        return (f =
          Object.assign ||
          function (e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t]
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }).apply(this, arguments)
      }
      function h() {
        return f({}, (0, c.If)(), { theme: (0, d.Fg)() })
      }
      function p(e, t, n) {
        var i, u
        void 0 === t && (t = {}), void 0 === n && (n = {})
        var { styleConfig: c } = t,
          d = (function (e, t) {
            if (null == e) return {}
            var n,
              r,
              i = {},
              o = Object.keys(e)
            for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n])
            return i
          })(t, ['styleConfig']),
          { theme: f, colorMode: p } = h(),
          v = (0, r.Wf)(f, 'components.' + e),
          m = c || v,
          g = o()(
            { theme: f, colorMode: p },
            null != (i = null == m ? void 0 : m.defaultProps) ? i : {},
            (0, r.YU)((0, r.CE)(d, ['children'])),
          ),
          y = (0, s.useRef)({})
        return (0, s.useMemo)(() => {
          if (m) {
            var e,
              t,
              r,
              i,
              s,
              u,
              c = (0, a.Pu)(null != (e = m.baseStyle) ? e : {}, g),
              d = (0, a.Pu)(
                null != (t = null == (r = m.variants) ? void 0 : r[g.variant]) ? t : {},
                g,
              ),
              f = (0, a.Pu)(null != (i = null == (s = m.sizes) ? void 0 : s[g.size]) ? i : {}, g),
              h = o()({}, c, f, d)
            null != (u = n) &&
              u.isMultiPart &&
              m.parts &&
              m.parts.forEach((e) => {
                var t
                h[e] = null != (t = h[e]) ? t : {}
              }),
              l()(y.current, h) || (y.current = h)
          }
          return y.current
        }, [m, g, null == (u = n) ? void 0 : u.isMultiPart])
      }
      function v(e, t) {
        return p(e, t, { isMultiPart: !0 })
      }
    },
    6699: function (e, t, n) {
      'use strict'
      n.d(t, {
        u: function () {
          return S
        },
      })
      var r = n(3459),
        i = n(7273),
        o = n(3782),
        a = n(63),
        s = n(2326),
        u = n(5284),
        l = n(9676),
        c = n(5505),
        d = n(3808),
        f = n(5415),
        h = n(7554),
        p = n(3869),
        v = n(7294),
        m = {
          exit: {
            scale: 0.85,
            opacity: 0,
            transition: {
              opacity: { duration: 0.15, easings: 'easeInOut' },
              scale: { duration: 0.2, easings: 'easeInOut' },
            },
          },
          enter: {
            scale: 1,
            opacity: 1,
            transition: {
              opacity: { easings: 'easeOut', duration: 0.2 },
              scale: { duration: 0.2, ease: [0.175, 0.885, 0.4, 1.1] },
            },
          },
        },
        g = n(4860),
        y = n(4577),
        b = n(4941),
        w = n(8931),
        x = n(658),
        E = n(8456),
        k = n(2947)
      function _() {
        return (_ =
          Object.assign ||
          function (e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t]
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }).apply(this, arguments)
      }
      function T(e) {
        void 0 === e && (e = {})
        var {
            openDelay: t = 0,
            closeDelay: n = 0,
            closeOnClick: i = !0,
            closeOnMouseDown: o,
            onOpen: a,
            onClose: s,
            placement: u,
            id: l,
            isOpen: c,
            defaultIsOpen: d,
            arrowSize: f = 10,
            arrowShadowColor: h,
            arrowPadding: p,
            modifiers: m,
            isDisabled: T,
            gutter: O,
            offset: C,
          } = e,
          S = (function (e, t) {
            if (null == e) return {}
            var n,
              r,
              i = {},
              o = Object.keys(e)
            for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n])
            return i
          })(e, [
            'openDelay',
            'closeDelay',
            'closeOnClick',
            'closeOnMouseDown',
            'onOpen',
            'onClose',
            'placement',
            'id',
            'isOpen',
            'defaultIsOpen',
            'arrowSize',
            'arrowShadowColor',
            'arrowPadding',
            'modifiers',
            'isDisabled',
            'gutter',
            'offset',
          ]),
          {
            isOpen: A,
            onOpen: P,
            onClose: M,
          } = (0, g.q)({ isOpen: c, defaultIsOpen: d, onOpen: a, onClose: s }),
          {
            referenceRef: R,
            getPopperProps: j,
            getArrowInnerProps: D,
            getArrowProps: L,
          } = (0, w.D)({
            enabled: A,
            placement: u,
            arrowPadding: p,
            modifiers: m,
            gutter: O,
            offset: C,
          }),
          N = (0, y.Me)(l, 'tooltip'),
          I = v.useRef(null),
          z = v.useRef(),
          H = v.useRef(),
          B = v.useCallback(() => {
            T || (z.current = window.setTimeout(P, t))
          }, [T, P, t]),
          F = v.useCallback(() => {
            z.current && clearTimeout(z.current), (H.current = window.setTimeout(M, n))
          }, [n, M]),
          V = v.useCallback(() => {
            i && F()
          }, [i, F]),
          U = v.useCallback(() => {
            o && F()
          }, [o, F])
        ;(0, b.O)('keydown', (e) => {
          A && 'Escape' === e.key && F()
        }),
          v.useEffect(
            () => () => {
              clearTimeout(z.current), clearTimeout(H.current)
            },
            [],
          ),
          (0, b.O)('mouseleave', F, I.current)
        var G = v.useCallback(
            function (e, t) {
              return (
                void 0 === e && (e = {}),
                void 0 === t && (t = null),
                _({}, e, {
                  ref: (0, k.l)(I, t, R),
                  onMouseEnter: (0, x.v0)(e.onMouseEnter, B),
                  onClick: (0, x.v0)(e.onClick, V),
                  onMouseDown: (0, x.v0)(e.onMouseDown, U),
                  onFocus: (0, x.v0)(e.onFocus, B),
                  onBlur: (0, x.v0)(e.onBlur, F),
                  'aria-describedby': A ? N : void 0,
                })
              )
            },
            [B, F, U, A, N, V, R],
          ),
          q = v.useCallback(
            function (e, t) {
              return (
                void 0 === e && (e = {}),
                void 0 === t && (t = null),
                j(
                  _({}, e, {
                    style: _({}, e.style, {
                      [r.Dq.arrowSize.var]: f ? (0, E.px)(f) : void 0,
                      [r.Dq.arrowShadowColor.var]: h,
                    }),
                  }),
                  t,
                )
              )
            },
            [j, f, h],
          ),
          W = v.useCallback(
            function (e, t) {
              return (
                void 0 === e && (e = {}),
                void 0 === t && (t = null),
                _({ ref: t }, S, e, {
                  id: N,
                  role: 'tooltip',
                  style: _({}, e.style, {
                    position: 'relative',
                    transformOrigin: r.Dq.transformOrigin.varRef,
                  }),
                })
              )
            },
            [S, N],
          )
        return {
          isOpen: A,
          show: B,
          hide: F,
          getTriggerProps: G,
          getTooltipProps: W,
          getTooltipPositionerProps: q,
          getArrowProps: L,
          getArrowInnerProps: D,
        }
      }
      function O() {
        return (O =
          Object.assign ||
          function (e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t]
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }).apply(this, arguments)
      }
      var C = (0, o.m$)(h.E.div),
        S = (0, a.G)((e, t) => {
          var n = (0, s.m)('Tooltip', e),
            a = (0, u.Lr)(e),
            h = (0, l.Fg)(),
            {
              children: g,
              label: y,
              shouldWrapChildren: b,
              'aria-label': w,
              hasArrow: x,
              bg: E,
              portalProps: k,
            } = a,
            _ = (function (e, t) {
              if (null == e) return {}
              var n,
                r,
                i = {},
                o = Object.keys(e)
              for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n])
              return i
            })(a, [
              'children',
              'label',
              'shouldWrapChildren',
              'aria-label',
              'hasArrow',
              'bg',
              'portalProps',
            ])
          E && ((n.bg = E), (n[r.Dq.arrowBg.var] = (0, c.K1)(h, 'colors', E)))
          var S,
            A = T(_)
          if ((0, d.HD)(g) || b)
            S = v.createElement(o.m$.span, O({ tabIndex: 0 }, A.getTriggerProps()), g)
          else {
            var P = v.Children.only(g)
            S = v.cloneElement(P, A.getTriggerProps(P.props, P.ref))
          }
          var M = !!w,
            R = A.getTooltipProps({}, t),
            j = M ? (0, c.CE)(R, ['role', 'id']) : R,
            D = (0, c.ei)(R, ['role', 'id'])
          return y
            ? v.createElement(
                v.Fragment,
                null,
                S,
                v.createElement(
                  p.M,
                  null,
                  A.isOpen &&
                    v.createElement(
                      i.h,
                      k,
                      v.createElement(
                        o.m$.div,
                        O({}, A.getTooltipPositionerProps(), {
                          __css: { zIndex: n.zIndex, pointerEvents: 'none' },
                        }),
                        v.createElement(
                          C,
                          O({ variants: m }, j, {
                            initial: 'exit',
                            animate: 'enter',
                            exit: 'exit',
                            __css: n,
                          }),
                          y,
                          M && v.createElement(f.TX, D, w),
                          x &&
                            v.createElement(
                              o.m$.div,
                              {
                                'data-popper-arrow': !0,
                                className: 'chakra-tooltip__arrow-wrapper',
                              },
                              v.createElement(o.m$.div, {
                                'data-popper-arrow-inner': !0,
                                className: 'chakra-tooltip__arrow',
                                __css: { bg: n.bg },
                              }),
                            ),
                        ),
                      ),
                    ),
                ),
              )
            : v.createElement(v.Fragment, null, g)
        })
      d.Ts && (S.displayName = 'Tooltip')
    },
    5267: function (e, t, n) {
      'use strict'
      n.d(t, {
        U: function () {
          return v
        },
      })
      var r = n(658),
        i = n(8554),
        o = n.n(i),
        a = n(4461),
        s = n(3808),
        u = n(3869),
        l = n(7554),
        c = n(7294),
        d = n(4722)
      function f() {
        return (f =
          Object.assign ||
          function (e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t]
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }).apply(this, arguments)
      }
      var h = {
          exit: {
            height: { duration: 0.2, ease: d.YI.ease },
            opacity: { duration: 0.3, ease: d.YI.ease },
          },
          enter: {
            height: { duration: 0.3, ease: d.YI.ease },
            opacity: { duration: 0.4, ease: d.YI.ease },
          },
        },
        p = {
          exit: (e) => {
            var t,
              n,
              {
                animateOpacity: r,
                startingHeight: i,
                transition: o,
                transitionEnd: a,
                delay: s,
              } = e
            return f(
              {},
              r && { opacity: ((n = i), null != n && parseInt(n.toString(), 10) > 0 ? 1 : 0) },
              {
                overflow: 'hidden',
                height: i,
                transitionEnd: null == a ? void 0 : a.exit,
                transition: null != (t = null == o ? void 0 : o.exit) ? t : d.p$.exit(h.exit, s),
              },
            )
          },
          enter: (e) => {
            var t,
              { animateOpacity: n, endingHeight: r, transition: i, transitionEnd: o, delay: a } = e
            return f({}, n && { opacity: 1 }, {
              height: r,
              transitionEnd: null == o ? void 0 : o.enter,
              transition: null != (t = null == i ? void 0 : i.enter) ? t : d.p$.enter(h.enter, a),
            })
          },
        },
        v = c.forwardRef((e, t) => {
          var {
              in: n,
              unmountOnExit: i,
              animateOpacity: s = !0,
              startingHeight: d = 0,
              endingHeight: h = 'auto',
              style: v,
              className: m,
              transition: g,
              transitionEnd: y,
            } = e,
            b = (function (e, t) {
              if (null == e) return {}
              var n,
                r,
                i = {},
                o = Object.keys(e)
              for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n])
              return i
            })(e, [
              'in',
              'unmountOnExit',
              'animateOpacity',
              'startingHeight',
              'endingHeight',
              'style',
              'className',
              'transition',
              'transitionEnd',
            ]),
            [w, x] = c.useState(!1)
          c.useEffect(() => {
            var e = setTimeout(() => {
              x(!0)
            })
            return () => clearTimeout(e)
          }, []),
            (0, r.ZK)({
              condition: Boolean(d > 0 && i),
              message:
                "startingHeight and unmountOnExit are mutually exclusive. You can't use them together",
            })
          var E = parseFloat(d.toString()) > 0,
            k = {
              startingHeight: d,
              endingHeight: h,
              animateOpacity: s,
              transition: w ? g : { enter: { duration: 0 } },
              transitionEnd: o()(y, {
                enter: { overflow: 'initial' },
                exit: i ? void 0 : { display: E ? 'block' : 'none' },
              }),
            },
            _ = !i || n,
            T = n || i ? 'enter' : 'exit'
          return c.createElement(
            u.M,
            { initial: !1, custom: k },
            _ &&
              c.createElement(
                l.E.div,
                f({ ref: t }, b, {
                  className: (0, a.cx)('chakra-collapse', m),
                  style: f({ overflow: 'hidden', display: 'block' }, v),
                  custom: k,
                  variants: p,
                  initial: !!i && 'exit',
                  animate: T,
                  exit: 'exit',
                }),
              ),
          )
        })
      s.Ts && (v.displayName = 'Collapse')
    },
    454: function (e, t, n) {
      'use strict'
      n.d(t, {
        R: function () {
          return d
        },
      })
      var r = n(4461),
        i = n(3808),
        o = n(3869),
        a = n(7554),
        s = n(7294),
        u = n(4722)
      function l() {
        return (l =
          Object.assign ||
          function (e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t]
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }).apply(this, arguments)
      }
      var c = {
          initial: 'initial',
          animate: 'enter',
          exit: 'exit',
          variants: {
            initial: (e) => {
              var t,
                { offsetX: n, offsetY: r, transition: i, transitionEnd: o, delay: a } = e
              return {
                opacity: 0,
                x: n,
                y: r,
                transition: null != (t = null == i ? void 0 : i.exit) ? t : u.p$.exit(u.R.exit, a),
                transitionEnd: null == o ? void 0 : o.exit,
              }
            },
            enter: (e) => {
              var t,
                { transition: n, transitionEnd: r, delay: i } = e
              return {
                opacity: 1,
                x: 0,
                y: 0,
                transition:
                  null != (t = null == n ? void 0 : n.enter) ? t : u.p$.enter(u.R.enter, i),
                transitionEnd: null == r ? void 0 : r.enter,
              }
            },
            exit: (e) => {
              var t,
                {
                  offsetY: n,
                  offsetX: r,
                  transition: i,
                  transitionEnd: o,
                  reverse: a,
                  delay: s,
                } = e,
                c = { x: r, y: n }
              return l(
                {
                  opacity: 0,
                  transition:
                    null != (t = null == i ? void 0 : i.exit) ? t : u.p$.exit(u.R.exit, s),
                },
                a
                  ? l({}, c, { transitionEnd: null == o ? void 0 : o.exit })
                  : { transitionEnd: l({}, c, null == o ? void 0 : o.exit) },
              )
            },
          },
        },
        d = s.forwardRef((e, t) => {
          var {
              unmountOnExit: n,
              in: i,
              reverse: u = !0,
              className: d,
              offsetX: f = 0,
              offsetY: h = 8,
              transition: p,
              transitionEnd: v,
              delay: m,
            } = e,
            g = (function (e, t) {
              if (null == e) return {}
              var n,
                r,
                i = {},
                o = Object.keys(e)
              for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n])
              return i
            })(e, [
              'unmountOnExit',
              'in',
              'reverse',
              'className',
              'offsetX',
              'offsetY',
              'transition',
              'transitionEnd',
              'delay',
            ]),
            y = !n || (i && n),
            b = i || n ? 'enter' : 'exit',
            w = { offsetX: f, offsetY: h, reverse: u, transition: p, transitionEnd: v, delay: m }
          return s.createElement(
            o.M,
            { custom: w },
            y &&
              s.createElement(
                a.E.div,
                l(
                  { ref: t, className: (0, r.cx)('chakra-offset-slide', d), custom: w },
                  c,
                  { animate: b },
                  g,
                ),
              ),
          )
        })
      i.Ts && (d.displayName = 'SlideFade')
    },
    4722: function (e, t, n) {
      'use strict'
      n.d(t, {
        YI: function () {
          return o
        },
        R: function () {
          return a
        },
        p$: function () {
          return s
        },
      })
      var r = n(3808)
      function i() {
        return (i =
          Object.assign ||
          function (e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t]
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }).apply(this, arguments)
      }
      var o = {
        ease: [0.25, 0.1, 0.25, 1],
        easeIn: [0.4, 0, 1, 1],
        easeOut: [0, 0, 0.2, 1],
        easeInOut: [0.4, 0, 0.2, 1],
      }
      var a = {
          enter: { duration: 0.2, ease: o.easeOut },
          exit: { duration: 0.1, ease: o.easeIn },
        },
        s = {
          enter: (e, t) => i({}, e, { delay: (0, r.hj)(t) ? t : null == t ? void 0 : t.enter }),
          exit: (e, t) => i({}, e, { delay: (0, r.hj)(t) ? t : null == t ? void 0 : t.exit }),
        }
    },
    7248: function (e, t, n) {
      'use strict'
      n.d(t, {
        T: function () {
          return a
        },
      })
      var r = n(4461),
        i = n(658),
        o = n(7768)
      function a(e, t) {
        void 0 === t && (t = {})
        var {
          isActive: n = o.H9,
          nextTick: a,
          preventScroll: u = !0,
          selectTextIfInput: l = !0,
        } = t
        if (!e || n(e)) return -1
        function c() {
          if (e) {
            if (
              (function () {
                if (null == s) {
                  s = !1
                  try {
                    document.createElement('div').focus({
                      get preventScroll() {
                        return (s = !0), !0
                      },
                    })
                  } catch (e) {}
                }
                return s
              })()
            )
              e.focus({ preventScroll: u })
            else if ((e.focus(), u))
              !(function (e) {
                for (var { element: t, scrollTop: n, scrollLeft: r } of e)
                  (t.scrollTop = n), (t.scrollLeft = r)
              })(
                (function (e) {
                  var t = (0, r.lZ)(e),
                    n = e.parentNode,
                    i = [],
                    o = t.scrollingElement || t.documentElement
                  for (; n instanceof HTMLElement && n !== o; )
                    (n.offsetHeight < n.scrollHeight || n.offsetWidth < n.scrollWidth) &&
                      i.push({ element: n, scrollTop: n.scrollTop, scrollLeft: n.scrollLeft }),
                      (n = n.parentNode)
                  o instanceof HTMLElement &&
                    i.push({ element: o, scrollTop: o.scrollTop, scrollLeft: o.scrollLeft })
                  return i
                })(e),
              )
            ;(0, o.cK)(e) && l && e.select()
          } else
            (0, i.ZK)({
              condition: !0,
              message: "[chakra-ui]: can't call focus() on `null` or `undefined` element",
            })
        }
        return a ? requestAnimationFrame(c) : (c(), -1)
      }
      var s = null
    },
    7768: function (e, t, n) {
      'use strict'
      n.d(t, {
        cK: function () {
          return o
        },
        H9: function () {
          return a
        },
        Wq: function () {
          return c
        },
      })
      var r = n(4461),
        i = (e) => e.hasAttribute('tabindex')
      function o(e) {
        return s(e) && 'input' === e.tagName.toLowerCase() && 'select' in e
      }
      function a(e) {
        return (e instanceof HTMLElement ? (0, r.lZ)(e) : document).activeElement === e
      }
      function s(e) {
        return e instanceof HTMLElement
      }
      function u(e) {
        return !(!e.parentElement || !u(e.parentElement)) || e.hidden
      }
      function l(e) {
        if (
          !s(e) ||
          u(e) ||
          (function (e) {
            return (
              !0 === Boolean(e.getAttribute('disabled')) ||
              !0 === Boolean(e.getAttribute('aria-disabled'))
            )
          })(e)
        )
          return !1
        var { localName: t } = e
        if (['input', 'select', 'textarea', 'button'].indexOf(t) >= 0) return !0
        var n = {
          a: () => e.hasAttribute('href'),
          audio: () => e.hasAttribute('controls'),
          video: () => e.hasAttribute('controls'),
        }
        return t in n
          ? n[t]()
          : !!(function (e) {
              var t = e.getAttribute('contenteditable')
              return 'false' !== t && null != t
            })(e) || i(e)
      }
      function c(e) {
        return !!e && s(e) && l(e) && !((e) => i(e) && -1 === e.tabIndex)(e)
      }
    },
    5415: function (e, t, n) {
      'use strict'
      n.d(t, {
        NL: function () {
          return o
        },
        TX: function () {
          return a
        },
      })
      var r = n(3782),
        i = n(3808),
        o = {
          border: '0px',
          clip: 'rect(0px, 0px, 0px, 0px)',
          height: '1px',
          width: '1px',
          margin: '-1px',
          padding: '0px',
          overflow: 'hidden',
          whiteSpace: 'nowrap',
          position: 'absolute',
        },
        a = (0, r.m$)('span', { baseStyle: o })
      i.Ts && (a.displayName = 'VisuallyHidden')
      var s = (0, r.m$)('input', { baseStyle: o })
      i.Ts && (s.displayName = 'VisuallyHiddenInput')
    },
    6600: function (e, t, n) {
      'use strict'
      n.d(t, {
        Z: function () {
          return i
        },
      })
      var r =
          /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,
        i = (function (e) {
          var t = {}
          return function (n) {
            return void 0 === t[n] && (t[n] = e(n)), t[n]
          }
        })(function (e) {
          return (
            r.test(e) ||
            (111 === e.charCodeAt(0) && 110 === e.charCodeAt(1) && e.charCodeAt(2) < 91)
          )
        })
    },
    2351: function (e, t, n) {
      'use strict'
      n.d(t, {
        _7: function () {
          return v
        },
      })
      var r = n(7294)
      var i = function (e) {
        ;(0, r.useEffect)(function () {
          e()
        }, [])
      }
      var o = function (e, t) {
        var n = (0, r.useRef)(!1)
        ;(0, r.useEffect)(function () {
          if (n.current) return e()
          n.current = !0
        }, t)
      }
      var a = function (e) {
        var t = (0, r.useRef)(e)
        ;(t.current = e),
          (0, r.useEffect)(function () {
            return function () {
              t.current()
            }
          }, [])
      }
      'undefined' !== typeof window && 'undefined' !== typeof document
        ? r.useLayoutEffect
        : r.useEffect
      var s = n(4699),
        u =
          Object.is ||
          function (e, t) {
            return e === t ? 0 !== e || 1 / e === 1 / t : e !== e && t !== t
          }
      function l(e, t) {
        for (var n = 0; n < e.length && n < t.length; n++) if (!u(t[n], e[n])) return !1
        return !0
      }
      var c = function (e) {
        var t = (0, r.useRef)(e)
        return (t.current = e), t
      }
      var d = function (e) {
        var t = c(e),
          n = (0, r.useRef)()
        return (
          void 0 === n.current &&
            (n.current = function () {
              for (var e = arguments.length, n = new Array(e), r = 0; r < e; r++)
                n[r] = arguments[r]
              return t.current.apply(this, n)
            }),
          n.current
        )
      }
      function f(e) {
        return (f =
          'function' === typeof Symbol && 'symbol' === typeof Symbol.iterator
            ? function (e) {
                return typeof e
              }
            : function (e) {
                return e &&
                  'function' === typeof Symbol &&
                  e.constructor === Symbol &&
                  e !== Symbol.prototype
                  ? 'symbol'
                  : typeof e
              })(e)
      }
      var h = function () {
        var e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0]
        return function (t, n) {
          var i,
            o = !1,
            s = !0
          'number' === typeof n
            ? (i = n)
            : 'object' === f(n) &&
              n &&
              ('wait' in n && (i = +n.wait),
              'leading' in n && (o = !!n.leading),
              'trailing' in n && (s = !!n.trailing))
          var u = (0, r.useRef)(),
            l = (0, r.useRef)(),
            c = (0, r.useRef)(),
            h = (0, r.useRef)(),
            p = (0, r.useRef)(),
            v = (0, r.useRef)(),
            m = d(function () {
              var n = Date.now(),
                r = n - p.current,
                o = n - v.current
              if ((h.current && clearTimeout(h.current), r >= i || (e && o >= i)))
                (h.current = void 0),
                  (p.current = void 0),
                  s && l.current && ((v.current = n), (c.current = t.apply(u.current, l.current)))
              else {
                var a = i - r,
                  d = i - o,
                  f = e ? Math.min(a, d) : a
                h.current = setTimeout(m, f)
              }
            }),
            g = d(function () {
              var e = Date.now(),
                n = p.current
              u.current = this
              for (var r = arguments.length, a = new Array(r), s = 0; s < r; s++)
                a[s] = arguments[s]
              return (
                (l.current = a),
                (p.current = e),
                (void 0 === n || e - n >= i) &&
                  void 0 === h.current &&
                  ((v.current = e),
                  (h.current = setTimeout(m, i)),
                  o && (c.current = t.apply(u.current, l.current))),
                c.current
              )
            }),
            y = (0, r.useCallback)(function () {
              void 0 !== h.current && (clearTimeout(h.current), (h.current = void 0)),
                (u.current = void 0),
                (l.current = void 0),
                (p.current = void 0),
                (v.current = void 0)
            }, []),
            b = d(function () {
              return (
                void 0 !== h.current &&
                  l.current &&
                  ((c.current = t.apply(u.current, l.current)), y()),
                c.current
              )
            })
          return a(y), [g, { flush: b, cancel: y }]
        }
      }
      var p = function () {
        var e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0],
          t = h(e)
        return function (e, n) {
          var i = c(e),
            a = (0, r.useState)(e),
            l = (0, s.Z)(a, 2),
            f = l[0],
            h = l[1],
            p = (0, r.useRef)(f)
          function v(e) {
            u(p.current, e) || ((p.current = e), h(e))
          }
          var m = t(v, n),
            g = (0, s.Z)(m, 2),
            y = g[0],
            b = g[1].cancel,
            w = d(function (e) {
              b(), v(arguments.length > 0 ? e : i.current)
            })
          return (
            o(
              function () {
                y(e)
              },
              [e],
            ),
            [f, { flush: w, cancel: b }]
          )
        }
      }
      p(!1), p(!0), h(!1), h(!0)
      'undefined' !== typeof window &&
        window.requestIdleCallback &&
        window.cancelIdleCallback &&
        (window.requestIdleCallback, window.cancelIdleCallback)
      var v = function (e, t) {
        var n, i
        'number' === typeof t
          ? (n = t)
          : 'object' === f(t) &&
            null !== t &&
            ('duration' in t && (n = +t.duration),
            'function' === typeof t.algorithm && (i = t.algorithm))
        var o = (0, r.useRef)(),
          s = (0, r.useRef)(),
          u = d(e),
          l = d(function (e) {
            void 0 === s.current && (s.current = e)
            var t = e - s.current,
              r = n > 0 ? t / n : 1
            r < 0 && (r = 0),
              r > 1 && (r = 1),
              r < 1 && (o.current = requestAnimationFrame(l)),
              u(i ? i(r) : r)
          }),
          c = (0, r.useCallback)(function () {
            void 0 !== o.current && (cancelAnimationFrame(o.current), (o.current = void 0)),
              (s.current = void 0)
          }, []),
          h = d(function () {
            c(), (o.current = requestAnimationFrame(l))
          })
        return a(c), [h, c]
      }
      var m = function () {
        var e = (0, r.useRef)(!1)
        return (
          i(function () {
            e.current = !0
          }),
          e
        )
      }
      var g = function (e) {
        var t = (0, r.useRef)(e),
          n = (0, r.useRef)(e)
        return (n.current = t.current), (t.current = e), n
      }
      var y = function (e, t, n, i) {
        var o, a, s
        'boolean' === typeof i
          ? (o = i)
          : 'object' === f(i) &&
            null !== i &&
            ('capture' in i && (o = !!i.capture),
            'once' in i && (a = !!i.once),
            'passive' in i && (s = !!i.passive))
        var u = d(n)
        ;(0, r.useEffect)(
          function () {
            if (e && e.addEventListener && e.removeEventListener)
              return (
                e.addEventListener(t, u, { capture: o, once: a, passive: s }),
                function () {
                  e.removeEventListener(t, u, { capture: o })
                }
              )
          },
          [e, t, u, o, a, s],
        )
      }
      'undefined' !== typeof window &&
        'undefined' !== typeof window.navigator &&
        window.navigator.onLine
      var b = function (e) {
          var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [],
            n = m(),
            i = g(t),
            o = (0, r.useRef)()
          return (n.current && l(i.current, t)) || (o.current = e()), o.current
        },
        w = { ico: 'image/x-icon', png: 'image/png', gif: 'image/gif' }
      'undefined' !== typeof window && window.matchMedia
      n(6808)
      function x(e, t) {
        var n = (0, r.useRef)(),
          i = (0, r.useState)(t),
          a = (0, s.Z)(i, 2),
          u = a[0],
          l = a[1],
          c = d(function (e) {
            ;(n.current = e), l(e)
          }),
          f = d(function () {
            l(t)
          })
        return (
          o(
            function () {
              ;(n.current = void 0), l(t)
            },
            [e],
          ),
          o(
            function () {
              void 0 === n.current && l(t)
            },
            [t],
          ),
          [u, { set: c, remove: f }]
        )
      }
      var E = function (e) {
        return e
          ? function (t, n, i) {
              var a = i && i.serialize ? i.serialize : JSON.stringify,
                u = i && i.deserialize ? i.deserialize : JSON.parse,
                l = d(function () {
                  try {
                    var r = e.getItem(t)
                    return null !== r ? u(r) : n
                  } catch (i) {
                    return n
                  }
                }),
                c = d(function (n) {
                  try {
                    e.setItem(t, a(n))
                  } catch (r) {}
                }),
                h = d(function () {
                  e.removeItem(t)
                }),
                p = (0, r.useState)(l()),
                v = (0, s.Z)(p, 2),
                m = v[0],
                g = v[1],
                y = d(function (e) {
                  c(e), g(e)
                }),
                b = d(function () {
                  h(), g(l())
                })
              return (
                o(
                  function () {
                    g(l())
                  },
                  [t],
                ),
                o(
                  function () {
                    null === e.getItem(t) && g(n)
                  },
                  [n],
                ),
                (0, r.useEffect)(
                  function () {
                    function n(n) {
                      n.storageArea === e && n.key === t && g(l())
                    }
                    if (void 0 !== ('undefined' === typeof window ? 'undefined' : f(window)))
                      return (
                        window.addEventListener('storage', n),
                        function () {
                          return window.removeEventListener('storage', n)
                        }
                      )
                  },
                  [t],
                ),
                [m, { set: y, remove: b }]
              )
            }
          : x
      }
      E('undefined' !== typeof localStorage ? localStorage : null),
        E('undefined' !== typeof sessionStorage ? sessionStorage : null)
    },
    4309: function (e, t, n) {
      'use strict'
      n.d(t, {
        iP: function () {
          return d
        },
      })
      var r = n(7294)
      var i = (e) => {
        const t = r.useRef(e)
        return (
          r.useEffect(() => {
            t.current = e
          }),
          t
        )
      }
      const o = (e, t = 100, n = !1) => {
        const o = i(e),
          a = r.useRef(),
          s = [t, n, o]
        function u() {
          a.current && clearTimeout(a.current), (a.current = void 0)
        }
        function l() {
          a.current = void 0
        }
        return (
          r.useEffect(() => u, s),
          r.useCallback(function () {
            const e = arguments,
              { current: r } = a
            if (void 0 === r && n) return (a.current = setTimeout(l, t)), o.current.apply(null, e)
            r && clearTimeout(r),
              (a.current = setTimeout(() => {
                ;(a.current = void 0), o.current.apply(null, e)
              }, t))
          }, s)
        )
      }
      var a =
        r[
          'undefined' !== typeof document && void 0 !== document.createElement
            ? 'useLayoutEffect'
            : 'useEffect'
        ]
      var s = function (e, t, n, i) {
        const o = r.useRef(n),
          s = r.useRef(i)
        a(() => {
          ;(o.current = n), (s.current = i)
        }),
          a(() => {
            const n = e && 'current' in e ? e.current : e
            if (!n) return
            let r = 0
            function i(...e) {
              r || o.current.apply(this, e)
            }
            n.addEventListener(t, i)
            const a = s.current
            return () => {
              ;(r = 1), n.removeEventListener(t, i), a && a()
            }
          }, [e, t])
      }
      const u = {},
        l = 'undefined' === typeof window ? null : window,
        c = () => [document.documentElement.clientWidth, document.documentElement.clientHeight],
        d = (e = u) => {
          const { wait: t, leading: n, initialWidth: i = 0, initialHeight: a = 0 } = e,
            [d, f] = ((e, t, n) => {
              const i = r.useState(e)
              return [i[0], o(i[1], t, n)]
            })('undefined' === typeof document ? [i, a] : c, t, n),
            h = () => f(c)
          return s(l, 'resize', h), s(l, 'orientationchange', h), d
        }
    },
    6194: function (e, t, n) {
      'use strict'
      n.d(t, {
        oY: function () {
          return i
        },
      })
      var r = n(4155),
        i = {
          Linear: {
            None: function (e) {
              return e
            },
          },
          Quadratic: {
            In: function (e) {
              return e * e
            },
            Out: function (e) {
              return e * (2 - e)
            },
            InOut: function (e) {
              return (e *= 2) < 1 ? 0.5 * e * e : -0.5 * (--e * (e - 2) - 1)
            },
          },
          Cubic: {
            In: function (e) {
              return e * e * e
            },
            Out: function (e) {
              return --e * e * e + 1
            },
            InOut: function (e) {
              return (e *= 2) < 1 ? 0.5 * e * e * e : 0.5 * ((e -= 2) * e * e + 2)
            },
          },
          Quartic: {
            In: function (e) {
              return e * e * e * e
            },
            Out: function (e) {
              return 1 - --e * e * e * e
            },
            InOut: function (e) {
              return (e *= 2) < 1 ? 0.5 * e * e * e * e : -0.5 * ((e -= 2) * e * e * e - 2)
            },
          },
          Quintic: {
            In: function (e) {
              return e * e * e * e * e
            },
            Out: function (e) {
              return --e * e * e * e * e + 1
            },
            InOut: function (e) {
              return (e *= 2) < 1 ? 0.5 * e * e * e * e * e : 0.5 * ((e -= 2) * e * e * e * e + 2)
            },
          },
          Sinusoidal: {
            In: function (e) {
              return 1 - Math.cos((e * Math.PI) / 2)
            },
            Out: function (e) {
              return Math.sin((e * Math.PI) / 2)
            },
            InOut: function (e) {
              return 0.5 * (1 - Math.cos(Math.PI * e))
            },
          },
          Exponential: {
            In: function (e) {
              return 0 === e ? 0 : Math.pow(1024, e - 1)
            },
            Out: function (e) {
              return 1 === e ? 1 : 1 - Math.pow(2, -10 * e)
            },
            InOut: function (e) {
              return 0 === e
                ? 0
                : 1 === e
                ? 1
                : (e *= 2) < 1
                ? 0.5 * Math.pow(1024, e - 1)
                : 0.5 * (2 - Math.pow(2, -10 * (e - 1)))
            },
          },
          Circular: {
            In: function (e) {
              return 1 - Math.sqrt(1 - e * e)
            },
            Out: function (e) {
              return Math.sqrt(1 - --e * e)
            },
            InOut: function (e) {
              return (e *= 2) < 1
                ? -0.5 * (Math.sqrt(1 - e * e) - 1)
                : 0.5 * (Math.sqrt(1 - (e -= 2) * e) + 1)
            },
          },
          Elastic: {
            In: function (e) {
              return 0 === e
                ? 0
                : 1 === e
                ? 1
                : -Math.pow(2, 10 * (e - 1)) * Math.sin(5 * (e - 1.1) * Math.PI)
            },
            Out: function (e) {
              return 0 === e
                ? 0
                : 1 === e
                ? 1
                : Math.pow(2, -10 * e) * Math.sin(5 * (e - 0.1) * Math.PI) + 1
            },
            InOut: function (e) {
              return 0 === e
                ? 0
                : 1 === e
                ? 1
                : (e *= 2) < 1
                ? -0.5 * Math.pow(2, 10 * (e - 1)) * Math.sin(5 * (e - 1.1) * Math.PI)
                : 0.5 * Math.pow(2, -10 * (e - 1)) * Math.sin(5 * (e - 1.1) * Math.PI) + 1
            },
          },
          Back: {
            In: function (e) {
              var t = 1.70158
              return e * e * ((t + 1) * e - t)
            },
            Out: function (e) {
              var t = 1.70158
              return --e * e * ((t + 1) * e + t) + 1
            },
            InOut: function (e) {
              var t = 2.5949095
              return (e *= 2) < 1
                ? e * e * ((t + 1) * e - t) * 0.5
                : 0.5 * ((e -= 2) * e * ((t + 1) * e + t) + 2)
            },
          },
          Bounce: {
            In: function (e) {
              return 1 - i.Bounce.Out(1 - e)
            },
            Out: function (e) {
              return e < 1 / 2.75
                ? 7.5625 * e * e
                : e < 2 / 2.75
                ? 7.5625 * (e -= 1.5 / 2.75) * e + 0.75
                : e < 2.5 / 2.75
                ? 7.5625 * (e -= 2.25 / 2.75) * e + 0.9375
                : 7.5625 * (e -= 2.625 / 2.75) * e + 0.984375
            },
            InOut: function (e) {
              return e < 0.5 ? 0.5 * i.Bounce.In(2 * e) : 0.5 * i.Bounce.Out(2 * e - 1) + 0.5
            },
          },
        },
        o =
          'undefined' === typeof self && 'undefined' !== typeof r && r.hrtime
            ? function () {
                var e = r.hrtime()
                return 1e3 * e[0] + e[1] / 1e6
              }
            : 'undefined' !== typeof self &&
              void 0 !== self.performance &&
              void 0 !== self.performance.now
            ? self.performance.now.bind(self.performance)
            : void 0 !== Date.now
            ? Date.now
            : function () {
                return new Date().getTime()
              },
        a = (function () {
          function e() {
            ;(this._tweens = {}), (this._tweensAddedDuringUpdate = {})
          }
          return (
            (e.prototype.getAll = function () {
              var e = this
              return Object.keys(this._tweens).map(function (t) {
                return e._tweens[t]
              })
            }),
            (e.prototype.removeAll = function () {
              this._tweens = {}
            }),
            (e.prototype.add = function (e) {
              ;(this._tweens[e.getId()] = e), (this._tweensAddedDuringUpdate[e.getId()] = e)
            }),
            (e.prototype.remove = function (e) {
              delete this._tweens[e.getId()], delete this._tweensAddedDuringUpdate[e.getId()]
            }),
            (e.prototype.update = function (e, t) {
              void 0 === e && (e = o()), void 0 === t && (t = !1)
              var n = Object.keys(this._tweens)
              if (0 === n.length) return !1
              for (; n.length > 0; ) {
                this._tweensAddedDuringUpdate = {}
                for (var r = 0; r < n.length; r++) {
                  var i = this._tweens[n[r]],
                    a = !t
                  i && !1 === i.update(e, a) && !t && delete this._tweens[n[r]]
                }
                n = Object.keys(this._tweensAddedDuringUpdate)
              }
              return !0
            }),
            e
          )
        })(),
        s = {
          Linear: function (e, t) {
            var n = e.length - 1,
              r = n * t,
              i = Math.floor(r),
              o = s.Utils.Linear
            return t < 0
              ? o(e[0], e[1], r)
              : t > 1
              ? o(e[n], e[n - 1], n - r)
              : o(e[i], e[i + 1 > n ? n : i + 1], r - i)
          },
          Bezier: function (e, t) {
            for (
              var n = 0, r = e.length - 1, i = Math.pow, o = s.Utils.Bernstein, a = 0;
              a <= r;
              a++
            )
              n += i(1 - t, r - a) * i(t, a) * e[a] * o(r, a)
            return n
          },
          CatmullRom: function (e, t) {
            var n = e.length - 1,
              r = n * t,
              i = Math.floor(r),
              o = s.Utils.CatmullRom
            return e[0] === e[n]
              ? (t < 0 && (i = Math.floor((r = n * (1 + t)))),
                o(e[(i - 1 + n) % n], e[i], e[(i + 1) % n], e[(i + 2) % n], r - i))
              : t < 0
              ? e[0] - (o(e[0], e[0], e[1], e[1], -r) - e[0])
              : t > 1
              ? e[n] - (o(e[n], e[n], e[n - 1], e[n - 1], r - n) - e[n])
              : o(e[i ? i - 1 : 0], e[i], e[n < i + 1 ? n : i + 1], e[n < i + 2 ? n : i + 2], r - i)
          },
          Utils: {
            Linear: function (e, t, n) {
              return (t - e) * n + e
            },
            Bernstein: function (e, t) {
              var n = s.Utils.Factorial
              return n(e) / n(t) / n(e - t)
            },
            Factorial: (function () {
              var e = [1]
              return function (t) {
                var n = 1
                if (e[t]) return e[t]
                for (var r = t; r > 1; r--) n *= r
                return (e[t] = n), n
              }
            })(),
            CatmullRom: function (e, t, n, r, i) {
              var o = 0.5 * (n - e),
                a = 0.5 * (r - t),
                s = i * i
              return (
                (2 * t - 2 * n + o + a) * (i * s) + (-3 * t + 3 * n - 2 * o - a) * s + o * i + t
              )
            },
          },
        },
        u = (function () {
          function e() {}
          return (
            (e.nextId = function () {
              return e._nextId++
            }),
            (e._nextId = 0),
            e
          )
        })(),
        l = new a(),
        c = (function () {
          function e(e, t) {
            void 0 === t && (t = l),
              (this._object = e),
              (this._group = t),
              (this._isPaused = !1),
              (this._pauseStart = 0),
              (this._valuesStart = {}),
              (this._valuesEnd = {}),
              (this._valuesStartRepeat = {}),
              (this._duration = 1e3),
              (this._initialRepeat = 0),
              (this._repeat = 0),
              (this._yoyo = !1),
              (this._isPlaying = !1),
              (this._reversed = !1),
              (this._delayTime = 0),
              (this._startTime = 0),
              (this._easingFunction = i.Linear.None),
              (this._interpolationFunction = s.Linear),
              (this._chainedTweens = []),
              (this._onStartCallbackFired = !1),
              (this._id = u.nextId()),
              (this._isChainStopped = !1),
              (this._goToEnd = !1)
          }
          return (
            (e.prototype.getId = function () {
              return this._id
            }),
            (e.prototype.isPlaying = function () {
              return this._isPlaying
            }),
            (e.prototype.isPaused = function () {
              return this._isPaused
            }),
            (e.prototype.to = function (e, t) {
              return (
                (this._valuesEnd = Object.create(e)), void 0 !== t && (this._duration = t), this
              )
            }),
            (e.prototype.duration = function (e) {
              return (this._duration = e), this
            }),
            (e.prototype.start = function (e) {
              if (this._isPlaying) return this
              if (
                (this._group && this._group.add(this),
                (this._repeat = this._initialRepeat),
                this._reversed)
              )
                for (var t in ((this._reversed = !1), this._valuesStartRepeat))
                  this._swapEndStartRepeatValues(t),
                    (this._valuesStart[t] = this._valuesStartRepeat[t])
              return (
                (this._isPlaying = !0),
                (this._isPaused = !1),
                (this._onStartCallbackFired = !1),
                (this._isChainStopped = !1),
                (this._startTime =
                  void 0 !== e ? ('string' === typeof e ? o() + parseFloat(e) : e) : o()),
                (this._startTime += this._delayTime),
                this._setupProperties(
                  this._object,
                  this._valuesStart,
                  this._valuesEnd,
                  this._valuesStartRepeat,
                ),
                this
              )
            }),
            (e.prototype._setupProperties = function (e, t, n, r) {
              for (var i in n) {
                var o = e[i],
                  a = Array.isArray(o),
                  s = a ? 'array' : typeof o,
                  u = !a && Array.isArray(n[i])
                if ('undefined' !== s && 'function' !== s) {
                  if (u) {
                    var l = n[i]
                    if (0 === l.length) continue
                    ;(l = l.map(this._handleRelativeValue.bind(this, o))), (n[i] = [o].concat(l))
                  }
                  if (('object' !== s && !a) || !o || u)
                    'undefined' === typeof t[i] && (t[i] = o),
                      a || (t[i] *= 1),
                      (r[i] = u ? n[i].slice().reverse() : t[i] || 0)
                  else {
                    for (var c in ((t[i] = a ? [] : {}), o)) t[i][c] = o[c]
                    ;(r[i] = a ? [] : {}), this._setupProperties(o, t[i], n[i], r[i])
                  }
                }
              }
            }),
            (e.prototype.stop = function () {
              return (
                this._isChainStopped || ((this._isChainStopped = !0), this.stopChainedTweens()),
                this._isPlaying
                  ? (this._group && this._group.remove(this),
                    (this._isPlaying = !1),
                    (this._isPaused = !1),
                    this._onStopCallback && this._onStopCallback(this._object),
                    this)
                  : this
              )
            }),
            (e.prototype.end = function () {
              return (this._goToEnd = !0), this.update(1 / 0), this
            }),
            (e.prototype.pause = function (e) {
              return (
                void 0 === e && (e = o()),
                this._isPaused ||
                  !this._isPlaying ||
                  ((this._isPaused = !0),
                  (this._pauseStart = e),
                  this._group && this._group.remove(this)),
                this
              )
            }),
            (e.prototype.resume = function (e) {
              return (
                void 0 === e && (e = o()),
                this._isPaused && this._isPlaying
                  ? ((this._isPaused = !1),
                    (this._startTime += e - this._pauseStart),
                    (this._pauseStart = 0),
                    this._group && this._group.add(this),
                    this)
                  : this
              )
            }),
            (e.prototype.stopChainedTweens = function () {
              for (var e = 0, t = this._chainedTweens.length; e < t; e++)
                this._chainedTweens[e].stop()
              return this
            }),
            (e.prototype.group = function (e) {
              return (this._group = e), this
            }),
            (e.prototype.delay = function (e) {
              return (this._delayTime = e), this
            }),
            (e.prototype.repeat = function (e) {
              return (this._initialRepeat = e), (this._repeat = e), this
            }),
            (e.prototype.repeatDelay = function (e) {
              return (this._repeatDelayTime = e), this
            }),
            (e.prototype.yoyo = function (e) {
              return (this._yoyo = e), this
            }),
            (e.prototype.easing = function (e) {
              return (this._easingFunction = e), this
            }),
            (e.prototype.interpolation = function (e) {
              return (this._interpolationFunction = e), this
            }),
            (e.prototype.chain = function () {
              for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t]
              return (this._chainedTweens = e), this
            }),
            (e.prototype.onStart = function (e) {
              return (this._onStartCallback = e), this
            }),
            (e.prototype.onUpdate = function (e) {
              return (this._onUpdateCallback = e), this
            }),
            (e.prototype.onRepeat = function (e) {
              return (this._onRepeatCallback = e), this
            }),
            (e.prototype.onComplete = function (e) {
              return (this._onCompleteCallback = e), this
            }),
            (e.prototype.onStop = function (e) {
              return (this._onStopCallback = e), this
            }),
            (e.prototype.update = function (e, t) {
              if ((void 0 === e && (e = o()), void 0 === t && (t = !0), this._isPaused)) return !0
              var n,
                r,
                i = this._startTime + this._duration
              if (!this._goToEnd && !this._isPlaying) {
                if (e > i) return !1
                t && this.start(e)
              }
              if (((this._goToEnd = !1), e < this._startTime)) return !0
              !1 === this._onStartCallbackFired &&
                (this._onStartCallback && this._onStartCallback(this._object),
                (this._onStartCallbackFired = !0)),
                (r = (e - this._startTime) / this._duration),
                (r = 0 === this._duration || r > 1 ? 1 : r)
              var a = this._easingFunction(r)
              if (
                (this._updateProperties(this._object, this._valuesStart, this._valuesEnd, a),
                this._onUpdateCallback && this._onUpdateCallback(this._object, r),
                1 === r)
              ) {
                if (this._repeat > 0) {
                  for (n in (isFinite(this._repeat) && this._repeat--, this._valuesStartRepeat))
                    this._yoyo ||
                      'string' !== typeof this._valuesEnd[n] ||
                      (this._valuesStartRepeat[n] =
                        this._valuesStartRepeat[n] + parseFloat(this._valuesEnd[n])),
                      this._yoyo && this._swapEndStartRepeatValues(n),
                      (this._valuesStart[n] = this._valuesStartRepeat[n])
                  return (
                    this._yoyo && (this._reversed = !this._reversed),
                    void 0 !== this._repeatDelayTime
                      ? (this._startTime = e + this._repeatDelayTime)
                      : (this._startTime = e + this._delayTime),
                    this._onRepeatCallback && this._onRepeatCallback(this._object),
                    !0
                  )
                }
                this._onCompleteCallback && this._onCompleteCallback(this._object)
                for (var s = 0, u = this._chainedTweens.length; s < u; s++)
                  this._chainedTweens[s].start(this._startTime + this._duration)
                return (this._isPlaying = !1), !1
              }
              return !0
            }),
            (e.prototype._updateProperties = function (e, t, n, r) {
              for (var i in n)
                if (void 0 !== t[i]) {
                  var o = t[i] || 0,
                    a = n[i],
                    s = Array.isArray(e[i]),
                    u = Array.isArray(a)
                  !s && u
                    ? (e[i] = this._interpolationFunction(a, r))
                    : 'object' === typeof a && a
                    ? this._updateProperties(e[i], o, a, r)
                    : 'number' === typeof (a = this._handleRelativeValue(o, a)) &&
                      (e[i] = o + (a - o) * r)
                }
            }),
            (e.prototype._handleRelativeValue = function (e, t) {
              return 'string' !== typeof t
                ? t
                : '+' === t.charAt(0) || '-' === t.charAt(0)
                ? e + parseFloat(t)
                : parseFloat(t)
            }),
            (e.prototype._swapEndStartRepeatValues = function (e) {
              var t = this._valuesStartRepeat[e],
                n = this._valuesEnd[e]
              ;(this._valuesStartRepeat[e] =
                'string' === typeof n
                  ? this._valuesStartRepeat[e] + parseFloat(n)
                  : this._valuesEnd[e]),
                (this._valuesEnd[e] = t)
            }),
            e
          )
        })(),
        d = u.nextId,
        f = l,
        h = f.getAll.bind(f),
        p = f.removeAll.bind(f),
        v = f.add.bind(f),
        m = f.remove.bind(f),
        g = f.update.bind(f),
        y = {
          Easing: i,
          Group: a,
          Interpolation: s,
          now: o,
          Sequence: u,
          nextId: d,
          Tween: c,
          VERSION: '18.6.4',
          getAll: h,
          removeAll: p,
          add: v,
          remove: m,
          update: g,
        }
      t.ZP = y
    },
    2539: function (e, t, n) {
      'use strict'
      n.r(t)
      t.default = function (e) {
        return e instanceof Function
          ? e
          : 'string' === typeof e
          ? function (t) {
              return t[e]
            }
          : function (t) {
              return e
            }
      }
    },
    3379: function (e) {
      var t = {
        animationIterationCount: !0,
        boxFlex: !0,
        boxFlexGroup: !0,
        boxOrdinalGroup: !0,
        columnCount: !0,
        flex: !0,
        flexGrow: !0,
        flexPositive: !0,
        flexShrink: !0,
        flexNegative: !0,
        flexOrder: !0,
        gridRow: !0,
        gridColumn: !0,
        fontWeight: !0,
        lineClamp: !0,
        lineHeight: !0,
        opacity: !0,
        order: !0,
        orphans: !0,
        tabSize: !0,
        widows: !0,
        zIndex: !0,
        zoom: !0,
        fillOpacity: !0,
        stopOpacity: !0,
        strokeDashoffset: !0,
        strokeOpacity: !0,
        strokeWidth: !0,
      }
      e.exports = function (e, n) {
        return 'number' !== typeof n || t[e] ? n : n + 'px'
      }
    },
    401: function (e, t, n) {
      n(2406), n(9874), n(9236), n(2578), n(8993)
    },
    203: function (e) {
      ;(e.exports = THREE.ColladaLoader =
        function (e) {
          this.manager = void 0 !== e ? e : THREE.DefaultLoadingManager
        }),
        (THREE.ColladaLoader.prototype = {
          constructor: THREE.ColladaLoader,
          crossOrigin: 'anonymous',
          load: function (e, t, n, r) {
            var i = this,
              o = void 0 === i.path ? THREE.LoaderUtils.extractUrlBase(e) : i.path,
              a = new THREE.FileLoader(i.manager)
            a.setPath(i.path),
              a.load(
                e,
                function (e) {
                  t(i.parse(e, o))
                },
                n,
                r,
              )
          },
          setPath: function (e) {
            return (this.path = e), this
          },
          setResourcePath: function (e) {
            return (this.resourcePath = e), this
          },
          options: {
            set convertUpAxis(e) {
              console.warn(
                'THREE.ColladaLoader: options.convertUpAxis() has been removed. Up axis is converted automatically.',
              )
            },
          },
          setCrossOrigin: function (e) {
            return (this.crossOrigin = e), this
          },
          parse: function (e, t) {
            function n(e, t) {
              for (var n = [], r = e.childNodes, i = 0, o = r.length; i < o; i++) {
                var a = r[i]
                a.nodeName === t && n.push(a)
              }
              return n
            }
            function r(e) {
              if (0 === e.length) return []
              for (
                var t = e.trim().split(/\s+/), n = new Array(t.length), r = 0, i = t.length;
                r < i;
                r++
              )
                n[r] = t[r]
              return n
            }
            function i(e) {
              if (0 === e.length) return []
              for (
                var t = e.trim().split(/\s+/), n = new Array(t.length), r = 0, i = t.length;
                r < i;
                r++
              )
                n[r] = parseFloat(t[r])
              return n
            }
            function o(e) {
              if (0 === e.length) return []
              for (
                var t = e.trim().split(/\s+/), n = new Array(t.length), r = 0, i = t.length;
                r < i;
                r++
              )
                n[r] = parseInt(t[r])
              return n
            }
            function a(e) {
              return e.substring(1)
            }
            function s(e) {
              return 0 === Object.keys(e).length
            }
            function u(e) {
              return void 0 !== e && !0 === e.hasAttribute('meter')
                ? parseFloat(e.getAttribute('meter'))
                : 1
            }
            function l(e) {
              return void 0 !== e ? e.textContent : 'Y_UP'
            }
            function c(e, t, r, i) {
              var o = n(e, t)[0]
              if (void 0 !== o) for (var a = n(o, r), s = 0; s < a.length; s++) i(a[s])
            }
            function d(e, t) {
              for (var n in e) {
                e[n].build = t(e[n])
              }
            }
            function f(e, t) {
              return void 0 !== e.build || (e.build = t(e)), e.build
            }
            function h(e) {
              for (var t = { inputs: {} }, n = 0, r = e.childNodes.length; n < r; n++) {
                var i = e.childNodes[n]
                if (1 === i.nodeType)
                  switch (i.nodeName) {
                    case 'input':
                      var o = a(i.getAttribute('source')),
                        s = i.getAttribute('semantic')
                      t.inputs[s] = o
                  }
              }
              return t
            }
            function p(e) {
              var t = {},
                n = e.getAttribute('target').split('/'),
                r = n.shift(),
                i = n.shift(),
                o = -1 !== i.indexOf('('),
                s = -1 !== i.indexOf('.')
              if (s) (n = i.split('.')), (i = n.shift()), (t.member = n.shift())
              else if (o) {
                var u = i.split('(')
                i = u.shift()
                for (var l = 0; l < u.length; l++) u[l] = parseInt(u[l].replace(/\)/, ''))
                t.indices = u
              }
              return (
                (t.id = r),
                (t.sid = i),
                (t.arraySyntax = o),
                (t.memberSyntax = s),
                (t.sampler = a(e.getAttribute('source'))),
                t
              )
            }
            function v(e) {
              var t = [],
                n = e.channels,
                r = e.samplers,
                i = e.sources
              for (var o in n)
                if (n.hasOwnProperty(o)) {
                  var a = n[o],
                    s = r[a.sampler],
                    u = s.inputs.INPUT,
                    l = s.inputs.OUTPUT
                  x(g(a, i[u], i[l]), t)
                }
              return t
            }
            function m(e) {
              return f(We.animations[e], v)
            }
            function g(e, t, n) {
              var r,
                i,
                o,
                a,
                s,
                u,
                l = We.nodes[e.id],
                c = Le(l.id),
                d = l.transforms[e.sid],
                f = l.matrix.clone().transpose(),
                h = {}
              switch (d) {
                case 'matrix':
                  for (o = 0, a = t.array.length; o < a; o++)
                    if (
                      ((r = t.array[o]),
                      (i = o * n.stride),
                      void 0 === h[r] && (h[r] = {}),
                      !0 === e.arraySyntax)
                    ) {
                      var p = n.array[i],
                        v = e.indices[0] + 4 * e.indices[1]
                      h[r][v] = p
                    } else for (s = 0, u = n.stride; s < u; s++) h[r][s] = n.array[i + s]
                  break
                case 'translate':
                case 'rotate':
                case 'scale':
                  console.warn(
                    'THREE.ColladaLoader: Animation transform type "%s" not yet implemented.',
                    d,
                  )
              }
              var m = (function (e, t) {
                var n = []
                for (var r in e) n.push({ time: parseFloat(r), value: e[r] })
                n.sort(o)
                for (var i = 0; i < 16; i++) E(n, i, t.elements[i])
                return n
                function o(e, t) {
                  return e.time - t.time
                }
              })(h, f)
              return { name: c.uuid, keyframes: m }
            }
            var y = new THREE.Vector3(),
              b = new THREE.Vector3(),
              w = new THREE.Quaternion()
            function x(e, t) {
              for (
                var n = e.keyframes,
                  r = e.name,
                  i = [],
                  o = [],
                  a = [],
                  s = [],
                  u = 0,
                  l = n.length;
                u < l;
                u++
              ) {
                var c = n[u],
                  d = c.time,
                  f = c.value
                _e.fromArray(f).transpose(),
                  _e.decompose(y, w, b),
                  i.push(d),
                  o.push(y.x, y.y, y.z),
                  a.push(w.x, w.y, w.z, w.w),
                  s.push(b.x, b.y, b.z)
              }
              return (
                o.length > 0 && t.push(new THREE.VectorKeyframeTrack(r + '.position', i, o)),
                a.length > 0 && t.push(new THREE.QuaternionKeyframeTrack(r + '.quaternion', i, a)),
                s.length > 0 && t.push(new THREE.VectorKeyframeTrack(r + '.scale', i, s)),
                t
              )
            }
            function E(e, t, n) {
              var r,
                i,
                o,
                a = !0
              for (i = 0, o = e.length; i < o; i++)
                void 0 === (r = e[i]).value[t] ? (r.value[t] = null) : (a = !1)
              if (!0 === a) for (i = 0, o = e.length; i < o; i++) (r = e[i]).value[t] = n
              else
                !(function (e, t) {
                  for (var n, r, i = 0, o = e.length; i < o; i++) {
                    var a = e[i]
                    if (null === a.value[t]) {
                      if (((n = k(e, i, t)), (r = _(e, i, t)), null === n)) {
                        a.value[t] = r.value[t]
                        continue
                      }
                      if (null === r) {
                        a.value[t] = n.value[t]
                        continue
                      }
                      T(a, n, r, t)
                    }
                  }
                })(e, t)
            }
            function k(e, t, n) {
              for (; t >= 0; ) {
                var r = e[t]
                if (null !== r.value[n]) return r
                t--
              }
              return null
            }
            function _(e, t, n) {
              for (; t < e.length; ) {
                var r = e[t]
                if (null !== r.value[n]) return r
                t++
              }
              return null
            }
            function T(e, t, n, r) {
              n.time - t.time !== 0
                ? (e.value[r] =
                    ((e.time - t.time) * (n.value[r] - t.value[r])) / (n.time - t.time) +
                    t.value[r])
                : (e.value[r] = t.value[r])
            }
            function O(e) {
              for (
                var t = [],
                  n = e.name,
                  r = e.end - e.start || -1,
                  i = e.animations,
                  o = 0,
                  a = i.length;
                o < a;
                o++
              )
                for (var s = m(i[o]), u = 0, l = s.length; u < l; u++) t.push(s[u])
              return new THREE.AnimationClip(n, r, t)
            }
            function C(e) {
              return f(We.clips[e], O)
            }
            function S(e) {
              for (var t = { sources: {} }, n = 0, r = e.childNodes.length; n < r; n++) {
                var o = e.childNodes[n]
                if (1 === o.nodeType)
                  switch (o.nodeName) {
                    case 'bind_shape_matrix':
                      t.bindShapeMatrix = i(o.textContent)
                      break
                    case 'source':
                      var a = o.getAttribute('id')
                      t.sources[a] = ie(o)
                      break
                    case 'joints':
                      t.joints = A(o)
                      break
                    case 'vertex_weights':
                      t.vertexWeights = P(o)
                  }
              }
              return t
            }
            function A(e) {
              for (var t = { inputs: {} }, n = 0, r = e.childNodes.length; n < r; n++) {
                var i = e.childNodes[n]
                if (1 === i.nodeType)
                  switch (i.nodeName) {
                    case 'input':
                      var o = i.getAttribute('semantic'),
                        s = a(i.getAttribute('source'))
                      t.inputs[o] = s
                  }
              }
              return t
            }
            function P(e) {
              for (var t = { inputs: {} }, n = 0, r = e.childNodes.length; n < r; n++) {
                var i = e.childNodes[n]
                if (1 === i.nodeType)
                  switch (i.nodeName) {
                    case 'input':
                      var s = i.getAttribute('semantic'),
                        u = a(i.getAttribute('source')),
                        l = parseInt(i.getAttribute('offset'))
                      t.inputs[s] = { id: u, offset: l }
                      break
                    case 'vcount':
                      t.vcount = o(i.textContent)
                      break
                    case 'v':
                      t.v = o(i.textContent)
                  }
              }
              return t
            }
            function M(e) {
              var t = { id: e.id },
                n = We.geometries[t.id]
              return (
                void 0 !== e.skin &&
                  ((t.skin = (function (e) {
                    var t,
                      n,
                      r,
                      i = 4,
                      o = {
                        joints: [],
                        indices: { array: [], stride: i },
                        weights: { array: [], stride: i },
                      },
                      a = e.sources,
                      s = e.vertexWeights,
                      u = s.vcount,
                      l = s.v,
                      c = s.inputs.JOINT.offset,
                      d = s.inputs.WEIGHT.offset,
                      f = e.sources[e.joints.inputs.JOINT],
                      h = e.sources[e.joints.inputs.INV_BIND_MATRIX],
                      p = a[s.inputs.WEIGHT.id].array,
                      v = 0
                    for (t = 0, r = u.length; t < r; t++) {
                      var m = u[t],
                        g = []
                      for (n = 0; n < m; n++) {
                        var y = l[v + c],
                          b = p[l[v + d]]
                        g.push({ index: y, weight: b }), (v += 2)
                      }
                      for (g.sort(k), n = 0; n < i; n++) {
                        var w = g[n]
                        void 0 !== w
                          ? (o.indices.array.push(w.index), o.weights.array.push(w.weight))
                          : (o.indices.array.push(0), o.weights.array.push(0))
                      }
                    }
                    e.bindShapeMatrix
                      ? (o.bindMatrix = new THREE.Matrix4()
                          .fromArray(e.bindShapeMatrix)
                          .transpose())
                      : (o.bindMatrix = new THREE.Matrix4().identity())
                    for (t = 0, r = f.array.length; t < r; t++) {
                      var x = f.array[t],
                        E = new THREE.Matrix4().fromArray(h.array, t * h.stride).transpose()
                      o.joints.push({ name: x, boneInverse: E })
                    }
                    return o
                    function k(e, t) {
                      return t.weight - e.weight
                    }
                  })(e.skin)),
                  (n.sources.skinIndices = t.skin.indices),
                  (n.sources.skinWeights = t.skin.weights)),
                t
              )
            }
            function R(e) {
              return void 0 !== e.build ? e.build : e.init_from
            }
            function j(e) {
              var t = We.images[e]
              return void 0 !== t
                ? f(t, R)
                : (console.warn("THREE.ColladaLoader: Couldn't find image with ID:", e), null)
            }
            function D(e) {
              for (
                var t = { surfaces: {}, samplers: {} }, n = 0, r = e.childNodes.length;
                n < r;
                n++
              ) {
                var i = e.childNodes[n]
                if (1 === i.nodeType)
                  switch (i.nodeName) {
                    case 'newparam':
                      L(i, t)
                      break
                    case 'technique':
                      t.technique = z(i)
                      break
                    case 'extra':
                      t.extra = G(i)
                  }
              }
              return t
            }
            function L(e, t) {
              for (var n = e.getAttribute('sid'), r = 0, i = e.childNodes.length; r < i; r++) {
                var o = e.childNodes[r]
                if (1 === o.nodeType)
                  switch (o.nodeName) {
                    case 'surface':
                      t.surfaces[n] = N(o)
                      break
                    case 'sampler2D':
                      t.samplers[n] = I(o)
                  }
              }
            }
            function N(e) {
              for (var t = {}, n = 0, r = e.childNodes.length; n < r; n++) {
                var i = e.childNodes[n]
                if (1 === i.nodeType)
                  switch (i.nodeName) {
                    case 'init_from':
                      t.init_from = i.textContent
                  }
              }
              return t
            }
            function I(e) {
              for (var t = {}, n = 0, r = e.childNodes.length; n < r; n++) {
                var i = e.childNodes[n]
                if (1 === i.nodeType)
                  switch (i.nodeName) {
                    case 'source':
                      t.source = i.textContent
                  }
              }
              return t
            }
            function z(e) {
              for (var t = {}, n = 0, r = e.childNodes.length; n < r; n++) {
                var i = e.childNodes[n]
                if (1 === i.nodeType)
                  switch (i.nodeName) {
                    case 'constant':
                    case 'lambert':
                    case 'blinn':
                    case 'phong':
                      ;(t.type = i.nodeName), (t.parameters = H(i))
                  }
              }
              return t
            }
            function H(e) {
              for (var t = {}, n = 0, r = e.childNodes.length; n < r; n++) {
                var i = e.childNodes[n]
                if (1 === i.nodeType)
                  switch (i.nodeName) {
                    case 'emission':
                    case 'diffuse':
                    case 'specular':
                    case 'bump':
                    case 'ambient':
                    case 'shininess':
                    case 'transparency':
                      t[i.nodeName] = B(i)
                      break
                    case 'transparent':
                      t[i.nodeName] = { opaque: i.getAttribute('opaque'), data: B(i) }
                  }
              }
              return t
            }
            function B(e) {
              for (var t = {}, n = 0, r = e.childNodes.length; n < r; n++) {
                var o = e.childNodes[n]
                if (1 === o.nodeType)
                  switch (o.nodeName) {
                    case 'color':
                      t[o.nodeName] = i(o.textContent)
                      break
                    case 'float':
                      t[o.nodeName] = parseFloat(o.textContent)
                      break
                    case 'texture':
                      t[o.nodeName] = { id: o.getAttribute('texture'), extra: F(o) }
                  }
              }
              return t
            }
            function F(e) {
              for (var t = { technique: {} }, n = 0, r = e.childNodes.length; n < r; n++) {
                var i = e.childNodes[n]
                if (1 === i.nodeType)
                  switch (i.nodeName) {
                    case 'extra':
                      V(i, t)
                  }
              }
              return t
            }
            function V(e, t) {
              for (var n = 0, r = e.childNodes.length; n < r; n++) {
                var i = e.childNodes[n]
                if (1 === i.nodeType)
                  switch (i.nodeName) {
                    case 'technique':
                      U(i, t)
                  }
              }
            }
            function U(e, t) {
              for (var n = 0, r = e.childNodes.length; n < r; n++) {
                var i = e.childNodes[n]
                if (1 === i.nodeType)
                  switch (i.nodeName) {
                    case 'repeatU':
                    case 'repeatV':
                    case 'offsetU':
                    case 'offsetV':
                      t.technique[i.nodeName] = parseFloat(i.textContent)
                      break
                    case 'wrapU':
                    case 'wrapV':
                      'TRUE' === i.textContent.toUpperCase()
                        ? (t.technique[i.nodeName] = 1)
                        : 'FALSE' === i.textContent.toUpperCase()
                        ? (t.technique[i.nodeName] = 0)
                        : (t.technique[i.nodeName] = parseInt(i.textContent))
                  }
              }
            }
            function G(e) {
              for (var t = {}, n = 0, r = e.childNodes.length; n < r; n++) {
                var i = e.childNodes[n]
                if (1 === i.nodeType)
                  switch (i.nodeName) {
                    case 'technique':
                      t.technique = q(i)
                  }
              }
              return t
            }
            function q(e) {
              for (var t = {}, n = 0, r = e.childNodes.length; n < r; n++) {
                var i = e.childNodes[n]
                if (1 === i.nodeType)
                  switch (i.nodeName) {
                    case 'double_sided':
                      t[i.nodeName] = parseInt(i.textContent)
                  }
              }
              return t
            }
            function W(e) {
              return e
            }
            function K(e) {
              var t,
                n,
                r = ((t = e.url), f(We.effects[t], W)),
                i = r.profile.technique,
                o = r.profile.extra
              switch (i.type) {
                case 'phong':
                case 'blinn':
                  n = new THREE.MeshPhongMaterial()
                  break
                case 'lambert':
                  n = new THREE.MeshLambertMaterial()
                  break
                default:
                  n = new THREE.MeshBasicMaterial()
              }
              function a(e) {
                var t = r.profile.samplers[e.id],
                  n = null
                void 0 !== t
                  ? (n = j(r.profile.surfaces[t.source].init_from))
                  : (console.warn(
                      'THREE.ColladaLoader: Undefined sampler. Access image directly (see #12530).',
                    ),
                    (n = j(e.id)))
                if (null !== n) {
                  var i = (function (e) {
                    var t,
                      n = e.slice(2 + ((e.lastIndexOf('.') - 1) >>> 0))
                    switch ((n = n.toLowerCase())) {
                      case 'tga':
                        t = Be
                        break
                      default:
                        t = Ve
                    }
                    return t
                  })(n)
                  if (void 0 !== i) {
                    var o = i.load(n),
                      a = e.extra
                    if (void 0 !== a && void 0 !== a.technique && !1 === s(a.technique)) {
                      var u = a.technique
                      ;(o.wrapS = u.wrapU ? THREE.RepeatWrapping : THREE.ClampToEdgeWrapping),
                        (o.wrapT = u.wrapV ? THREE.RepeatWrapping : THREE.ClampToEdgeWrapping),
                        o.offset.set(u.offsetU || 0, u.offsetV || 0),
                        o.repeat.set(u.repeatU || 1, u.repeatV || 1)
                    } else (o.wrapS = THREE.RepeatWrapping), (o.wrapT = THREE.RepeatWrapping)
                    return o
                  }
                  return (
                    console.warn('THREE.ColladaLoader: Loader for texture %s not found.', n), null
                  )
                }
                return (
                  console.warn("THREE.ColladaLoader: Couldn't create texture with ID:", e.id), null
                )
              }
              n.name = e.name
              var u = i.parameters
              for (var l in u) {
                var c = u[l]
                switch (l) {
                  case 'diffuse':
                    c.color && n.color.fromArray(c.color), c.texture && (n.map = a(c.texture))
                    break
                  case 'specular':
                    c.color && n.specular && n.specular.fromArray(c.color),
                      c.texture && (n.specularMap = a(c.texture))
                    break
                  case 'bump':
                    c.texture && (n.normalMap = a(c.texture))
                    break
                  case 'ambient':
                    c.texture && (n.lightMap = a(c.texture))
                    break
                  case 'shininess':
                    c.float && n.shininess && (n.shininess = c.float)
                    break
                  case 'emission':
                    c.color && n.emissive && n.emissive.fromArray(c.color),
                      c.texture && (n.emissiveMap = a(c.texture))
                }
              }
              var d = u.transparent,
                h = u.transparency
              if (
                (void 0 === h && d && (h = { float: 1 }),
                void 0 === d && h && (d = { opaque: 'A_ONE', data: { color: [1, 1, 1, 1] } }),
                d && h)
              )
                if (d.data.texture) n.transparent = !0
                else {
                  var p = d.data.color
                  switch (d.opaque) {
                    case 'A_ONE':
                      n.opacity = p[3] * h.float
                      break
                    case 'RGB_ZERO':
                      n.opacity = 1 - p[0] * h.float
                      break
                    case 'A_ZERO':
                      n.opacity = 1 - p[3] * h.float
                      break
                    case 'RGB_ONE':
                      n.opacity = p[0] * h.float
                      break
                    default:
                      console.warn(
                        'THREE.ColladaLoader: Invalid opaque type "%s" of transparent tag.',
                        d.opaque,
                      )
                  }
                  n.opacity < 1 && (n.transparent = !0)
                }
              return (
                void 0 !== o &&
                  void 0 !== o.technique &&
                  1 === o.technique.double_sided &&
                  (n.side = THREE.DoubleSide),
                n
              )
            }
            function Z(e) {
              return f(We.materials[e], K)
            }
            function $(e) {
              for (var t = 0; t < e.childNodes.length; t++) {
                var n = e.childNodes[t]
                switch (n.nodeName) {
                  case 'technique_common':
                    return X(n)
                }
              }
              return {}
            }
            function X(e) {
              for (var t = {}, n = 0; n < e.childNodes.length; n++) {
                var r = e.childNodes[n]
                switch (r.nodeName) {
                  case 'perspective':
                  case 'orthographic':
                    ;(t.technique = r.nodeName), (t.parameters = Y(r))
                }
              }
              return t
            }
            function Y(e) {
              for (var t = {}, n = 0; n < e.childNodes.length; n++) {
                var r = e.childNodes[n]
                switch (r.nodeName) {
                  case 'xfov':
                  case 'yfov':
                  case 'xmag':
                  case 'ymag':
                  case 'znear':
                  case 'zfar':
                  case 'aspect_ratio':
                    t[r.nodeName] = parseFloat(r.textContent)
                }
              }
              return t
            }
            function Q(e) {
              var t
              switch (e.optics.technique) {
                case 'perspective':
                  t = new THREE.PerspectiveCamera(
                    e.optics.parameters.yfov,
                    e.optics.parameters.aspect_ratio,
                    e.optics.parameters.znear,
                    e.optics.parameters.zfar,
                  )
                  break
                case 'orthographic':
                  var n = e.optics.parameters.ymag,
                    r = e.optics.parameters.xmag,
                    i = e.optics.parameters.aspect_ratio
                  ;(r = void 0 === r ? n * i : r),
                    (n = void 0 === n ? r / i : n),
                    (r *= 0.5),
                    (n *= 0.5),
                    (t = new THREE.OrthographicCamera(
                      -r,
                      r,
                      n,
                      -n,
                      e.optics.parameters.znear,
                      e.optics.parameters.zfar,
                    ))
                  break
                default:
                  t = new THREE.PerspectiveCamera()
              }
              return (t.name = e.name), t
            }
            function J(e) {
              var t = We.cameras[e]
              return void 0 !== t
                ? f(t, Q)
                : (console.warn("THREE.ColladaLoader: Couldn't find camera with ID:", e), null)
            }
            function ee(e) {
              for (var t = {}, n = 0, r = e.childNodes.length; n < r; n++) {
                var i = e.childNodes[n]
                if (1 === i.nodeType)
                  switch (i.nodeName) {
                    case 'directional':
                    case 'point':
                    case 'spot':
                    case 'ambient':
                      ;(t.technique = i.nodeName), (t.parameters = te(i))
                  }
              }
              return t
            }
            function te(e) {
              for (var t = {}, n = 0, r = e.childNodes.length; n < r; n++) {
                var o = e.childNodes[n]
                if (1 === o.nodeType)
                  switch (o.nodeName) {
                    case 'color':
                      var a = i(o.textContent)
                      t.color = new THREE.Color().fromArray(a)
                      break
                    case 'falloff_angle':
                      t.falloffAngle = parseFloat(o.textContent)
                      break
                    case 'quadratic_attenuation':
                      var s = parseFloat(o.textContent)
                      t.distance = s ? Math.sqrt(1 / s) : 0
                  }
              }
              return t
            }
            function ne(e) {
              var t
              switch (e.technique) {
                case 'directional':
                  t = new THREE.DirectionalLight()
                  break
                case 'point':
                  t = new THREE.PointLight()
                  break
                case 'spot':
                  t = new THREE.SpotLight()
                  break
                case 'ambient':
                  t = new THREE.AmbientLight()
              }
              return (
                e.parameters.color && t.color.copy(e.parameters.color),
                e.parameters.distance && (t.distance = e.parameters.distance),
                t
              )
            }
            function re(e) {
              var t = We.lights[e]
              return void 0 !== t
                ? f(t, ne)
                : (console.warn("THREE.ColladaLoader: Couldn't find light with ID:", e), null)
            }
            function ie(e) {
              for (var t = { array: [], stride: 3 }, o = 0; o < e.childNodes.length; o++) {
                var a = e.childNodes[o]
                if (1 === a.nodeType)
                  switch (a.nodeName) {
                    case 'float_array':
                      t.array = i(a.textContent)
                      break
                    case 'Name_array':
                      t.array = r(a.textContent)
                      break
                    case 'technique_common':
                      var s = n(a, 'accessor')[0]
                      void 0 !== s && (t.stride = parseInt(s.getAttribute('stride')))
                  }
              }
              return t
            }
            function oe(e) {
              for (var t = {}, n = 0; n < e.childNodes.length; n++) {
                var r = e.childNodes[n]
                1 === r.nodeType && (t[r.getAttribute('semantic')] = a(r.getAttribute('source')))
              }
              return t
            }
            function ae(e) {
              for (
                var t = {
                    type: e.nodeName,
                    material: e.getAttribute('material'),
                    count: parseInt(e.getAttribute('count')),
                    inputs: {},
                    stride: 0,
                    hasUV: !1,
                  },
                  n = 0,
                  r = e.childNodes.length;
                n < r;
                n++
              ) {
                var i = e.childNodes[n]
                if (1 === i.nodeType)
                  switch (i.nodeName) {
                    case 'input':
                      var s = a(i.getAttribute('source')),
                        u = i.getAttribute('semantic'),
                        l = parseInt(i.getAttribute('offset')),
                        c = parseInt(i.getAttribute('set')),
                        d = c > 0 ? u + c : u
                      ;(t.inputs[d] = { id: s, offset: l }),
                        (t.stride = Math.max(t.stride, l + 1)),
                        'TEXCOORD' === u && (t.hasUV = !0)
                      break
                    case 'vcount':
                      t.vcount = o(i.textContent)
                      break
                    case 'p':
                      t.p = o(i.textContent)
                  }
              }
              return t
            }
            function se(e) {
              for (var t = 0, n = 0, r = e.length; n < r; n++) {
                !0 === e[n].hasUV && t++
              }
              t > 0 && t < e.length && (e.uvsNeedsFix = !0)
            }
            function ue(e) {
              var t = {},
                n = e.sources,
                r = e.vertices,
                i = e.primitives
              if (0 === i.length) return {}
              var o = (function (e) {
                for (var t = {}, n = 0; n < e.length; n++) {
                  var r = e[n]
                  void 0 === t[r.type] && (t[r.type] = []), t[r.type].push(r)
                }
                return t
              })(i)
              for (var a in o) {
                var s = o[a]
                se(s), (t[a] = le(s, n, r))
              }
              return t
            }
            function le(e, t, n) {
              for (
                var r = {},
                  i = { array: [], stride: 0 },
                  o = { array: [], stride: 0 },
                  a = { array: [], stride: 0 },
                  s = { array: [], stride: 0 },
                  u = { array: [], stride: 0 },
                  l = [],
                  c = 4,
                  d = [],
                  f = 4,
                  h = new THREE.BufferGeometry(),
                  p = [],
                  v = 0,
                  m = 0;
                m < e.length;
                m++
              ) {
                var g = e[m],
                  y = g.inputs,
                  b = 0
                switch (g.type) {
                  case 'lines':
                  case 'linestrips':
                    b = 2 * g.count
                    break
                  case 'triangles':
                    b = 3 * g.count
                    break
                  case 'polylist':
                    for (var w = 0; w < g.count; w++) {
                      var x = g.vcount[w]
                      switch (x) {
                        case 3:
                          b += 3
                          break
                        case 4:
                          b += 6
                          break
                        default:
                          b += 3 * (x - 2)
                      }
                    }
                    break
                  default:
                    console.warn('THREE.ColladaLoader: Unknow primitive type:', g.type)
                }
                for (var E in (h.addGroup(v, b, m),
                (v += b),
                g.material && p.push(g.material),
                y)) {
                  var k = y[E]
                  switch (E) {
                    case 'VERTEX':
                      for (var _ in n) {
                        var T = n[_]
                        switch (_) {
                          case 'POSITION':
                            var O = i.array.length
                            if (
                              (ce(g, t[T], k.offset, i.array),
                              (i.stride = t[T].stride),
                              t.skinWeights &&
                                t.skinIndices &&
                                (ce(g, t.skinIndices, k.offset, l),
                                ce(g, t.skinWeights, k.offset, d)),
                              !1 === g.hasUV && !0 === e.uvsNeedsFix)
                            ) {
                              b = (i.array.length - O) / i.stride
                              for (var C = 0; C < b; C++) a.array.push(0, 0)
                            }
                            break
                          case 'NORMAL':
                            ce(g, t[T], k.offset, o.array), (o.stride = t[T].stride)
                            break
                          case 'COLOR':
                            ce(g, t[T], k.offset, u.array), (u.stride = t[T].stride)
                            break
                          case 'TEXCOORD':
                            ce(g, t[T], k.offset, a.array), (a.stride = t[T].stride)
                            break
                          case 'TEXCOORD1':
                            ce(g, t[T], k.offset, s.array), (a.stride = t[T].stride)
                            break
                          default:
                            console.warn(
                              'THREE.ColladaLoader: Semantic "%s" not handled in geometry build process.',
                              _,
                            )
                        }
                      }
                      break
                    case 'NORMAL':
                      ce(g, t[k.id], k.offset, o.array), (o.stride = t[k.id].stride)
                      break
                    case 'COLOR':
                      ce(g, t[k.id], k.offset, u.array), (u.stride = t[k.id].stride)
                      break
                    case 'TEXCOORD':
                      ce(g, t[k.id], k.offset, a.array), (a.stride = t[k.id].stride)
                      break
                    case 'TEXCOORD1':
                      ce(g, t[k.id], k.offset, s.array), (s.stride = t[k.id].stride)
                  }
                }
              }
              return (
                i.array.length > 0 &&
                  h.addAttribute('position', new THREE.Float32BufferAttribute(i.array, i.stride)),
                o.array.length > 0 &&
                  h.addAttribute('normal', new THREE.Float32BufferAttribute(o.array, o.stride)),
                u.array.length > 0 &&
                  h.addAttribute('color', new THREE.Float32BufferAttribute(u.array, u.stride)),
                a.array.length > 0 &&
                  h.addAttribute('uv', new THREE.Float32BufferAttribute(a.array, a.stride)),
                s.array.length > 0 &&
                  h.addAttribute('uv2', new THREE.Float32BufferAttribute(s.array, s.stride)),
                l.length > 0 && h.addAttribute('skinIndex', new THREE.Float32BufferAttribute(l, c)),
                d.length > 0 &&
                  h.addAttribute('skinWeight', new THREE.Float32BufferAttribute(d, f)),
                (r.data = h),
                (r.type = e[0].type),
                (r.materialKeys = p),
                r
              )
            }
            function ce(e, t, n, r) {
              var i = e.p,
                o = e.stride,
                a = e.vcount
              function s(e) {
                for (var t = i[e + n] * l, o = t + l; t < o; t++) r.push(u[t])
              }
              var u = t.array,
                l = t.stride
              if (void 0 !== e.vcount)
                for (var c = 0, d = 0, f = a.length; d < f; d++) {
                  var h = a[d]
                  if (4 === h) {
                    var p = c + 1 * o,
                      v = c + 2 * o,
                      m = c + 3 * o
                    s(c + 0 * o), s(p), s(m), s(p), s(v), s(m)
                  } else if (3 === h) {
                    ;(p = c + 1 * o), (v = c + 2 * o)
                    s(c + 0 * o), s(p), s(v)
                  } else if (h > 4)
                    for (var g = 1, y = h - 2; g <= y; g++) {
                      ;(p = c + o * g), (v = c + o * (g + 1))
                      s(c + 0 * o), s(p), s(v)
                    }
                  c += o * h
                }
              else for (d = 0, f = i.length; d < f; d += o) s(d)
            }
            function de(e) {
              return f(We.geometries[e], ue)
            }
            function fe(e) {
              return void 0 !== e.build ? e.build : e
            }
            function he(e, t) {
              for (var n = 0; n < e.childNodes.length; n++) {
                var r = e.childNodes[n]
                if (1 === r.nodeType)
                  switch (r.nodeName) {
                    case 'joint':
                      t.joints[r.getAttribute('sid')] = pe(r)
                      break
                    case 'link':
                      t.links.push(me(r))
                  }
              }
            }
            function pe(e) {
              for (var t, n = 0; n < e.childNodes.length; n++) {
                var r = e.childNodes[n]
                if (1 === r.nodeType)
                  switch (r.nodeName) {
                    case 'prismatic':
                    case 'revolute':
                      t = ve(r)
                  }
              }
              return t
            }
            function ve(e, t) {
              t = {
                sid: e.getAttribute('sid'),
                name: e.getAttribute('name') || '',
                axis: new THREE.Vector3(),
                limits: { min: 0, max: 0 },
                type: e.nodeName,
                static: !1,
                zeroPosition: 0,
                middlePosition: 0,
              }
              for (var n = 0; n < e.childNodes.length; n++) {
                var r = e.childNodes[n]
                if (1 === r.nodeType)
                  switch (r.nodeName) {
                    case 'axis':
                      var o = i(r.textContent)
                      t.axis.fromArray(o)
                      break
                    case 'limits':
                      var a = r.getElementsByTagName('max')[0],
                        s = r.getElementsByTagName('min')[0]
                      ;(t.limits.max = parseFloat(a.textContent)),
                        (t.limits.min = parseFloat(s.textContent))
                  }
              }
              return (
                t.limits.min >= t.limits.max && (t.static = !0),
                (t.middlePosition = (t.limits.min + t.limits.max) / 2),
                t
              )
            }
            function me(e) {
              for (
                var t = {
                    sid: e.getAttribute('sid'),
                    name: e.getAttribute('name') || '',
                    attachments: [],
                    transforms: [],
                  },
                  n = 0;
                n < e.childNodes.length;
                n++
              ) {
                var r = e.childNodes[n]
                if (1 === r.nodeType)
                  switch (r.nodeName) {
                    case 'attachment_full':
                      t.attachments.push(ge(r))
                      break
                    case 'matrix':
                    case 'translate':
                    case 'rotate':
                      t.transforms.push(ye(r))
                  }
              }
              return t
            }
            function ge(e) {
              for (
                var t = {
                    joint: e.getAttribute('joint').split('/').pop(),
                    transforms: [],
                    links: [],
                  },
                  n = 0;
                n < e.childNodes.length;
                n++
              ) {
                var r = e.childNodes[n]
                if (1 === r.nodeType)
                  switch (r.nodeName) {
                    case 'link':
                      t.links.push(me(r))
                      break
                    case 'matrix':
                    case 'translate':
                    case 'rotate':
                      t.transforms.push(ye(r))
                  }
              }
              return t
            }
            function ye(e) {
              var t = { type: e.nodeName },
                n = i(e.textContent)
              switch (t.type) {
                case 'matrix':
                  ;(t.obj = new THREE.Matrix4()), t.obj.fromArray(n).transpose()
                  break
                case 'translate':
                  ;(t.obj = new THREE.Vector3()), t.obj.fromArray(n)
                  break
                case 'rotate':
                  ;(t.obj = new THREE.Vector3()),
                    t.obj.fromArray(n),
                    (t.angle = THREE.Math.degToRad(n[3]))
              }
              return t
            }
            function be(e, t) {
              for (var n = 0; n < e.childNodes.length; n++) {
                var r = e.childNodes[n]
                if (1 === r.nodeType)
                  switch (r.nodeName) {
                    case 'technique_common':
                      we(r, t)
                  }
              }
            }
            function we(e, t) {
              for (var n = 0; n < e.childNodes.length; n++) {
                var r = e.childNodes[n]
                if (1 === r.nodeType)
                  switch (r.nodeName) {
                    case 'inertia':
                      t.inertia = i(r.textContent)
                      break
                    case 'mass':
                      t.mass = i(r.textContent)[0]
                  }
              }
            }
            function xe(e) {
              for (
                var t = { target: e.getAttribute('target').split('/').pop() }, n = 0;
                n < e.childNodes.length;
                n++
              ) {
                var r = e.childNodes[n]
                if (1 === r.nodeType)
                  switch (r.nodeName) {
                    case 'axis':
                      var i = r.getElementsByTagName('param')[0]
                      t.axis = i.textContent
                      var o = t.axis.split('inst_').pop().split('axis')[0]
                      t.jointIndex = o.substr(0, o.length - 1)
                  }
              }
              return t
            }
            function Ee(e) {
              return void 0 !== e.build ? e.build : e
            }
            function ke(e) {
              for (
                var t = [], n = ze.querySelector('[id="' + e.id + '"]'), r = 0;
                r < n.childNodes.length;
                r++
              ) {
                var o = n.childNodes[r]
                if (1 === o.nodeType)
                  switch (o.nodeName) {
                    case 'matrix':
                      var a = i(o.textContent),
                        s = new THREE.Matrix4().fromArray(a).transpose()
                      t.push({ sid: o.getAttribute('sid'), type: o.nodeName, obj: s })
                      break
                    case 'translate':
                    case 'scale':
                      a = i(o.textContent)
                      var u = new THREE.Vector3().fromArray(a)
                      t.push({ sid: o.getAttribute('sid'), type: o.nodeName, obj: u })
                      break
                    case 'rotate':
                      ;(a = i(o.textContent)), (u = new THREE.Vector3().fromArray(a))
                      var l = THREE.Math.degToRad(a[3])
                      t.push({ sid: o.getAttribute('sid'), type: o.nodeName, obj: u, angle: l })
                  }
              }
              return t
            }
            var _e = new THREE.Matrix4(),
              Te = new THREE.Vector3()
            function Oe(e) {
              for (
                var t = {
                    name: e.getAttribute('name') || '',
                    type: e.getAttribute('type'),
                    id: e.getAttribute('id'),
                    sid: e.getAttribute('sid'),
                    matrix: new THREE.Matrix4(),
                    nodes: [],
                    instanceCameras: [],
                    instanceControllers: [],
                    instanceLights: [],
                    instanceGeometries: [],
                    instanceNodes: [],
                    transforms: {},
                  },
                  n = 0;
                n < e.childNodes.length;
                n++
              ) {
                var r = e.childNodes[n]
                if (1 === r.nodeType)
                  switch (r.nodeName) {
                    case 'node':
                      t.nodes.push(r.getAttribute('id')), Oe(r)
                      break
                    case 'instance_camera':
                      t.instanceCameras.push(a(r.getAttribute('url')))
                      break
                    case 'instance_controller':
                      t.instanceControllers.push(Ce(r))
                      break
                    case 'instance_light':
                      t.instanceLights.push(a(r.getAttribute('url')))
                      break
                    case 'instance_geometry':
                      t.instanceGeometries.push(Ce(r))
                      break
                    case 'instance_node':
                      t.instanceNodes.push(a(r.getAttribute('url')))
                      break
                    case 'matrix':
                      var o = i(r.textContent)
                      t.matrix.multiply(_e.fromArray(o).transpose()),
                        (t.transforms[r.getAttribute('sid')] = r.nodeName)
                      break
                    case 'translate':
                      o = i(r.textContent)
                      Te.fromArray(o),
                        t.matrix.multiply(_e.makeTranslation(Te.x, Te.y, Te.z)),
                        (t.transforms[r.getAttribute('sid')] = r.nodeName)
                      break
                    case 'rotate':
                      o = i(r.textContent)
                      var s = THREE.Math.degToRad(o[3])
                      t.matrix.multiply(_e.makeRotationAxis(Te.fromArray(o), s)),
                        (t.transforms[r.getAttribute('sid')] = r.nodeName)
                      break
                    case 'scale':
                      o = i(r.textContent)
                      t.matrix.scale(Te.fromArray(o)),
                        (t.transforms[r.getAttribute('sid')] = r.nodeName)
                      break
                    case 'extra':
                      break
                    default:
                      console.log(r)
                  }
              }
              return (
                De(t.id)
                  ? console.warn(
                      'THREE.ColladaLoader: There is already a node with ID %s. Exclude current node from further processing.',
                      t.id,
                    )
                  : (We.nodes[t.id] = t),
                t
              )
            }
            function Ce(e) {
              for (
                var t = { id: a(e.getAttribute('url')), materials: {}, skeletons: [] }, n = 0;
                n < e.childNodes.length;
                n++
              ) {
                var r = e.childNodes[n]
                switch (r.nodeName) {
                  case 'bind_material':
                    for (
                      var i = r.getElementsByTagName('instance_material'), o = 0;
                      o < i.length;
                      o++
                    ) {
                      var s = i[o],
                        u = s.getAttribute('symbol'),
                        l = s.getAttribute('target')
                      t.materials[u] = a(l)
                    }
                    break
                  case 'skeleton':
                    t.skeletons.push(a(r.textContent))
                }
              }
              return t
            }
            function Se(e, t) {
              var n,
                r,
                i,
                o = [],
                a = []
              for (n = 0; n < e.length; n++) {
                var s = e[n]
                if (De(s)) Ae(Le(s), t, o)
                else if (((i = s), void 0 !== We.visualScenes[i]))
                  for (var u = We.visualScenes[s].children, l = 0; l < u.length; l++) {
                    var c = u[l]
                    if ('JOINT' === c.type) Ae(Le(c.id), t, o)
                  }
                else
                  console.error(
                    'THREE.ColladaLoader: Unable to find root bone of skeleton with ID:',
                    s,
                  )
              }
              for (n = 0; n < t.length; n++)
                for (l = 0; l < o.length; l++)
                  if ((r = o[l]).bone.name === t[n].name) {
                    ;(a[n] = r), (r.processed = !0)
                    break
                  }
              for (n = 0; n < o.length; n++)
                !1 === (r = o[n]).processed && (a.push(r), (r.processed = !0))
              var d = [],
                f = []
              for (n = 0; n < a.length; n++) (r = a[n]), d.push(r.bone), f.push(r.boneInverse)
              return new THREE.Skeleton(d, f)
            }
            function Ae(e, t, n) {
              e.traverse(function (e) {
                if (!0 === e.isBone) {
                  for (var r, i = 0; i < t.length; i++) {
                    var o = t[i]
                    if (o.name === e.name) {
                      r = o.boneInverse
                      break
                    }
                  }
                  void 0 === r && (r = new THREE.Matrix4()),
                    n.push({ bone: e, boneInverse: r, processed: !1 })
                }
              })
            }
            function Pe(e) {
              for (
                var t,
                  n = [],
                  r = e.matrix,
                  i = e.nodes,
                  o = e.type,
                  a = e.instanceCameras,
                  s = e.instanceControllers,
                  u = e.instanceLights,
                  l = e.instanceGeometries,
                  c = e.instanceNodes,
                  d = 0,
                  h = i.length;
                d < h;
                d++
              )
                n.push(Le(i[d]))
              for (d = 0, h = a.length; d < h; d++) {
                var p = J(a[d])
                null !== p && n.push(p.clone())
              }
              for (d = 0, h = s.length; d < h; d++)
                for (
                  var v = s[d],
                    m = ((t = v.id), f(We.controllers[t], M)),
                    g = je(de(m.id), v.materials),
                    y = Se(v.skeletons, m.skin.joints),
                    b = 0,
                    w = g.length;
                  b < w;
                  b++
                ) {
                  var x
                  ;(x = g[b]).isSkinnedMesh &&
                    (x.bind(y, m.skin.bindMatrix), x.normalizeSkinWeights()),
                    n.push(x)
                }
              for (d = 0, h = u.length; d < h; d++) {
                var E = re(u[d])
                null !== E && n.push(E.clone())
              }
              for (d = 0, h = l.length; d < h; d++)
                for (b = 0, w = (g = je(de((v = l[d]).id), v.materials)).length; b < w; b++)
                  n.push(g[b])
              for (d = 0, h = c.length; d < h; d++) n.push(Le(c[d]).clone())
              if (0 === i.length && 1 === n.length) x = n[0]
              else {
                x = 'JOINT' === o ? new THREE.Bone() : new THREE.Group()
                for (d = 0; d < n.length; d++) x.add(n[d])
              }
              return (
                '' === x.name && (x.name = 'JOINT' === o ? e.sid : e.name),
                x.matrix.copy(r),
                x.matrix.decompose(x.position, x.quaternion, x.scale),
                x
              )
            }
            var Me = new THREE.MeshBasicMaterial({ color: 16711935 })
            function Re(e, t) {
              for (var n = [], r = 0, i = e.length; r < i; r++) {
                var o = t[e[r]]
                void 0 === o
                  ? (console.warn(
                      'THREE.ColladaLoader: Material with key %s not found. Apply fallback material.',
                      e[r],
                    ),
                    n.push(Me))
                  : n.push(Z(o))
              }
              return n
            }
            function je(e, t) {
              var n = []
              for (var r in e) {
                var i = e[r],
                  o = Re(i.materialKeys, t)
                0 === o.length &&
                  ('lines' === r || 'linestrips' === r
                    ? o.push(new THREE.LineBasicMaterial())
                    : o.push(new THREE.MeshPhongMaterial()))
                var a = void 0 !== i.data.attributes.skinIndex
                if (a) for (var s = 0, u = o.length; s < u; s++) o[s].skinning = !0
                var l,
                  c = 1 === o.length ? o[0] : o
                switch (r) {
                  case 'lines':
                    l = new THREE.LineSegments(i.data, c)
                    break
                  case 'linestrips':
                    l = new THREE.Line(i.data, c)
                    break
                  case 'triangles':
                  case 'polylist':
                    l = a ? new THREE.SkinnedMesh(i.data, c) : new THREE.Mesh(i.data, c)
                }
                n.push(l)
              }
              return n
            }
            function De(e) {
              return void 0 !== We.nodes[e]
            }
            function Le(e) {
              return f(We.nodes[e], Pe)
            }
            function Ne(e) {
              var t = new THREE.Group()
              t.name = e.name
              for (var n = e.children, r = 0; r < n.length; r++) {
                var i = n[r]
                t.add(Le(i.id))
              }
              return t
            }
            function Ie(e) {
              return f(We.visualScenes[e], Ne)
            }
            if (0 === e.length) return { scene: new THREE.Scene() }
            var ze = n(new DOMParser().parseFromString(e, 'application/xml'), 'COLLADA')[0],
              He = ze.getAttribute('version')
            console.log('THREE.ColladaLoader: File version', He)
            var Be,
              Fe = (function (e) {
                return { unit: u(n(e, 'unit')[0]), upAxis: l(n(e, 'up_axis')[0]) }
              })(n(ze, 'asset')[0]),
              Ve = new THREE.TextureLoader(this.manager)
            Ve.setPath(this.resourcePath || t).setCrossOrigin(this.crossOrigin),
              THREE.TGALoader &&
                (Be = new THREE.TGALoader(this.manager)).setPath(this.resourcePath || t)
            var Ue = [],
              Ge = {},
              qe = 0,
              We = {
                animations: {},
                clips: {},
                controllers: {},
                images: {},
                effects: {},
                materials: {},
                cameras: {},
                lights: {},
                geometries: {},
                nodes: {},
                visualScenes: {},
                kinematicsModels: {},
                physicsModels: {},
                kinematicsScenes: {},
              }
            c(ze, 'library_animations', 'animation', function (e) {
              for (
                var t = { sources: {}, samplers: {}, channels: {} }, n = 0, r = e.childNodes.length;
                n < r;
                n++
              ) {
                var i,
                  o = e.childNodes[n]
                if (1 === o.nodeType)
                  switch (o.nodeName) {
                    case 'source':
                      ;(i = o.getAttribute('id')), (t.sources[i] = ie(o))
                      break
                    case 'sampler':
                      ;(i = o.getAttribute('id')), (t.samplers[i] = h(o))
                      break
                    case 'channel':
                      ;(i = o.getAttribute('target')), (t.channels[i] = p(o))
                      break
                    default:
                      console.log(o)
                  }
              }
              We.animations[e.getAttribute('id')] = t
            }),
              c(ze, 'library_animation_clips', 'animation_clip', function (e) {
                for (
                  var t = {
                      name: e.getAttribute('id') || 'default',
                      start: parseFloat(e.getAttribute('start') || 0),
                      end: parseFloat(e.getAttribute('end') || 0),
                      animations: [],
                    },
                    n = 0,
                    r = e.childNodes.length;
                  n < r;
                  n++
                ) {
                  var i = e.childNodes[n]
                  if (1 === i.nodeType)
                    switch (i.nodeName) {
                      case 'instance_animation':
                        t.animations.push(a(i.getAttribute('url')))
                    }
                }
                We.clips[e.getAttribute('id')] = t
              }),
              c(ze, 'library_controllers', 'controller', function (e) {
                for (var t = {}, n = 0, r = e.childNodes.length; n < r; n++) {
                  var i = e.childNodes[n]
                  if (1 === i.nodeType)
                    switch (i.nodeName) {
                      case 'skin':
                        ;(t.id = a(i.getAttribute('source'))), (t.skin = S(i))
                        break
                      case 'morph':
                        ;(t.id = a(i.getAttribute('source'))),
                          console.warn(
                            'THREE.ColladaLoader: Morph target animation not supported yet.',
                          )
                    }
                }
                We.controllers[e.getAttribute('id')] = t
              }),
              c(ze, 'library_images', 'image', function (e) {
                var t = { init_from: n(e, 'init_from')[0].textContent }
                We.images[e.getAttribute('id')] = t
              }),
              c(ze, 'library_effects', 'effect', function (e) {
                for (var t = {}, n = 0, r = e.childNodes.length; n < r; n++) {
                  var i = e.childNodes[n]
                  if (1 === i.nodeType)
                    switch (i.nodeName) {
                      case 'profile_COMMON':
                        t.profile = D(i)
                    }
                }
                We.effects[e.getAttribute('id')] = t
              }),
              c(ze, 'library_materials', 'material', function (e) {
                for (
                  var t = { name: e.getAttribute('name') }, n = 0, r = e.childNodes.length;
                  n < r;
                  n++
                ) {
                  var i = e.childNodes[n]
                  if (1 === i.nodeType)
                    switch (i.nodeName) {
                      case 'instance_effect':
                        t.url = a(i.getAttribute('url'))
                    }
                }
                We.materials[e.getAttribute('id')] = t
              }),
              c(ze, 'library_cameras', 'camera', function (e) {
                for (
                  var t = { name: e.getAttribute('name') }, n = 0, r = e.childNodes.length;
                  n < r;
                  n++
                ) {
                  var i = e.childNodes[n]
                  if (1 === i.nodeType)
                    switch (i.nodeName) {
                      case 'optics':
                        t.optics = $(i)
                    }
                }
                We.cameras[e.getAttribute('id')] = t
              }),
              c(ze, 'library_lights', 'light', function (e) {
                for (var t = {}, n = 0, r = e.childNodes.length; n < r; n++) {
                  var i = e.childNodes[n]
                  if (1 === i.nodeType)
                    switch (i.nodeName) {
                      case 'technique_common':
                        t = ee(i)
                    }
                }
                We.lights[e.getAttribute('id')] = t
              }),
              c(ze, 'library_geometries', 'geometry', function (e) {
                var t = { name: e.getAttribute('name'), sources: {}, vertices: {}, primitives: [] },
                  r = n(e, 'mesh')[0]
                if (void 0 !== r) {
                  for (var i = 0; i < r.childNodes.length; i++) {
                    var o = r.childNodes[i]
                    if (1 === o.nodeType) {
                      var a = o.getAttribute('id')
                      switch (o.nodeName) {
                        case 'source':
                          t.sources[a] = ie(o)
                          break
                        case 'vertices':
                          t.vertices = oe(o)
                          break
                        case 'polygons':
                          console.warn(
                            'THREE.ColladaLoader: Unsupported primitive type: ',
                            o.nodeName,
                          )
                          break
                        case 'lines':
                        case 'linestrips':
                        case 'polylist':
                        case 'triangles':
                          t.primitives.push(ae(o))
                          break
                        default:
                          console.log(o)
                      }
                    }
                  }
                  We.geometries[e.getAttribute('id')] = t
                }
              }),
              c(ze, 'library_nodes', 'node', Oe),
              c(ze, 'library_visual_scenes', 'visual_scene', function (e) {
                var t = { name: e.getAttribute('name'), children: [] }
                !(function (e) {
                  for (var t = e.getElementsByTagName('node'), n = 0; n < t.length; n++) {
                    var r = t[n]
                    !1 === r.hasAttribute('id') && r.setAttribute('id', 'three_default_' + qe++)
                  }
                })(e)
                for (var r = n(e, 'node'), i = 0; i < r.length; i++) t.children.push(Oe(r[i]))
                We.visualScenes[e.getAttribute('id')] = t
              }),
              c(ze, 'library_kinematics_models', 'kinematics_model', function (e) {
                for (
                  var t = { name: e.getAttribute('name') || '', joints: {}, links: [] }, n = 0;
                  n < e.childNodes.length;
                  n++
                ) {
                  var r = e.childNodes[n]
                  if (1 === r.nodeType)
                    switch (r.nodeName) {
                      case 'technique_common':
                        he(r, t)
                    }
                }
                We.kinematicsModels[e.getAttribute('id')] = t
              }),
              c(ze, 'library_physics_models', 'physics_model', function (e) {
                for (
                  var t = { name: e.getAttribute('name') || '', rigidBodies: {} }, n = 0;
                  n < e.childNodes.length;
                  n++
                ) {
                  var r = e.childNodes[n]
                  if (1 === r.nodeType)
                    switch (r.nodeName) {
                      case 'rigid_body':
                        ;(t.rigidBodies[r.getAttribute('name')] = {}),
                          be(r, t.rigidBodies[r.getAttribute('name')])
                    }
                }
                We.physicsModels[e.getAttribute('id')] = t
              }),
              c(ze, 'scene', 'instance_kinematics_scene', function (e) {
                for (var t = { bindJointAxis: [] }, n = 0; n < e.childNodes.length; n++) {
                  var r = e.childNodes[n]
                  if (1 === r.nodeType)
                    switch (r.nodeName) {
                      case 'bind_joint_axis':
                        t.bindJointAxis.push(xe(r))
                    }
                }
                We.kinematicsScenes[a(e.getAttribute('url'))] = t
              }),
              d(We.animations, v),
              d(We.clips, O),
              d(We.controllers, M),
              d(We.images, R),
              d(We.effects, W),
              d(We.materials, K),
              d(We.cameras, Q),
              d(We.lights, ne),
              d(We.geometries, ue),
              d(We.visualScenes, Ne),
              (function () {
                var e = We.clips
                if (!0 === s(e)) {
                  if (!1 === s(We.animations)) {
                    var t = []
                    for (var n in We.animations)
                      for (var r = m(n), i = 0, o = r.length; i < o; i++) t.push(r[i])
                    Ue.push(new THREE.AnimationClip('default', -1, t))
                  }
                } else for (var n in e) Ue.push(C(n))
              })(),
              (function () {
                var e = Object.keys(We.kinematicsModels)[0],
                  t = Object.keys(We.kinematicsScenes)[0],
                  n = Object.keys(We.visualScenes)[0]
                if (void 0 !== e && void 0 !== t) {
                  for (
                    var r,
                      i = ((r = e), f(We.kinematicsModels[r], fe)),
                      o = (function (e) {
                        return f(We.kinematicsScenes[e], Ee)
                      })(t),
                      a = Ie(n),
                      s = o.bindJointAxis,
                      u = {},
                      l = 0,
                      c = s.length;
                    l < c;
                    l++
                  ) {
                    var d = s[l],
                      h = ze.querySelector('[sid="' + d.target + '"]')
                    if (h) {
                      var p = h.parentElement
                      m(d.jointIndex, p)
                    }
                  }
                  var v = new THREE.Matrix4()
                  Ge = {
                    joints: i && i.joints,
                    getJointValue: function (e) {
                      var t = u[e]
                      if (t) return t.position
                      console.warn('THREE.ColladaLoader: Joint ' + e + " doesn't exist.")
                    },
                    setJointValue: function (e, t) {
                      var n = u[e]
                      if (n) {
                        var r = n.joint
                        if (t > r.limits.max || t < r.limits.min)
                          console.warn(
                            'THREE.ColladaLoader: Joint ' +
                              e +
                              ' value ' +
                              t +
                              ' outside of limits (min: ' +
                              r.limits.min +
                              ', max: ' +
                              r.limits.max +
                              ').',
                          )
                        else if (r.static)
                          console.warn('THREE.ColladaLoader: Joint ' + e + ' is static.')
                        else {
                          var i = n.object,
                            o = r.axis,
                            a = n.transforms
                          _e.identity()
                          for (var s = 0; s < a.length; s++) {
                            var l = a[s]
                            if (l.sid && -1 !== l.sid.indexOf(e))
                              switch (r.type) {
                                case 'revolute':
                                  _e.multiply(v.makeRotationAxis(o, THREE.Math.degToRad(t)))
                                  break
                                case 'prismatic':
                                  _e.multiply(v.makeTranslation(o.x * t, o.y * t, o.z * t))
                                  break
                                default:
                                  console.warn('THREE.ColladaLoader: Unknown joint type: ' + r.type)
                              }
                            else
                              switch (l.type) {
                                case 'matrix':
                                  _e.multiply(l.obj)
                                  break
                                case 'translate':
                                  _e.multiply(v.makeTranslation(l.obj.x, l.obj.y, l.obj.z))
                                  break
                                case 'scale':
                                  _e.scale(l.obj)
                                  break
                                case 'rotate':
                                  _e.multiply(v.makeRotationAxis(l.obj, l.angle))
                              }
                          }
                          i.matrix.copy(_e),
                            i.matrix.decompose(i.position, i.quaternion, i.scale),
                            (u[e].position = t)
                        }
                      } else console.log('THREE.ColladaLoader: ' + e + ' does not exist.')
                    },
                  }
                }
                function m(e, t) {
                  var n = t.getAttribute('name'),
                    r = i.joints[e]
                  a.traverse(function (i) {
                    i.name === n &&
                      (u[e] = { object: i, transforms: ke(t), joint: r, position: r.zeroPosition })
                  })
                }
              })()
            var Ke = (function (e) {
              return Ie(a(n(e, 'instance_visual_scene')[0].getAttribute('url')))
            })(n(ze, 'scene')[0])
            return (
              'Z_UP' === Fe.upAxis &&
                Ke.quaternion.setFromEuler(new THREE.Euler(-Math.PI / 2, 0, 0)),
              Ke.scale.multiplyScalar(Fe.unit),
              { animations: Ue, kinematics: Ge, library: We, scene: Ke }
            )
          },
        })
    },
    9434: function (e) {
      e.exports = THREE.FBXLoader = (function () {
        var e, t, n
        function r(e) {
          this.manager = void 0 !== e ? e : THREE.DefaultLoadingManager
        }
        function i(e) {
          this.textureLoader = e
        }
        function o() {}
        function a() {}
        function s() {}
        function u() {}
        function l(e, t) {
          ;(this.dv = new DataView(e)), (this.offset = 0), (this.littleEndian = void 0 === t || t)
        }
        function c() {}
        function d(e) {
          var t = e.match(/FBXVersion: (\d+)/)
          if (t) return parseInt(t[1])
          throw new Error('THREE.FBXLoader: Cannot find the version number for the file given.')
        }
        function f(e) {
          return e / 46186158e3
        }
        ;(r.prototype = {
          constructor: r,
          crossOrigin: 'anonymous',
          load: function (e, t, n, r) {
            var i = this,
              o = THREE.LoaderUtils.extractUrlBase(e),
              a = new THREE.FileLoader(this.manager)
            a.setResponseType('arraybuffer'),
              a.load(
                e,
                function (n) {
                  try {
                    var a = i.parse(n, o)
                    t(a)
                  } catch (s) {
                    setTimeout(function () {
                      r && r(s), i.manager.itemError(e)
                    }, 0)
                  }
                },
                n,
                r,
              )
          },
          setCrossOrigin: function (e) {
            return (this.crossOrigin = e), this
          },
          parse: function (t, n) {
            if (
              (function (e) {
                var t = 'Kaydara FBX Binary  \0'
                return e.byteLength >= t.length && t === k(e, 0, t.length)
              })(t)
            )
              e = new u().parse(t)
            else {
              var r = k(t)
              if (
                !(function (e) {
                  var t = [
                      'K',
                      'a',
                      'y',
                      'd',
                      'a',
                      'r',
                      'a',
                      '\\',
                      'F',
                      'B',
                      'X',
                      '\\',
                      'B',
                      'i',
                      'n',
                      'a',
                      'r',
                      'y',
                      '\\',
                      '\\',
                    ],
                    n = 0
                  function r(t) {
                    var r = e[t - 1]
                    return (e = e.slice(n + t)), n++, r
                  }
                  for (var i = 0; i < t.length; ++i) {
                    if (r(1) === t[i]) return !1
                  }
                  return !0
                })(r)
              )
                throw new Error('THREE.FBXLoader: Unknown format.')
              if (d(r) < 7e3)
                throw new Error('THREE.FBXLoader: FBX version not supported, FileVersion: ' + d(r))
              e = new s().parse(r)
            }
            return new i(
              new THREE.TextureLoader(this.manager).setPath(n).setCrossOrigin(this.crossOrigin),
            ).parse(e)
          },
        }),
          (i.prototype = {
            constructor: i,
            parse: function () {
              t = this.parseConnections()
              var e = this.parseImages(),
                r = this.parseTextures(e),
                i = this.parseMaterials(r),
                a = this.parseDeformers(),
                s = new o().parse(a)
              return this.parseScene(a, s, i), n
            },
            parseConnections: function () {
              var t = new Map()
              'Connections' in e &&
                e.Connections.connections.forEach(function (e) {
                  var n = e[0],
                    r = e[1],
                    i = e[2]
                  t.has(n) || t.set(n, { parents: [], children: [] })
                  var o = { ID: r, relationship: i }
                  t.get(n).parents.push(o), t.has(r) || t.set(r, { parents: [], children: [] })
                  var a = { ID: n, relationship: i }
                  t.get(r).children.push(a)
                })
              return t
            },
            parseImages: function () {
              var t = {},
                n = {}
              if ('Video' in e.Objects) {
                var r = e.Objects.Video
                for (var i in r) {
                  var o = r[i]
                  if (((t[(l = parseInt(i))] = o.RelativeFilename || o.Filename), 'Content' in o)) {
                    var a = o.Content instanceof ArrayBuffer && o.Content.byteLength > 0,
                      s = 'string' === typeof o.Content && '' !== o.Content
                    if (a || s) {
                      var u = this.parseImage(r[i])
                      n[o.RelativeFilename || o.Filename] = u
                    }
                  }
                }
              }
              for (var l in t) {
                var c = t[l]
                void 0 !== n[c] ? (t[l] = n[c]) : (t[l] = t[l].split('\\').pop())
              }
              return t
            },
            parseImage: function (e) {
              var t,
                n = e.Content,
                r = e.RelativeFilename || e.Filename,
                i = r.slice(r.lastIndexOf('.') + 1).toLowerCase()
              switch (i) {
                case 'bmp':
                  t = 'image/bmp'
                  break
                case 'jpg':
                case 'jpeg':
                  t = 'image/jpeg'
                  break
                case 'png':
                  t = 'image/png'
                  break
                case 'tif':
                  t = 'image/tiff'
                  break
                case 'tga':
                  if ('function' !== typeof THREE.TGALoader)
                    return void console.warn(
                      'FBXLoader: THREE.TGALoader is required to load TGA textures',
                    )
                  null === THREE.Loader.Handlers.get('.tga') &&
                    THREE.Loader.Handlers.add(/\.tga$/i, new THREE.TGALoader()),
                    (t = 'image/tga')
                  break
                default:
                  return void console.warn('FBXLoader: Image type "' + i + '" is not supported.')
              }
              if ('string' === typeof n) return 'data:' + t + ';base64,' + n
              var o = new Uint8Array(n)
              return window.URL.createObjectURL(new Blob([o], { type: t }))
            },
            parseTextures: function (t) {
              var n = new Map()
              if ('Texture' in e.Objects) {
                var r = e.Objects.Texture
                for (var i in r) {
                  var o = this.parseTexture(r[i], t)
                  n.set(parseInt(i), o)
                }
              }
              return n
            },
            parseTexture: function (e, t) {
              var n = this.loadTexture(e, t)
              ;(n.ID = e.id), (n.name = e.attrName)
              var r = e.WrapModeU,
                i = e.WrapModeV,
                o = void 0 !== r ? r.value : 0,
                a = void 0 !== i ? i.value : 0
              if (
                ((n.wrapS = 0 === o ? THREE.RepeatWrapping : THREE.ClampToEdgeWrapping),
                (n.wrapT = 0 === a ? THREE.RepeatWrapping : THREE.ClampToEdgeWrapping),
                'Scaling' in e)
              ) {
                var s = e.Scaling.value
                ;(n.repeat.x = s[0]), (n.repeat.y = s[1])
              }
              return n
            },
            loadTexture: function (e, n) {
              var r,
                i,
                o = this.textureLoader.path,
                a = t.get(e.id).children
              void 0 !== a &&
                a.length > 0 &&
                void 0 !== n[a[0].ID] &&
                ((0 !== (r = n[a[0].ID]).indexOf('blob:') && 0 !== r.indexOf('data:')) ||
                  this.textureLoader.setPath(void 0))
              var s = e.FileName.slice(-3).toLowerCase()
              if ('tga' === s) {
                var u = THREE.Loader.Handlers.get('.tga')
                null === u
                  ? (console.warn(
                      'FBXLoader: TGALoader not found, creating empty placeholder texture for',
                      r,
                    ),
                    (i = new THREE.Texture()))
                  : (i = u.load(r))
              } else
                'psd' === s
                  ? (console.warn(
                      'FBXLoader: PSD textures are not supported, creating empty placeholder texture for',
                      r,
                    ),
                    (i = new THREE.Texture()))
                  : (i = this.textureLoader.load(r))
              return this.textureLoader.setPath(o), i
            },
            parseMaterials: function (t) {
              var n = new Map()
              if ('Material' in e.Objects) {
                var r = e.Objects.Material
                for (var i in r) {
                  var o = this.parseMaterial(r[i], t)
                  null !== o && n.set(parseInt(i), o)
                }
              }
              return n
            },
            parseMaterial: function (e, n) {
              var r = e.id,
                i = e.attrName,
                o = e.ShadingModel
              if (('object' === typeof o && (o = o.value), !t.has(r))) return null
              var a,
                s = this.parseParameters(e, n, r)
              switch (o.toLowerCase()) {
                case 'phong':
                  a = new THREE.MeshPhongMaterial()
                  break
                case 'lambert':
                  a = new THREE.MeshLambertMaterial()
                  break
                default:
                  console.warn(
                    'THREE.FBXLoader: unknown material type "%s". Defaulting to MeshPhongMaterial.',
                    o,
                  ),
                    (a = new THREE.MeshPhongMaterial({ color: 3342591 }))
              }
              return a.setValues(s), (a.name = i), a
            },
            parseParameters: function (e, n, r) {
              var i = {}
              e.BumpFactor && (i.bumpScale = e.BumpFactor.value),
                e.Diffuse
                  ? (i.color = new THREE.Color().fromArray(e.Diffuse.value))
                  : e.DiffuseColor &&
                    'Color' === e.DiffuseColor.type &&
                    (i.color = new THREE.Color().fromArray(e.DiffuseColor.value)),
                e.DisplacementFactor && (i.displacementScale = e.DisplacementFactor.value),
                e.Emissive
                  ? (i.emissive = new THREE.Color().fromArray(e.Emissive.value))
                  : e.EmissiveColor &&
                    'Color' === e.EmissiveColor.type &&
                    (i.emissive = new THREE.Color().fromArray(e.EmissiveColor.value)),
                e.EmissiveFactor && (i.emissiveIntensity = parseFloat(e.EmissiveFactor.value)),
                e.Opacity && (i.opacity = parseFloat(e.Opacity.value)),
                i.opacity < 1 && (i.transparent = !0),
                e.ReflectionFactor && (i.reflectivity = e.ReflectionFactor.value),
                e.Shininess && (i.shininess = e.Shininess.value),
                e.Specular
                  ? (i.specular = new THREE.Color().fromArray(e.Specular.value))
                  : e.SpecularColor &&
                    'Color' === e.SpecularColor.type &&
                    (i.specular = new THREE.Color().fromArray(e.SpecularColor.value))
              var o = this
              return (
                t.get(r).children.forEach(function (e) {
                  var t = e.relationship
                  switch (t) {
                    case 'Bump':
                      i.bumpMap = o.getTexture(n, e.ID)
                      break
                    case 'DiffuseColor':
                      i.map = o.getTexture(n, e.ID)
                      break
                    case 'DisplacementColor':
                      i.displacementMap = o.getTexture(n, e.ID)
                      break
                    case 'EmissiveColor':
                      i.emissiveMap = o.getTexture(n, e.ID)
                      break
                    case 'NormalMap':
                      i.normalMap = o.getTexture(n, e.ID)
                      break
                    case 'ReflectionColor':
                      ;(i.envMap = o.getTexture(n, e.ID)),
                        (i.envMap.mapping = THREE.EquirectangularReflectionMapping)
                      break
                    case 'SpecularColor':
                      i.specularMap = o.getTexture(n, e.ID)
                      break
                    case 'TransparentColor':
                      ;(i.alphaMap = o.getTexture(n, e.ID)), (i.transparent = !0)
                      break
                    case 'AmbientColor':
                    case 'ShininessExponent':
                    case 'SpecularFactor':
                    case 'VectorDisplacementColor':
                    default:
                      console.warn(
                        'THREE.FBXLoader: %s map is not supported in three.js, skipping texture.',
                        t,
                      )
                  }
                }),
                i
              )
            },
            getTexture: function (n, r) {
              return (
                'LayeredTexture' in e.Objects &&
                  r in e.Objects.LayeredTexture &&
                  (console.warn(
                    'THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer.',
                  ),
                  (r = t.get(r).children[0].ID)),
                n.get(r)
              )
            },
            parseDeformers: function () {
              var n = {},
                r = {}
              if ('Deformer' in e.Objects) {
                var i = e.Objects.Deformer
                for (var o in i) {
                  var a = i[o],
                    s = t.get(parseInt(o))
                  if ('Skin' === a.attrType) {
                    var u = this.parseSkeleton(s, i)
                    ;(u.ID = o),
                      s.parents.length > 1 &&
                        console.warn(
                          'THREE.FBXLoader: skeleton attached to more than one geometry is not supported.',
                        ),
                      (u.geometryID = s.parents[0].ID),
                      (n[o] = u)
                  } else if ('BlendShape' === a.attrType) {
                    var l = { id: o }
                    ;(l.rawTargets = this.parseMorphTargets(s, i)),
                      (l.id = o),
                      s.parents.length > 1 &&
                        console.warn(
                          'THREE.FBXLoader: morph target attached to more than one geometry is not supported.',
                        ),
                      (r[o] = l)
                  }
                }
              }
              return { skeletons: n, morphTargets: r }
            },
            parseSkeleton: function (e, t) {
              var n = []
              return (
                e.children.forEach(function (e) {
                  var r = t[e.ID]
                  if ('Cluster' === r.attrType) {
                    var i = {
                      ID: e.ID,
                      indices: [],
                      weights: [],
                      transform: new THREE.Matrix4().fromArray(r.Transform.a),
                      transformLink: new THREE.Matrix4().fromArray(r.TransformLink.a),
                      linkMode: r.Mode,
                    }
                    'Indexes' in r && ((i.indices = r.Indexes.a), (i.weights = r.Weights.a)),
                      n.push(i)
                  }
                }),
                { rawBones: n, bones: [] }
              )
            },
            parseMorphTargets: function (e, n) {
              for (var r = [], i = 0; i < e.children.length; i++) {
                if (8 === i) {
                  console.warn(
                    'FBXLoader: maximum of 8 morph targets supported. Ignoring additional targets.',
                  )
                  break
                }
                var o = e.children[i],
                  a = n[o.ID],
                  s = {
                    name: a.attrName,
                    initialWeight: a.DeformPercent,
                    id: a.id,
                    fullWeights: a.FullWeights.a,
                  }
                if ('BlendShapeChannel' !== a.attrType) return
                t.get(parseInt(o.ID)).children.forEach(function (e) {
                  void 0 === e.relationship && (s.geoID = e.ID)
                }),
                  r.push(s)
              }
              return r
            },
            parseScene: function (r, i, o) {
              n = new THREE.Group()
              var s = this.parseModels(r.skeletons, i, o),
                u = e.Objects.Model,
                l = this
              s.forEach(function (e) {
                var r = u[e.ID]
                l.setLookAtProperties(e, r),
                  t.get(e.ID).parents.forEach(function (t) {
                    var n = s.get(t.ID)
                    void 0 !== n && n.add(e)
                  }),
                  null === e.parent && n.add(e)
              }),
                this.bindSkeleton(r.skeletons, i, s),
                this.createAmbientLight(),
                this.setupMorphMaterials()
              var c = new a().parse()
              1 === n.children.length &&
                n.children[0].isGroup &&
                ((n.children[0].animations = c), (n = n.children[0])),
                (n.animations = c)
            },
            parseModels: function (n, r, i) {
              var o = new Map(),
                a = e.Objects.Model
              for (var s in a) {
                var u = parseInt(s),
                  l = a[s],
                  c = t.get(u),
                  d = this.buildSkeleton(c, n, u, l.attrName)
                if (!d) {
                  switch (l.attrType) {
                    case 'Camera':
                      d = this.createCamera(c)
                      break
                    case 'Light':
                      d = this.createLight(c)
                      break
                    case 'Mesh':
                      d = this.createMesh(c, r, i)
                      break
                    case 'NurbsCurve':
                      d = this.createCurve(c, r)
                      break
                    case 'LimbNode':
                    case 'Null':
                    default:
                      d = new THREE.Group()
                  }
                  ;(d.name = THREE.PropertyBinding.sanitizeNodeName(l.attrName)), (d.ID = u)
                }
                this.setModelTransforms(d, l), o.set(u, d)
              }
              return o
            },
            buildSkeleton: function (e, t, n, r) {
              var i = null
              return (
                e.parents.forEach(function (e) {
                  for (var o in t) {
                    var a = t[o]
                    a.rawBones.forEach(function (t, o) {
                      if (t.ID === e.ID) {
                        var s = i
                        ;(i = new THREE.Bone()).matrixWorld.copy(t.transformLink),
                          (i.name = THREE.PropertyBinding.sanitizeNodeName(r)),
                          (i.ID = n),
                          (a.bones[o] = i),
                          null !== s && i.add(s)
                      }
                    })
                  }
                }),
                i
              )
            },
            createCamera: function (t) {
              var n, r
              if (
                (t.children.forEach(function (t) {
                  var n = e.Objects.NodeAttribute[t.ID]
                  void 0 !== n && (r = n)
                }),
                void 0 === r)
              )
                n = new THREE.Object3D()
              else {
                var i = 0
                void 0 !== r.CameraProjectionType && 1 === r.CameraProjectionType.value && (i = 1)
                var o = 1
                void 0 !== r.NearPlane && (o = r.NearPlane.value / 1e3)
                var a = 1e3
                void 0 !== r.FarPlane && (a = r.FarPlane.value / 1e3)
                var s = window.innerWidth,
                  u = window.innerHeight
                void 0 !== r.AspectWidth &&
                  void 0 !== r.AspectHeight &&
                  ((s = r.AspectWidth.value), (u = r.AspectHeight.value))
                var l = s / u,
                  c = 45
                void 0 !== r.FieldOfView && (c = r.FieldOfView.value)
                var d = r.FocalLength ? r.FocalLength.value : null
                switch (i) {
                  case 0:
                    ;(n = new THREE.PerspectiveCamera(c, l, o, a)),
                      null !== d && n.setFocalLength(d)
                    break
                  case 1:
                    n = new THREE.OrthographicCamera(-s / 2, s / 2, u / 2, -u / 2, o, a)
                    break
                  default:
                    console.warn('THREE.FBXLoader: Unknown camera type ' + i + '.'),
                      (n = new THREE.Object3D())
                }
              }
              return n
            },
            createLight: function (t) {
              var n, r
              if (
                (t.children.forEach(function (t) {
                  var n = e.Objects.NodeAttribute[t.ID]
                  void 0 !== n && (r = n)
                }),
                void 0 === r)
              )
                n = new THREE.Object3D()
              else {
                var i
                i = void 0 === r.LightType ? 0 : r.LightType.value
                var o = 16777215
                void 0 !== r.Color && (o = new THREE.Color().fromArray(r.Color.value))
                var a = void 0 === r.Intensity ? 1 : r.Intensity.value / 100
                void 0 !== r.CastLightOnObject && 0 === r.CastLightOnObject.value && (a = 0)
                var s = 0
                void 0 !== r.FarAttenuationEnd &&
                  (s =
                    void 0 !== r.EnableFarAttenuation && 0 === r.EnableFarAttenuation.value
                      ? 0
                      : r.FarAttenuationEnd.value)
                switch (i) {
                  case 0:
                    n = new THREE.PointLight(o, a, s, 1)
                    break
                  case 1:
                    n = new THREE.DirectionalLight(o, a)
                    break
                  case 2:
                    var u = Math.PI / 3
                    void 0 !== r.InnerAngle && (u = THREE.Math.degToRad(r.InnerAngle.value))
                    var l = 0
                    void 0 !== r.OuterAngle &&
                      ((l = THREE.Math.degToRad(r.OuterAngle.value)), (l = Math.max(l, 1))),
                      (n = new THREE.SpotLight(o, a, s, u, l, 1))
                    break
                  default:
                    console.warn(
                      'THREE.FBXLoader: Unknown light type ' +
                        r.LightType.value +
                        ', defaulting to a THREE.PointLight.',
                    ),
                      (n = new THREE.PointLight(o, a))
                }
                void 0 !== r.CastShadows && 1 === r.CastShadows.value && (n.castShadow = !0)
              }
              return n
            },
            createMesh: function (e, t, n) {
              var r,
                i = null,
                o = null,
                a = []
              return (
                e.children.forEach(function (e) {
                  t.has(e.ID) && (i = t.get(e.ID)), n.has(e.ID) && a.push(n.get(e.ID))
                }),
                a.length > 1
                  ? (o = a)
                  : a.length > 0
                  ? (o = a[0])
                  : ((o = new THREE.MeshPhongMaterial({ color: 13421772 })), a.push(o)),
                'color' in i.attributes &&
                  a.forEach(function (e) {
                    e.vertexColors = THREE.VertexColors
                  }),
                i.FBX_Deformer
                  ? (a.forEach(function (e) {
                      e.skinning = !0
                    }),
                    (r = new THREE.SkinnedMesh(i, o)))
                  : (r = new THREE.Mesh(i, o)),
                r
              )
            },
            createCurve: function (e, t) {
              var n = e.children.reduce(function (e, n) {
                  return t.has(n.ID) && (e = t.get(n.ID)), e
                }, null),
                r = new THREE.LineBasicMaterial({ color: 3342591, linewidth: 1 })
              return new THREE.Line(n, r)
            },
            setModelTransforms: function (e, t) {
              var n = {}
              'RotationOrder' in t && (n.eulerOrder = parseInt(t.RotationOrder.value)),
                'Lcl_Translation' in t && (n.translation = t.Lcl_Translation.value),
                'RotationOffset' in t && (n.rotationOffset = t.RotationOffset.value),
                'Lcl_Rotation' in t && (n.rotation = t.Lcl_Rotation.value),
                'PreRotation' in t && (n.preRotation = t.PreRotation.value),
                'PostRotation' in t && (n.postRotation = t.PostRotation.value),
                'Lcl_Scaling' in t && (n.scale = t.Lcl_Scaling.value)
              var r = w(n)
              e.applyMatrix(r)
            },
            setLookAtProperties: function (r, i) {
              'LookAtProperty' in i &&
                t.get(r.ID).children.forEach(function (t) {
                  if ('LookAtProperty' === t.relationship) {
                    var i = e.Objects.Model[t.ID]
                    if ('Lcl_Translation' in i) {
                      var o = i.Lcl_Translation.value
                      void 0 !== r.target
                        ? (r.target.position.fromArray(o), n.add(r.target))
                        : r.lookAt(new THREE.Vector3().fromArray(o))
                    }
                  }
                })
            },
            bindSkeleton: function (e, n, r) {
              var i = this.parsePoseNodes()
              for (var o in e) {
                var a = e[o]
                t.get(parseInt(a.ID)).parents.forEach(function (e) {
                  if (n.has(e.ID)) {
                    var o = e.ID
                    t.get(o).parents.forEach(function (e) {
                      r.has(e.ID) && r.get(e.ID).bind(new THREE.Skeleton(a.bones), i[e.ID])
                    })
                  }
                })
              }
            },
            parsePoseNodes: function () {
              var t = {}
              if ('Pose' in e.Objects) {
                var n = e.Objects.Pose
                for (var r in n)
                  if ('BindPose' === n[r].attrType) {
                    var i = n[r].PoseNode
                    Array.isArray(i)
                      ? i.forEach(function (e) {
                          t[e.Node] = new THREE.Matrix4().fromArray(e.Matrix.a)
                        })
                      : (t[i.Node] = new THREE.Matrix4().fromArray(i.Matrix.a))
                  }
              }
              return t
            },
            createAmbientLight: function () {
              if ('GlobalSettings' in e && 'AmbientColor' in e.GlobalSettings) {
                var t = e.GlobalSettings.AmbientColor.value,
                  r = t[0],
                  i = t[1],
                  o = t[2]
                if (0 !== r || 0 !== i || 0 !== o) {
                  var a = new THREE.Color(r, i, o)
                  n.add(new THREE.AmbientLight(a, 1))
                }
              }
            },
            setupMorphMaterials: function () {
              n.traverse(function (e) {
                if (
                  e.isMesh &&
                  (e.geometry.morphAttributes.position || e.geometry.morphAttributes.normal)
                ) {
                  var t = e.uuid,
                    r = e.material.uuid,
                    i = !1
                  n.traverse(function (e) {
                    e.isMesh && e.material.uuid === r && e.uuid !== t && (i = !0)
                  }),
                    !0 === i && (e.material = e.material.clone()),
                    (e.material.morphTargets = !0)
                }
              })
            },
          }),
          (o.prototype = {
            constructor: o,
            parse: function (n) {
              var r = new Map()
              if ('Geometry' in e.Objects) {
                var i = e.Objects.Geometry
                for (var o in i) {
                  var a = t.get(parseInt(o)),
                    s = this.parseGeometry(a, i[o], n)
                  r.set(parseInt(o), s)
                }
              }
              return r
            },
            parseGeometry: function (e, t, n) {
              switch (t.attrType) {
                case 'Mesh':
                  return this.parseMeshGeometry(e, t, n)
                case 'NurbsCurve':
                  return this.parseNurbsGeometry(t)
              }
            },
            parseMeshGeometry: function (t, n, r) {
              var i = r.skeletons,
                o = r.morphTargets,
                a = t.parents.map(function (t) {
                  return e.Objects.Model[t.ID]
                })
              if (0 !== a.length) {
                var s = t.children.reduce(function (e, t) {
                    return void 0 !== i[t.ID] && (e = i[t.ID]), e
                  }, null),
                  u = t.children.reduce(function (e, t) {
                    return void 0 !== o[t.ID] && (e = o[t.ID]), e
                  }, null),
                  l = a[0],
                  c = {}
                'RotationOrder' in l && (c.eulerOrder = l.RotationOrder.value),
                  'GeometricTranslation' in l && (c.translation = l.GeometricTranslation.value),
                  'GeometricRotation' in l && (c.rotation = l.GeometricRotation.value),
                  'GeometricScaling' in l && (c.scale = l.GeometricScaling.value)
                var d = w(c)
                return this.genGeometry(n, s, u, d)
              }
            },
            genGeometry: function (e, t, n, r) {
              var i = new THREE.BufferGeometry()
              e.attrName && (i.name = e.attrName)
              var o = this.parseGeoNode(e, t),
                a = this.genBuffers(o),
                s = new THREE.Float32BufferAttribute(a.vertex, 3)
              if (
                (r.applyToBufferAttribute(s),
                i.addAttribute('position', s),
                a.colors.length > 0 &&
                  i.addAttribute('color', new THREE.Float32BufferAttribute(a.colors, 3)),
                t &&
                  (i.addAttribute(
                    'skinIndex',
                    new THREE.Uint16BufferAttribute(a.weightsIndices, 4),
                  ),
                  i.addAttribute(
                    'skinWeight',
                    new THREE.Float32BufferAttribute(a.vertexWeights, 4),
                  ),
                  (i.FBX_Deformer = t)),
                a.normal.length > 0)
              ) {
                var u = new THREE.Float32BufferAttribute(a.normal, 3)
                new THREE.Matrix3().getNormalMatrix(r).applyToBufferAttribute(u),
                  i.addAttribute('normal', u)
              }
              if (
                (a.uvs.forEach(function (e, t) {
                  var n = 'uv' + (t + 1).toString()
                  0 === t && (n = 'uv'),
                    i.addAttribute(n, new THREE.Float32BufferAttribute(a.uvs[t], 2))
                }),
                o.material && 'AllSame' !== o.material.mappingType)
              ) {
                var l = a.materialIndex[0],
                  c = 0
                if (
                  (a.materialIndex.forEach(function (e, t) {
                    e !== l && (i.addGroup(c, t - c, l), (l = e), (c = t))
                  }),
                  i.groups.length > 0)
                ) {
                  var d = i.groups[i.groups.length - 1],
                    f = d.start + d.count
                  f !== a.materialIndex.length && i.addGroup(f, a.materialIndex.length - f, l)
                }
                0 === i.groups.length && i.addGroup(0, a.materialIndex.length, a.materialIndex[0])
              }
              return this.addMorphTargets(i, e, n, r), i
            },
            parseGeoNode: function (e, t) {
              var n = {}
              if (
                ((n.vertexPositions = void 0 !== e.Vertices ? e.Vertices.a : []),
                (n.vertexIndices = void 0 !== e.PolygonVertexIndex ? e.PolygonVertexIndex.a : []),
                e.LayerElementColor && (n.color = this.parseVertexColors(e.LayerElementColor[0])),
                e.LayerElementMaterial &&
                  (n.material = this.parseMaterialIndices(e.LayerElementMaterial[0])),
                e.LayerElementNormal && (n.normal = this.parseNormals(e.LayerElementNormal[0])),
                e.LayerElementUV)
              ) {
                n.uv = []
                for (var r = 0; e.LayerElementUV[r]; )
                  n.uv.push(this.parseUVs(e.LayerElementUV[r])), r++
              }
              return (
                (n.weightTable = {}),
                null !== t &&
                  ((n.skeleton = t),
                  t.rawBones.forEach(function (e, t) {
                    e.indices.forEach(function (r, i) {
                      void 0 === n.weightTable[r] && (n.weightTable[r] = []),
                        n.weightTable[r].push({ id: t, weight: e.weights[i] })
                    })
                  })),
                n
              )
            },
            genBuffers: function (e) {
              var t = {
                  vertex: [],
                  normal: [],
                  colors: [],
                  uvs: [],
                  materialIndex: [],
                  vertexWeights: [],
                  weightsIndices: [],
                },
                n = 0,
                r = 0,
                i = !1,
                o = [],
                a = [],
                s = [],
                u = [],
                l = [],
                c = [],
                d = this
              return (
                e.vertexIndices.forEach(function (f, h) {
                  var v = !1
                  f < 0 && ((f ^= -1), (v = !0))
                  var m = [],
                    g = []
                  if ((o.push(3 * f, 3 * f + 1, 3 * f + 2), e.color)) {
                    var y = p(h, n, f, e.color)
                    s.push(y[0], y[1], y[2])
                  }
                  if (e.skeleton) {
                    if (
                      (void 0 !== e.weightTable[f] &&
                        e.weightTable[f].forEach(function (e) {
                          g.push(e.weight), m.push(e.id)
                        }),
                      g.length > 4)
                    ) {
                      i ||
                        (console.warn(
                          'THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights.',
                        ),
                        (i = !0))
                      var b = [0, 0, 0, 0],
                        w = [0, 0, 0, 0]
                      g.forEach(function (e, t) {
                        var n = e,
                          r = m[t]
                        w.forEach(function (e, t, i) {
                          if (n > e) {
                            ;(i[t] = n), (n = e)
                            var o = b[t]
                            ;(b[t] = r), (r = o)
                          }
                        })
                      }),
                        (m = b),
                        (g = w)
                    }
                    for (; g.length < 4; ) g.push(0), m.push(0)
                    for (var x = 0; x < 4; ++x) l.push(g[x]), c.push(m[x])
                  }
                  if (e.normal) {
                    y = p(h, n, f, e.normal)
                    a.push(y[0], y[1], y[2])
                  }
                  if (e.material && 'AllSame' !== e.material.mappingType)
                    var E = p(h, n, f, e.material)[0]
                  e.uv &&
                    e.uv.forEach(function (e, t) {
                      var r = p(h, n, f, e)
                      void 0 === u[t] && (u[t] = []), u[t].push(r[0]), u[t].push(r[1])
                    }),
                    r++,
                    v &&
                      (d.genFace(t, e, o, E, a, s, u, l, c, r),
                      n++,
                      (r = 0),
                      (o = []),
                      (a = []),
                      (s = []),
                      (u = []),
                      (l = []),
                      (c = []))
                }),
                t
              )
            },
            genFace: function (e, t, n, r, i, o, a, s, u, l) {
              for (var c = 2; c < l; c++)
                e.vertex.push(t.vertexPositions[n[0]]),
                  e.vertex.push(t.vertexPositions[n[1]]),
                  e.vertex.push(t.vertexPositions[n[2]]),
                  e.vertex.push(t.vertexPositions[n[3 * (c - 1)]]),
                  e.vertex.push(t.vertexPositions[n[3 * (c - 1) + 1]]),
                  e.vertex.push(t.vertexPositions[n[3 * (c - 1) + 2]]),
                  e.vertex.push(t.vertexPositions[n[3 * c]]),
                  e.vertex.push(t.vertexPositions[n[3 * c + 1]]),
                  e.vertex.push(t.vertexPositions[n[3 * c + 2]]),
                  t.skeleton &&
                    (e.vertexWeights.push(s[0]),
                    e.vertexWeights.push(s[1]),
                    e.vertexWeights.push(s[2]),
                    e.vertexWeights.push(s[3]),
                    e.vertexWeights.push(s[4 * (c - 1)]),
                    e.vertexWeights.push(s[4 * (c - 1) + 1]),
                    e.vertexWeights.push(s[4 * (c - 1) + 2]),
                    e.vertexWeights.push(s[4 * (c - 1) + 3]),
                    e.vertexWeights.push(s[4 * c]),
                    e.vertexWeights.push(s[4 * c + 1]),
                    e.vertexWeights.push(s[4 * c + 2]),
                    e.vertexWeights.push(s[4 * c + 3]),
                    e.weightsIndices.push(u[0]),
                    e.weightsIndices.push(u[1]),
                    e.weightsIndices.push(u[2]),
                    e.weightsIndices.push(u[3]),
                    e.weightsIndices.push(u[4 * (c - 1)]),
                    e.weightsIndices.push(u[4 * (c - 1) + 1]),
                    e.weightsIndices.push(u[4 * (c - 1) + 2]),
                    e.weightsIndices.push(u[4 * (c - 1) + 3]),
                    e.weightsIndices.push(u[4 * c]),
                    e.weightsIndices.push(u[4 * c + 1]),
                    e.weightsIndices.push(u[4 * c + 2]),
                    e.weightsIndices.push(u[4 * c + 3])),
                  t.color &&
                    (e.colors.push(o[0]),
                    e.colors.push(o[1]),
                    e.colors.push(o[2]),
                    e.colors.push(o[3 * (c - 1)]),
                    e.colors.push(o[3 * (c - 1) + 1]),
                    e.colors.push(o[3 * (c - 1) + 2]),
                    e.colors.push(o[3 * c]),
                    e.colors.push(o[3 * c + 1]),
                    e.colors.push(o[3 * c + 2])),
                  t.material &&
                    'AllSame' !== t.material.mappingType &&
                    (e.materialIndex.push(r), e.materialIndex.push(r), e.materialIndex.push(r)),
                  t.normal &&
                    (e.normal.push(i[0]),
                    e.normal.push(i[1]),
                    e.normal.push(i[2]),
                    e.normal.push(i[3 * (c - 1)]),
                    e.normal.push(i[3 * (c - 1) + 1]),
                    e.normal.push(i[3 * (c - 1) + 2]),
                    e.normal.push(i[3 * c]),
                    e.normal.push(i[3 * c + 1]),
                    e.normal.push(i[3 * c + 2])),
                  t.uv &&
                    t.uv.forEach(function (t, n) {
                      void 0 === e.uvs[n] && (e.uvs[n] = []),
                        e.uvs[n].push(a[n][0]),
                        e.uvs[n].push(a[n][1]),
                        e.uvs[n].push(a[n][2 * (c - 1)]),
                        e.uvs[n].push(a[n][2 * (c - 1) + 1]),
                        e.uvs[n].push(a[n][2 * c]),
                        e.uvs[n].push(a[n][2 * c + 1])
                    })
            },
            addMorphTargets: function (t, n, r, i) {
              if (null !== r) {
                ;(t.morphAttributes.position = []), (t.morphAttributes.normal = [])
                var o = this
                r.rawTargets.forEach(function (r) {
                  var a = e.Objects.Geometry[r.geoID]
                  void 0 !== a && o.genMorphGeometry(t, n, a, i)
                })
              }
            },
            genMorphGeometry: function (e, t, n, r) {
              var i = new THREE.BufferGeometry()
              n.attrName && (i.name = n.attrName)
              for (
                var o = void 0 !== t.PolygonVertexIndex ? t.PolygonVertexIndex.a : [],
                  a = void 0 !== t.Vertices ? t.Vertices.a.slice() : [],
                  s = void 0 !== n.Vertices ? n.Vertices.a : [],
                  u = void 0 !== n.Indexes ? n.Indexes.a : [],
                  l = 0;
                l < u.length;
                l++
              ) {
                var c = 3 * u[l]
                ;(a[c] += s[3 * l]), (a[c + 1] += s[3 * l + 1]), (a[c + 2] += s[3 * l + 2])
              }
              var d = { vertexIndices: o, vertexPositions: a },
                f = this.genBuffers(d),
                h = new THREE.Float32BufferAttribute(f.vertex, 3)
              ;(h.name = n.attrName),
                r.applyToBufferAttribute(h),
                e.morphAttributes.position.push(h)
            },
            parseNormals: function (e) {
              var t = e.MappingInformationType,
                n = e.ReferenceInformationType,
                r = e.Normals.a,
                i = []
              return (
                'IndexToDirect' === n &&
                  ('NormalIndex' in e
                    ? (i = e.NormalIndex.a)
                    : 'NormalsIndex' in e && (i = e.NormalsIndex.a)),
                { dataSize: 3, buffer: r, indices: i, mappingType: t, referenceType: n }
              )
            },
            parseUVs: function (e) {
              var t = e.MappingInformationType,
                n = e.ReferenceInformationType,
                r = e.UV.a,
                i = []
              return (
                'IndexToDirect' === n && (i = e.UVIndex.a),
                { dataSize: 2, buffer: r, indices: i, mappingType: t, referenceType: n }
              )
            },
            parseVertexColors: function (e) {
              var t = e.MappingInformationType,
                n = e.ReferenceInformationType,
                r = e.Colors.a,
                i = []
              return (
                'IndexToDirect' === n && (i = e.ColorIndex.a),
                { dataSize: 4, buffer: r, indices: i, mappingType: t, referenceType: n }
              )
            },
            parseMaterialIndices: function (e) {
              var t = e.MappingInformationType,
                n = e.ReferenceInformationType
              if ('NoMappingInformation' === t)
                return {
                  dataSize: 1,
                  buffer: [0],
                  indices: [0],
                  mappingType: 'AllSame',
                  referenceType: n,
                }
              for (var r = e.Materials.a, i = [], o = 0; o < r.length; ++o) i.push(o)
              return { dataSize: 1, buffer: r, indices: i, mappingType: t, referenceType: n }
            },
            parseNurbsGeometry: function (e) {
              if (void 0 === THREE.NURBSCurve)
                return (
                  console.error(
                    'THREE.FBXLoader: The loader relies on THREE.NURBSCurve for any nurbs present in the model. Nurbs will show up as empty geometry.',
                  ),
                  new THREE.BufferGeometry()
                )
              var t = parseInt(e.Order)
              if (isNaN(t))
                return (
                  console.error(
                    'THREE.FBXLoader: Invalid Order %s given for geometry ID: %s',
                    e.Order,
                    e.id,
                  ),
                  new THREE.BufferGeometry()
                )
              for (
                var n,
                  r,
                  i = t - 1,
                  o = e.KnotVector.a,
                  a = [],
                  s = e.Points.a,
                  u = 0,
                  l = s.length;
                u < l;
                u += 4
              )
                a.push(new THREE.Vector4().fromArray(s, u))
              if ('Closed' === e.Form) a.push(a[0])
              else if ('Periodic' === e.Form) {
                ;(n = i), (r = o.length - 1 - n)
                for (u = 0; u < i; ++u) a.push(a[u])
              }
              var c = new THREE.NURBSCurve(i, o, a, n, r).getPoints(7 * a.length),
                d = new Float32Array(3 * c.length)
              c.forEach(function (e, t) {
                e.toArray(d, 3 * t)
              })
              var f = new THREE.BufferGeometry()
              return f.addAttribute('position', new THREE.BufferAttribute(d, 3)), f
            },
          }),
          (a.prototype = {
            constructor: a,
            parse: function () {
              var e = [],
                t = this.parseClips()
              if (void 0 === t) return e
              for (var n in t) {
                var r = t[n],
                  i = this.addClip(r)
                e.push(i)
              }
              return e
            },
            parseClips: function () {
              if (void 0 !== e.Objects.AnimationCurve) {
                var t = this.parseAnimationCurveNodes()
                this.parseAnimationCurves(t)
                var n = this.parseAnimationLayers(t)
                return this.parseAnimStacks(n)
              }
            },
            parseAnimationCurveNodes: function () {
              var t = e.Objects.AnimationCurveNode,
                n = new Map()
              for (var r in t) {
                var i = t[r]
                if (null !== i.attrName.match(/S|R|T|DeformPercent/)) {
                  var o = { id: i.id, attr: i.attrName, curves: {} }
                  n.set(o.id, o)
                }
              }
              return n
            },
            parseAnimationCurves: function (n) {
              var r = e.Objects.AnimationCurve
              for (var i in r) {
                var o = { id: r[i].id, times: r[i].KeyTime.a.map(f), values: r[i].KeyValueFloat.a },
                  a = t.get(o.id)
                if (void 0 !== a) {
                  var s = a.parents[0].ID,
                    u = a.parents[0].relationship
                  u.match(/X/)
                    ? (n.get(s).curves.x = o)
                    : u.match(/Y/)
                    ? (n.get(s).curves.y = o)
                    : u.match(/Z/)
                    ? (n.get(s).curves.z = o)
                    : u.match(/d|DeformPercent/) && n.has(s) && (n.get(s).curves.morph = o)
                }
              }
            },
            parseAnimationLayers: function (n) {
              var r = e.Objects.AnimationLayer,
                i = new Map()
              for (var o in r) {
                var a = [],
                  s = t.get(parseInt(o))
                if (void 0 !== s) {
                  var u = s.children,
                    l = this
                  u.forEach(function (r, i) {
                    if (n.has(r.ID)) {
                      var o = n.get(r.ID)
                      if (void 0 !== o.curves.x || void 0 !== o.curves.y || void 0 !== o.curves.z) {
                        if (void 0 === a[i]) {
                          t.get(r.ID).parents.forEach(function (e) {
                            void 0 !== e.relationship && (h = e.ID)
                          })
                          var s = e.Objects.Model[h.toString()],
                            u = {
                              modelName: THREE.PropertyBinding.sanitizeNodeName(s.attrName),
                              initialPosition: [0, 0, 0],
                              initialRotation: [0, 0, 0],
                              initialScale: [1, 1, 1],
                              transform: l.getModelAnimTransform(s),
                            }
                          'PreRotation' in s && (u.preRotations = s.PreRotation.value),
                            'PostRotation' in s && (u.postRotations = s.PostRotation.value),
                            (a[i] = u)
                        }
                        a[i][o.attr] = o
                      } else if (void 0 !== o.curves.morph) {
                        if (void 0 === a[i]) {
                          var c
                          t.get(r.ID).parents.forEach(function (e) {
                            void 0 !== e.relationship && (c = e.ID)
                          })
                          var d = t.get(c).parents[0].ID,
                            f = t.get(d).parents[0].ID,
                            h = t.get(f).parents[0].ID
                          ;(s = e.Objects.Model[h]),
                            (u = {
                              modelName: THREE.PropertyBinding.sanitizeNodeName(s.attrName),
                              morphName: e.Objects.Deformer[c].attrName,
                            })
                          a[i] = u
                        }
                        a[i][o.attr] = o
                      }
                    }
                  }),
                    i.set(parseInt(o), a)
                }
              }
              return i
            },
            getModelAnimTransform: function (e) {
              var t = {}
              return (
                'RotationOrder' in e && (t.eulerOrder = parseInt(e.RotationOrder.value)),
                'Lcl_Translation' in e && (t.translation = e.Lcl_Translation.value),
                'RotationOffset' in e && (t.rotationOffset = e.RotationOffset.value),
                'Lcl_Rotation' in e && (t.rotation = e.Lcl_Rotation.value),
                'PreRotation' in e && (t.preRotation = e.PreRotation.value),
                'PostRotation' in e && (t.postRotation = e.PostRotation.value),
                'Lcl_Scaling' in e && (t.scale = e.Lcl_Scaling.value),
                w(t)
              )
            },
            parseAnimStacks: function (n) {
              var r = e.Objects.AnimationStack,
                i = {}
              for (var o in r) {
                var a = t.get(parseInt(o)).children
                a.length > 1 &&
                  console.warn(
                    'THREE.FBXLoader: Encountered an animation stack with multiple layers, this is currently not supported. Ignoring subsequent layers.',
                  )
                var s = n.get(a[0].ID)
                i[o] = { name: r[o].attrName, layer: s }
              }
              return i
            },
            addClip: function (e) {
              var t = [],
                n = this
              return (
                e.layer.forEach(function (e) {
                  t = t.concat(n.generateTracks(e))
                }),
                new THREE.AnimationClip(e.name, -1, t)
              )
            },
            generateTracks: function (e) {
              var t = [],
                n = new THREE.Vector3(),
                r = new THREE.Quaternion(),
                i = new THREE.Vector3()
              if (
                (e.transform && e.transform.decompose(n, r, i),
                (n = n.toArray()),
                (r = new THREE.Euler().setFromQuaternion(r).toArray()),
                (i = i.toArray()),
                void 0 !== e.T && Object.keys(e.T.curves).length > 0)
              ) {
                var o = this.generateVectorTrack(e.modelName, e.T.curves, n, 'position')
                void 0 !== o && t.push(o)
              }
              if (void 0 !== e.R && Object.keys(e.R.curves).length > 0) {
                var a = this.generateRotationTrack(
                  e.modelName,
                  e.R.curves,
                  r,
                  e.preRotations,
                  e.postRotations,
                )
                void 0 !== a && t.push(a)
              }
              if (void 0 !== e.S && Object.keys(e.S.curves).length > 0) {
                var s = this.generateVectorTrack(e.modelName, e.S.curves, i, 'scale')
                void 0 !== s && t.push(s)
              }
              if (void 0 !== e.DeformPercent) {
                var u = this.generateMorphTrack(e)
                void 0 !== u && t.push(u)
              }
              return t
            },
            generateVectorTrack: function (e, t, n, r) {
              var i = this.getTimesForAllAxes(t),
                o = this.getKeyframeTrackValues(i, t, n)
              return new THREE.VectorKeyframeTrack(e + '.' + r, i, o)
            },
            generateRotationTrack: function (e, t, n, r, i) {
              void 0 !== t.x &&
                (this.interpolateRotations(t.x),
                (t.x.values = t.x.values.map(THREE.Math.degToRad))),
                void 0 !== t.y &&
                  (this.interpolateRotations(t.y),
                  (t.y.values = t.y.values.map(THREE.Math.degToRad))),
                void 0 !== t.z &&
                  (this.interpolateRotations(t.z),
                  (t.z.values = t.z.values.map(THREE.Math.degToRad)))
              var o = this.getTimesForAllAxes(t),
                a = this.getKeyframeTrackValues(o, t, n)
              void 0 !== r &&
                ((r = r.map(THREE.Math.degToRad)).push('ZYX'),
                (r = new THREE.Euler().fromArray(r)),
                (r = new THREE.Quaternion().setFromEuler(r))),
                void 0 !== i &&
                  ((i = i.map(THREE.Math.degToRad)).push('ZYX'),
                  (i = new THREE.Euler().fromArray(i)),
                  (i = new THREE.Quaternion().setFromEuler(i).inverse()))
              for (
                var s = new THREE.Quaternion(), u = new THREE.Euler(), l = [], c = 0;
                c < a.length;
                c += 3
              )
                u.set(a[c], a[c + 1], a[c + 2], 'ZYX'),
                  s.setFromEuler(u),
                  void 0 !== r && s.premultiply(r),
                  void 0 !== i && s.multiply(i),
                  s.toArray(l, (c / 3) * 4)
              return new THREE.QuaternionKeyframeTrack(e + '.quaternion', o, l)
            },
            generateMorphTrack: function (e) {
              var t = e.DeformPercent.curves.morph,
                r = t.values.map(function (e) {
                  return e / 100
                }),
                i = n.getObjectByName(e.modelName).morphTargetDictionary[e.morphName]
              return new THREE.NumberKeyframeTrack(
                e.modelName + '.morphTargetInfluences[' + i + ']',
                t.times,
                r,
              )
            },
            getTimesForAllAxes: function (e) {
              var t = []
              return (
                void 0 !== e.x && (t = t.concat(e.x.times)),
                void 0 !== e.y && (t = t.concat(e.y.times)),
                void 0 !== e.z && (t = t.concat(e.z.times)),
                (t = t
                  .sort(function (e, t) {
                    return e - t
                  })
                  .filter(function (e, t, n) {
                    return n.indexOf(e) == t
                  }))
              )
            },
            getKeyframeTrackValues: function (e, t, n) {
              var r = n,
                i = [],
                o = -1,
                a = -1,
                s = -1
              return (
                e.forEach(function (e) {
                  if (
                    (t.x && (o = t.x.times.indexOf(e)),
                    t.y && (a = t.y.times.indexOf(e)),
                    t.z && (s = t.z.times.indexOf(e)),
                    -1 !== o)
                  ) {
                    var n = t.x.values[o]
                    i.push(n), (r[0] = n)
                  } else i.push(r[0])
                  if (-1 !== a) {
                    var u = t.y.values[a]
                    i.push(u), (r[1] = u)
                  } else i.push(r[1])
                  if (-1 !== s) {
                    var l = t.z.values[s]
                    i.push(l), (r[2] = l)
                  } else i.push(r[2])
                }),
                i
              )
            },
            interpolateRotations: function (e) {
              for (var t = 1; t < e.values.length; t++) {
                var n = e.values[t - 1],
                  r = e.values[t] - n,
                  i = Math.abs(r)
                if (i >= 180) {
                  for (
                    var o = i / 180,
                      a = r / o,
                      s = n + a,
                      u = e.times[t - 1],
                      l = (e.times[t] - u) / o,
                      c = u + l,
                      d = [],
                      f = [];
                    c < e.times[t];

                  )
                    d.push(c), (c += l), f.push(s), (s += a)
                  ;(e.times = _(e.times, t, d)), (e.values = _(e.values, t, f))
                }
              }
            },
          }),
          (s.prototype = {
            constructor: s,
            getPrevNode: function () {
              return this.nodeStack[this.currentIndent - 2]
            },
            getCurrentNode: function () {
              return this.nodeStack[this.currentIndent - 1]
            },
            getCurrentProp: function () {
              return this.currentProp
            },
            pushStack: function (e) {
              this.nodeStack.push(e), (this.currentIndent += 1)
            },
            popStack: function () {
              this.nodeStack.pop(), (this.currentIndent -= 1)
            },
            setCurrentProp: function (e, t) {
              ;(this.currentProp = e), (this.currentPropName = t)
            },
            parse: function (e) {
              ;(this.currentIndent = 0),
                console.log('FBXTree: ', c),
                (this.allNodes = new c()),
                (this.nodeStack = []),
                (this.currentProp = []),
                (this.currentPropName = '')
              var t = this,
                n = e.split(/[\r\n]+/)
              return (
                n.forEach(function (e, r) {
                  var i = e.match(/^[\s\t]*;/),
                    o = e.match(/^[\s\t]*$/)
                  if (!i && !o) {
                    var a = e.match('^\\t{' + t.currentIndent + '}(\\w+):(.*){', ''),
                      s = e.match('^\\t{' + t.currentIndent + '}(\\w+):[\\s\\t\\r\\n](.*)'),
                      u = e.match('^\\t{' + (t.currentIndent - 1) + '}}')
                    a
                      ? t.parseNodeBegin(e, a)
                      : s
                      ? t.parseNodeProperty(e, s, n[++r])
                      : u
                      ? t.popStack()
                      : e.match(/^[^\s\t}]/) && t.parseNodePropertyContinued(e)
                  }
                }),
                this.allNodes
              )
            },
            parseNodeBegin: function (e, t) {
              var n = t[1].trim().replace(/^"/, '').replace(/"$/, ''),
                r = t[2].split(',').map(function (e) {
                  return e.trim().replace(/^"/, '').replace(/"$/, '')
                }),
                i = { name: n },
                o = this.parseNodeAttr(r),
                a = this.getCurrentNode()
              0 === this.currentIndent
                ? this.allNodes.add(n, i)
                : n in a
                ? ('PoseNode' === n
                    ? a.PoseNode.push(i)
                    : void 0 !== a[n].id && ((a[n] = {}), (a[n][a[n].id] = a[n])),
                  '' !== o.id && (a[n][o.id] = i))
                : 'number' === typeof o.id
                ? ((a[n] = {}), (a[n][o.id] = i))
                : 'Properties70' !== n && (a[n] = 'PoseNode' === n ? [i] : i),
                'number' === typeof o.id && (i.id = o.id),
                '' !== o.name && (i.attrName = o.name),
                '' !== o.type && (i.attrType = o.type),
                this.pushStack(i)
            },
            parseNodeAttr: function (e) {
              var t = e[0]
              '' !== e[0] && ((t = parseInt(e[0])), isNaN(t) && (t = e[0]))
              var n = '',
                r = ''
              return (
                e.length > 1 && ((n = e[1].replace(/^(\w+)::/, '')), (r = e[2])),
                { id: t, name: n, type: r }
              )
            },
            parseNodeProperty: function (e, t, n) {
              var r = t[1].replace(/^"/, '').replace(/"$/, '').trim(),
                i = t[2].replace(/^"/, '').replace(/"$/, '').trim()
              'Content' === r && ',' === i && (i = n.replace(/"/g, '').replace(/,$/, '').trim())
              var o = this.getCurrentNode()
              if ('Properties70' !== o.name) {
                if ('C' === r) {
                  var a = i.split(',').slice(1),
                    s = parseInt(a[0]),
                    u = parseInt(a[1]),
                    l = i.split(',').slice(3)
                  ;(r = 'connections'),
                    (function (e, t) {
                      for (var n = 0, r = e.length, i = t.length; n < i; n++, r++) e[r] = t[n]
                    })(
                      (i = [s, u]),
                      (l = l.map(function (e) {
                        return e.trim().replace(/^"/, '')
                      })),
                    ),
                    void 0 === o[r] && (o[r] = [])
                }
                'Node' === r && (o.id = i),
                  r in o && Array.isArray(o[r]) ? o[r].push(i) : 'a' !== r ? (o[r] = i) : (o.a = i),
                  this.setCurrentProp(o, r),
                  'a' === r && ',' !== i.slice(-1) && (o.a = E(i))
              } else this.parseNodeSpecialProperty(e, r, i)
            },
            parseNodePropertyContinued: function (e) {
              var t = this.getCurrentNode()
              ;(t.a += e), ',' !== e.slice(-1) && (t.a = E(t.a))
            },
            parseNodeSpecialProperty: function (e, t, n) {
              var r = n.split('",').map(function (e) {
                  return e.trim().replace(/^\"/, '').replace(/\s/, '_')
                }),
                i = r[0],
                o = r[1],
                a = r[2],
                s = r[3],
                u = r[4]
              switch (o) {
                case 'int':
                case 'enum':
                case 'bool':
                case 'ULongLong':
                case 'double':
                case 'Number':
                case 'FieldOfView':
                  u = parseFloat(u)
                  break
                case 'Color':
                case 'ColorRGB':
                case 'Vector3D':
                case 'Lcl_Translation':
                case 'Lcl_Rotation':
                case 'Lcl_Scaling':
                  u = E(u)
              }
              ;(this.getPrevNode()[i] = { type: o, type2: a, flag: s, value: u }),
                this.setCurrentProp(this.getPrevNode(), i)
            },
          }),
          (u.prototype = {
            constructor: u,
            parse: function (e) {
              var t = new l(e)
              t.skip(23)
              var n = t.getUint32()
              console.log('THREE.FBXLoader: FBX binary version: ' + n)
              for (var r = new c(); !this.endOfContent(t); ) {
                var i = this.parseNode(t, n)
                null !== i && r.add(i.name, i)
              }
              return r
            },
            endOfContent: function (e) {
              return e.size() % 16 === 0
                ? ((e.getOffset() + 160 + 16) & -16) >= e.size()
                : e.getOffset() + 160 + 16 >= e.size()
            },
            parseNode: function (e, t) {
              var n = {},
                r = t >= 7500 ? e.getUint64() : e.getUint32(),
                i = t >= 7500 ? e.getUint64() : e.getUint32(),
                o = (t >= 7500 ? e.getUint64() : e.getUint32(), e.getUint8()),
                a = e.getString(o)
              if (0 === r) return null
              for (var s = [], u = 0; u < i; u++) s.push(this.parseProperty(e))
              var l = s.length > 0 ? s[0] : '',
                c = s.length > 1 ? s[1] : '',
                d = s.length > 2 ? s[2] : ''
              for (n.singleProperty = 1 === i && e.getOffset() === r; r > e.getOffset(); ) {
                var f = this.parseNode(e, t)
                null !== f && this.parseSubNode(a, n, f)
              }
              return (
                (n.propertyList = s),
                'number' === typeof l && (n.id = l),
                '' !== c && (n.attrName = c),
                '' !== d && (n.attrType = d),
                '' !== a && (n.name = a),
                n
              )
            },
            parseSubNode: function (e, t, n) {
              if (!0 === n.singleProperty) {
                var r = n.propertyList[0]
                Array.isArray(r) ? ((t[n.name] = n), (n.a = r)) : (t[n.name] = r)
              } else if ('Connections' === e && 'C' === n.name) {
                var i = []
                n.propertyList.forEach(function (e, t) {
                  0 !== t && i.push(e)
                }),
                  void 0 === t.connections && (t.connections = []),
                  t.connections.push(i)
              } else if ('Properties70' === n.name) {
                Object.keys(n).forEach(function (e) {
                  t[e] = n[e]
                })
              } else if ('Properties70' === e && 'P' === n.name) {
                var o,
                  a = n.propertyList[0],
                  s = n.propertyList[1],
                  u = n.propertyList[2],
                  l = n.propertyList[3]
                0 === a.indexOf('Lcl ') && (a = a.replace('Lcl ', 'Lcl_')),
                  0 === s.indexOf('Lcl ') && (s = s.replace('Lcl ', 'Lcl_')),
                  (o =
                    'Color' === s ||
                    'ColorRGB' === s ||
                    'Vector' === s ||
                    'Vector3D' === s ||
                    0 === s.indexOf('Lcl_')
                      ? [n.propertyList[4], n.propertyList[5], n.propertyList[6]]
                      : n.propertyList[4]),
                  (t[a] = { type: s, type2: u, flag: l, value: o })
              } else
                void 0 === t[n.name]
                  ? 'number' === typeof n.id
                    ? ((t[n.name] = {}), (t[n.name][n.id] = n))
                    : (t[n.name] = n)
                  : 'PoseNode' === n.name
                  ? (Array.isArray(t[n.name]) || (t[n.name] = [t[n.name]]), t[n.name].push(n))
                  : void 0 === t[n.name][n.id] && (t[n.name][n.id] = n)
            },
            parseProperty: function (e) {
              var t = e.getString(1)
              switch (t) {
                case 'C':
                  return e.getBoolean()
                case 'D':
                  return e.getFloat64()
                case 'F':
                  return e.getFloat32()
                case 'I':
                  return e.getInt32()
                case 'L':
                  return e.getInt64()
                case 'R':
                  var n = e.getUint32()
                  return e.getArrayBuffer(n)
                case 'S':
                  n = e.getUint32()
                  return e.getString(n)
                case 'Y':
                  return e.getInt16()
                case 'b':
                case 'c':
                case 'd':
                case 'f':
                case 'i':
                case 'l':
                  var r = e.getUint32(),
                    i = e.getUint32(),
                    o = e.getUint32()
                  if (0 === i)
                    switch (t) {
                      case 'b':
                      case 'c':
                        return e.getBooleanArray(r)
                      case 'd':
                        return e.getFloat64Array(r)
                      case 'f':
                        return e.getFloat32Array(r)
                      case 'i':
                        return e.getInt32Array(r)
                      case 'l':
                        return e.getInt64Array(r)
                    }
                  'undefined' === typeof Zlib &&
                    console.error(
                      'THREE.FBXLoader: External library Inflate.min.js required, obtain or import from https://github.com/imaya/zlib.js',
                    )
                  var a = new l(
                    new Zlib.Inflate(new Uint8Array(e.getArrayBuffer(o))).decompress().buffer,
                  )
                  switch (t) {
                    case 'b':
                    case 'c':
                      return a.getBooleanArray(r)
                    case 'd':
                      return a.getFloat64Array(r)
                    case 'f':
                      return a.getFloat32Array(r)
                    case 'i':
                      return a.getInt32Array(r)
                    case 'l':
                      return a.getInt64Array(r)
                  }
                default:
                  throw new Error('THREE.FBXLoader: Unknown property type ' + t)
              }
            },
          }),
          (l.prototype = {
            constructor: l,
            getOffset: function () {
              return this.offset
            },
            size: function () {
              return this.dv.buffer.byteLength
            },
            skip: function (e) {
              this.offset += e
            },
            getBoolean: function () {
              return 1 === (1 & this.getUint8())
            },
            getBooleanArray: function (e) {
              for (var t = [], n = 0; n < e; n++) t.push(this.getBoolean())
              return t
            },
            getUint8: function () {
              var e = this.dv.getUint8(this.offset)
              return (this.offset += 1), e
            },
            getInt16: function () {
              var e = this.dv.getInt16(this.offset, this.littleEndian)
              return (this.offset += 2), e
            },
            getInt32: function () {
              var e = this.dv.getInt32(this.offset, this.littleEndian)
              return (this.offset += 4), e
            },
            getInt32Array: function (e) {
              for (var t = [], n = 0; n < e; n++) t.push(this.getInt32())
              return t
            },
            getUint32: function () {
              var e = this.dv.getUint32(this.offset, this.littleEndian)
              return (this.offset += 4), e
            },
            getInt64: function () {
              var e, t
              return (
                this.littleEndian
                  ? ((e = this.getUint32()), (t = this.getUint32()))
                  : ((t = this.getUint32()), (e = this.getUint32())),
                2147483648 & t
                  ? ((t = 4294967295 & ~t),
                    4294967295 === (e = 4294967295 & ~e) && (t = (t + 1) & 4294967295),
                    -(4294967296 * t + (e = (e + 1) & 4294967295)))
                  : 4294967296 * t + e
              )
            },
            getInt64Array: function (e) {
              for (var t = [], n = 0; n < e; n++) t.push(this.getInt64())
              return t
            },
            getUint64: function () {
              var e, t
              return (
                this.littleEndian
                  ? ((e = this.getUint32()), (t = this.getUint32()))
                  : ((t = this.getUint32()), (e = this.getUint32())),
                4294967296 * t + e
              )
            },
            getFloat32: function () {
              var e = this.dv.getFloat32(this.offset, this.littleEndian)
              return (this.offset += 4), e
            },
            getFloat32Array: function (e) {
              for (var t = [], n = 0; n < e; n++) t.push(this.getFloat32())
              return t
            },
            getFloat64: function () {
              var e = this.dv.getFloat64(this.offset, this.littleEndian)
              return (this.offset += 8), e
            },
            getFloat64Array: function (e) {
              for (var t = [], n = 0; n < e; n++) t.push(this.getFloat64())
              return t
            },
            getArrayBuffer: function (e) {
              var t = this.dv.buffer.slice(this.offset, this.offset + e)
              return (this.offset += e), t
            },
            getString: function (e) {
              for (var t = [], n = 0; n < e; n++) t[n] = this.getUint8()
              var r = t.indexOf(0)
              return r >= 0 && (t = t.slice(0, r)), THREE.LoaderUtils.decodeText(new Uint8Array(t))
            },
          }),
          (c.prototype = {
            constructor: c,
            add: function (e, t) {
              this[e] = t
            },
          })
        var h = []
        function p(e, t, n, r) {
          var i
          switch (r.mappingType) {
            case 'ByPolygonVertex':
              i = e
              break
            case 'ByPolygon':
              i = t
              break
            case 'ByVertice':
              i = n
              break
            case 'AllSame':
              i = r.indices[0]
              break
            default:
              console.warn('THREE.FBXLoader: unknown attribute mapping type ' + r.mappingType)
          }
          'IndexToDirect' === r.referenceType && (i = r.indices[i])
          var o = i * r.dataSize,
            a = o + r.dataSize
          return (function (e, t, n, r) {
            for (var i = n, o = 0; i < r; i++, o++) e[o] = t[i]
            return e
          })(h, r.buffer, o, a)
        }
        var v = new THREE.Matrix4(),
          m = new THREE.Euler(),
          g = new THREE.Vector3(),
          y = new THREE.Vector3(),
          b = new THREE.Matrix4()
        function w(e) {
          var t = new THREE.Matrix4()
          y.set(0, 0, 0), b.identity()
          var n,
            r = e.eulerOrder ? x(e.eulerOrder) : x(0)
          ;(e.translation && y.fromArray(e.translation),
          e.rotationOffset && y.add(g.fromArray(e.rotationOffset)),
          e.rotation) &&
            ((n = e.rotation.map(THREE.Math.degToRad)).push(r),
            b.makeRotationFromEuler(m.fromArray(n)))
          e.preRotation &&
            ((n = e.preRotation.map(THREE.Math.degToRad)).push(r),
            v.makeRotationFromEuler(m.fromArray(n)),
            b.premultiply(v))
          e.postRotation &&
            ((n = e.postRotation.map(THREE.Math.degToRad)).push(r),
            v.makeRotationFromEuler(m.fromArray(n)),
            v.getInverse(v),
            b.multiply(v))
          return e.scale && t.scale(g.fromArray(e.scale)), t.setPosition(y), t.multiply(b), t
        }
        function x(e) {
          var t = ['ZYX', 'YZX', 'XZY', 'ZXY', 'YXZ', 'XYZ']
          return 6 === e
            ? (console.warn(
                'THREE.FBXLoader: unsupported Euler Order: Spherical XYZ. Animations and rotations may be incorrect.',
              ),
              t[0])
            : t[e]
        }
        function E(e) {
          return e.split(',').map(function (e) {
            return parseFloat(e)
          })
        }
        function k(e, t, n) {
          return (
            void 0 === t && (t = 0),
            void 0 === n && (n = e.byteLength),
            THREE.LoaderUtils.decodeText(new Uint8Array(e, t, n))
          )
        }
        function _(e, t, n) {
          return e.slice(0, t).concat(n).concat(e.slice(t))
        }
        return r
      })()
    },
    6453: function (e) {
      e.exports = Object.assign(function () {}, {
        FACE_1: 0,
        FACE_2: 1,
        FACE_3: 2,
        FACE_4: 3,
        L_SHOULDER_1: 4,
        R_SHOULDER_1: 5,
        L_SHOULDER_2: 6,
        R_SHOULDER_2: 7,
        SELECT: 8,
        START: 9,
        DPAD_UP: 12,
        DPAD_DOWN: 13,
        DPAD_LEFT: 14,
        DPAD_RIGHT: 15,
        VENDOR: 16,
      })
    },
    4379: function (e) {
      e.exports = function (e, t, n) {
        ;(this.type = e), (this.index = t), (this.pressed = n.pressed), (this.value = n.value)
      }
    },
    2667: function (e) {
      e.exports = {
        size: 5,
        cellSize: 10,
        extrudeSettings: {
          amount: 1,
          bevelEnabled: !0,
          bevelSegments: 1,
          steps: 1,
          bevelSize: 0.5,
          bevelThickness: 0.5,
        },
        autogenerated: !0,
        cells: [
          { q: -1, r: 0, s: 1, h: 1, walkable: !0, userData: {} },
          { q: 0, r: -1, s: 1, h: 1, walkable: !0, userData: {} },
          { q: 0, r: 0, s: 0, h: 1, walkable: !0, userData: {} },
          { q: 1, r: -1, s: 0, h: 1, walkable: !0, userData: {} },
          { q: -1, r: 1, s: 0, h: 0, walkable: !0, userData: {} },
          { q: 0, r: 1, s: -1, h: 0, walkable: !0, userData: {} },
          { q: 1, r: 0, s: -1, h: 0, walkable: !0, userData: {} },
        ],
      }
    },
    4657: function (e) {
      function t(e) {
        const t = document.getElementById(e),
          n = t.parentNode
        try {
          n && n.removeChild(t)
        } catch (r) {}
      }
      function n(e, n, r) {
        return new r(function (r, i) {
          const o = n.timeout || 5e3,
            a = 'script_' + Date.now() + '_' + Math.ceil(1e5 * Math.random()),
            s = (function (e, t) {
              var n = document.createElement('script')
              return (n.type = 'text/javascript'), (n.async = !0), (n.id = t), (n.src = e), n
            })(e, a),
            u = setTimeout(function () {
              i(new Error('Script request to ' + e + ' timed out')), t(a)
            }, o),
            l = function (e) {
              clearTimeout(e)
            }
          s.addEventListener('load', function (e) {
            r({ ok: !0 }), l(u), t(a)
          }),
            s.addEventListener('error', function (n) {
              i(new Error('Script request to ' + e + ' failed ' + n)), l(u), t(a)
            }),
            (function (e) {
              const t = document.getElementsByTagName('script')[0]
              t.parentNode.insertBefore(e, t)
            })(s)
        })
      }
      e.exports = function (e) {
        return (
          (e = e || {}),
          function (t, r) {
            return n(t, (r = r || {}), e.Promise || Promise)
          }
        )
      }
    },
    3471: function (e) {
      var n = (e.exports = {
        VERSION: '0.1.1',
        PI: Math.PI,
        TAU: 2 * Math.PI,
        DEG_TO_RAD: 0.0174532925,
        RAD_TO_DEG: 57.2957795,
        SQRT3: Math.sqrt(3),
        TILE: 'tile',
        ENT: 'entity',
        STR: 'structure',
        HEX: 'hex',
        SQR: 'square',
        ABS: 'abstract',
      })
      ;(n.Board = function (e, t) {
        if (!e) throw new Error('You must pass in a grid system for the board to use.')
        ;(this.tiles = []),
          (this.tileGroup = null),
          (this.group = new THREE.Object3D()),
          (this.grid = null),
          (this.overlay = null),
          (this.finder = new n.AStarFinder(t)),
          n.Loader.init(),
          this.setGrid(e)
      }),
        (n.Board.prototype = {
          setEntityOnTile: function (e, t) {
            var n = this.grid.cellToPixel(t.cell)
            e.position.copy(n),
              (e.position.y += e.heightOffset || 0),
              e.tile && (e.tile.entity = null),
              (e.tile = t),
              (t.entity = e)
          },
          addTile: function (e) {
            ;-1 === this.tiles.indexOf(e) &&
              (this.tiles.push(e),
              this.snapTileToGrid(e),
              (e.position.y = 0),
              this.tileGroup.add(e.mesh),
              this.grid.add(e.cell),
              (e.cell.tile = e))
          },
          removeTile: function (e) {
            if (e) {
              var t = this.tiles.indexOf(e)
              this.grid.remove(e.cell), -1 !== t && this.tiles.splice(t, 1), e.dispose()
            }
          },
          removeAllTiles: function () {
            if (this.tileGroup)
              for (var e = this.tileGroup.children, t = 0; t < e.length; t++)
                this.tileGroup.remove(e[t])
          },
          getTileAtCell: function (e) {
            var t = this.grid.cellToHash(e)
            return (
              e.tile || ('undefined' != typeof this.grid.cells[t] ? this.grid.cells[t].tile : null)
            )
          },
          snapToGrid: function (e) {
            var t = this.grid.pixelToCell(e)
            e.copy(this.grid.cellToPixel(t))
          },
          snapTileToGrid: function (e) {
            if (e.cell) e.position.copy(this.grid.cellToPixel(e.cell))
            else {
              var t = this.grid.pixelToCell(e.position)
              e.position.copy(this.grid.cellToPixel(t))
            }
            return e
          },
          getRandomTile: function () {
            var e = n.Tools.randomInt(0, this.tiles.length - 1)
            return this.tiles[e]
          },
          findPath: function (e, t, n) {
            return this.finder.findPath(e.cell, t.cell, n, this.grid)
          },
          setGrid: function (e) {
            this.group.remove(this.tileGroup),
              this.grid &&
                e !== this.grid &&
                (this.removeAllTiles(),
                this.tiles.forEach(function (e) {
                  this.grid.remove(e.cell), e.dispose()
                }),
                this.grid.dispose()),
              (this.grid = e),
              (this.tiles = []),
              (this.tileGroup = new THREE.Object3D()),
              this.group.add(this.tileGroup)
          },
          generateOverlay: function (e) {
            var t = new THREE.LineBasicMaterial({ color: 0, opacity: 0.3 })
            this.overlay && this.group.remove(this.overlay),
              (this.overlay = new THREE.Object3D()),
              this.grid.generateOverlay(e, this.overlay, t),
              this.group.add(this.overlay)
          },
          generateTilemap: function (e) {
            this.reset()
            var t = this.grid.generateTiles(e)
            ;(this.tiles = t), (this.tileGroup = new THREE.Object3D())
            for (var n = 0; n < t.length; n++) this.tileGroup.add(t[n].mesh)
            this.group.add(this.tileGroup)
          },
          reset: function () {
            this.removeAllTiles(), this.tileGroup && this.group.remove(this.tileGroup)
          },
        }),
        (n.Board.prototype.constructor = n.Board),
        (n.Cell = function (e, t, r, i) {
          ;(this.q = e || 0),
            (this.r = t || 0),
            (this.s = r || 0),
            (this.h = i || 1),
            (this.tile = null),
            (this.userData = {}),
            (this.walkable = !0),
            (this._calcCost = 0),
            (this._priority = 0),
            (this._visited = !1),
            (this._parent = null),
            (this.uniqueID = n.LinkedList.generateID())
        }),
        (n.Cell.prototype = {
          set: function (e, t, n) {
            return (this.q = e), (this.r = t), (this.s = n), this
          },
          copy: function (e) {
            return (
              (this.q = e.q),
              (this.r = e.r),
              (this.s = e.s),
              (this.h = e.h),
              (this.tile = e.tile || null),
              (this.userData = e.userData || {}),
              (this.walkable = e.walkable),
              this
            )
          },
          add: function (e) {
            return (this.q += e.q), (this.r += e.r), (this.s += e.s), this
          },
          equals: function (e) {
            return this.q === e.q && this.r === e.r && this.s === e.s
          },
        }),
        (n.Cell.prototype.constructor = n.Cell),
        (n.HexGrid = function (e) {
          ;(e = e || {}),
            (this.type = n.HEX),
            (this.size = 5),
            (this.cellSize = 'undefined' == typeof e.cellSize ? 10 : e.cellSize),
            (this.cells = {}),
            (this.numCells = 0),
            (this.extrudeSettings = null),
            (this.autogenerated = !1)
          var t,
            r = []
          for (t = 0; 6 > t; t++) r.push(this._createVertex(t))
          for (
            this.cellShape = new THREE.Shape(), this.cellShape.moveTo(r[0].x, r[0].y), t = 1;
            6 > t;
            t++
          )
            this.cellShape.lineTo(r[t].x, r[t].y)
          this.cellShape.lineTo(r[0].x, r[0].y),
            (this.cellShape.autoClose = !0),
            (this.cellGeo = new THREE.Geometry()),
            (this.cellGeo.vertices = r),
            (this.cellGeo.verticesNeedUpdate = !0),
            (this.cellShapeGeo = new THREE.ShapeGeometry(this.cellShape)),
            (this._cellWidth = 2 * this.cellSize),
            (this._cellLength = 0.5 * n.SQRT3 * this._cellWidth),
            (this._hashDelimeter = '.'),
            (this._directions = [
              new n.Cell(1, -1, 0),
              new n.Cell(1, 0, -1),
              new n.Cell(0, 1, -1),
              new n.Cell(-1, 1, 0),
              new n.Cell(-1, 0, 1),
              new n.Cell(0, -1, 1),
            ]),
            (this._diagonals = [
              new n.Cell(2, -1, -1),
              new n.Cell(1, 1, -2),
              new n.Cell(-1, 2, -1),
              new n.Cell(-2, 1, 1),
              new n.Cell(-1, -1, 2),
              new n.Cell(1, -2, 1),
            ]),
            (this._list = []),
            (this._vec3 = new THREE.Vector3()),
            (this._cel = new n.Cell()),
            (this._conversionVec = new THREE.Vector3()),
            (this._geoCache = []),
            (this._matCache = [])
        }),
        (n.HexGrid.TWO_THIRDS = 2 / 3),
        (n.HexGrid.prototype = {
          cellToPixel: function (e) {
            return (
              (this._vec3.x = e.q * this._cellWidth * 0.75),
              (this._vec3.y = e.h),
              (this._vec3.z = -(e.s - e.r) * this._cellLength * 0.5),
              this._vec3
            )
          },
          pixelToCell: function (e) {
            var t = e.x * (n.HexGrid.TWO_THIRDS / this.cellSize),
              r = (-e.x / 3 + (n.SQRT3 / 3) * e.z) / this.cellSize
            return this._cel.set(t, r, -t - r), this._cubeRound(this._cel)
          },
          getCellAt: function (e) {
            var t = e.x * (n.HexGrid.TWO_THIRDS / this.cellSize),
              r = (-e.x / 3 + (n.SQRT3 / 3) * e.z) / this.cellSize
            return (
              this._cel.set(t, r, -t - r),
              this._cubeRound(this._cel),
              this.cells[this.cellToHash(this._cel)]
            )
          },
          getNeighbors: function (e, t, n) {
            var r,
              i,
              o = this._directions.length
            for (this._list.length = 0, r = 0; o > r; r++)
              this._cel.copy(e),
                this._cel.add(this._directions[r]),
                !(i = this.cells[this.cellToHash(this._cel)]) ||
                  (n && !n(e, i)) ||
                  this._list.push(i)
            if (t)
              for (r = 0; o > r; r++)
                this._cel.copy(e),
                  this._cel.add(this._diagonals[r]),
                  !(i = this.cells[this.cellToHash(this._cel)]) ||
                    (n && !n(e, i)) ||
                    this._list.push(i)
            return this._list
          },
          getRandomCell: function () {
            var e,
              t = 0,
              r = n.Tools.randomInt(0, this.numCells)
            for (e in this.cells) {
              if (t === r) return this.cells[e]
              t++
            }
            return this.cells[e]
          },
          cellToHash: function (e) {
            return e.q + this._hashDelimeter + e.r + this._hashDelimeter + e.s
          },
          distance: function (e, t) {
            return (
              Math.max(Math.abs(e.q - t.q), Math.abs(e.r - t.r), Math.abs(e.s - t.s)) + (t.h - e.h)
            )
          },
          clearPath: function () {
            var e, t
            for (e in this.cells)
              ((t = this.cells[e])._calcCost = 0),
                (t._priority = 0),
                (t._parent = null),
                (t._visited = !1)
          },
          traverse: function (e) {
            var t
            for (t in this.cells) e(this.cells[t])
          },
          generateTile: function (e, t, r) {
            var i = Math.abs(e.h)
            1 > i && (i = 1)
            var o = this._geoCache[i]
            o ||
              ((this.extrudeSettings.amount = i),
              (o = new THREE.ExtrudeGeometry(this.cellShape, this.extrudeSettings)),
              (this._geoCache[i] = o))
            var a = new n.Tile({ size: this.cellSize, scale: t, cell: e, geometry: o, material: r })
            return (e.tile = a), a
          },
          generateTiles: function (e) {
            e = e || {}
            var t,
              r,
              i,
              o = [],
              a = {
                tileScale: 0.95,
                cellSize: this.cellSize,
                material: null,
                extrudeSettings: {
                  amount: 1,
                  bevelEnabled: !0,
                  bevelSegments: 1,
                  steps: 1,
                  bevelSize: 0.5,
                  bevelThickness: 0.5,
                },
              }
            for (t in ((a = n.Tools.merge(a, e)),
            (this.cellSize = a.cellSize),
            (this._cellWidth = 2 * this.cellSize),
            (this._cellLength = 0.5 * n.SQRT3 * this._cellWidth),
            (this.autogenerated = !0),
            (this.extrudeSettings = a.extrudeSettings),
            this.cells))
              (i = this.cells[t]),
                (r = this.generateTile(i, a.tileScale, a.material)).position.copy(
                  this.cellToPixel(i),
                ),
                (r.position.y = 0),
                o.push(r)
            return o
          },
          generateTilePoly: function (e) {
            e || (e = new THREE.MeshBasicMaterial({ color: 2405631 }))
            var t = new THREE.Mesh(this.cellShapeGeo, e)
            return this._vec3.set(1, 0, 0), t.rotateOnAxis(this._vec3, n.PI / 2), t
          },
          generate: function (e) {
            var t, r, i, o
            for (
              e = e || {},
                this.size = 'undefined' == typeof e.size ? this.size : e.size,
                t = -this.size;
              t < this.size + 1;
              t++
            )
              for (r = -this.size; r < this.size + 1; r++)
                (i = -t - r),
                  Math.abs(t) <= this.size &&
                    Math.abs(r) <= this.size &&
                    Math.abs(i) <= this.size &&
                    ((o = new n.Cell(t, r, i)), this.add(o))
          },
          generateOverlay: function (e, t, r) {
            var i,
              o,
              a,
              s = this.cellShape.createPointsGeometry()
            for (i = -e; e + 1 > i; i++)
              for (o = -e; e + 1 > o; o++)
                if (((a = -i - o), Math.abs(i) <= e && Math.abs(o) <= e && Math.abs(a) <= e)) {
                  this._cel.set(i, o, a)
                  var u = new THREE.Line(s, r)
                  u.position.copy(this.cellToPixel(this._cel)),
                    (u.rotation.x = 90 * n.DEG_TO_RAD),
                    t.add(u)
                }
          },
          add: function (e) {
            var t = this.cellToHash(e)
            if (!this.cells[t]) return (this.cells[t] = e), this.numCells++, e
          },
          remove: function (e) {
            var t = this.cellToHash(e)
            this.cells[t] && (delete this.cells[t], this.numCells--)
          },
          dispose: function () {
            ;(this.cells = null),
              (this.numCells = 0),
              (this.cellShape = null),
              this.cellGeo.dispose(),
              (this.cellGeo = null),
              this.cellShapeGeo.dispose(),
              (this.cellShapeGeo = null),
              (this._list = null),
              (this._vec3 = null),
              (this._conversionVec = null),
              (this._geoCache = null),
              (this._matCache = null)
          },
          load: function (e, t, r) {
            var i = this
            n.Tools.getJSON({
              url: e,
              callback: function (e) {
                i.fromJSON(e), t.call(r || null, e)
              },
              cache: !1,
              scope: i,
            })
          },
          fromJSON: function (e) {
            var t,
              r,
              i = e.cells
            for (
              this.cells = {},
                this.numCells = 0,
                this.size = e.size,
                this.cellSize = e.cellSize,
                this._cellWidth = 2 * this.cellSize,
                this._cellLength = 0.5 * n.SQRT3 * this._cellWidth,
                this.extrudeSettings = e.extrudeSettings,
                this.autogenerated = e.autogenerated,
                t = 0;
              t < i.length;
              t++
            )
              (r = new n.Cell()).copy(i[t]), this.add(r)
          },
          toJSON: function () {
            var e,
              t,
              n = {
                size: this.size,
                cellSize: this.cellSize,
                extrudeSettings: this.extrudeSettings,
                autogenerated: this.autogenerated,
              },
              r = []
            for (t in this.cells)
              (e = this.cells[t]),
                r.push({
                  q: e.q,
                  r: e.r,
                  s: e.s,
                  h: e.h,
                  walkable: e.walkable,
                  userData: e.userData,
                })
            return (n.cells = r), n
          },
          _createVertex: function (e) {
            var t = (n.TAU / 6) * e
            return new THREE.Vector3(this.cellSize * Math.cos(t), this.cellSize * Math.sin(t), 0)
          },
          _cubeRound: function (e) {
            var t = Math.round(e.q),
              n = Math.round(e.r),
              r = Math.round(e.s),
              i = Math.abs(t - e.q),
              o = Math.abs(n - e.r),
              a = Math.abs(r - e.s)
            return (
              i > o && i > a ? (t = -n - r) : o > a ? (n = -t - r) : (r = -t - n),
              this._cel.set(t, n, r)
            )
          },
        }),
        (n.HexGrid.prototype.constructor = n.HexGrid),
        (n.SqrGrid = function (e) {
          ;(e = e || {}),
            (this.type = n.SQR),
            (this.size = 5),
            (this.cellSize = 'undefined' == typeof e.cellSize ? 10 : e.cellSize),
            (this.cells = {}),
            (this.numCells = 0),
            (this.extrudeSettings = null),
            (this.autogenerated = !1)
          var t = []
          t.push(new THREE.Vector3()),
            t.push(new THREE.Vector3(-this.cellSize, this.cellSize)),
            t.push(new THREE.Vector3(this.cellSize, this.cellSize)),
            t.push(new THREE.Vector3(this.cellSize, -this.cellSize)),
            (this.cellShape = new THREE.Shape()),
            this.cellShape.moveTo(-this.cellSize, -this.cellSize),
            this.cellShape.lineTo(-this.cellSize, this.cellSize),
            this.cellShape.lineTo(this.cellSize, this.cellSize),
            this.cellShape.lineTo(this.cellSize, -this.cellSize),
            this.cellShape.lineTo(-this.cellSize, -this.cellSize),
            (this.cellGeo = new THREE.Geometry()),
            (this.cellGeo.vertices = t),
            (this.cellGeo.verticesNeedUpdate = !0),
            (this.cellShapeGeo = new THREE.ShapeGeometry(this.cellShape)),
            (this._fullCellSize = 2 * this.cellSize),
            (this._hashDelimeter = '.'),
            (this._directions = [
              new n.Cell(1, 0, 0),
              new n.Cell(0, -1, 0),
              new n.Cell(-1, 0, 0),
              new n.Cell(0, 1, 0),
            ]),
            (this._diagonals = [
              new n.Cell(-1, -1, 0),
              new n.Cell(-1, 1, 0),
              new n.Cell(1, 1, 0),
              new n.Cell(1, -1, 0),
            ]),
            (this._list = []),
            (this._vec3 = new THREE.Vector3()),
            (this._cel = new n.Cell()),
            (this._conversionVec = new THREE.Vector3()),
            (this._geoCache = []),
            (this._matCache = [])
        }),
        (n.SqrGrid.prototype = {
          cellToPixel: function (e) {
            return (
              (this._vec3.x = e.q * this._fullCellSize),
              (this._vec3.y = e.h),
              (this._vec3.z = e.r * this._fullCellSize),
              this._vec3
            )
          },
          pixelToCell: function (e) {
            var t = Math.round(e.x / this._fullCellSize),
              n = Math.round(e.z / this._fullCellSize)
            return this._cel.set(t, n, 0)
          },
          getCellAt: function (e) {
            var t = Math.round(e.x / this._fullCellSize),
              n = Math.round(e.z / this._fullCellSize)
            return this._cel.set(t, n), this.cells[this.cellToHash(this._cel)]
          },
          getNeighbors: function (e, t, n) {
            var r,
              i,
              o = this._directions.length
            for (this._list.length = 0, r = 0; o > r; r++)
              this._cel.copy(e),
                this._cel.add(this._directions[r]),
                !(i = this.cells[this.cellToHash(this._cel)]) ||
                  (n && !n(e, i)) ||
                  this._list.push(i)
            if (t)
              for (r = 0; o > r; r++)
                this._cel.copy(e),
                  this._cel.add(this._diagonals[r]),
                  !(i = this.cells[this.cellToHash(this._cel)]) ||
                    (n && !n(e, i)) ||
                    this._list.push(i)
            return this._list
          },
          getRandomCell: function () {
            var e,
              t = 0,
              r = n.Tools.randomInt(0, this.numCells)
            for (e in this.cells) {
              if (t === r) return this.cells[e]
              t++
            }
            return this.cells[e]
          },
          cellToHash: function (e) {
            return e.q + this._hashDelimeter + e.r
          },
          distance: function (e, t) {
            return Math.max(Math.abs(e.q - t.q), Math.abs(e.r - t.r)) + (t.h - e.h)
          },
          clearPath: function () {
            var e, t
            for (e in this.cells)
              ((t = this.cells[e])._calcCost = 0),
                (t._priority = 0),
                (t._parent = null),
                (t._visited = !1)
          },
          traverse: function (e) {
            var t
            for (t in this.cells) e(this.cells[t])
          },
          generateTile: function (e, t, r) {
            var i = Math.abs(e.h)
            1 > i && (i = 1)
            var o = this._geoCache[i]
            o ||
              ((this.extrudeSettings.amount = i),
              (o = new THREE.ExtrudeGeometry(this.cellShape, this.extrudeSettings)),
              (this._geoCache[i] = o))
            var a = new n.Tile({ size: this.cellSize, scale: t, cell: e, geometry: o, material: r })
            return (e.tile = a), a
          },
          generateTiles: function (e) {
            e = e || {}
            var t,
              r,
              i,
              o = [],
              a = {
                tileScale: 0.95,
                cellSize: this.cellSize,
                material: null,
                extrudeSettings: {
                  amount: 1,
                  bevelEnabled: !0,
                  bevelSegments: 1,
                  steps: 1,
                  bevelSize: 0.5,
                  bevelThickness: 0.5,
                },
              }
            for (t in ((a = n.Tools.merge(a, e)),
            (this.cellSize = a.cellSize),
            (this._fullCellSize = 2 * this.cellSize),
            (this.autogenerated = !0),
            (this.extrudeSettings = a.extrudeSettings),
            this.cells))
              (i = this.cells[t]),
                (r = this.generateTile(i, a.tileScale, a.material)).position.copy(
                  this.cellToPixel(i),
                ),
                (r.position.y = 0),
                o.push(r)
            return o
          },
          generateTilePoly: function (e) {
            e || (e = new THREE.MeshBasicMaterial({ color: 2405631 }))
            var t = new THREE.Mesh(this.cellShapeGeo, e)
            return this._vec3.set(1, 0, 0), t.rotateOnAxis(this._vec3, n.PI / 2), t
          },
          generate: function (e) {
            ;(e = e || {}), (this.size = 'undefined' == typeof e.size ? this.size : e.size)
            var t,
              r,
              i,
              o = Math.ceil(this.size / 2)
            for (t = -o; o > t; t++)
              for (r = -o; o > r; r++) (i = new n.Cell(t, r + 1)), this.add(i)
          },
          generateOverlay: function (e, t, r) {
            var i,
              o,
              a = Math.ceil(e / 2)
            for (i = -a; a > i; i++)
              for (o = -a; a > o; o++) {
                this._cel.set(i, o)
                var s = new THREE.Line(this.cellGeo, r)
                s.position.copy(this.cellToPixel(this._cel)),
                  (s.rotation.x = 90 * n.DEG_TO_RAD),
                  t.add(s)
              }
          },
          add: function (e) {
            var t = this.cellToHash(e)
            if (!this.cells[t]) return (this.cells[t] = e), this.numCells++, e
          },
          remove: function (e) {
            var t = this.cellToHash(e)
            this.cells[t] && (delete this.cells[t], this.numCells--)
          },
          dispose: function () {
            ;(this.cells = null),
              (this.numCells = 0),
              (this.cellShape = null),
              this.cellGeo.dispose(),
              (this.cellGeo = null),
              this.cellShapeGeo.dispose(),
              (this.cellShapeGeo = null),
              (this._list = null),
              (this._vec3 = null),
              (this._conversionVec = null),
              (this._geoCache = null),
              (this._matCache = null)
          },
          load: function (e, t, r) {
            n.Tools.getJSON({
              url: e,
              callback: function (e) {
                this.fromJSON(e), t.call(r || null, e)
              },
              cache: !1,
              scope: this,
            })
          },
          fromJSON: function (e) {
            var t,
              r,
              i = e.cells
            for (
              this.cells = {},
                this.numCells = 0,
                this.size = e.size,
                this.cellSize = e.cellSize,
                this._fullCellSize = 2 * this.cellSize,
                this.extrudeSettings = e.extrudeSettings,
                this.autogenerated = e.autogenerated,
                t = 0;
              t < i.length;
              t++
            )
              (r = new n.Cell()).copy(i[t]), this.add(r)
          },
          toJSON: function () {
            var e,
              t,
              n = {
                size: this.size,
                cellSize: this.cellSize,
                extrudeSettings: this.extrudeSettings,
                autogenerated: this.autogenerated,
              },
              r = []
            for (t in this.cells)
              (e = this.cells[t]),
                r.push({
                  q: e.q,
                  r: e.r,
                  s: e.s,
                  h: e.h,
                  walkable: e.walkable,
                  userData: e.userData,
                })
            return (n.cells = r), n
          },
        }),
        (n.SqrGrid.prototype.constructor = n.SqrGrid),
        (n.Tile = function (e) {
          e = e || {}
          var t = { cell: null, geometry: null, material: null }
          if (!(t = n.Tools.merge(t, e)).cell || !t.geometry)
            throw new Error('Missing vg.Tile configuration')
          ;(this.cell = t.cell),
            this.cell.tile && this.cell.tile !== this && this.cell.tile.dispose(),
            (this.cell.tile = this),
            (this.uniqueID = n.Tools.generateID()),
            (this.geometry = t.geometry),
            (this.material = t.material),
            this.material ||
              (this.material = new THREE.MeshPhongMaterial({
                color: n.Tools.randomizeRGB('30, 30, 30', 13),
              })),
            (this.objectType = n.TILE),
            (this.entity = null),
            (this.userData = {}),
            (this.selected = !1),
            (this.highlight = '0x0084cc'),
            (this.mesh = new THREE.Mesh(this.geometry, this.material)),
            (this.mesh.userData.structure = this),
            (this.position = this.mesh.position),
            (this.rotation = this.mesh.rotation),
            (this.rotation.x = -90 * n.DEG_TO_RAD),
            this.mesh.scale.set(t.scale, t.scale, 1),
            this.material.emissive
              ? (this._emissive = this.material.emissive.getHex())
              : (this._emissive = null)
        }),
        (n.Tile.prototype = {
          select: function () {
            return (
              this.material.emissive && this.material.emissive.setHex(this.highlight),
              (this.selected = !0),
              this
            )
          },
          deselect: function () {
            return (
              null !== this._emissive &&
                this.material.emissive &&
                this.material.emissive.setHex(this._emissive),
              (this.selected = !1),
              this
            )
          },
          toggle: function () {
            return this.selected ? this.deselect() : this.select(), this
          },
          dispose: function () {
            this.cell && this.cell.tile && (this.cell.tile = null),
              (this.cell = null),
              (this.position = null),
              (this.rotation = null),
              this.mesh.parent && this.mesh.parent.remove(this.mesh),
              (this.mesh.userData.structure = null),
              (this.mesh = null),
              (this.material = null),
              (this.userData = null),
              (this.entity = null),
              (this.geometry = null),
              (this._emissive = null)
          },
        }),
        (n.Tile.prototype.constructor = n.Tile),
        (function () {
          var e = function () {
              ;(this.obj = null), (this.next = null), (this.prev = null), (this.free = !0)
            },
            t = function () {
              ;(this.first = null),
                (this.last = null),
                (this.length = 0),
                (this.objToNodeMap = {}),
                (this.uniqueID = Date.now() + '' + Math.floor(1e3 * Math.random())),
                (this.sortArray = [])
            }
          ;(t.generateID = function () {
            return Math.random().toString(36).slice(2) + Date.now()
          }),
            ((t.prototype = {
              getNode: function (e) {
                return this.objToNodeMap[e.uniqueID]
              },
              addNode: function (n) {
                var r = new e()
                if (!n.uniqueID)
                  try {
                    n.uniqueID = t.generateID()
                  } catch (i) {
                    return (
                      console.error(
                        '[LinkedList.addNode] obj passed is immutable: cannot attach necessary identifier',
                      ),
                      null
                    )
                  }
                return (r.obj = n), (r.free = !1), (this.objToNodeMap[n.uniqueID] = r), r
              },
              swapObjects: function (e, t) {
                ;(this.objToNodeMap[e.obj.uniqueID] = null),
                  (this.objToNodeMap[t.uniqueID] = e),
                  (e.obj = t)
              },
              add: function (e) {
                var t = this.objToNodeMap[e.uniqueID]
                if (t) {
                  if (!1 === t.free) return
                  ;(t.obj = e), (t.free = !1), (t.next = null), (t.prev = null)
                } else t = this.addNode(e)
                if (this.first) {
                  if (!this.last)
                    throw new Error(
                      "[LinkedList.add] No last in the list -- that shouldn't happen here",
                    )
                  ;(this.last.next = t), (t.prev = this.last), (this.last = t), (t.next = null)
                } else (this.first = t), (this.last = t), (t.next = null), (t.prev = null)
                this.length++, this.showDebug && this.dump('after add')
              },
              has: function (e) {
                return !!this.objToNodeMap[e.uniqueID]
              },
              moveUp: function (e) {
                this.dump('before move up')
                var t = this.getNode(e)
                if (!t) throw "Oops, trying to move an object that isn't in the list"
                if (t.prev) {
                  var n = t.prev,
                    r = n.prev
                  t == this.last && (this.last = n)
                  var i = t.next
                  r && (r.next = t),
                    (t.next = n),
                    (t.prev = n.prev),
                    (n.next = i),
                    (n.prev = t),
                    this.first == n && (this.first = t)
                }
              },
              moveDown: function (e) {
                var t = this.getNode(e)
                if (!t) throw "Oops, trying to move an object that isn't in the list"
                if (t.next) {
                  var n = t.next
                  this.moveUp(n.obj), this.last == n && (this.last = t)
                }
              },
              sort: function (e) {
                var t,
                  n,
                  r = this.sortArray,
                  i = this.first
                for (r.length = 0; i; ) r.push(i.obj), (i = i.next)
                for (this.clear(), r.sort(e), n = r.length, t = 0; n > t; t++) this.add(r[t])
              },
              remove: function (e) {
                var t = this.getNode(e)
                return (
                  !(!t || t.free) &&
                  (t.prev && (t.prev.next = t.next),
                  t.next && (t.next.prev = t.prev),
                  t.prev || (this.first = t.next),
                  t.next || (this.last = t.prev),
                  (t.free = !0),
                  (t.prev = null),
                  (t.next = null),
                  this.length--,
                  !0)
                )
              },
              shift: function () {
                var e = this.first
                return 0 === this.length
                  ? null
                  : (e.prev && (e.prev.next = e.next),
                    e.next && (e.next.prev = e.prev),
                    (this.first = e.next),
                    e.next || (this.last = null),
                    (e.free = !0),
                    (e.prev = null),
                    (e.next = null),
                    this.length--,
                    e.obj)
              },
              pop: function () {
                var e = this.last
                return 0 === this.length
                  ? null
                  : (e.prev && (e.prev.next = e.next),
                    e.next && (e.next.prev = e.prev),
                    (this.last = e.prev),
                    e.prev || (this.first = null),
                    (e.free = !0),
                    (e.prev = null),
                    (e.next = null),
                    this.length--,
                    e.obj)
              },
              concat: function (e) {
                for (var t = e.first; t; ) this.add(t.obj), (t = t.next)
              },
              clear: function () {
                for (var e = this.first; e; ) (e.free = !0), (e = e.next)
                ;(this.first = null), (this.length = 0)
              },
              dispose: function () {
                for (var e = this.first; e; ) (e.obj = null), (e = e.next)
                ;(this.first = null), (this.objToNodeMap = null)
              },
              dump: function (e) {
                console.log('====================' + e + '=====================')
                for (var t = this.first; t; )
                  console.log(
                    '{' + t.obj.toString() + '} previous=' + (t.prev ? t.prev.obj : 'NULL'),
                  ),
                    (t = t.next())
                console.log('==================================='),
                  console.log(
                    'Last: {' +
                      (this.last ? this.last.obj : 'NULL') +
                      '} First: {' +
                      (this.first ? this.first.obj : 'NULL') +
                      '}',
                  )
              },
            }).constructor = t),
            (n.LinkedList = t)
        })(),
        (function () {
          var e = function (e, t, n, r, i) {
            ;(this._listener = t),
              (this.isOnce = n),
              (this.context = r),
              (this.signal = e),
              (this._priority = i || 0)
          }
          ;(e.prototype = {
            active: !0,
            params: null,
            execute: function (e) {
              var t, n
              return (
                this.active &&
                  this._listener &&
                  ((n = this.params ? this.params.concat(e) : e),
                  (t = this._listener.apply(this.context, n)),
                  this.isOnce && this.detach()),
                t
              )
            },
            detach: function () {
              return this.isBound() ? this.signal.remove(this._listener, this.context) : null
            },
            isBound: function () {
              return !!this.signal && !!this._listener
            },
            _destroy: function () {
              delete this.signal, delete this._listener, delete this.context
            },
            toString: function () {
              return (
                '[SignalBinding isOnce:' +
                this.isOnce +
                ', isBound:' +
                this.isBound() +
                ', active:' +
                this.active +
                ']'
              )
            },
          }).constructor = e
          var t = function () {
            ;(this._bindings = []), (this._prevParams = null)
            var e = this
            this.dispatch = function () {
              t.prototype.dispatch.apply(e, arguments)
            }
          }
          ;(t.prototype = {
            memorize: !1,
            _shouldPropagate: !0,
            active: !0,
            validateListener: function (e, t) {
              if ('function' != typeof e)
                throw new Error(
                  'Signal: listener is a required param of {fn}() and should be a Function.'.replace(
                    '{fn}',
                    t,
                  ),
                )
            },
            _registerListener: function (t, n, r, i) {
              var o,
                a = this._indexOfListener(t, r)
              if (-1 !== a) {
                if ((o = this._bindings[a]).isOnce !== n)
                  throw new Error(
                    'You cannot add' +
                      (n ? '' : 'Once') +
                      '() then add' +
                      (n ? 'Once' : '') +
                      '() the same listener without removing the relationship first.',
                  )
              } else (o = new e(this, t, n, r, i)), this._addBinding(o)
              return this.memorize && this._prevParams && o.execute(this._prevParams), o
            },
            _addBinding: function (e) {
              var t = this._bindings.length
              do {
                t--
              } while (this._bindings[t] && e._priority <= this._bindings[t]._priority)
              this._bindings.splice(t + 1, 0, e)
            },
            _indexOfListener: function (e, t) {
              for (var n, r = this._bindings.length; r--; )
                if ((n = this._bindings[r])._listener === e && n.context === t) return r
              return -1
            },
            has: function (e, t) {
              return -1 !== this._indexOfListener(e, t)
            },
            add: function (e, t, n) {
              return this.validateListener(e, 'add'), this._registerListener(e, !1, t, n)
            },
            addOnce: function (e, t, n) {
              return this.validateListener(e, 'addOnce'), this._registerListener(e, !0, t, n)
            },
            remove: function (e, t) {
              this.validateListener(e, 'remove')
              var n = this._indexOfListener(e, t)
              return -1 !== n && (this._bindings[n]._destroy(), this._bindings.splice(n, 1)), e
            },
            removeAll: function (e) {
              'undefined' == typeof e && (e = null)
              for (var t = this._bindings.length; t--; )
                e
                  ? this._bindings[t].context === e &&
                    (this._bindings[t]._destroy(), this._bindings.splice(t, 1))
                  : this._bindings[t]._destroy()
              e || (this._bindings.length = 0)
            },
            getNumListeners: function () {
              return this._bindings.length
            },
            halt: function () {
              this._shouldPropagate = !1
            },
            dispatch: function () {
              if (this.active) {
                var e,
                  t = Array.prototype.slice.call(arguments),
                  n = this._bindings.length
                if ((this.memorize && (this._prevParams = t), n)) {
                  ;(e = this._bindings.slice()), (this._shouldPropagate = !0)
                  do {
                    n--
                  } while (e[n] && this._shouldPropagate && !1 !== e[n].execute(t))
                }
              }
            },
            forget: function () {
              this._prevParams = null
            },
            dispose: function () {
              this.removeAll(), delete this._bindings, delete this._prevParams
            },
            toString: function () {
              return (
                '[Signal active:' + this.active + ' numListeners:' + this.getNumListeners() + ']'
              )
            },
          }),
            (t.prototype.constructor = t),
            (n.Signal = t)
        })(),
        (n.AStarFinder = function (e) {
          e = e || {}
          var t = { allowDiagonal: !1, heuristicFilter: null }
          ;(t = n.Tools.merge(t, e)),
            (this.allowDiagonal = t.allowDiagonal),
            (this.heuristicFilter = t.heuristicFilter),
            (this.list = new n.LinkedList())
        }),
        (n.AStarFinder.prototype = {
          findPath: function (e, t, r, i) {
            var o, a, s, u, l, c
            for (
              r = r || this.heuristicFilter, i.clearPath(), this.list.clear(), this.list.add(e);
              this.list.length > 0;

            ) {
              if ((this.list.sort(this.compare), ((o = this.list.shift())._visited = !0), o === t))
                return n.PathUtil.backtrace(t)
              for (l = 0, c = (s = i.getNeighbors(o, this.allowDiagonal, r)).length; c > l; l++)
                if (
                  (u = s[l]).walkable &&
                  ((a = o._calcCost + i.distance(o, u)), !u._visited || a < u._calcCost)
                ) {
                  if (
                    ((u._visited = !0),
                    (u._parent = o),
                    (u._calcCost = a),
                    (u._priority = a + i.distance(t, u)),
                    u === t)
                  )
                    return n.PathUtil.backtrace(t)
                  this.list.add(u)
                }
            }
            return null
          },
          compare: function (e, t) {
            return e._priority - t._priority
          },
        }),
        (n.AStarFinder.prototype.constructor = n.AStarFinder),
        (n.PathUtil = {
          backtrace: function (e) {
            for (var t = [e]; e._parent; ) (e = e._parent), t.push(e)
            return t.reverse()
          },
          biBacktrace: function (e, t) {
            var n = this.backtrace(e),
              r = this.backtrace(t)
            return n.concat(r.reverse())
          },
          pathLength: function (e) {
            var t,
              n,
              r,
              i,
              o,
              a = 0
            for (t = 1; t < e.length; ++t)
              (n = e[t - 1]),
                (r = e[t]),
                (i = n[0] - r[0]),
                (o = n[1] - r[1]),
                (a += Math.sqrt(i * i + o * o))
            return a
          },
          interpolate: function (e, t, n, r) {
            var i,
              o,
              a,
              s,
              u,
              l,
              c = Math.abs,
              d = []
            for (
              i = n > e ? 1 : -1, o = r > t ? 1 : -1, u = (a = c(n - e)) - (s = c(r - t));
              e !== n || t !== r;

            )
              d.push([e, t]),
                (l = 2 * u) > -s && ((u -= s), (e += i)),
                a > l && ((u += a), (t += o))
            return d
          },
          expandPath: function (e) {
            var t,
              n,
              r,
              i,
              o,
              a,
              s = [],
              u = e.length
            if (2 > u) return s
            for (o = 0; u - 1 > o; ++o)
              for (
                t = e[o],
                  n = e[o + 1],
                  i = (r = this.interpolate(t[0], t[1], n[0], n[1])).length,
                  a = 0;
                i - 1 > a;
                ++a
              )
                s.push(r[a])
            return s.push(e[u - 1]), s
          },
          smoothenPath: function (e, t) {
            var n,
              r,
              i,
              o,
              a,
              s,
              u,
              l,
              c,
              d,
              f,
              h,
              p = t.length,
              v = t[0][0],
              m = t[0][1],
              g = t[p - 1][0],
              y = t[p - 1][1]
            for (a = [[(n = v), (r = m)]], u = 2; p > u; ++u) {
              for (
                i = (c = t[u])[0], o = c[1], d = this.interpolate(n, r, i, o), h = !1, l = 1;
                l < d.length;
                ++l
              )
                if (((f = d[l]), !e.isWalkableAt(f[0], f[1]))) {
                  h = !0
                  break
                }
              h && ((s = t[u - 1]), a.push(s), (n = s[0]), (r = s[1]))
            }
            return a.push([g, y]), a
          },
          compressPath: function (e) {
            if (e.length < 3) return e
            var t,
              n,
              r,
              i,
              o,
              a,
              s = [],
              u = e[0][0],
              l = e[0][1],
              c = e[1][0],
              d = e[1][1],
              f = c - u,
              h = d - l
            for (
              f /= o = Math.sqrt(f * f + h * h), h /= o, s.push([u, l]), a = 2;
              a < e.length;
              a++
            )
              (t = c),
                (n = d),
                (r = f),
                (i = h),
                (f = (c = e[a][0]) - t),
                (h = (d = e[a][1]) - n),
                (h /= o = Math.sqrt(f * f + h * h)),
                ((f /= o) !== r || h !== i) && s.push([t, n])
            return s.push([c, d]), s
          },
        }),
        (n.Loader = {
          manager: null,
          imageLoader: null,
          crossOrigin: !1,
          init: function (e) {
            ;(this.crossOrigin = e || !1),
              (this.manager = new THREE.LoadingManager(
                function () {},
                function () {},
                function () {
                  console.warn('Error loading images')
                },
              )),
              (this.imageLoader = new THREE.ImageLoader(this.manager)),
              (this.imageLoader.crossOrigin = e)
          },
          loadTexture: function (e, t, n, r) {
            var i = new THREE.Texture(null, t)
            return (
              this.imageLoader.load(
                e,
                function (e) {
                  ;(i.image = e), (i.needsUpdate = !0), n && n(i)
                },
                null,
                function (e) {
                  r && r(e)
                },
              ),
              (i.sourceFile = e),
              i
            )
          },
        }),
        (n.MouseCaster = function (e, t, r) {
          ;(this.down = !1),
            (this.rightDown = !1),
            (this.pickedObject = null),
            (this.selectedObject = null),
            (this.allHits = null),
            (this.active = !0),
            (this.shift = !1),
            (this.ctrl = !1),
            (this.wheel = 0),
            (this.position = new THREE.Vector3()),
            (this.screenPosition = new THREE.Vector2()),
            (this.signal = new n.Signal()),
            (this.group = e),
            (this._camera = t),
            (this._raycaster = new THREE.Raycaster()),
            (this._preventDefault = !1),
            (r = r || document).addEventListener(
              'mousemove',
              this._onDocumentMouseMove.bind(this),
              !1,
            ),
            r.addEventListener('mousedown', this._onDocumentMouseDown.bind(this), !1),
            r.addEventListener('mouseup', this._onDocumentMouseUp.bind(this), !1),
            r.addEventListener('mousewheel', this._onMouseWheel.bind(this), !1),
            r.addEventListener('DOMMouseScroll', this._onMouseWheel.bind(this), !1)
        }),
        (n.MouseCaster.OVER = 'over'),
        (n.MouseCaster.OUT = 'out'),
        (n.MouseCaster.DOWN = 'down'),
        (n.MouseCaster.UP = 'up'),
        (n.MouseCaster.CLICK = 'click'),
        (n.MouseCaster.WHEEL = 'wheel'),
        (n.MouseCaster.prototype = {
          update: function () {
            if (this.active) {
              this._raycaster.setFromCamera(this.screenPosition, this._camera)
              var e,
                t,
                r = this._raycaster.intersectObject(this.group, !0)
              r.length > 0
                ? ((t = (e = r[0]).object.userData.structure),
                  this.pickedObject != t &&
                    (this.pickedObject &&
                      this.signal.dispatch(n.MouseCaster.OUT, this.pickedObject),
                    (this.pickedObject = t),
                    (this.selectedObject = null),
                    this.signal.dispatch(n.MouseCaster.OVER, this.pickedObject)),
                  this.position.copy(e.point),
                  (this.screenPosition.z = e.distance))
                : (this.pickedObject && this.signal.dispatch(n.MouseCaster.OUT, this.pickedObject),
                  (this.pickedObject = null),
                  (this.selectedObject = null)),
                (this.allHits = r)
            }
          },
          preventDefault: function () {
            this._preventDefault = !0
          },
          _onDocumentMouseDown: function (e) {
            return (
              (e = e || window.event).preventDefault(),
              this._preventDefault
                ? ((this._preventDefault = !1), !1)
                : (this.pickedObject && (this.selectedObject = this.pickedObject),
                  (this.shift = e.shiftKey),
                  (this.ctrl = e.ctrlKey),
                  (this.down = 1 === e.which),
                  (this.rightDown = 3 === e.which),
                  void this.signal.dispatch(n.MouseCaster.DOWN, this.pickedObject))
            )
          },
          _onDocumentMouseUp: function (e) {
            return (
              e.preventDefault(),
              this._preventDefault
                ? ((this._preventDefault = !1), !1)
                : ((this.shift = e.shiftKey),
                  (this.ctrl = e.ctrlKey),
                  this.signal.dispatch(n.MouseCaster.UP, this.pickedObject),
                  this.selectedObject &&
                    this.pickedObject &&
                    this.selectedObject.uniqueID === this.pickedObject.uniqueID &&
                    this.signal.dispatch(n.MouseCaster.CLICK, this.pickedObject),
                  (this.down = 1 !== e.which && this.down),
                  void (this.rightDown = 3 !== e.which && this.rightDown))
            )
          },
          _onDocumentMouseMove: function (e) {
            e.preventDefault(),
              (this.screenPosition.x = (e.clientX / window.innerWidth) * 2 - 1),
              (this.screenPosition.y = (-e.clientY / window.innerHeight) * 2 + 1)
          },
          _onMouseWheel: function (e) {
            if (this.active) {
              e.preventDefault(), e.stopPropagation()
              var t = 0
              void 0 !== e.wheelDelta ? (t = e.wheelDelta) : void 0 !== e.detail && (t = -e.detail),
                t > 0 ? this.wheel++ : this.wheel--,
                this.signal.dispatch(n.MouseCaster.WHEEL, this.wheel)
            }
          },
        }),
        (n.MouseCaster.prototype.constructor = n.MouseCaster),
        (n.Scene = function (e, t) {
          var r = {
              element: document.body,
              alpha: !0,
              antialias: !0,
              clearColor: '#fff',
              sortObjects: !1,
              fog: null,
              light: new THREE.DirectionalLight(16777215),
              lightPosition: null,
              cameraType: 'PerspectiveCamera',
              cameraPosition: null,
              orthoZoom: 4,
            },
            i = { minDistance: 100, maxDistance: 1e3, zoomSpeed: 2, noZoom: !1 }
          if (
            ((r = n.Tools.merge(r, e)),
            'boolean' != typeof t && (i = n.Tools.merge(i, t)),
            (this.renderer = new THREE.WebGLRenderer({ alpha: r.alpha, antialias: r.antialias })),
            this.renderer.setClearColor(r.clearColor, 0),
            (this.renderer.sortObjects = r.sortObjects),
            (this.width = window.innerWidth),
            (this.height = window.innerHeight),
            (this.orthoZoom = r.orthoZoom),
            (this.container = new THREE.Scene()),
            (this.container.fog = r.fog),
            this.container.add(new THREE.AmbientLight(14540253)),
            r.lightPosition || r.light.position.set(-1, 1, -1).normalize(),
            this.container.add(r.light),
            'OrthographicCamera' === r.cameraType)
          ) {
            var o = window.innerWidth / this.orthoZoom,
              a = window.innerHeight / this.orthoZoom
            this.camera = new THREE.OrthographicCamera(o / -2, o / 2, a / 2, a / -2, 1, 5e3)
          } else this.camera = new THREE.PerspectiveCamera(50, this.width / this.height, 1, 5e3)
          ;(this.contolled = !!t),
            this.contolled &&
              ((this.controls = new THREE.OrbitControls(this.camera, this.renderer.domElement)),
              (this.controls.minDistance = i.minDistance),
              (this.controls.maxDistance = i.maxDistance),
              (this.controls.zoomSpeed = i.zoomSpeed),
              (this.controls.noZoom = i.noZoom)),
            r.cameraPosition && this.camera.position.copy(r.cameraPosition),
            window.addEventListener(
              'resize',
              function () {
                if (
                  ((this.width = window.innerWidth),
                  (this.height = window.innerHeight),
                  'OrthographicCamera' === this.camera.type)
                ) {
                  var e = this.width / this.orthoZoom,
                    t = this.height / this.orthoZoom
                  ;(this.camera.left = e / -2),
                    (this.camera.right = e / 2),
                    (this.camera.top = t / 2),
                    (this.camera.bottom = t / -2)
                } else this.camera.aspect = this.width / this.height
                this.camera.updateProjectionMatrix(), this.renderer.setSize(this.width, this.height)
              }.bind(this),
              !1,
            ),
            this.attachTo(r.element)
        }),
        (n.Scene.prototype = {
          attachTo: function (e) {
            ;(e.style.width = this.width + 'px'),
              (e.style.height = this.height + 'px'),
              this.renderer.setPixelRatio(window.devicePixelRatio),
              this.renderer.setSize(this.width, this.height),
              e.appendChild(this.renderer.domElement)
          },
          add: function (e) {
            this.container.add(e)
          },
          remove: function (e) {
            this.container.remove(e)
          },
          render: function () {
            this.contolled && this.controls.update(),
              this.renderer.render(this.container, this.camera)
          },
          updateOrthoZoom: function () {
            if (this.orthoZoom <= 0) this.orthoZoom = 0
            else {
              var e = this.width / this.orthoZoom,
                t = this.height / this.orthoZoom
              ;(this.camera.left = e / -2),
                (this.camera.right = e / 2),
                (this.camera.top = t / 2),
                (this.camera.bottom = t / -2),
                this.camera.updateProjectionMatrix()
            }
          },
          focusOn: function (e) {
            this.camera.lookAt(e.position)
          },
        }),
        (n.Scene.prototype.constructor = n.Scene),
        (n.SelectionManager = function (e) {
          ;(this.mouse = e),
            (this.onSelect = new n.Signal()),
            (this.onDeselect = new n.Signal()),
            (this.selected = null),
            (this.toggleSelection = !1),
            this.mouse.signal.add(this.onMouse, this)
        }),
        (n.SelectionManager.prototype = {
          select: function (e, t) {
            e &&
              ((t = t || !0),
              this.selected !== e && this.clearSelection(t),
              e.selected
                ? this.toggleSelection && (t && this.onDeselect.dispatch(e), e.deselect())
                : e.select(),
              (this.selected = e),
              t && this.onSelect.dispatch(e))
          },
          clearSelection: function (e) {
            ;(e = e || !0),
              this.selected &&
                (e && this.onDeselect.dispatch(this.selected), this.selected.deselect()),
              (this.selected = null)
          },
          onMouse: function (e, t) {
            switch (e) {
              case n.MouseCaster.DOWN:
                t || this.clearSelection()
                break
              case n.MouseCaster.CLICK:
                this.select(t)
            }
          },
        }),
        (n.SelectionManager.prototype.constructor = n.SelectionManager),
        (n.Tools = {
          clamp: function (e, t, n) {
            return Math.max(t, Math.min(n, e))
          },
          sign: function (e) {
            return e && e / Math.abs(e)
          },
          random: function (e, t) {
            return 1 === arguments.length
              ? Math.random() * e - 0.5 * e
              : Math.random() * (t - e) + e
          },
          randomInt: function (e, t) {
            return 1 === arguments.length
              ? (Math.random() * e - 0.5 * e) | 0
              : (Math.random() * (t - e + 1) + e) | 0
          },
          normalize: function (e, t, n) {
            return (e - t) / (n - t)
          },
          getShortRotation: function (e) {
            return (e %= this.TAU) > this.PI ? (e -= this.TAU) : e < -this.PI && (e += this.TAU), e
          },
          generateID: function () {
            return Math.random().toString(36).slice(2) + Date.now()
          },
          isPlainObject: function (e) {
            if ('object' != typeof e || e.nodeType || e === e.window) return !1
            try {
              if (
                e.constructor &&
                !Object.prototype.hasOwnProperty.call(e.constructor.prototype, 'isPrototypeOf')
              )
                return !1
            } catch (t) {
              return !1
            }
            return !0
          },
          merge: function (e, t) {
            var n = this,
              r = Array.isArray(t),
              i = (r && []) || {}
            return r
              ? ((e = e || []),
                (i = i.concat(e)),
                t.forEach(function (t, r) {
                  'undefined' == typeof i[r]
                    ? (i[r] = t)
                    : n.isPlainObject(t)
                    ? (i[r] = n.merge(e[r], t))
                    : -1 === e.indexOf(t) && i.push(t)
                }),
                i)
              : (e &&
                  n.isPlainObject(e) &&
                  Object.keys(e).forEach(function (t) {
                    i[t] = e[t]
                  }),
                Object.keys(t).forEach(function (r) {
                  t[r] && n.isPlainObject(t[r]) && e[r]
                    ? (i[r] = n.merge(e[r], t[r]))
                    : (i[r] = t[r])
                }),
                i)
          },
          now: function () {
            return window.nwf ? window.nwf.system.Performance.elapsedTime : window.performance.now()
          },
          empty: function (e) {
            for (; e.lastChild; ) e.removeChild(e.lastChild)
          },
          radixSort: function (e, t, n, r) {
            if (((r = r || 31), !((t = t || 0) >= (n = n || e.length) - 1 || 0 > r))) {
              for (var i = t, o = n, a = 1 << r; o > i; )
                if (e[i] & a) {
                  --o
                  var s = e[i]
                  ;(e[i] = e[o]), (e[o] = s)
                } else ++i
              this.radixSort(e, t, o, r - 1), this.radixSort(e, o, n, r - 1)
            }
          },
          randomizeRGB: function (e, t) {
            var n,
              r,
              i = e.split(','),
              o = 'rgb('
            for (t = this.randomInt(t), n = 0; 3 > n; n++)
              0 > (r = parseInt(i[n]) + t) ? (r = 0) : r > 255 && (r = 255), (o += r + ',')
            return (o = o.substring(0, o.length - 1)) + ')'
          },
          getJSON: function (e) {
            var t = new XMLHttpRequest(),
              n =
                'undefined' != typeof e.cache && e.cache
                  ? e.url
                  : e.url + '?t=' + Math.floor(1e4 * Math.random()) + Date.now()
            ;(t.onreadystatechange = function () {
              if (200 !== this.status)
                0 !== this.status &&
                  console.warn(
                    '[Tools.getJSON] Error: ' +
                      this.status +
                      ' (' +
                      this.statusText +
                      ') :: ' +
                      e.url,
                  )
              else {
                var t = null
                try {
                  t = JSON.parse(this.responseText)
                } catch (n) {
                  return
                }
                e.callback.call(e.scope || null, t)
              }
            }),
              t.open('GET', n, !0),
              t.setRequestHeader('Accept', 'application/json'),
              t.setRequestHeader('Content-Type', 'application/json'),
              t.send('')
          },
        })
    },
    7454: function () {
      !(function (e) {
        var t = 'KeyboardEvent' in e
        t ||
          (e.KeyboardEvent = function () {
            throw TypeError('Illegal constructor')
          }),
          'DOM_KEY_LOCATION_STANDARD' in e.KeyboardEvent ||
            (e.KeyboardEvent.DOM_KEY_LOCATION_STANDARD = 0),
          'DOM_KEY_LOCATION_LEFT' in e.KeyboardEvent || (e.KeyboardEvent.DOM_KEY_LOCATION_LEFT = 1),
          'DOM_KEY_LOCATION_RIGHT' in e.KeyboardEvent ||
            (e.KeyboardEvent.DOM_KEY_LOCATION_RIGHT = 2),
          'DOM_KEY_LOCATION_NUMPAD' in e.KeyboardEvent ||
            (e.KeyboardEvent.DOM_KEY_LOCATION_NUMPAD = 3)
        var n = window.KeyboardEvent.DOM_KEY_LOCATION_STANDARD,
          r = window.KeyboardEvent.DOM_KEY_LOCATION_LEFT,
          i = window.KeyboardEvent.DOM_KEY_LOCATION_RIGHT,
          o = window.KeyboardEvent.DOM_KEY_LOCATION_NUMPAD
        function a(e, t) {
          return -1 !== String(e).indexOf(t)
        }
        var s = a(navigator.platform, 'Win')
            ? 'win'
            : a(navigator.platform, 'Mac')
            ? 'mac'
            : a(navigator.platform, 'CrOS')
            ? 'cros'
            : a(navigator.platform, 'Linux')
            ? 'linux'
            : a(navigator.userAgent, 'iPad') ||
              a(navigator.platform, 'iPod') ||
              a(navigator.platform, 'iPhone')
            ? 'ios'
            : '',
          u = a(navigator.userAgent, 'Chrome/')
            ? 'chrome'
            : a(navigator.vendor, 'Apple')
            ? 'safari'
            : a(navigator.userAgent, 'MSIE')
            ? 'ie'
            : a(navigator.userAgent, 'Gecko/')
            ? 'moz'
            : a(navigator.userAgent, 'Opera/')
            ? 'opera'
            : '',
          l = u + '-' + s
        function c(e, t, n) {
          ;(l !== t && u !== t && s !== t) ||
            Object.keys(n).forEach(function (t) {
              e[t] = n[t]
            })
        }
        var d = {
          3: { code: 'Cancel' },
          6: { code: 'Help' },
          8: { code: 'Backspace' },
          9: { code: 'Tab' },
          12: { code: 'Clear' },
          13: { code: 'Enter' },
          16: { code: 'Shift' },
          17: { code: 'Control' },
          18: { code: 'Alt' },
          19: { code: 'Pause' },
          20: { code: 'CapsLock' },
          21: { code: 'KanaMode' },
          22: { code: 'HangulMode' },
          23: { code: 'JunjaMode' },
          24: { code: 'FinalMode' },
          25: { code: 'KanjiMode' },
          27: { code: 'Escape' },
          28: { code: 'Convert' },
          29: { code: 'NonConvert' },
          30: { code: 'Accept' },
          31: { code: 'ModeChange' },
          32: { code: 'Space' },
          33: { code: 'PageUp' },
          34: { code: 'PageDown' },
          35: { code: 'End' },
          36: { code: 'Home' },
          37: { code: 'ArrowLeft' },
          38: { code: 'ArrowUp' },
          39: { code: 'ArrowRight' },
          40: { code: 'ArrowDown' },
          41: { code: 'Select' },
          42: { code: 'Print' },
          43: { code: 'Execute' },
          44: { code: 'PrintScreen' },
          45: { code: 'Insert' },
          46: { code: 'Delete' },
          47: { code: 'Help' },
          48: { code: 'Digit0', keyCap: '0' },
          49: { code: 'Digit1', keyCap: '1' },
          50: { code: 'Digit2', keyCap: '2' },
          51: { code: 'Digit3', keyCap: '3' },
          52: { code: 'Digit4', keyCap: '4' },
          53: { code: 'Digit5', keyCap: '5' },
          54: { code: 'Digit6', keyCap: '6' },
          55: { code: 'Digit7', keyCap: '7' },
          56: { code: 'Digit8', keyCap: '8' },
          57: { code: 'Digit9', keyCap: '9' },
          65: { code: 'KeyA', keyCap: 'a' },
          66: { code: 'KeyB', keyCap: 'b' },
          67: { code: 'KeyC', keyCap: 'c' },
          68: { code: 'KeyD', keyCap: 'd' },
          69: { code: 'KeyE', keyCap: 'e' },
          70: { code: 'KeyF', keyCap: 'f' },
          71: { code: 'KeyG', keyCap: 'g' },
          72: { code: 'KeyH', keyCap: 'h' },
          73: { code: 'KeyI', keyCap: 'i' },
          74: { code: 'KeyJ', keyCap: 'j' },
          75: { code: 'KeyK', keyCap: 'k' },
          76: { code: 'KeyL', keyCap: 'l' },
          77: { code: 'KeyM', keyCap: 'm' },
          78: { code: 'KeyN', keyCap: 'n' },
          79: { code: 'KeyO', keyCap: 'o' },
          80: { code: 'KeyP', keyCap: 'p' },
          81: { code: 'KeyQ', keyCap: 'q' },
          82: { code: 'KeyR', keyCap: 'r' },
          83: { code: 'KeyS', keyCap: 's' },
          84: { code: 'KeyT', keyCap: 't' },
          85: { code: 'KeyU', keyCap: 'u' },
          86: { code: 'KeyV', keyCap: 'v' },
          87: { code: 'KeyW', keyCap: 'w' },
          88: { code: 'KeyX', keyCap: 'x' },
          89: { code: 'KeyY', keyCap: 'y' },
          90: { code: 'KeyZ', keyCap: 'z' },
          91: { code: 'OSLeft', location: r },
          92: { code: 'OSRight', location: i },
          93: { code: 'ContextMenu' },
          95: { code: 'Standby' },
          96: { code: 'Numpad0', keyCap: '0', location: o },
          97: { code: 'Numpad1', keyCap: '1', location: o },
          98: { code: 'Numpad2', keyCap: '2', location: o },
          99: { code: 'Numpad3', keyCap: '3', location: o },
          100: { code: 'Numpad4', keyCap: '4', location: o },
          101: { code: 'Numpad5', keyCap: '5', location: o },
          102: { code: 'Numpad6', keyCap: '6', location: o },
          103: { code: 'Numpad7', keyCap: '7', location: o },
          104: { code: 'Numpad8', keyCap: '8', location: o },
          105: { code: 'Numpad9', keyCap: '9', location: o },
          106: { code: 'NumpadMultiply', keyCap: '*', location: o },
          107: { code: 'NumpadAdd', keyCap: '+', location: o },
          108: { code: 'NumpadComma', keyCap: ',', location: o },
          109: { code: 'NumpadSubtract', keyCap: '-', location: o },
          110: { code: 'NumpadDecimal', keyCap: '.', location: o },
          111: { code: 'NumpadDivide', keyCap: '/', location: o },
          112: { code: 'F1' },
          113: { code: 'F2' },
          114: { code: 'F3' },
          115: { code: 'F4' },
          116: { code: 'F5' },
          117: { code: 'F6' },
          118: { code: 'F7' },
          119: { code: 'F8' },
          120: { code: 'F9' },
          121: { code: 'F10' },
          122: { code: 'F11' },
          123: { code: 'F12' },
          124: { code: 'F13' },
          125: { code: 'F14' },
          126: { code: 'F15' },
          127: { code: 'F16' },
          128: { code: 'F17' },
          129: { code: 'F18' },
          130: { code: 'F19' },
          131: { code: 'F20' },
          132: { code: 'F21' },
          133: { code: 'F22' },
          134: { code: 'F23' },
          135: { code: 'F24' },
          144: { code: 'NumLock', location: o },
          145: { code: 'ScrollLock' },
          160: { code: 'ShiftLeft', location: r },
          161: { code: 'ShiftRight', location: i },
          162: { code: 'ControlLeft', location: r },
          163: { code: 'ControlRight', location: i },
          164: { code: 'AltLeft', location: r },
          165: { code: 'AltRight', location: i },
          166: { code: 'BrowserBack' },
          167: { code: 'BrowserForward' },
          168: { code: 'BrowserRefresh' },
          169: { code: 'BrowserStop' },
          170: { code: 'BrowserSearch' },
          171: { code: 'BrowserFavorites' },
          172: { code: 'BrowserHome' },
          173: { code: 'VolumeMute' },
          174: { code: 'VolumeDown' },
          175: { code: 'VolumeUp' },
          176: { code: 'MediaTrackNext' },
          177: { code: 'MediaTrackPrevious' },
          178: { code: 'MediaStop' },
          179: { code: 'MediaPlayPause' },
          180: { code: 'LaunchMail' },
          181: { code: 'MediaSelect' },
          182: { code: 'LaunchApp1' },
          183: { code: 'LaunchApp2' },
          186: { code: 'Semicolon', keyCap: ';' },
          187: { code: 'Equal', keyCap: '=' },
          188: { code: 'Comma', keyCap: ',' },
          189: { code: 'Minus', keyCap: '-' },
          190: { code: 'Period', keyCap: '.' },
          191: { code: 'Slash', keyCap: '/' },
          192: { code: 'Backquote', keyCap: '`' },
          219: { code: 'BracketLeft', keyCap: '[' },
          220: { code: 'Backslash', keyCap: '\\' },
          221: { code: 'BracketRight', keyCap: ']' },
          222: { code: 'Quote', keyCap: "'" },
          226: { code: 'IntlBackslash', keyCap: '\\' },
          229: { code: 'Process' },
          246: { code: 'Attn' },
          247: { code: 'CrSel' },
          248: { code: 'ExSel' },
          249: { code: 'EraseEof' },
          250: { code: 'Play' },
          251: { code: 'ZoomToggle' },
          254: { code: 'Clear' },
        }
        c(d, 'moz', {
          59: { code: 'Semicolon', keyCap: ';' },
          61: { code: 'Equal', keyCap: '=' },
          107: { code: 'Equal', keyCap: '=' },
          109: { code: 'Minus', keyCap: '-' },
          187: { code: 'NumpadAdd', keyCap: '+', location: o },
          189: { code: 'NumpadSubtract', keyCap: '-', location: o },
        }),
          c(d, 'moz-mac', {
            12: { code: 'NumLock', location: o },
            173: { code: 'Minus', keyCap: '-' },
          }),
          c(d, 'moz-win', { 173: { code: 'Minus', keyCap: '-' } }),
          c(d, 'chrome-mac', { 93: { code: 'OSRight', location: i } }),
          c(d, 'safari', { 3: { code: 'Enter' }, 25: { code: 'Tab' } }),
          c(d, 'ios', { 10: { code: 'Enter', location: n } }),
          c(d, 'safari-mac', {
            91: { code: 'OSLeft', location: r },
            93: { code: 'OSRight', location: i },
            229: { code: 'KeyQ', keyCap: 'Q' },
          })
        var f = {}
        'cros' === s &&
          ((f['U+00A0'] = { code: 'ShiftLeft', location: r }),
          (f['U+00A1'] = { code: 'ShiftRight', location: i }),
          (f['U+00A2'] = { code: 'ControlLeft', location: r }),
          (f['U+00A3'] = { code: 'ControlRight', location: i }),
          (f['U+00A4'] = { code: 'AltLeft', location: r }),
          (f['U+00A5'] = { code: 'AltRight', location: i })),
          'chrome-mac' === l && (f['U+0010'] = { code: 'ContextMenu' }),
          'safari-mac' === l && (f['U+0010'] = { code: 'ContextMenu' }),
          'ios' === s &&
            ((f['U+0010'] = { code: 'Function' }),
            (f['U+001C'] = { code: 'ArrowLeft' }),
            (f['U+001D'] = { code: 'ArrowRight' }),
            (f['U+001E'] = { code: 'ArrowUp' }),
            (f['U+001F'] = { code: 'ArrowDown' }),
            (f['U+0001'] = { code: 'Home' }),
            (f['U+0004'] = { code: 'End' }),
            (f['U+000B'] = { code: 'PageUp' }),
            (f['U+000C'] = { code: 'PageDown' }))
        var h = []
        ;(h[r] = {
          16: { code: 'ShiftLeft', location: r },
          17: { code: 'ControlLeft', location: r },
          18: { code: 'AltLeft', location: r },
        }),
          (h[i] = {
            16: { code: 'ShiftRight', location: i },
            17: { code: 'ControlRight', location: i },
            18: { code: 'AltRight', location: i },
          }),
          (h[o] = { 13: { code: 'NumpadEnter', location: o } }),
          c(h[o], 'moz', {
            109: { code: 'NumpadSubtract', location: o },
            107: { code: 'NumpadAdd', location: o },
          }),
          c(h[r], 'moz-mac', { 224: { code: 'OSLeft', location: r } }),
          c(h[i], 'moz-mac', { 224: { code: 'OSRight', location: i } }),
          c(h[i], 'moz-win', { 91: { code: 'OSRight', location: i } }),
          c(h[i], 'mac', { 93: { code: 'OSRight', location: i } }),
          c(h[o], 'chrome-mac', { 12: { code: 'NumLock', location: o } }),
          c(h[o], 'safari-mac', {
            12: { code: 'NumLock', location: o },
            187: { code: 'NumpadAdd', location: o },
            189: { code: 'NumpadSubtract', location: o },
            190: { code: 'NumpadDecimal', location: o },
            191: { code: 'NumpadDivide', location: o },
          })
        var p = {
          ShiftLeft: { key: 'Shift' },
          ShiftRight: { key: 'Shift' },
          ControlLeft: { key: 'Control' },
          ControlRight: { key: 'Control' },
          AltLeft: { key: 'Alt' },
          AltRight: { key: 'Alt' },
          OSLeft: { key: 'OS' },
          OSRight: { key: 'OS' },
          NumpadEnter: { key: 'Enter' },
          Space: { key: ' ' },
          Digit0: { key: '0', shiftKey: ')' },
          Digit1: { key: '1', shiftKey: '!' },
          Digit2: { key: '2', shiftKey: '@' },
          Digit3: { key: '3', shiftKey: '#' },
          Digit4: { key: '4', shiftKey: '$' },
          Digit5: { key: '5', shiftKey: '%' },
          Digit6: { key: '6', shiftKey: '^' },
          Digit7: { key: '7', shiftKey: '&' },
          Digit8: { key: '8', shiftKey: '*' },
          Digit9: { key: '9', shiftKey: '(' },
          KeyA: { key: 'a', shiftKey: 'A' },
          KeyB: { key: 'b', shiftKey: 'B' },
          KeyC: { key: 'c', shiftKey: 'C' },
          KeyD: { key: 'd', shiftKey: 'D' },
          KeyE: { key: 'e', shiftKey: 'E' },
          KeyF: { key: 'f', shiftKey: 'F' },
          KeyG: { key: 'g', shiftKey: 'G' },
          KeyH: { key: 'h', shiftKey: 'H' },
          KeyI: { key: 'i', shiftKey: 'I' },
          KeyJ: { key: 'j', shiftKey: 'J' },
          KeyK: { key: 'k', shiftKey: 'K' },
          KeyL: { key: 'l', shiftKey: 'L' },
          KeyM: { key: 'm', shiftKey: 'M' },
          KeyN: { key: 'n', shiftKey: 'N' },
          KeyO: { key: 'o', shiftKey: 'O' },
          KeyP: { key: 'p', shiftKey: 'P' },
          KeyQ: { key: 'q', shiftKey: 'Q' },
          KeyR: { key: 'r', shiftKey: 'R' },
          KeyS: { key: 's', shiftKey: 'S' },
          KeyT: { key: 't', shiftKey: 'T' },
          KeyU: { key: 'u', shiftKey: 'U' },
          KeyV: { key: 'v', shiftKey: 'V' },
          KeyW: { key: 'w', shiftKey: 'W' },
          KeyX: { key: 'x', shiftKey: 'X' },
          KeyY: { key: 'y', shiftKey: 'Y' },
          KeyZ: { key: 'z', shiftKey: 'Z' },
          Numpad0: { key: '0' },
          Numpad1: { key: '1' },
          Numpad2: { key: '2' },
          Numpad3: { key: '3' },
          Numpad4: { key: '4' },
          Numpad5: { key: '5' },
          Numpad6: { key: '6' },
          Numpad7: { key: '7' },
          Numpad8: { key: '8' },
          Numpad9: { key: '9' },
          NumpadMultiply: { key: '*' },
          NumpadAdd: { key: '+' },
          NumpadComma: { key: ',' },
          NumpadSubtract: { key: '-' },
          NumpadDecimal: { key: '.' },
          NumpadDivide: { key: '/' },
          Semicolon: { key: ';', shiftKey: ':' },
          Equal: { key: '=', shiftKey: '+' },
          Comma: { key: ',', shiftKey: '<' },
          Minus: { key: '-', shiftKey: '_' },
          Period: { key: '.', shiftKey: '>' },
          Slash: { key: '/', shiftKey: '?' },
          Backquote: { key: '`', shiftKey: '~' },
          BracketLeft: { key: '[', shiftKey: '{' },
          Backslash: { key: '\\', shiftKey: '|' },
          BracketRight: { key: ']', shiftKey: '}' },
          Quote: { key: "'", shiftKey: '"' },
          IntlBackslash: { key: '\\', shiftKey: '|' },
        }
        c(p, 'mac', { OSLeft: { key: 'Meta' }, OSRight: { key: 'Meta' } })
        var v = {
            Esc: 'Escape',
            Nonconvert: 'NonConvert',
            Left: 'ArrowLeft',
            Up: 'ArrowUp',
            Right: 'ArrowRight',
            Down: 'ArrowDown',
            Del: 'Delete',
            Menu: 'ContextMenu',
            MediaNextTrack: 'MediaTrackNext',
            MediaPreviousTrack: 'MediaTrackPrevious',
            SelectMedia: 'MediaSelect',
            HalfWidth: 'Hankaku',
            FullWidth: 'Zenkaku',
            RomanCharacters: 'Romaji',
            Crsel: 'CrSel',
            Exsel: 'ExSel',
            Zoom: 'ZoomToggle',
          },
          m = (function (e, t) {
            var n = {}
            return (
              Object.keys(e).forEach(function (r) {
                var i = e[r]
                t in i && (n[i[t]] = i)
              }),
              n
            )
          })(d, 'code')
        try {
          var g = t && 'location' in new KeyboardEvent('')
        } catch (b) {}
        function y(e) {
          var t = 'keyCode' in e ? e.keyCode : 'which' in e ? e.which : 0,
            n = (function () {
              if (g || 'keyLocation' in e) {
                var n = g ? e.location : e.keyLocation
                if (n && t in h[n]) return h[n][t]
              }
              return 'keyIdentifier' in e && e.keyIdentifier in f
                ? f[e.keyIdentifier]
                : t in d
                ? d[t]
                : null
            })()
          if (!n) return null
          var r = (function () {
            var t = p[n.code]
            return t ? (e.shiftKey && 'shiftKey' in t ? t.shiftKey : t.key) : n.code
          })()
          return { code: n.code, key: r, location: n.location, keyCap: n.keyCap }
        }
        'KeyboardEvent' in e &&
          'defineProperty' in Object &&
          (function () {
            function e(e, t, n) {
              t in e || Object.defineProperty(e, t, n)
            }
            if (
              (e(KeyboardEvent.prototype, 'code', {
                get: function () {
                  var e = y(this)
                  return e ? e.code : ''
                },
              }),
              'key' in KeyboardEvent.prototype)
            ) {
              var t = Object.getOwnPropertyDescriptor(KeyboardEvent.prototype, 'key')
              Object.defineProperty(KeyboardEvent.prototype, 'key', {
                get: function () {
                  var e = t.get.call(this)
                  return v.hasOwnProperty(e) ? v[e] : e
                },
              })
            }
            e(KeyboardEvent.prototype, 'key', {
              get: function () {
                var e = y(this)
                return e && 'key' in e ? e.key : 'Unidentified'
              },
            }),
              e(KeyboardEvent.prototype, 'location', {
                get: function () {
                  var e = y(this)
                  return e && 'location' in e ? e.location : n
                },
              }),
              e(KeyboardEvent.prototype, 'locale', {
                get: function () {
                  return ''
                },
              })
          })(),
          'queryKeyCap' in e.KeyboardEvent ||
            (e.KeyboardEvent.queryKeyCap = function (e, t) {
              if (((e = String(e)), !m.hasOwnProperty(e))) return 'Undefined'
              if (t && 'en-us' !== String(t).toLowerCase()) throw Error('Unsupported locale')
              var n = m[e]
              return n.keyCap || n.code || 'Undefined'
            }),
          (e.identifyKey = function (e) {
            if (!('code' in e)) {
              var t = y(e)
              ;(e.code = t ? t.code : ''),
                (e.key = t && 'key' in t ? t.key : 'Unidentified'),
                (e.location =
                  'location' in e
                    ? e.location
                    : 'keyLocation' in e
                    ? e.keyLocation
                    : t && 'location' in t
                    ? t.location
                    : n),
                (e.locale = '')
            }
          })
      })(window)
    },
    3386: function (e) {
      e.exports = AFRAME.registerComponent('checkpoint-controls', {
        schema: {
          enabled: { default: !0 },
          mode: { default: 'teleport', oneOf: ['teleport', 'animate'] },
          animateSpeed: { default: 3 },
        },
        init: function () {
          ;(this.active = !0),
            (this.checkpoint = null),
            (this.isNavMeshConstrained = !1),
            (this.offset = new THREE.Vector3()),
            (this.position = new THREE.Vector3()),
            (this.targetPosition = new THREE.Vector3())
        },
        play: function () {
          this.active = !0
        },
        pause: function () {
          this.active = !1
        },
        setCheckpoint: function (e) {
          const t = this.el
          this.active &&
            this.checkpoint !== e &&
            (this.checkpoint && t.emit('navigation-end', { checkpoint: this.checkpoint }),
            (this.checkpoint = e),
            this.sync(),
            this.position.distanceTo(this.targetPosition) < 0.1
              ? (this.checkpoint = null)
              : (t.emit('navigation-start', { checkpoint: e }),
                'teleport' === this.data.mode &&
                  (this.el.setAttribute('position', this.targetPosition),
                  (this.checkpoint = null),
                  t.emit('navigation-end', { checkpoint: e }),
                  t.components['movement-controls'].updateNavLocation())))
        },
        isVelocityActive: function () {
          return !(!this.active || !this.checkpoint)
        },
        getVelocity: function () {
          if (!this.active) return
          const e = this.data,
            t = this.offset,
            n = this.position,
            r = this.targetPosition,
            i = this.checkpoint
          return (
            this.sync(),
            n.distanceTo(r) < 0.1
              ? ((this.checkpoint = null),
                this.el.emit('navigation-end', { checkpoint: i }),
                t.set(0, 0, 0))
              : (t.setLength(e.animateSpeed), t)
          )
        },
        sync: function () {
          const e = this.offset,
            t = this.position,
            n = this.targetPosition
          t.copy(this.el.getAttribute('position')),
            this.checkpoint.object3D.getWorldPosition(n),
            n.add(this.checkpoint.components.checkpoint.getOffset()),
            e.copy(n).sub(t)
        },
      })
    },
    5062: function (e, t, n) {
      const r = n(6453),
        i = n(4379),
        o = 0.2,
        a = 'left',
        s = 'right',
        u = 1,
        l = 2
      e.exports = AFRAME.registerComponent('gamepad-controls', {
        GamepadButton: r,
        schema: {
          enabled: { default: !0 },
          camera: { default: '[camera]', type: 'selector' },
          rotationSensitivity: { default: 2 },
        },
        init: function () {
          const e = this.el.sceneEl
          ;(this.system = e.systems['tracked-controls-webxr'] || { controllers: [] }),
            (this.prevTime = window.performance.now()),
            (this.buttons = {})
          const t = this.el.object3D.rotation
          ;(this.pitch = new THREE.Object3D()),
            (this.pitch.rotation.x = THREE.Math.degToRad(t.x)),
            (this.yaw = new THREE.Object3D()),
            (this.yaw.position.y = 10),
            (this.yaw.rotation.y = THREE.Math.degToRad(t.y)),
            this.yaw.add(this.pitch),
            (this._lookVector = new THREE.Vector2()),
            (this._moveVector = new THREE.Vector2()),
            (this._dpadVector = new THREE.Vector2()),
            e.addBehavior(this)
        },
        update: function () {
          this.tick()
        },
        tick: function (e, t) {
          this.updateButtonState(), this.updateRotation(t)
        },
        remove: function () {},
        isVelocityActive: function () {
          if (!this.data.enabled || !this.isConnected()) return !1
          const e = this._dpadVector,
            t = this._moveVector
          this.getDpad(e), this.getJoystick(u, t)
          const n = e.x || t.x,
            r = e.y || t.y
          return Math.abs(n) > o || Math.abs(r) > o
        },
        getVelocityDelta: function () {
          const e = this._dpadVector,
            t = this._moveVector
          this.getDpad(e), this.getJoystick(u, t)
          const n = e.x || t.x,
            r = e.y || t.y,
            i = new THREE.Vector3()
          return Math.abs(n) > o && (i.x += n), Math.abs(r) > o && (i.z += r), i
        },
        isRotationActive: function () {
          if (!this.data.enabled || !this.isConnected()) return !1
          const e = this._lookVector
          return this.getJoystick(l, e), Math.abs(e.x) > o || Math.abs(e.y) > o
        },
        updateRotation: function (e) {
          if (!this.isRotationActive()) return
          const t = this.data,
            n = this.yaw,
            r = this.pitch,
            i = t.camera.components['look-controls'],
            a = i && i.pitchObject && i.yawObject
          a && (r.rotation.copy(i.pitchObject.rotation), n.rotation.copy(i.yawObject.rotation))
          const s = this._lookVector
          this.getJoystick(l, s),
            Math.abs(s.x) <= o && (s.x = 0),
            Math.abs(s.y) <= o && (s.y = 0),
            s.multiplyScalar((t.rotationSensitivity * e) / 1e3),
            (n.rotation.y -= s.x),
            (r.rotation.x -= s.y),
            (r.rotation.x = Math.max(-Math.PI / 2, Math.min(Math.PI / 2, r.rotation.x))),
            t.camera.object3D.rotation.set(r.rotation.x, n.rotation.y, 0),
            a && (i.pitchObject.rotation.copy(r.rotation), i.yawObject.rotation.copy(n.rotation))
        },
        updateButtonState: function () {
          const e = this.getGamepad(s)
          if (this.data.enabled && e)
            for (var t = 0; t < e.buttons.length; t++)
              e.buttons[t].pressed && !this.buttons[t]
                ? this.emit(new i('gamepadbuttondown', t, e.buttons[t]))
                : !e.buttons[t].pressed &&
                  this.buttons[t] &&
                  this.emit(new i('gamepadbuttonup', t, e.buttons[t])),
                (this.buttons[t] = e.buttons[t].pressed)
          else Object.keys(this.buttons) && (this.buttons = {})
        },
        emit: function (e) {
          this.el.emit(e.type, e), this.el.emit(e.type + ':' + e.index, new i(e.type, e.index, e))
        },
        getGamepad: (function () {
          const e = [],
            t = []
          return function (n) {
            const r = this.el.sceneEl.components['proxy-controls'],
              i = r && r.isConnected() && r.getGamepad(0)
            if (i) return i
            e.length = 0
            for (let t = 0; t < this.system.controllers.length; t++) {
              const r = this.system.controllers[t],
                i = r ? r.gamepad : null
              if ((e.push(i), i && i.handedness === n)) return i
            }
            const o = navigator.getGamepads ? navigator.getGamepads() : t
            for (let e = 0; e < o.length; e++) {
              const t = o[e]
              if (t && t.hand === n) return t
            }
            return e[0] || o[0]
          }
        })(),
        getButton: function (e) {
          return this.getGamepad(s).buttons[e]
        },
        getAxis: function (e) {
          return this.getGamepad(e > 1 ? s : a).axes[e]
        },
        getJoystick: function (e, t) {
          const n = this.getGamepad(e === u ? a : s)
          if ('xr-standard' === n.mapping)
            switch (e) {
              case u:
                return t.set(n.axes[2], n.axes[3])
              case l:
                return t.set(n.axes[0], n.axes[1])
            }
          else
            switch (e) {
              case u:
                return t.set(n.axes[0], n.axes[1])
              case l:
                return t.set(n.axes[2], n.axes[3])
            }
          throw new Error('Unexpected joystick index "%d".', e)
        },
        getDpad: function (e) {
          const t = this.getGamepad(a)
          return t.buttons[r.DPAD_RIGHT]
            ? e.set(
                (t.buttons[r.DPAD_RIGHT].pressed ? 1 : 0) +
                  (t.buttons[r.DPAD_LEFT].pressed ? -1 : 0),
                (t.buttons[r.DPAD_UP].pressed ? -1 : 0) + (t.buttons[r.DPAD_DOWN].pressed ? 1 : 0),
              )
            : e.set(0, 0)
        },
        isConnected: function () {
          const e = this.getGamepad(a)
          return !(!e || !e.connected)
        },
        getID: function () {
          return this.getGamepad(a).id
        },
      })
    },
    2406: function (e, t, n) {
      n(3386), n(5062), n(2250), n(9048), n(3819), n(9893)
    },
    2250: function (e, t, n) {
      n(7454)
      const r = window.KeyboardEvent
      e.exports = AFRAME.registerComponent('keyboard-controls', {
        schema: { enabled: { default: !0 }, debug: { default: !1 } },
        init: function () {
          ;(this.dVelocity = new THREE.Vector3()),
            (this.localKeys = {}),
            (this.listeners = {
              keydown: this.onKeyDown.bind(this),
              keyup: this.onKeyUp.bind(this),
              blur: this.onBlur.bind(this),
            }),
            this.attachEventListeners()
        },
        isVelocityActive: function () {
          return this.data.enabled && !!Object.keys(this.getKeys()).length
        },
        getVelocityDelta: function () {
          const e = this.data,
            t = this.getKeys()
          return (
            this.dVelocity.set(0, 0, 0),
            e.enabled &&
              ((t.KeyW || t.ArrowUp) && (this.dVelocity.z -= 1),
              (t.KeyA || t.ArrowLeft) && (this.dVelocity.x -= 1),
              (t.KeyS || t.ArrowDown) && (this.dVelocity.z += 1),
              (t.KeyD || t.ArrowRight) && (this.dVelocity.x += 1)),
            this.dVelocity.clone()
          )
        },
        play: function () {
          this.attachEventListeners()
        },
        pause: function () {
          this.removeEventListeners()
        },
        remove: function () {
          this.pause()
        },
        attachEventListeners: function () {
          window.addEventListener('keydown', this.listeners.keydown, !1),
            window.addEventListener('keyup', this.listeners.keyup, !1),
            window.addEventListener('blur', this.listeners.blur, !1)
        },
        removeEventListeners: function () {
          window.removeEventListener('keydown', this.listeners.keydown),
            window.removeEventListener('keyup', this.listeners.keyup),
            window.removeEventListener('blur', this.listeners.blur)
        },
        onKeyDown: function (e) {
          AFRAME.utils.shouldCaptureKeyEvent(e) && ((this.localKeys[e.code] = !0), this.emit(e))
        },
        onKeyUp: function (e) {
          AFRAME.utils.shouldCaptureKeyEvent(e) && (delete this.localKeys[e.code], this.emit(e))
        },
        onBlur: function () {
          for (let e in this.localKeys) this.localKeys.hasOwnProperty(e) && delete this.localKeys[e]
        },
        emit: function (e) {
          '__keyboard-controls-proxy' in e && this.el.emit(e.type, e),
            this.el.emit(e.type + ':' + e.code, new r(e.type, e)),
            this.data.debug && console.log(e.type + ':' + e.code)
        },
        isPressed: function (e) {
          return e in this.getKeys()
        },
        getKeys: function () {
          return this.isProxied()
            ? this.el.sceneEl.components['proxy-controls'].getKeyboard()
            : this.localKeys
        },
        isProxied: function () {
          const e = this.el.sceneEl.components['proxy-controls']
          return e && e.isConnected()
        },
      })
    },
    3819: function (e) {
      const t = '-controls'
      e.exports = AFRAME.registerComponent('movement-controls', {
        dependencies: ['rotation'],
        schema: {
          enabled: { default: !0 },
          controls: { default: ['gamepad', 'trackpad', 'keyboard', 'touch'] },
          speed: { default: 0.3, min: 0 },
          fly: { default: !1 },
          constrainToNavMesh: { default: !1 },
          camera: { default: '[movement-controls] [camera]', type: 'selector' },
        },
        init: function () {
          const e = this.el
          ;(this.velocityCtrl = null),
            (this.velocity = new THREE.Vector3()),
            (this.heading = new THREE.Quaternion()),
            (this.navGroup = null),
            (this.navNode = null),
            e.sceneEl.hasLoaded
              ? this.injectControls()
              : e.sceneEl.addEventListener('loaded', this.injectControls.bind(this))
        },
        update: function (e) {
          const t = this.el,
            n = this.data,
            r = t.sceneEl.systems.nav
          t.sceneEl.hasLoaded && this.injectControls(),
            r &&
              n.constrainToNavMesh !== e.constrainToNavMesh &&
              (n.constrainToNavMesh ? r.addAgent(this) : r.removeAgent(this))
        },
        injectControls: function () {
          const e = this.data
          var n
          for (let r = 0; r < e.controls.length; r++)
            (n = e.controls[r] + t), this.el.components[n] || this.el.setAttribute(n, '')
        },
        updateNavLocation: function () {
          ;(this.navGroup = null), (this.navNode = null)
        },
        tick: (function () {
          const e = new THREE.Vector3(),
            t = new THREE.Vector3(),
            n = new THREE.Vector3()
          return function (r, i) {
            if (!i) return
            const o = this.el,
              a = this.data
            if (!a.enabled) return
            this.updateVelocityCtrl()
            const s = this.velocityCtrl,
              u = this.velocity
            if (s)
              if (
                (i / 1e3 > 0.2 ? u.set(0, 0, 0) : this.updateVelocity(i),
                a.constrainToNavMesh && !1 !== s.isNavMeshConstrained)
              ) {
                if (u.lengthSq() < 1e-5) return
                e.copy(o.object3D.position),
                  t
                    .copy(u)
                    .multiplyScalar(i / 1e3)
                    .add(e)
                const r = o.sceneEl.systems.nav
                ;(this.navGroup = null === this.navGroup ? r.getGroup(e) : this.navGroup),
                  (this.navNode = this.navNode || r.getNode(e, this.navGroup)),
                  (this.navNode = r.clampStep(e, t, this.navGroup, this.navNode, n)),
                  o.object3D.position.copy(n)
              } else
                o.hasAttribute('velocity')
                  ? o.setAttribute('velocity', u)
                  : ((o.object3D.position.x += (u.x * i) / 1e3),
                    (o.object3D.position.y += (u.y * i) / 1e3),
                    (o.object3D.position.z += (u.z * i) / 1e3))
          }
        })(),
        updateVelocityCtrl: function () {
          const e = this.data
          if (e.enabled) {
            for (let n = 0, r = e.controls.length; n < r; n++) {
              const r = this.el.components[e.controls[n] + t]
              if (r && r.isVelocityActive()) return void (this.velocityCtrl = r)
            }
            this.velocityCtrl = null
          }
        },
        updateVelocity: (function () {
          const e = new THREE.Vector2(),
            t = new THREE.Quaternion()
          return function (n) {
            let r
            const i = this.el,
              o = this.velocityCtrl,
              a = this.velocity,
              s = this.data
            if (o) {
              if (!o.getVelocityDelta) {
                if (o.getVelocity) return void a.copy(o.getVelocity())
                if (o.getPositionDelta)
                  return void a.copy(o.getPositionDelta(n).multiplyScalar(1e3 / n))
                throw new Error('Incompatible movement controls: ', o)
              }
              r = o.getVelocityDelta(n)
            }
            if (
              (i.hasAttribute('velocity') &&
                !s.constrainToNavMesh &&
                a.copy(this.el.getAttribute('velocity')),
              r && s.enabled)
            ) {
              const n = s.camera
              t.copy(n.object3D.quaternion),
                t.premultiply(i.object3D.quaternion),
                r.applyQuaternion(t)
              const o = r.length()
              s.fly
                ? (a.copy(r), a.multiplyScalar(16.66667 * this.data.speed))
                : (e.set(r.x, r.z),
                  e.setLength(o * this.data.speed * 16.66667),
                  (a.x = e.x),
                  (a.z = e.y))
            }
          }
        })(),
      })
    },
    9048: function (e) {
      e.exports = AFRAME.registerComponent('touch-controls', {
        schema: { enabled: { default: !0 }, reverseEnabled: { default: !0 } },
        init: function () {
          ;(this.dVelocity = new THREE.Vector3()), this.bindMethods(), (this.direction = 0)
        },
        play: function () {
          this.addEventListeners()
        },
        pause: function () {
          this.removeEventListeners(), this.dVelocity.set(0, 0, 0)
        },
        remove: function () {
          this.pause()
        },
        addEventListeners: function () {
          const e = this.el.sceneEl,
            t = e.canvas
          t
            ? (t.addEventListener('touchstart', this.onTouchStart),
              t.addEventListener('touchend', this.onTouchEnd))
            : e.addEventListener('render-target-loaded', this.addEventListeners.bind(this))
        },
        removeEventListeners: function () {
          const e = this.el.sceneEl && this.el.sceneEl.canvas
          e &&
            (e.removeEventListener('touchstart', this.onTouchStart),
            e.removeEventListener('touchend', this.onTouchEnd))
        },
        isVelocityActive: function () {
          return this.data.enabled && !!this.direction
        },
        getVelocityDelta: function () {
          return (this.dVelocity.z = this.direction), this.dVelocity.clone()
        },
        bindMethods: function () {
          ;(this.onTouchStart = this.onTouchStart.bind(this)),
            (this.onTouchEnd = this.onTouchEnd.bind(this))
        },
        onTouchStart: function (e) {
          ;(this.direction = -1),
            this.data.reverseEnabled && 2 === e.touches.length && (this.direction = 1),
            e.preventDefault()
        },
        onTouchEnd: function (e) {
          ;(this.direction = 0), e.preventDefault()
        },
      })
    },
    9893: function (e) {
      e.exports = AFRAME.registerComponent('trackpad-controls', {
        schema: {
          enabled: { default: !0 },
          enableNegX: { default: !0 },
          enablePosX: { default: !0 },
          enableNegZ: { default: !0 },
          enablePosZ: { default: !0 },
          mode: { default: 'touch', oneOf: ['swipe', 'touch', 'press'] },
        },
        init: function () {
          ;(this.dVelocity = new THREE.Vector3()),
            (this.zVel = 0),
            (this.xVel = 0),
            this.bindMethods()
        },
        play: function () {
          this.addEventListeners()
        },
        pause: function () {
          this.removeEventListeners(), this.dVelocity.set(0, 0, 0)
        },
        remove: function () {
          this.pause()
        },
        addEventListeners: function () {
          const e = this.data,
            t = this.el.sceneEl
          switch ((t.addEventListener('axismove', this.onAxisMove), e.mode)) {
            case 'swipe':
            case 'touch':
              t.addEventListener('trackpadtouchstart', this.onTouchStart),
                t.addEventListener('trackpadtouchend', this.onTouchEnd)
              break
            case 'press':
              t.addEventListener('trackpaddown', this.onTouchStart),
                t.addEventListener('trackpadup', this.onTouchEnd)
          }
        },
        removeEventListeners: function () {
          const e = this.el.sceneEl
          e.removeEventListener('axismove', this.onAxisMove),
            e.removeEventListener('trackpadtouchstart', this.onTouchStart),
            e.removeEventListener('trackpadtouchend', this.onTouchEnd),
            e.removeEventListener('trackpaddown', this.onTouchStart),
            e.removeEventListener('trackpadup', this.onTouchEnd)
        },
        isVelocityActive: function () {
          return this.data.enabled && this.isMoving
        },
        getVelocityDelta: function () {
          return (
            (this.dVelocity.z = this.isMoving ? -this.zVel : 1),
            (this.dVelocity.x = this.isMoving ? this.xVel : 1),
            this.dVelocity.clone()
          )
        },
        bindMethods: function () {
          ;(this.onTouchStart = this.onTouchStart.bind(this)),
            (this.onTouchEnd = this.onTouchEnd.bind(this)),
            (this.onAxisMove = this.onAxisMove.bind(this))
        },
        onTouchStart: function (e) {
          switch (this.data.mode) {
            case 'swipe':
              ;(this.canRecordAxis = !0), (this.startingAxisData = [])
              break
            case 'touch':
            case 'press':
              this.isMoving = !0
          }
          e.preventDefault()
        },
        onTouchEnd: function (e) {
          'swipe' == this.data.mode && (this.startingAxisData = []),
            (this.isMoving = !1),
            e.preventDefault()
        },
        onAxisMove: function (e) {
          switch (this.data.mode) {
            case 'swipe':
              return this.handleSwipeAxis(e)
            case 'touch':
            case 'press':
              return this.handleTouchAxis(e)
          }
        },
        handleSwipeAxis: function (e) {
          const t = this.data,
            n = e.detail.axis
          if (
            (0 === this.startingAxisData.length &&
              this.canRecordAxis &&
              ((this.canRecordAxis = !1),
              (this.startingAxisData[0] = n[0]),
              (this.startingAxisData[1] = n[1])),
            this.startingAxisData.length > 0)
          ) {
            let e = 0,
              r = 0
            t.enableNegX && n[0] < this.startingAxisData[0] && (e = -1),
              t.enablePosX && n[0] > this.startingAxisData[0] && (e = 1),
              t.enablePosZ && n[1] > this.startingAxisData[1] && (r = -1),
              t.enableNegZ && n[1] < this.startingAxisData[1] && (r = 1)
            const i = Math.abs(this.startingAxisData[1] - n[1])
            Math.abs(this.startingAxisData[0] - n[0]) > i
              ? ((this.zVel = 0), (this.xVel = e), (this.isMoving = !0))
              : ((this.xVel = 0), (this.zVel = r), (this.isMoving = !0))
          }
        },
        handleTouchAxis: function (e) {
          const t = this.data,
            n = e.detail.axis
          let r = 0,
            i = 0
          t.enableNegX && n[0] < 0 && (r = -1),
            t.enablePosX && n[0] > 0 && (r = 1),
            t.enablePosZ && n[1] > 0 && (i = -1),
            t.enableNegZ && n[1] < 0 && (i = 1),
            Math.abs(n[0]) > Math.abs(n[1])
              ? ((this.zVel = 0), (this.xVel = r))
              : ((this.xVel = 0), (this.zVel = i))
        },
      })
    },
    6591: function (e) {
      const t = { once: THREE.LoopOnce, repeat: THREE.LoopRepeat, pingpong: THREE.LoopPingPong }
      function n(e) {
        return e.replace(/[|\\{}()[\]^$+*?.]/g, '\\$&')
      }
      e.exports = AFRAME.registerComponent('animation-mixer', {
        schema: {
          clip: { default: '*' },
          duration: { default: 0 },
          clampWhenFinished: { default: !1, type: 'boolean' },
          crossFadeDuration: { default: 0 },
          loop: { default: 'repeat', oneOf: Object.keys(t) },
          repetitions: { default: 1 / 0, min: 0 },
          timeScale: { default: 1 },
        },
        init: function () {
          ;(this.model = null), (this.mixer = null), (this.activeActions = [])
          const e = this.el.getObject3D('mesh')
          e
            ? this.load(e)
            : this.el.addEventListener('model-loaded', (e) => {
                this.load(e.detail.model)
              })
        },
        load: function (e) {
          const t = this.el
          ;(this.model = e),
            (this.mixer = new THREE.AnimationMixer(e)),
            this.mixer.addEventListener('loop', (e) => {
              t.emit('animation-loop', { action: e.action, loopDelta: e.loopDelta })
            }),
            this.mixer.addEventListener('finished', (e) => {
              t.emit('animation-finished', { action: e.action, direction: e.direction })
            }),
            this.data.clip && this.update({})
        },
        remove: function () {
          this.mixer && this.mixer.stopAllAction()
        },
        update: function (e) {
          if (!e) return
          const n = this.data,
            r = AFRAME.utils.diff(n, e)
          if ('clip' in r) return this.stopAction(), void (n.clip && this.playAction())
          this.activeActions.forEach((e) => {
            'duration' in r && n.duration && e.setDuration(n.duration),
              'clampWhenFinished' in r && (e.clampWhenFinished = n.clampWhenFinished),
              ('loop' in r || 'repetitions' in r) && e.setLoop(t[n.loop], n.repetitions),
              'timeScale' in r && e.setEffectiveTimeScale(n.timeScale)
          })
        },
        stopAction: function () {
          const e = this.data
          for (let t = 0; t < this.activeActions.length; t++)
            e.crossFadeDuration
              ? this.activeActions[t].fadeOut(e.crossFadeDuration)
              : this.activeActions[t].stop()
          this.activeActions.length = 0
        },
        playAction: function () {
          if (!this.mixer) return
          const e = this.model,
            r = this.data,
            i = e.animations || (e.geometry || {}).animations || []
          if (!i.length) return
          const o = ((a = r.clip), new RegExp('^' + a.split(/\*+/).map(n).join('.*') + '$'))
          var a
          for (let n, s = 0; (n = i[s]); s++)
            if (n.name.match(o)) {
              const i = this.mixer.clipAction(n, e)
              ;(i.enabled = !0),
                (i.clampWhenFinished = r.clampWhenFinished),
                r.duration && i.setDuration(r.duration),
                1 !== r.timeScale && i.setEffectiveTimeScale(r.timeScale),
                i.setLoop(t[r.loop], r.repetitions).fadeIn(r.crossFadeDuration).play(),
                this.activeActions.push(i)
            }
        },
        tick: function (e, t) {
          this.mixer && !isNaN(t) && this.mixer.update(t / 1e3)
        },
      })
    },
    2290: function (e, t, n) {
      ;(THREE.ColladaLoader = n(203)),
        (e.exports.Component = AFRAME.registerComponent('collada-model-legacy', {
          schema: { type: 'asset' },
          init: function () {
            ;(this.model = null), (this.loader = new THREE.ColladaLoader())
          },
          update: function () {
            var e = this,
              t = this.el,
              n = this.data,
              r = this.el.sceneEl.systems.renderer
            n &&
              (this.remove(),
              this.loader.load(n, function (n) {
                ;(e.model = n.scene),
                  e.model.traverse(function (e) {
                    if (e.isMesh) {
                      var t = e.material
                      t.color && r.applyColorCorrection(t.color),
                        t.map && r.applyColorCorrection(t.map),
                        t.emissive && r.applyColorCorrection(t.emissive),
                        t.emissiveMap && r.applyColorCorrection(t.emissiveMap)
                    }
                  }),
                  t.setObject3D('mesh', e.model),
                  t.emit('model-loaded', { format: 'collada', model: e.model })
              }))
          },
          remove: function () {
            this.model && this.el.removeObject3D('mesh')
          },
        }))
    },
    5310: function (e, t, n) {
      ;(THREE.FBXLoader = n(9434)),
        (e.exports = AFRAME.registerComponent('fbx-model', {
          schema: { src: { type: 'asset' }, crossorigin: { default: '' } },
          init: function () {
            this.model = null
          },
          update: function () {
            const e = this.data
            if (!e.src) return
            this.remove()
            const t = new THREE.FBXLoader()
            e.crossorigin && t.setCrossOrigin(e.crossorigin), t.load(e.src, this.load.bind(this))
          },
          load: function (e) {
            ;(this.model = e),
              this.el.setObject3D('mesh', e),
              this.el.emit('model-loaded', { format: 'fbx', model: e })
          },
          remove: function () {
            this.model && this.el.removeObject3D('mesh')
          },
        }))
    },
    8837: function (e, t, n) {
      const r = n(4657)(),
        i = (function () {
          let e
          return function () {
            return (
              (e =
                e ||
                r(
                  'https://cdn.jsdelivr.net/gh/mrdoob/three.js@r86/examples/js/loaders/GLTFLoader.js',
                )),
              e
            )
          }
        })()
      e.exports = AFRAME.registerComponent('gltf-model-legacy', {
        schema: { type: 'model' },
        init: function () {
          ;(this.model = null),
            (this.loader = null),
            (this.loaderPromise = i().then(() => {
              ;(this.loader = new THREE.GLTFLoader()), this.loader.setCrossOrigin('Anonymous')
            }))
        },
        update: function () {
          const e = this,
            t = this.el,
            n = this.data
          n &&
            (this.remove(),
            this.loaderPromise.then(() => {
              this.loader.load(n, function (n) {
                ;(e.model = n.scene),
                  (e.model.animations = n.animations),
                  t.setObject3D('mesh', e.model),
                  t.emit('model-loaded', { format: 'gltf', model: e.model })
              })
            }))
        },
        remove: function () {
          this.model && this.el.removeObject3D('mesh')
        },
      })
    },
    9874: function (e, t, n) {
      n(6591), n(2290), n(5310), n(8837), n(171)
    },
    171: function (e) {
      e.exports = AFRAME.registerComponent('object-model', {
        schema: { src: { type: 'asset' }, crossorigin: { default: '' } },
        init: function () {
          this.model = null
        },
        update: function () {
          let e
          const t = this.data
          t.src &&
            (this.remove(),
            (e = new THREE.ObjectLoader()),
            t.crossorigin && e.setCrossOrigin(t.crossorigin),
            e.load(t.src, (e) => {
              e.traverse((e) => {
                e instanceof THREE.SkinnedMesh &&
                  e.material &&
                  (e.material.skinning = !!((e.geometry && e.geometry.bones) || []).length)
              }),
                this.load(e)
            }))
        },
        load: function (e) {
          ;(this.model = e),
            this.el.setObject3D('mesh', e),
            this.el.emit('model-loaded', { format: 'json', model: e })
        },
        remove: function () {
          this.model && this.el.removeObject3D('mesh')
        },
      })
    },
    7642: function (e) {
      e.exports = AFRAME.registerComponent('checkpoint', {
        schema: { offset: { default: { x: 0, y: 0, z: 0 }, type: 'vec3' } },
        init: function () {
          ;(this.active = !1),
            (this.targetEl = null),
            (this.fire = this.fire.bind(this)),
            (this.offset = new THREE.Vector3())
        },
        update: function () {
          this.offset.copy(this.data.offset)
        },
        play: function () {
          this.el.addEventListener('click', this.fire)
        },
        pause: function () {
          this.el.removeEventListener('click', this.fire)
        },
        remove: function () {
          this.pause()
        },
        fire: function () {
          const e = this.el.sceneEl.querySelector('[checkpoint-controls]')
          if (!e) throw new Error('No `checkpoint-controls` component found.')
          e.components['checkpoint-controls'].setCheckpoint(this.el)
        },
        getOffset: function () {
          return this.offset.copy(this.data.offset)
        },
      })
    },
    4795: function (e) {
      function t(e, t, n, r) {
        e &&
          ((t = t || []),
          e.traverse((e) => {
            if (!e.isMesh) return
            var i
            ;((i = e.material)
              ? Array.isArray(i)
                ? i
                : i.materials
                ? i.materials
                : [i]
              : []
            ).forEach((e) => {
              ;(e && !('envMap' in e)) ||
                (t.length && -1 === t.indexOf(e.name)) ||
                ((e.envMap = n), (e.reflectivity = r), (e.needsUpdate = !0))
            })
          }))
      }
      e.exports = AFRAME.registerComponent('cube-env-map', {
        multiple: !0,
        schema: {
          path: { default: '' },
          extension: { default: 'jpg', oneOf: ['jpg', 'png'] },
          format: { default: 'RGBFormat', oneOf: ['RGBFormat', 'RGBAFormat'] },
          enableBackground: { default: !1 },
          reflectivity: { default: 1, min: 0, max: 1 },
          materials: { default: [] },
        },
        init: function () {
          const e = this.data
          ;(this.texture = new THREE.CubeTextureLoader().load([
            e.path + 'posx.' + e.extension,
            e.path + 'negx.' + e.extension,
            e.path + 'posy.' + e.extension,
            e.path + 'negy.' + e.extension,
            e.path + 'posz.' + e.extension,
            e.path + 'negz.' + e.extension,
          ])),
            (this.texture.format = THREE[e.format]),
            (this.object3dsetHandler = () => {
              const e = this.el.getObject3D('mesh'),
                n = this.data
              t(e, n.materials, this.texture, n.reflectivity)
            }),
            this.el.addEventListener('object3dset', this.object3dsetHandler)
        },
        update: function (e) {
          const n = this.data,
            r = this.el.getObject3D('mesh')
          let i = [],
            o = []
          if (
            (n.materials.length &&
              (e.materials
                ? ((i = n.materials.filter((t) => !e.materials.includes(t))),
                  (o = e.materials.filter((e) => !n.materials.includes(e))))
                : (i = n.materials)),
            i.length && t(r, i, this.texture, n.reflectivity),
            o.length && t(r, o, null, 1),
            e.materials && n.reflectivity !== e.reflectivity)
          ) {
            const i = n.materials.filter((t) => e.materials.includes(t))
            i.length && t(r, i, this.texture, n.reflectivity)
          }
          this.data.enableBackground && !e.enableBackground
            ? this.setBackground(this.texture)
            : !this.data.enableBackground && e.enableBackground && this.setBackground(null)
        },
        remove: function () {
          this.el.removeEventListener('object3dset', this.object3dsetHandler)
          const e = this.el.getObject3D('mesh'),
            n = this.data
          t(e, n.materials, null, 1), n.enableBackground && this.setBackground(null)
        },
        setBackground: function (e) {
          this.el.sceneEl.object3D.background = e
        },
      })
    },
    9511: function (e) {
      e.exports = AFRAME.registerComponent('grab', {
        init: function () {
          ;(this.system = this.el.sceneEl.systems.physics),
            (this.GRABBED_STATE = 'grabbed'),
            (this.grabbing = !1),
            (this.hitEl = null),
            (this.physics = this.el.sceneEl.systems.physics),
            (this.constraint = null),
            (this.onHit = this.onHit.bind(this)),
            (this.onGripOpen = this.onGripOpen.bind(this)),
            (this.onGripClose = this.onGripClose.bind(this))
        },
        play: function () {
          const e = this.el
          e.addEventListener('hit', this.onHit),
            e.addEventListener('gripdown', this.onGripClose),
            e.addEventListener('gripup', this.onGripOpen),
            e.addEventListener('trackpaddown', this.onGripClose),
            e.addEventListener('trackpadup', this.onGripOpen),
            e.addEventListener('triggerdown', this.onGripClose),
            e.addEventListener('triggerup', this.onGripOpen)
        },
        pause: function () {
          const e = this.el
          e.removeEventListener('hit', this.onHit),
            e.removeEventListener('gripdown', this.onGripClose),
            e.removeEventListener('gripup', this.onGripOpen),
            e.removeEventListener('trackpaddown', this.onGripClose),
            e.removeEventListener('trackpadup', this.onGripOpen),
            e.removeEventListener('triggerdown', this.onGripClose),
            e.removeEventListener('triggerup', this.onGripOpen)
        },
        onGripClose: function () {
          this.grabbing = !0
        },
        onGripOpen: function () {
          const e = this.hitEl
          ;(this.grabbing = !1),
            e &&
              (e.removeState(this.GRABBED_STATE),
              (this.hitEl = void 0),
              this.system.removeConstraint(this.constraint),
              (this.constraint = null))
        },
        onHit: function (e) {
          const t = e.detail.el
          t &&
            !t.is(this.GRABBED_STATE) &&
            this.grabbing &&
            !this.hitEl &&
            (t.addState(this.GRABBED_STATE),
            (this.hitEl = t),
            (this.constraint = new CANNON.LockConstraint(this.el.body, t.body)),
            this.system.addConstraint(this.constraint))
        },
      })
    },
    9236: function (e, t, n) {
      n(7642), n(4795), n(9511), n(765), n(837), n(8310), n(8240), n(1790)
    },
    765: function (e) {
      e.exports = AFRAME.registerComponent('jump-ability', {
        dependencies: ['velocity'],
        schema: {
          on: { default: 'keydown:Space gamepadbuttondown:0' },
          playerHeight: { default: 1.764 },
          maxJumps: { default: 1 },
          distance: { default: 5 },
          debug: { default: !1 },
        },
        init: function () {
          ;(this.velocity = 0), (this.numJumps = 0)
          const e = this.beginJump.bind(this),
            t = this.data.on.split(' ')
          this.bindings = {}
          for (let n = 0; n < t.length; n++)
            (this.bindings[t[n]] = e), this.el.addEventListener(t[n], e)
          ;(this.bindings.collide = this.onCollide.bind(this)),
            this.el.addEventListener('collide', this.bindings.collide)
        },
        remove: function () {
          for (var e in this.bindings)
            this.bindings.hasOwnProperty(e) &&
              (this.el.removeEventListener(e, this.bindings[e]), delete this.bindings[e])
          this.el.removeEventListener('collide', this.bindings.collide),
            delete this.bindings.collide
        },
        beginJump: function () {
          if (this.numJumps < this.data.maxJumps) {
            const e = this.data,
              t = Math.sqrt(-2 * e.distance * -24.8),
              n = this.el.getAttribute('velocity')
            this.el.setAttribute('velocity', { x: n.x, y: t, z: n.z }),
              this.numJumps++,
              this.el.emit('jumpstart')
          }
        },
        onCollide: function () {
          this.numJumps > 0 && this.el.emit('jumpend'), (this.numJumps = 0)
        },
      })
    },
    837: function (e) {
      const t = 1e-6
      e.exports = AFRAME.registerComponent('kinematic-body', {
        dependencies: ['velocity'],
        schema: {
          mass: { default: 5 },
          radius: { default: 1.3 },
          linearDamping: { default: 0.05 },
          enableSlopes: { default: !0 },
          enableJumps: { default: !1 },
        },
        init: function () {
          ;(this.system = this.el.sceneEl.systems.physics), this.system.addComponent(this)
          const e = this.el,
            t = this.data,
            n = new CANNON.Vec3().copy(e.object3D.getWorldPosition(new THREE.Vector3()))
          ;(this.body = new CANNON.Body({
            material: this.system.getMaterial('staticMaterial'),
            position: n,
            mass: t.mass,
            linearDamping: t.linearDamping,
            fixedRotation: !0,
          })),
            this.body.addShape(new CANNON.Sphere(t.radius), new CANNON.Vec3(0, t.radius, 0)),
            (this.body.el = this.el),
            (this.el.body = this.body),
            this.system.addBody(this.body),
            e.hasAttribute('wasd-controls') &&
              console.warn(
                '[kinematic-body] Not compatible with wasd-controls, use movement-controls.',
              )
        },
        remove: function () {
          this.system.removeBody(this.body), this.system.removeComponent(this), delete this.el.body
        },
        beforeStep: function (e, t) {
          if (!t) return
          const n = this.el,
            r = this.data,
            i = this.body
          r.enableJumps || i.velocity.set(0, 0, 0), i.position.copy(n.getAttribute('position'))
        },
        step: (function () {
          const e = new THREE.Vector3(),
            n = new THREE.Vector3(),
            r = new THREE.Vector3(),
            i = new THREE.Vector3()
          return function (o, a) {
            if (!a) return
            let s,
              u,
              l = this.body,
              c = this.data,
              d = !1,
              f = -1 / 0,
              h = this.system.getContacts()
            ;(a = Math.min(a, 1e3 * this.system.data.maxInterval)),
              i.set(0, 0, 0),
              e.copy(this.el.getAttribute('velocity')),
              l.velocity.copy(e)
            for (var p, v = 0; (p = h[v]); v++)
              if (p.enabled) {
                if (l.id === p.bi.id) p.ni.negate(r)
                else {
                  if (l.id !== p.bj.id) continue
                  r.copy(p.ni)
                }
                ;(d = l.velocity.dot(r) < -t),
                  d && r.y <= 0.5
                    ? e.projectOnPlane(r)
                    : r.y > 0.5 &&
                      ((s =
                        l.id === p.bi.id
                          ? Math.abs(p.rj.y + p.bj.position.y)
                          : Math.abs(p.ri.y + p.bi.position.y)),
                      s > f && ((f = s), i.copy(r), (u = l.id === p.bi.id ? p.bj : p.bi)))
              }
            n.copy(e).normalize(),
              u && (!c.enableJumps || n.y < 0.5)
                ? (c.enableSlopes
                    ? i.y < 1 - t && i.copy(this.raycastToGround(u, i))
                    : i.set(0, 1, 0),
                  e.projectOnPlane(i))
                : this.system.driver.world &&
                  e.add(this.system.driver.world.gravity.scale((4 * a) / 1e3)),
              l.velocity.copy(e),
              this.el.setAttribute('velocity', l.velocity),
              this.el.setAttribute('position', l.position)
          }
        })(),
        raycastToGround: function (e, t) {
          let n,
            r,
            i = this.body.position,
            o = this.body.position.clone()
          return (
            (n = new CANNON.Ray(i, o)),
            n._updateDirection(),
            n.intersectBody(e),
            n.hasHit ? ((r = n.result.hitNormalWorld), Math.abs(r.y) > Math.abs(t.y) ? r : t) : t
          )
        },
      })
    },
    8310: function (e) {
      e.exports = AFRAME.registerComponent('mesh-smooth', {
        init: function () {
          this.el.addEventListener('model-loaded', (e) => {
            e.detail.model.traverse((e) => {
              e.isMesh && e.geometry.computeVertexNormals()
            })
          })
        },
      })
    },
    8240: function (e) {
      e.exports = AFRAME.registerComponent('normal-material', {
        init: function () {
          ;(this.material = new THREE.MeshNormalMaterial({ flatShading: !0 })),
            (this.applyMaterial = this.applyMaterial.bind(this)),
            this.el.addEventListener('object3dset', this.applyMaterial)
        },
        remove: function () {
          this.el.removeEventListener('object3dset', this.applyMaterial)
        },
        applyMaterial: function () {
          this.el.object3D.traverse((e) => {
            e.isMesh && (e.material = this.material)
          })
        },
      })
    },
    1790: function (e) {
      e.exports = AFRAME.registerComponent('sphere-collider', {
        schema: {
          objects: { default: '' },
          state: { default: 'collided' },
          radius: { default: 0.05 },
          watch: { default: !0 },
        },
        init: function () {
          ;(this.observer = null),
            (this.els = []),
            (this.collisions = []),
            (this.handleHit = this.handleHit.bind(this)),
            (this.handleHitEnd = this.handleHitEnd.bind(this))
        },
        remove: function () {
          this.pause()
        },
        play: function () {
          const e = this.el.sceneEl
          this.data.watch &&
            ((this.observer = new MutationObserver(this.update.bind(this, null))),
            this.observer.observe(e, { childList: !0, subtree: !0 }))
        },
        pause: function () {
          this.observer && (this.observer.disconnect(), (this.observer = null))
        },
        update: function () {
          const e = this.data
          let t
          ;(t = e.objects ? this.el.sceneEl.querySelectorAll(e.objects) : this.el.sceneEl.children),
            (this.els = Array.prototype.slice.call(t))
        },
        tick: (function () {
          const e = new THREE.Vector3(),
            t = new THREE.Vector3(),
            n = new THREE.Vector3(),
            r = new THREE.Vector3(),
            i = new THREE.Box3(),
            o = new Map()
          return function () {
            const a = this.el,
              s = this.data,
              u = a.getObject3D('mesh'),
              l = []
            let c
            var d
            u &&
              (o.clear(),
              a.object3D.getWorldPosition(e),
              a.object3D.getWorldScale(n),
              (c = s.radius * ((d = n), Math.max.apply(null, d.toArray()))),
              this.els.forEach(function (n) {
                let a, s, u, d
                if (!n.isEntity) return
                if (((s = n.getObject3D('mesh')), !s)) return
                if (
                  (i.setFromObject(s).getSize(r),
                  (d = Math.max(r.x, r.y, r.z) / 2),
                  (a = Math.sqrt(2 * d * d)),
                  i.getCenter(t),
                  !a)
                )
                  return
                ;(u = e.distanceTo(t)), u < a + c && (l.push(n), o.set(n, u))
              }),
              l.sort((e, t) => (o.get(e) > o.get(t) ? 1 : -1)).forEach(this.handleHit),
              0 === l.length && a.emit('hit', { el: null }),
              this.collisions.filter((e) => !o.has(e)).forEach(this.handleHitEnd),
              (this.collisions = l))
          }
        })(),
        handleHit: function (e) {
          e.emit('hit'), e.addState(this.data.state), this.el.emit('hit', { el: e })
        },
        handleHitEnd: function (e) {
          e.emit('hitend'), e.removeState(this.data.state), this.el.emit('hitend', { el: e })
        },
      })
    },
    2578: function (e, t, n) {
      n(8453), n(1250), n(1465)
    },
    1250: function (e) {
      e.exports = AFRAME.registerComponent('nav-agent', {
        schema: { destination: { type: 'vec3' }, active: { default: !1 }, speed: { default: 2 } },
        init: function () {
          ;(this.system = this.el.sceneEl.systems.nav),
            this.system.addAgent(this),
            (this.group = null),
            (this.path = []),
            (this.raycaster = new THREE.Raycaster())
        },
        remove: function () {
          this.system.removeAgent(this)
        },
        update: function () {
          this.path.length = 0
        },
        updateNavLocation: function () {
          ;(this.group = null), (this.path = [])
        },
        tick: (function () {
          const e = new THREE.Vector3(),
            t = new THREE.Vector3(),
            n = new THREE.Vector3()
          return function (r, i) {
            const o = this.el,
              a = this.data,
              s = this.raycaster,
              u = (a.speed * i) / 1e3
            if (!a.active) return
            if (!this.path.length) {
              const t = this.el.object3D.position
              ;(this.group = this.group || this.system.getGroup(t)),
                (this.path = this.system.getPath(t, e.copy(a.destination), this.group) || []),
                o.emit('navigation-start')
            }
            if (!this.path.length)
              return (
                console.warn('[nav] Unable to find path to %o.', a.destination),
                this.el.setAttribute('nav-agent', { active: !1 }),
                void o.emit('navigation-end')
              )
            const l = o.object3D.position,
              c = this.path[0]
            t.subVectors(c, l)
            let d
            if (t.length() < u) {
              if ((this.path.shift(), !this.path.length))
                return (
                  this.el.setAttribute('nav-agent', { active: !1 }), void o.emit('navigation-end')
                )
              n.copy(l), (d = this.path[0])
            } else n.copy(t.setLength(u)).add(l), (d = c)
            ;(d.y = l.y),
              o.object3D.lookAt(d),
              s.ray.origin.copy(n),
              (s.ray.origin.y += 1.5),
              (s.ray.direction.y = -1)
            const f = s.intersectObject(this.system.getNavMesh())
            f.length ? (t.subVectors(f[0].point, l), l.add(t.setLength(u))) : l.copy(n)
          }
        })(),
      })
    },
    8453: function (e) {
      e.exports = AFRAME.registerComponent('nav-mesh', {
        init: function () {
          ;(this.system = this.el.sceneEl.systems.nav),
            (this.hasLoadedNavMesh = !1),
            this.el.addEventListener('object3dset', this.loadNavMesh.bind(this))
        },
        play: function () {
          this.hasLoadedNavMesh || this.loadNavMesh()
        },
        loadNavMesh: function () {
          const e = this.el.getObject3D('mesh'),
            t = this.el.sceneEl.object3D
          if (!e) return
          let n
          if (
            (e.traverse((e) => {
              e.isMesh && (n = e)
            }),
            !n)
          )
            return
          const r = n.geometry.isBufferGeometry
            ? new THREE.Geometry().fromBufferGeometry(n.geometry)
            : n.geometry.clone()
          t.updateMatrixWorld(),
            r.applyMatrix(n.matrixWorld),
            this.system.setNavMeshGeometry(r),
            (this.hasLoadedNavMesh = !0)
        },
      })
    },
    1465: function (e, t, n) {
      const { Pathfinding: r } = n(6594),
        i = new r(),
        o = 'level'
      e.exports = AFRAME.registerSystem('nav', {
        init: function () {
          ;(this.navMesh = null), (this.agents = new Set())
        },
        setNavMeshGeometry: function (e) {
          ;(this.navMesh = new THREE.Mesh(e)),
            i.setZoneData(o, r.createZone(e)),
            Array.from(this.agents).forEach((e) => e.updateNavLocation())
        },
        getNavMesh: function () {
          return this.navMesh
        },
        addAgent: function (e) {
          this.agents.add(e)
        },
        removeAgent: function (e) {
          this.agents.delete(e)
        },
        getPath: function (e, t, n) {
          return this.navMesh ? i.findPath(e, t, o, n) : null
        },
        getGroup: function (e) {
          return this.navMesh ? i.getGroup(o, e) : null
        },
        getNode: function (e, t) {
          return this.navMesh ? i.getClosestNode(e, o, t, !0) : null
        },
        clampStep: function (e, t, n, r, a) {
          return this.navMesh
            ? r
              ? i.clampStep(e, t, r, o, n, a)
              : (a.copy(t), this.getNode(t, n))
            : (a.copy(t), null)
        },
      })
    },
    386: function (e) {
      e.exports = AFRAME.registerPrimitive('a-grid', {
        defaultComponents: {
          geometry: { primitive: 'plane', width: 75, height: 75 },
          rotation: { x: -90, y: 0, z: 0 },
          material: {
            src: 'url(https://cdn.jsdelivr.net/gh/donmccurdy/aframe-extras@v1.16.3/assets/grid.png)',
            repeat: '75 75',
          },
        },
        mappings: { width: 'geometry.width', height: 'geometry.height', src: 'material.src' },
      })
    },
    3535: function (e, t, n) {
      const r = n(3471),
        i = n(2667)
      ;(e.exports.Primitive = AFRAME.registerPrimitive('a-hexgrid', {
        defaultComponents: { hexgrid: {} },
        mappings: { src: 'hexgrid.src' },
      })),
        (e.exports.Component = AFRAME.registerComponent('hexgrid', {
          dependencies: ['material'],
          schema: { src: { type: 'asset' } },
          init: function () {
            const e = this.data
            e.src
              ? fetch(e.src)
                  .then((e) => e.json())
                  .then((e) => this.addMesh(e))
              : this.addMesh(i)
          },
          addMesh: function (e) {
            const t = new r.HexGrid()
            t.fromJSON(e)
            const n = new r.Board(t)
            n.generateTilemap(), this.el.setObject3D('mesh', n.group), this.addMaterial()
          },
          addMaterial: function () {
            const e = (this.el.components.material || {}).material
            e &&
              this.el.object3D.traverse((t) => {
                t.isMesh && (t.material = e)
              })
          },
          remove: function () {
            this.el.removeObject3D('mesh')
          },
        }))
    },
    9307: function (e) {
      ;(e.exports.Primitive = AFRAME.registerPrimitive('a-ocean', {
        defaultComponents: { ocean: {}, rotation: { x: -90, y: 0, z: 0 } },
        mappings: {
          width: 'ocean.width',
          depth: 'ocean.depth',
          density: 'ocean.density',
          amplitude: 'ocean.amplitude',
          amplitudeVariance: 'ocean.amplitudeVariance',
          speed: 'ocean.speed',
          speedVariance: 'ocean.speedVariance',
          color: 'ocean.color',
          opacity: 'ocean.opacity',
        },
      })),
        (e.exports.Component = AFRAME.registerComponent('ocean', {
          schema: {
            width: { default: 10, min: 0 },
            depth: { default: 10, min: 0 },
            density: { default: 10 },
            amplitude: { default: 0.1 },
            amplitudeVariance: { default: 0.3 },
            speed: { default: 1 },
            speedVariance: { default: 2 },
            color: { default: '#7AD2F7', type: 'color' },
            opacity: { default: 0.8 },
          },
          play: function () {
            const e = this.el,
              t = this.data
            let n = e.components.material
            const r = new THREE.PlaneGeometry(t.width, t.depth, t.density, t.density)
            r.mergeVertices(), (this.waves = [])
            for (let i, o = 0, a = r.vertices.length; o < a; o++)
              (i = r.vertices[o]),
                this.waves.push({
                  z: i.z,
                  ang: Math.random() * Math.PI * 2,
                  amp: t.amplitude + Math.random() * t.amplitudeVariance,
                  speed: (t.speed + Math.random() * t.speedVariance) / 1e3,
                })
            n ||
              ((n = {}),
              (n.material = new THREE.MeshPhongMaterial({
                color: t.color,
                transparent: t.opacity < 1,
                opacity: t.opacity,
                shading: THREE.FlatShading,
              }))),
              (this.mesh = new THREE.Mesh(r, n.material)),
              e.setObject3D('mesh', this.mesh)
          },
          remove: function () {
            this.el.removeObject3D('mesh')
          },
          tick: function (e, t) {
            if (!t) return
            const n = this.mesh.geometry.vertices
            for (let r, i, o = 0; (r = n[o]); o++)
              (i = this.waves[o]), (r.z = i.z + Math.sin(i.ang) * i.amp), (i.ang += i.speed * t)
            this.mesh.geometry.verticesNeedUpdate = !0
          },
        }))
    },
    699: function (e) {
      ;(e.exports.Primitive = AFRAME.registerPrimitive('a-tube', {
        defaultComponents: { tube: {} },
        mappings: {
          path: 'tube.path',
          segments: 'tube.segments',
          radius: 'tube.radius',
          'radial-segments': 'tube.radialSegments',
          closed: 'tube.closed',
        },
      })),
        (e.exports.Component = AFRAME.registerComponent('tube', {
          schema: {
            path: { default: [] },
            segments: { default: 64 },
            radius: { default: 1 },
            radialSegments: { default: 8 },
            closed: { default: !1 },
          },
          init: function () {
            const e = this.el,
              t = this.data
            let n = e.components.material
            if (!t.path.length)
              return void console.error('[a-tube] `path` property expected but not found.')
            const r = new THREE.CatmullRomCurve3(
                t.path.map(function (e) {
                  return (
                    (e = e.split(' ')), new THREE.Vector3(Number(e[0]), Number(e[1]), Number(e[2]))
                  )
                }),
              ),
              i = new THREE.TubeGeometry(r, t.segments, t.radius, t.radialSegments, t.closed)
            n || ((n = {}), (n.material = new THREE.MeshPhongMaterial())),
              (this.mesh = new THREE.Mesh(i, n.material)),
              this.el.setObject3D('mesh', this.mesh)
          },
          update: function (e) {
            Object.keys(e).length && (this.remove(), this.init())
          },
          remove: function () {
            this.mesh && this.el.removeObject3D('mesh')
          },
        }))
    },
    8993: function (e, t, n) {
      n(386), n(3535), n(9307), n(699)
    },
    1359: function (e, t, n) {
      if ('undefined' === typeof AFRAME)
        throw new Error('Component attempted to register before AFRAME was available.')
      let r = n(2539)
      'default' in r && (r = r.default)
      let i = n(1398)
      'default' in i && (i = i.default)
      const o = function (e) {
          return 'string' === typeof e ? JSON.parse(e) : e
        },
        a = function (e) {
          if ('function' === typeof e) return e
          const t = eval
          try {
            return t('(' + e + ')')
          } catch (n) {}
          return null
        },
        s = function (e) {
          return isNaN(parseFloat(e)) ? (a(e) ? a(e) : e) : parseFloat(e)
        }
      AFRAME.registerComponent('forcegraph', {
        schema: {
          jsonUrl: { type: 'string', default: '' },
          nodes: { parse: o, default: [] },
          links: { parse: o, default: [] },
          numDimensions: { type: 'number', default: 3 },
          dagMode: { type: 'string', default: '' },
          dagLevelDistance: { type: 'number', default: 0 },
          dagNodeFilter: { parse: a, function: () => !0 },
          onDagError: { parse: a, default: void 0 },
          nodeRelSize: { type: 'number', default: 4 },
          nodeId: { type: 'string', default: 'id' },
          nodeVal: { parse: s, default: 'val' },
          nodeResolution: { type: 'number', default: 8 },
          nodeVisibility: { parse: s, default: !0 },
          nodeColor: { parse: s, default: 'color' },
          nodeAutoColorBy: { parse: s, default: '' },
          nodeOpacity: { type: 'number', default: 0.75 },
          nodeThreeObject: { parse: s, default: null },
          nodeThreeObjectExtend: { parse: s, default: !1 },
          linkSource: { type: 'string', default: 'source' },
          linkTarget: { type: 'string', default: 'target' },
          linkVisibility: { parse: s, default: !0 },
          linkColor: { parse: s, default: 'color' },
          linkAutoColorBy: { parse: s, default: '' },
          linkOpacity: { type: 'number', default: 0.2 },
          linkWidth: { parse: s, default: 0 },
          linkResolution: { type: 'number', default: 6 },
          linkCurvature: { parse: s, default: 0 },
          linkCurveRotation: { parse: s, default: 0 },
          linkMaterial: { parse: s, default: null },
          linkThreeObject: { parse: s, default: null },
          linkThreeObjectExtend: { parse: s, default: !1 },
          linkPositionUpdate: { parse: a, default: null },
          linkDirectionalArrowLength: { parse: s, default: 0 },
          linkDirectionalArrowColor: { parse: s, default: null },
          linkDirectionalArrowRelPos: { parse: s, default: 0.5 },
          linkDirectionalArrowResolution: { type: 'number', default: 8 },
          linkDirectionalParticles: { parse: s, default: 0 },
          linkDirectionalParticleSpeed: { parse: s, default: 0.01 },
          linkDirectionalParticleWidth: { parse: s, default: 0.5 },
          linkDirectionalParticleColor: { parse: s, default: null },
          linkDirectionalParticleResolution: { type: 'number', default: 4 },
          onNodeHover: { parse: a, default: () => {} },
          onLinkHover: { parse: a, default: () => {} },
          onNodeClick: { parse: a, default: () => {} },
          onLinkClick: { parse: a, default: () => {} },
          forceEngine: { type: 'string', default: 'd3' },
          d3AlphaMin: { type: 'number', default: 0 },
          d3AlphaDecay: { type: 'number', default: 0.0228 },
          d3VelocityDecay: { type: 'number', default: 0.4 },
          ngraphPhysics: { parse: o, default: null },
          warmupTicks: { type: 'int', default: 0 },
          cooldownTicks: { type: 'int', default: 1e18 },
          cooldownTime: { type: 'int', default: 15e3 },
          onEngineTick: { parse: a, default: function () {} },
          onEngineStop: { parse: a, default: function () {} },
        },
        getGraphBbox: function () {
          return this.forceGraph || (this.forceGraph = new i()), this.forceGraph.getGraphBbox()
        },
        emitParticle: function () {
          this.forceGraph || (this.forceGraph = new i())
          const e = this.forceGraph,
            t = e.emitParticle.apply(e, arguments)
          return t === e ? this : t
        },
        d3Force: function () {
          this.forceGraph || (this.forceGraph = new i())
          const e = this.forceGraph,
            t = e.d3Force.apply(e, arguments)
          return t === e ? this : t
        },
        d3ReheatSimulation: function () {
          return this.forceGraph && this.forceGraph.d3ReheatSimulation(), this
        },
        refresh: function () {
          return this.forceGraph && this.forceGraph.refresh(), this
        },
        init: function () {
          const e = (this.state = {})
          ;(e.infoEl = document.createElement('a-text')),
            e.infoEl.setAttribute('position', '0 -0.1 -1'),
            e.infoEl.setAttribute('width', 1),
            e.infoEl.setAttribute('align', 'center'),
            e.infoEl.setAttribute('color', 'lavender')
          const t = document.querySelector('a-entity[camera], a-camera')
          t.appendChild(e.infoEl),
            (e.cameraObj = t.object3D.children.filter(function (e) {
              return 'PerspectiveCamera' === e.type
            })[0]),
            this.el.sceneEl.addEventListener('camera-set-active', function (t) {
              e.cameraObj = t.detail.cameraEl.components.camera.camera
            }),
            this.forceGraph || (this.forceGraph = new i()),
            this.forceGraph
              .onFinishUpdate(() => this.el.setObject3D('forcegraphGroup', this.forceGraph))
              .onLoading(() => e.infoEl.setAttribute('value', 'Loading...'))
              .onFinishLoading(() => e.infoEl.setAttribute('value', '')),
            this.el.addEventListener('raycaster-intersected', (t) => (e.hoverDetail = t.detail)),
            this.el.addEventListener(
              'raycaster-intersected-cleared',
              (t) => (e.hoverDetail = t.detail),
            ),
            this.el.addEventListener(
              'click',
              () =>
                e.hoverObj &&
                this.data[
                  'on' + ('node' === e.hoverObj.__graphObjType ? 'Node' : 'Link') + 'Click'
                ](e.hoverObj.__data),
            )
        },
        remove: function () {
          this.state.infoEl.remove(), this.el.removeObject3D('forcegraphGroup')
        },
        update: function (e) {
          const t = this,
            n = this.data,
            r = AFRAME.utils.diff(n, e)
          ;[
            'jsonUrl',
            'numDimensions',
            'dagMode',
            'dagLevelDistance',
            'dagNodeFilter',
            'onDagError',
            'nodeRelSize',
            'nodeId',
            'nodeVal',
            'nodeResolution',
            'nodeVisibility',
            'nodeColor',
            'nodeAutoColorBy',
            'nodeOpacity',
            'nodeThreeObject',
            'nodeThreeObjectExtend',
            'linkSource',
            'linkTarget',
            'linkVisibility',
            'linkColor',
            'linkAutoColorBy',
            'linkOpacity',
            'linkWidth',
            'linkResolution',
            'linkCurvature',
            'linkCurveRotation',
            'linkMaterial',
            'linkThreeObject',
            'linkThreeObjectExtend',
            'linkPositionUpdate',
            'linkDirectionalArrowLength',
            'linkDirectionalArrowColor',
            'linkDirectionalArrowRelPos',
            'linkDirectionalArrowResolution',
            'linkDirectionalParticles',
            'linkDirectionalParticleSpeed',
            'linkDirectionalParticleWidth',
            'linkDirectionalParticleColor',
            'linkDirectionalParticleResolution',
            'forceEngine',
            'd3AlphaMin',
            'd3AphaDecay',
            'd3VelocityDecay',
            'ngraphPhysics',
            'warmupTicks',
            'cooldownTicks',
            'cooldownTime',
            'onEngineTick',
            'onEngineStop',
          ]
            .filter(function (e) {
              return e in r
            })
            .forEach(function (e) {
              t.forceGraph[e]('' !== n[e] ? n[e] : null)
            }),
            ('nodes' in r || 'links' in r) &&
              t.forceGraph.graphData({ nodes: n.nodes, links: n.links })
        },
        tick: function (e, t) {
          const n = this.state,
            r = this.data,
            i = n.hoverDetail
              ? n.hoverDetail.getIntersection
                ? n.hoverDetail.getIntersection(this.el)
                : n.hoverDetail.intersection || void 0
              : void 0
          let o = i ? i.object : void 0
          for (; o && !o.hasOwnProperty('__graphObjType'); ) o = o.parent
          if (o !== n.hoverObj) {
            const e = n.hoverObj ? n.hoverObj.__graphObjType : null,
              t = n.hoverObj ? n.hoverObj.__data : null,
              i = o ? o.__graphObjType : null,
              a = o ? o.__data : null
            e && e !== i && r['on' + ('node' === e ? 'Node' : 'Link') + 'Hover'](null, t),
              i && r['on' + ('node' === i ? 'Node' : 'Link') + 'Hover'](a, e === i ? t : null),
              (n.hoverObj = o)
          }
          this.forceGraph.tickFrame()
        },
      })
    },
    296: function (e) {
      function t(e, t, n) {
        var r, i, o, a, s
        function u() {
          var l = Date.now() - a
          l < t && l >= 0
            ? (r = setTimeout(u, t - l))
            : ((r = null), n || ((s = e.apply(o, i)), (o = i = null)))
        }
        null == t && (t = 100)
        var l = function () {
          ;(o = this), (i = arguments), (a = Date.now())
          var l = n && !r
          return r || (r = setTimeout(u, t)), l && ((s = e.apply(o, i)), (o = i = null)), s
        }
        return (
          (l.clear = function () {
            r && (clearTimeout(r), (r = null))
          }),
          (l.flush = function () {
            r && ((s = e.apply(o, i)), (o = i = null), clearTimeout(r), (r = null))
          }),
          l
        )
      }
      ;(t.debounce = t), (e.exports = t)
    },
    3879: function (e, t, n) {
      var r = n(7236),
        i = n(6189),
        o = { float: 'cssFloat' },
        a = n(3379)
      function s(e, t, n) {
        var s = o[t]
        if (
          ('undefined' === typeof s &&
            (s = (function (e) {
              var t = i(e),
                n = r(t)
              return (o[t] = o[e] = o[n] = n), n
            })(t)),
          s)
        ) {
          if (void 0 === n) return e.style[s]
          e.style[s] = a(s, n)
        }
      }
      function u(e, t) {
        for (var n in t) t.hasOwnProperty(n) && s(e, n, t[n])
      }
      function l() {
        2 === arguments.length
          ? 'string' === typeof arguments[1]
            ? (arguments[0].style.cssText = arguments[1])
            : u(arguments[0], arguments[1])
          : s(arguments[0], arguments[1], arguments[2])
      }
      ;(e.exports = l),
        (e.exports.set = l),
        (e.exports.get = function (e, t) {
          return Array.isArray(t)
            ? t.reduce(function (t, n) {
                return (t[n] = s(e, n || '')), t
              }, {})
            : s(e, t || '')
        })
    },
    3869: function (e, t, n) {
      'use strict'
      n.d(t, {
        M: function () {
          return p
        },
      })
      var r = n(1439),
        i = n(7294),
        o = n(6717)
      var a = n(8626),
        s = n(5930),
        u = 0
      function l() {
        var e = u
        return u++, e
      }
      var c = function (e) {
        var t = e.children,
          n = e.initial,
          r = e.isPresent,
          o = e.onExitComplete,
          u = e.custom,
          c = e.presenceAffectsLayout,
          f = (0, s.h)(d),
          h = (0, s.h)(l),
          p = (0, i.useMemo)(
            function () {
              return {
                id: h,
                initial: n,
                isPresent: r,
                custom: u,
                onExitComplete: function (e) {
                  f.set(e, !0)
                  var t = !0
                  f.forEach(function (e) {
                    e || (t = !1)
                  }),
                    t && (null === o || void 0 === o || o())
                },
                register: function (e) {
                  return (
                    f.set(e, !1),
                    function () {
                      return f.delete(e)
                    }
                  )
                },
              }
            },
            c ? void 0 : [r],
          )
        return (
          (0, i.useMemo)(
            function () {
              f.forEach(function (e, t) {
                return f.set(t, !1)
              })
            },
            [r],
          ),
          i.useEffect(
            function () {
              !r && !f.size && (null === o || void 0 === o || o())
            },
            [r],
          ),
          i.createElement(a.O.Provider, { value: p }, t)
        )
      }
      function d() {
        return new Map()
      }
      var f = n(9870)
      function h(e) {
        return e.key || ''
      }
      var p = function (e) {
        var t = e.children,
          n = e.custom,
          a = e.initial,
          s = void 0 === a || a,
          u = e.onExitComplete,
          l = e.exitBeforeEnter,
          d = e.presenceAffectsLayout,
          p = void 0 === d || d,
          v = (function () {
            var e = (0, i.useRef)(!1),
              t = (0, r.CR)((0, i.useState)(0), 2),
              n = t[0],
              a = t[1]
            return (
              (0, o.z)(function () {
                return (e.current = !0)
              }),
              (0, i.useCallback)(
                function () {
                  !e.current && a(n + 1)
                },
                [n],
              )
            )
          })(),
          m = (0, i.useContext)(f.WH)
        ;(0, f.Md)(m) && (v = m.forceUpdate)
        var g = (0, i.useRef)(!0),
          y = (function (e) {
            var t = []
            return (
              i.Children.forEach(e, function (e) {
                ;(0, i.isValidElement)(e) && t.push(e)
              }),
              t
            )
          })(t),
          b = (0, i.useRef)(y),
          w = (0, i.useRef)(new Map()).current,
          x = (0, i.useRef)(new Set()).current
        if (
          ((function (e, t) {
            e.forEach(function (e) {
              var n = h(e)
              t.set(n, e)
            })
          })(y, w),
          g.current)
        )
          return (
            (g.current = !1),
            i.createElement(
              i.Fragment,
              null,
              y.map(function (e) {
                return i.createElement(
                  c,
                  { key: h(e), isPresent: !0, initial: !!s && void 0, presenceAffectsLayout: p },
                  e,
                )
              }),
            )
          )
        for (
          var E = (0, r.ev)([], (0, r.CR)(y)),
            k = b.current.map(h),
            _ = y.map(h),
            T = k.length,
            O = 0;
          O < T;
          O++
        ) {
          var C = k[O]
          ;-1 === _.indexOf(C) ? x.add(C) : x.delete(C)
        }
        return (
          l && x.size && (E = []),
          x.forEach(function (e) {
            if (-1 === _.indexOf(e)) {
              var t = w.get(e)
              if (t) {
                var r = k.indexOf(e)
                E.splice(
                  r,
                  0,
                  i.createElement(
                    c,
                    {
                      key: h(t),
                      isPresent: !1,
                      onExitComplete: function () {
                        w.delete(e), x.delete(e)
                        var t = b.current.findIndex(function (t) {
                          return t.key === e
                        })
                        b.current.splice(t, 1), x.size || ((b.current = y), v(), u && u())
                      },
                      custom: n,
                      presenceAffectsLayout: p,
                    },
                    t,
                  ),
                )
              }
            }
          }),
          (E = E.map(function (e) {
            var t = e.key
            return x.has(t)
              ? e
              : i.createElement(c, { key: h(e), isPresent: !0, presenceAffectsLayout: p }, e)
          })),
          (b.current = E),
          i.createElement(
            i.Fragment,
            null,
            x.size
              ? E
              : E.map(function (e) {
                  return (0, i.cloneElement)(e)
                }),
          )
        )
      }
    },
    7646: function (e, t, n) {
      'use strict'
      var r, i
      n.d(t, {
        z: function () {
          return r
        },
        c: function () {
          return i
        },
      }),
        (function (e) {
          ;(e[(e.Entering = 0)] = 'Entering'),
            (e[(e.Present = 1)] = 'Present'),
            (e[(e.Exiting = 2)] = 'Exiting')
        })(r || (r = {})),
        (function (e) {
          ;(e[(e.Hide = 0)] = 'Hide'), (e[(e.Show = 1)] = 'Show')
        })(i || (i = {}))
    },
    8626: function (e, t, n) {
      'use strict'
      n.d(t, {
        O: function () {
          return r
        },
      })
      var r = (0, n(7294).createContext)(null)
    },
    9870: function (e, t, n) {
      'use strict'
      n.d(t, {
        bg: function () {
          return p
        },
        WH: function () {
          return h
        },
        Md: function () {
          return v
        },
      })
      var r = n(7294),
        i = n(1439),
        o = n(9839),
        a = n(8839),
        s = n(7565),
        u = n(519),
        l = n(7646),
        c = {
          layoutReady: function (e) {
            return e.notifyLayoutReady()
          },
        }
      function d() {
        var e = new Set()
        return {
          add: function (t) {
            return e.add(t)
          },
          flush: function (t) {
            var n = void 0 === t ? c : t,
              r = n.layoutReady,
              d = n.parent
            ;(0, s.U)(function (t, n) {
              var s = Array.from(e).sort(u._),
                c = d ? (0, a.kv)(d) : []
              n(function () {
                ;(0, i.ev)((0, i.ev)([], (0, i.CR)(c)), (0, i.CR)(s)).forEach(function (e) {
                  return e.resetTransform()
                })
              }),
                t(function () {
                  s.forEach(a.de)
                }),
                n(function () {
                  c.forEach(function (e) {
                    return e.restoreTransform()
                  }),
                    s.forEach(r)
                }),
                t(function () {
                  s.forEach(function (e) {
                    e.isPresent && (e.presence = l.z.Present)
                  })
                }),
                n(function () {
                  o.iW.preRender(), o.iW.render()
                }),
                t(function () {
                  o.ZP.postRender(function () {
                    return s.forEach(f)
                  }),
                    e.clear()
                })
            }),
              (0, s.R)()
          },
        }
      }
      function f(e) {
        e.prevViewportBox = e.projection.target
      }
      var h = (0, r.createContext)(d()),
        p = (0, r.createContext)(d())
      function v(e) {
        return !!e.forceUpdate
      }
    },
    7554: function (e, t, n) {
      'use strict'
      n.d(t, {
        E: function () {
          return Oo
        },
      })
      var r = n(1439),
        i = n(7294),
        o = function (e) {
          return {
            isEnabled: function (t) {
              return e.some(function (e) {
                return !!t[e]
              })
            },
          }
        },
        a = {
          measureLayout: o(['layout', 'layoutId', 'drag', '_layoutResetTransform']),
          animation: o([
            'animate',
            'exit',
            'variants',
            'whileHover',
            'whileTap',
            'whileFocus',
            'whileDrag',
          ]),
          exit: o(['exit']),
          drag: o(['drag', 'dragControls']),
          focus: o(['whileFocus']),
          hover: o(['whileHover', 'onHoverStart', 'onHoverEnd']),
          tap: o(['whileTap', 'onTap', 'onTapStart', 'onTapCancel']),
          pan: o(['onPan', 'onPanStart', 'onPanSessionStart', 'onPanEnd']),
          layoutAnimation: o(['layout', 'layoutId']),
        }
      var s = (0, i.createContext)({ strict: !1 }),
        u = Object.keys(a),
        l = u.length
      var c = (0, i.createContext)({
          transformPagePoint: function (e) {
            return e
          },
          isStatic: !1,
        }),
        d = (0, i.createContext)({})
      var f = n(8626),
        h = n(5930)
      function p() {
        var e = (0, i.useContext)(f.O)
        if (null === e) return [!0, null]
        var t = e.isPresent,
          n = e.onExitComplete,
          r = e.register,
          o = y()
        ;(0, i.useEffect)(function () {
          return r(o)
        }, [])
        return !t && n
          ? [
              !1,
              function () {
                return null === n || void 0 === n ? void 0 : n(o)
              },
            ]
          : [!0]
      }
      function v(e) {
        return null === e || e.isPresent
      }
      var m = 0,
        g = function () {
          return m++
        },
        y = function () {
          return (0, h.h)(g)
        },
        b = (0, i.createContext)(null),
        w = 'undefined' !== typeof window,
        x = w ? i.useLayoutEffect : i.useEffect
      function E(e, t, n, o) {
        var a = (0, i.useContext)(c),
          u = (0, i.useContext)(s),
          l = (0, i.useContext)(d).visualElement,
          h = (0, i.useContext)(f.O),
          p = (function (e) {
            var t = e.layoutId,
              n = (0, i.useContext)(b)
            return n && void 0 !== t ? n + '-' + t : t
          })(n),
          m = (0, i.useRef)(void 0)
        o || (o = u.renderer),
          !m.current &&
            o &&
            (m.current = o(e, {
              visualState: t,
              parent: l,
              props: (0, r.pi)((0, r.pi)({}, n), { layoutId: p }),
              presenceId: null === h || void 0 === h ? void 0 : h.id,
              blockInitialAnimation: !1 === (null === h || void 0 === h ? void 0 : h.initial),
            }))
        var g = m.current
        return (
          x(function () {
            g &&
              (g.setProps((0, r.pi)((0, r.pi)((0, r.pi)({}, a), n), { layoutId: p })),
              (g.isPresent = v(h)),
              (g.isPresenceRoot =
                !l || l.presenceId !== (null === h || void 0 === h ? void 0 : h.id)),
              g.syncRender())
          }),
          (0, i.useEffect)(function () {
            var e
            g && (null === (e = g.animationState) || void 0 === e || e.animateChanges())
          }),
          x(function () {
            return function () {
              return null === g || void 0 === g ? void 0 : g.notifyUnmount()
            }
          }, []),
          g
        )
      }
      function k(e) {
        return 'object' === typeof e && Object.prototype.hasOwnProperty.call(e, 'current')
      }
      function _(e) {
        return Array.isArray(e)
      }
      function T(e) {
        return 'string' === typeof e || _(e)
      }
      function O(e, t, n, r, i) {
        var o
        return (
          void 0 === r && (r = {}),
          void 0 === i && (i = {}),
          'string' === typeof t && (t = null === (o = e.variants) || void 0 === o ? void 0 : o[t]),
          'function' === typeof t ? t(null !== n && void 0 !== n ? n : e.custom, r, i) : t
        )
      }
      function C(e, t, n) {
        var r = e.getProps()
        return O(
          r,
          t,
          null !== n && void 0 !== n ? n : r.custom,
          (function (e) {
            var t = {}
            return (
              e.forEachValue(function (e, n) {
                return (t[n] = e.get())
              }),
              t
            )
          })(e),
          (function (e) {
            var t = {}
            return (
              e.forEachValue(function (e, n) {
                return (t[n] = e.getVelocity())
              }),
              t
            )
          })(e),
        )
      }
      function S(e) {
        var t
        return (
          'function' === typeof (null === (t = e.animate) || void 0 === t ? void 0 : t.start) ||
          T(e.initial) ||
          T(e.animate) ||
          T(e.whileHover) ||
          T(e.whileDrag) ||
          T(e.whileTap) ||
          T(e.whileFocus) ||
          T(e.exit)
        )
      }
      function A(e) {
        return Boolean(S(e) || e.variants)
      }
      function P(e, t) {
        var n = (function (e, t) {
            if (S(e)) {
              var n = e.initial,
                r = e.animate
              return { initial: !1 === n || T(n) ? n : void 0, animate: T(r) ? r : void 0 }
            }
            return !1 !== e.inherit ? t : {}
          })(e, (0, i.useContext)(d)),
          r = n.initial,
          o = n.animate
        return (0, i.useMemo)(
          function () {
            return { initial: r, animate: o }
          },
          t ? [M(r), M(o)] : [],
        )
      }
      function M(e) {
        return Array.isArray(e) ? e.join(' ') : e
      }
      function R(e) {
        var t = e.preloadedFeatures,
          n = e.createVisualElement,
          o = e.useRender,
          f = e.useVisualState,
          h = e.Component
        return (
          t &&
            (function (e) {
              for (var t in e) {
                var n = e[t]
                null !== n && (a[t].Component = n)
              }
            })(t),
          (0, i.forwardRef)(function (e, t) {
            var p = (0, i.useContext)(c).isStatic,
              v = null,
              m = P(e, p),
              g = f(e, p)
            return (
              !p &&
                w &&
                ((m.visualElement = E(h, g, e, n)),
                (v = (function (e, t, n) {
                  var o = []
                  if (((0, i.useContext)(s), !t)) return null
                  for (var c = 0; c < l; c++) {
                    var d = u[c],
                      f = a[d],
                      h = f.isEnabled,
                      p = f.Component
                    h(e) &&
                      p &&
                      o.push(i.createElement(p, (0, r.pi)({ key: d }, e, { visualElement: t })))
                  }
                  return o
                })(e, m.visualElement))),
              i.createElement(
                i.Fragment,
                null,
                i.createElement(
                  d.Provider,
                  { value: m },
                  o(
                    h,
                    e,
                    (function (e, t, n) {
                      return (0, i.useCallback)(
                        function (r) {
                          var i
                          r && (null === (i = e.mount) || void 0 === i || i.call(e, r)),
                            t && (r ? t.mount(r) : t.unmount()),
                            n && ('function' === typeof n ? n(r) : k(n) && (n.current = r))
                        },
                        [t],
                      )
                    })(g, m.visualElement, t),
                    g,
                    p,
                  ),
                ),
                v,
              )
            )
          })
        )
      }
      function j(e) {
        function t(t, n) {
          return void 0 === n && (n = {}), R(e(t, n))
        }
        var n = new Map()
        return new Proxy(t, {
          get: function (e, r) {
            return n.has(r) || n.set(r, t(r)), n.get(r)
          },
        })
      }
      var D = [
        'animate',
        'circle',
        'defs',
        'desc',
        'ellipse',
        'g',
        'image',
        'line',
        'filter',
        'marker',
        'mask',
        'metadata',
        'path',
        'pattern',
        'polygon',
        'polyline',
        'rect',
        'stop',
        'svg',
        'switch',
        'symbol',
        'text',
        'tspan',
        'use',
        'view',
      ]
      function L(e) {
        return 'string' === typeof e && !e.includes('-') && !!(D.indexOf(e) > -1 || /[A-Z]/.test(e))
      }
      var N = {}
      var I = ['', 'X', 'Y', 'Z'],
        z = ['transformPerspective', 'x', 'y', 'z']
      function H(e, t) {
        return z.indexOf(e) - z.indexOf(t)
      }
      ;['translate', 'scale', 'rotate', 'skew'].forEach(function (e) {
        return I.forEach(function (t) {
          return z.push(e + t)
        })
      })
      var B = new Set(z)
      function F(e) {
        return B.has(e)
      }
      var V = new Set(['originX', 'originY', 'originZ'])
      function U(e) {
        return V.has(e)
      }
      function G(e, t) {
        var n = t.layout,
          r = t.layoutId
        return F(e) || U(e) || ((n || void 0 !== r) && (!!N[e] || 'opacity' === e))
      }
      var q = function (e) {
          return null !== e && 'object' === typeof e && e.getVelocity
        },
        W = {
          x: 'translateX',
          y: 'translateY',
          z: 'translateZ',
          transformPerspective: 'perspective',
        }
      function K(e) {
        return e.startsWith('--')
      }
      var Z = function (e, t) {
        return t && 'number' === typeof e ? t.transform(e) : e
      }
      var $ = function () {
        return ($ =
          Object.assign ||
          function (e) {
            for (var t, n = 1, r = arguments.length; n < r; n++)
              for (var i in (t = arguments[n]))
                Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i])
            return e
          }).apply(this, arguments)
      }
      Object.create
      Object.create
      var X = function (e, t) {
          return function (n) {
            return Math.max(Math.min(n, t), e)
          }
        },
        Y = function (e) {
          return e % 1 ? Number(e.toFixed(5)) : e
        },
        Q = /(-)?([\d]*\.?[\d])+/g,
        J =
          /(#[0-9a-f]{6}|#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2,3}\s*\/*\s*[\d\.]+%?\))/gi,
        ee =
          /^(#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2,3}\s*\/*\s*[\d\.]+%?\))$/i
      function te(e) {
        return 'string' === typeof e
      }
      var ne = function (e) {
          return {
            test: function (t) {
              return te(t) && t.endsWith(e) && 1 === t.split(' ').length
            },
            parse: parseFloat,
            transform: function (t) {
              return '' + t + e
            },
          }
        },
        re = ne('deg'),
        ie = ne('%'),
        oe = ne('px'),
        ae = ne('vh'),
        se = ne('vw'),
        ue = $($({}, ie), {
          parse: function (e) {
            return ie.parse(e) / 100
          },
          transform: function (e) {
            return ie.transform(100 * e)
          },
        }),
        le = {
          test: function (e) {
            return 'number' === typeof e
          },
          parse: parseFloat,
          transform: function (e) {
            return e
          },
        },
        ce = $($({}, le), { transform: X(0, 1) }),
        de = $($({}, le), { default: 1 }),
        fe = (0, r.pi)((0, r.pi)({}, le), { transform: Math.round }),
        he = {
          borderWidth: oe,
          borderTopWidth: oe,
          borderRightWidth: oe,
          borderBottomWidth: oe,
          borderLeftWidth: oe,
          borderRadius: oe,
          radius: oe,
          borderTopLeftRadius: oe,
          borderTopRightRadius: oe,
          borderBottomRightRadius: oe,
          borderBottomLeftRadius: oe,
          width: oe,
          maxWidth: oe,
          height: oe,
          maxHeight: oe,
          size: oe,
          top: oe,
          right: oe,
          bottom: oe,
          left: oe,
          padding: oe,
          paddingTop: oe,
          paddingRight: oe,
          paddingBottom: oe,
          paddingLeft: oe,
          margin: oe,
          marginTop: oe,
          marginRight: oe,
          marginBottom: oe,
          marginLeft: oe,
          rotate: re,
          rotateX: re,
          rotateY: re,
          rotateZ: re,
          scale: de,
          scaleX: de,
          scaleY: de,
          scaleZ: de,
          skew: re,
          skewX: re,
          skewY: re,
          distance: oe,
          translateX: oe,
          translateY: oe,
          translateZ: oe,
          x: oe,
          y: oe,
          z: oe,
          perspective: oe,
          transformPerspective: oe,
          opacity: ce,
          originX: ue,
          originY: ue,
          originZ: oe,
          zIndex: fe,
          fillOpacity: ce,
          strokeOpacity: ce,
          numOctaves: fe,
        }
      function pe(e, t, n, r, i, o, a, s) {
        var u,
          l = e.style,
          c = e.vars,
          d = e.transform,
          f = e.transformKeys,
          h = e.transformOrigin
        f.length = 0
        var p = !1,
          v = !1,
          m = !0
        for (var g in t) {
          var y = t[g]
          if (K(g)) c[g] = y
          else {
            var b = he[g],
              w = Z(y, b)
            if (F(g)) {
              if (((p = !0), (d[g] = w), f.push(g), !m)) continue
              y !== (null !== (u = b.default) && void 0 !== u ? u : 0) && (m = !1)
            } else if (U(g)) (h[g] = w), (v = !0)
            else if (
              (null === n || void 0 === n ? void 0 : n.isHydrated) &&
              (null === r || void 0 === r ? void 0 : r.isHydrated) &&
              N[g]
            ) {
              var x = N[g].process(y, r, n),
                E = N[g].applyTo
              if (E) for (var k = E.length, _ = 0; _ < k; _++) l[E[_]] = x
              else l[g] = x
            } else l[g] = w
          }
        }
        r && n && a && s
          ? ((l.transform = a(r.deltaFinal, r.treeScale, p ? d : void 0)),
            o && (l.transform = o(d, l.transform)),
            (l.transformOrigin = s(r)))
          : (p &&
              (l.transform = (function (e, t, n, r) {
                var i = e.transform,
                  o = e.transformKeys,
                  a = t.enableHardwareAcceleration,
                  s = void 0 === a || a,
                  u = t.allowTransformNone,
                  l = void 0 === u || u,
                  c = ''
                o.sort(H)
                for (var d = !1, f = o.length, h = 0; h < f; h++) {
                  var p = o[h]
                  ;(c += (W[p] || p) + '(' + i[p] + ') '), 'z' === p && (d = !0)
                }
                return (
                  !d && s ? (c += 'translateZ(0)') : (c = c.trim()),
                  r ? (c = r(i, n ? '' : c)) : l && n && (c = 'none'),
                  c
                )
              })(e, i, m, o)),
            v &&
              (l.transformOrigin = (function (e) {
                var t = e.originX,
                  n = void 0 === t ? '50%' : t,
                  r = e.originY,
                  i = void 0 === r ? '50%' : r,
                  o = e.originZ
                return n + ' ' + i + ' ' + (void 0 === o ? 0 : o)
              })(h)))
      }
      var ve = function () {
        return { style: {}, transform: {}, transformKeys: [], transformOrigin: {}, vars: {} }
      }
      function me(e, t, n) {
        for (var r in t) q(t[r]) || G(r, n) || (e[r] = t[r])
      }
      function ge(e, t, n) {
        var o = {}
        return (
          me(o, e.style || {}, e),
          Object.assign(
            o,
            (function (e, t, n) {
              var o = e.transformTemplate
              return (0, i.useMemo)(
                function () {
                  var e = {
                    style: {},
                    transform: {},
                    transformKeys: [],
                    transformOrigin: {},
                    vars: {},
                  }
                  pe(e, t, void 0, void 0, { enableHardwareAcceleration: !n }, o)
                  var i = e.vars,
                    a = e.style
                  return (0, r.pi)((0, r.pi)({}, i), a)
                },
                [t],
              )
            })(e, t, n),
          ),
          e.transformValues && (o = e.transformValues(o)),
          o
        )
      }
      function ye(e, t, n) {
        var r = {},
          i = ge(e, t, n)
        return (
          Boolean(e.drag) &&
            ((r.draggable = !1),
            (i.userSelect = i.WebkitUserSelect = i.WebkitTouchCallout = 'none'),
            (i.touchAction = !0 === e.drag ? 'none' : 'pan-' + ('x' === e.drag ? 'y' : 'x'))),
          (r.style = i),
          r
        )
      }
      var be = new Set([
        'initial',
        'animate',
        'exit',
        'style',
        'variants',
        'transition',
        'transformTemplate',
        'transformValues',
        'custom',
        'inherit',
        'layout',
        'layoutId',
        '_layoutResetTransform',
        'onLayoutAnimationComplete',
        'onViewportBoxUpdate',
        'onLayoutMeasure',
        'onBeforeLayoutMeasure',
        'onAnimationStart',
        'onAnimationComplete',
        'onUpdate',
        'onDragStart',
        'onDrag',
        'onDragEnd',
        'onMeasureDragConstraints',
        'onDirectionLock',
        'onDragTransitionEnd',
        'drag',
        'dragControls',
        'dragListener',
        'dragConstraints',
        'dragDirectionLock',
        '_dragX',
        '_dragY',
        'dragElastic',
        'dragMomentum',
        'dragPropagation',
        'dragTransition',
        'whileDrag',
        'onPan',
        'onPanStart',
        'onPanEnd',
        'onPanSessionStart',
        'onTap',
        'onTapStart',
        'onTapCancel',
        'onHoverStart',
        'onHoverEnd',
        'whileFocus',
        'whileTap',
        'whileHover',
      ])
      function we(e) {
        return be.has(e)
      }
      var xe = function (e) {
        return !we(e)
      }
      try {
        var Ee = n(6600).Z
        xe = function (e) {
          return e.startsWith('on') ? !we(e) : Ee(e)
        }
      } catch (Co) {}
      function ke(e, t, n) {
        return 'string' === typeof e ? e : oe.transform(t + n * e)
      }
      var _e = function (e, t) {
          return oe.transform(e * t)
        },
        Te = { offset: 'stroke-dashoffset', array: 'stroke-dasharray' },
        Oe = { offset: 'strokeDashoffset', array: 'strokeDasharray' }
      function Ce(e, t, n, i, o, a, s, u) {
        var l = t.attrX,
          c = t.attrY,
          d = t.originX,
          f = t.originY,
          h = t.pathLength,
          p = t.pathSpacing,
          v = void 0 === p ? 1 : p,
          m = t.pathOffset,
          g = void 0 === m ? 0 : m
        pe(
          e,
          (0, r._T)(t, [
            'attrX',
            'attrY',
            'originX',
            'originY',
            'pathLength',
            'pathSpacing',
            'pathOffset',
          ]),
          n,
          i,
          o,
          a,
          s,
          u,
        ),
          (e.attrs = e.style),
          (e.style = {})
        var y = e.attrs,
          b = e.style,
          w = e.dimensions,
          x = e.totalPathLength
        y.transform && (w && (b.transform = y.transform), delete y.transform),
          w &&
            (void 0 !== d || void 0 !== f || b.transform) &&
            (b.transformOrigin = (function (e, t, n) {
              return ke(t, e.x, e.width) + ' ' + ke(n, e.y, e.height)
            })(w, void 0 !== d ? d : 0.5, void 0 !== f ? f : 0.5)),
          void 0 !== l && (y.x = l),
          void 0 !== c && (y.y = c),
          void 0 !== x &&
            void 0 !== h &&
            (function (e, t, n, r, i, o) {
              void 0 === r && (r = 1), void 0 === i && (i = 0), void 0 === o && (o = !0)
              var a = o ? Te : Oe
              e[a.offset] = _e(-i, t)
              var s = _e(n, t),
                u = _e(r, t)
              e[a.array] = s + ' ' + u
            })(y, x, h, v, g, !1)
      }
      var Se = function () {
        return (0, r.pi)(
          (0, r.pi)(
            {},
            { style: {}, transform: {}, transformKeys: [], transformOrigin: {}, vars: {} },
          ),
          { attrs: {} },
        )
      }
      function Ae(e, t) {
        var n = (0, i.useMemo)(
          function () {
            var n = Se()
            return (
              Ce(n, t, void 0, void 0, { enableHardwareAcceleration: !1 }, e.transformTemplate),
              (0, r.pi)((0, r.pi)({}, n.attrs), { style: (0, r.pi)({}, n.style) })
            )
          },
          [t],
        )
        if (e.style) {
          var o = {}
          me(o, e.style, e), (n.style = (0, r.pi)((0, r.pi)({}, o), n.style))
        }
        return n
      }
      function Pe(e) {
        void 0 === e && (e = !1)
        return function (t, n, o, a, s) {
          var u = a.latestValues,
            l = (L(t) ? Ae : ye)(n, u, s),
            c = (function (e, t, n) {
              var r = {}
              for (var i in e) (xe(i) || (!0 === n && we(i)) || (!t && !we(i))) && (r[i] = e[i])
              return r
            })(n, 'string' === typeof t, e),
            d = (0, r.pi)((0, r.pi)((0, r.pi)({}, c), l), { ref: o })
          return (0, i.createElement)(t, d)
        }
      }
      var Me = /([a-z])([A-Z])/g,
        Re = function (e) {
          return e.replace(Me, '$1-$2').toLowerCase()
        }
      function je(e, t) {
        var n = t.style,
          r = t.vars
        for (var i in (Object.assign(e.style, n), r)) e.style.setProperty(i, r[i])
      }
      var De = new Set([
        'baseFrequency',
        'diffuseConstant',
        'kernelMatrix',
        'kernelUnitLength',
        'keySplines',
        'keyTimes',
        'limitingConeAngle',
        'markerHeight',
        'markerWidth',
        'numOctaves',
        'targetX',
        'targetY',
        'surfaceScale',
        'specularConstant',
        'specularExponent',
        'stdDeviation',
        'tableValues',
        'viewBox',
        'gradientTransform',
      ])
      function Le(e, t) {
        for (var n in (je(e, t), t.attrs)) e.setAttribute(De.has(n) ? n : Re(n), t.attrs[n])
      }
      function Ne(e) {
        var t = e.style,
          n = {}
        for (var r in t) (q(t[r]) || G(r, e)) && (n[r] = t[r])
        return n
      }
      function Ie(e) {
        var t = Ne(e)
        for (var n in e) {
          if (q(e[n])) t['x' === n || 'y' === n ? 'attr' + n.toUpperCase() : n] = e[n]
        }
        return t
      }
      function ze(e) {
        return 'object' === typeof e && 'function' === typeof e.start
      }
      var He = function (e) {
        return Array.isArray(e)
      }
      function Be(e) {
        var t,
          n = q(e) ? e.get() : e
        return (t = n), Boolean(t && 'object' === typeof t && t.mix && t.toValue) ? n.toValue() : n
      }
      function Fe(e, t, n, r) {
        var i = e.scrapeMotionValuesFromProps,
          o = e.createRenderState,
          a = e.onMount,
          s = { latestValues: Ue(t, n, r, i), renderState: o() }
        return (
          a &&
            (s.mount = function (e) {
              return a(t, e, s)
            }),
          s
        )
      }
      var Ve = function (e) {
        return function (t, n) {
          var r = (0, i.useContext)(d),
            o = (0, i.useContext)(f.O)
          return n
            ? Fe(e, t, r, o)
            : (0, h.h)(function () {
                return Fe(e, t, r, o)
              })
        }
      }
      function Ue(e, t, n, i) {
        var o = {},
          a = !1 === (null === n || void 0 === n ? void 0 : n.initial),
          s = i(e)
        for (var u in s) o[u] = Be(s[u])
        var l = e.initial,
          c = e.animate,
          d = S(e),
          f = A(e)
        t &&
          f &&
          !d &&
          !1 !== e.inherit &&
          ((null !== l && void 0 !== l) || (l = t.initial),
          (null !== c && void 0 !== c) || (c = t.animate))
        var h = a || !1 === l ? c : l
        h &&
          'boolean' !== typeof h &&
          !ze(h) &&
          (Array.isArray(h) ? h : [h]).forEach(function (t) {
            var n = O(e, t)
            if (n) {
              var i = n.transitionEnd
              n.transition
              var a = (0, r._T)(n, ['transitionEnd', 'transition'])
              for (var s in a) o[s] = a[s]
              for (var s in i) o[s] = i[s]
            }
          })
        return o
      }
      var Ge = {
        useVisualState: Ve({
          scrapeMotionValuesFromProps: Ie,
          createRenderState: Se,
          onMount: function (e, t, n) {
            var r = n.renderState,
              i = n.latestValues
            try {
              r.dimensions =
                'function' === typeof t.getBBox ? t.getBBox() : t.getBoundingClientRect()
            } catch (o) {
              r.dimensions = { x: 0, y: 0, width: 0, height: 0 }
            }
            'path' === t.tagName && (r.totalPathLength = t.getTotalLength()),
              Ce(r, i, void 0, void 0, { enableHardwareAcceleration: !1 }, e.transformTemplate),
              Le(t, r)
          },
        }),
      }
      var qe,
        We = { useVisualState: Ve({ scrapeMotionValuesFromProps: Ne, createRenderState: ve }) }
      function Ke(e, t, n, r) {
        return (
          e.addEventListener(t, n, r),
          function () {
            return e.removeEventListener(t, n, r)
          }
        )
      }
      function Ze(e, t, n, r) {
        ;(0, i.useEffect)(
          function () {
            var i = e.current
            if (n && i) return Ke(i, t, n, r)
          },
          [e, t, n, r],
        )
      }
      function $e(e) {
        return 'undefined' !== typeof PointerEvent && e instanceof PointerEvent
          ? !('mouse' !== e.pointerType)
          : e instanceof MouseEvent
      }
      function Xe(e) {
        return !!e.touches
      }
      !(function (e) {
        ;(e.Animate = 'animate'),
          (e.Hover = 'whileHover'),
          (e.Tap = 'whileTap'),
          (e.Drag = 'whileDrag'),
          (e.Focus = 'whileFocus'),
          (e.Exit = 'exit')
      })(qe || (qe = {}))
      var Ye = { pageX: 0, pageY: 0 }
      function Qe(e, t) {
        void 0 === t && (t = 'page')
        var n = e.touches[0] || e.changedTouches[0] || Ye
        return { x: n[t + 'X'], y: n[t + 'Y'] }
      }
      function Je(e, t) {
        return void 0 === t && (t = 'page'), { x: e[t + 'X'], y: e[t + 'Y'] }
      }
      function et(e, t) {
        return void 0 === t && (t = 'page'), { point: Xe(e) ? Qe(e, t) : Je(e, t) }
      }
      var tt = function (e, t) {
          void 0 === t && (t = !1)
          var n,
            r = function (t) {
              return e(t, et(t))
            }
          return t
            ? ((n = r),
              function (e) {
                var t = e instanceof MouseEvent
                ;(!t || (t && 0 === e.button)) && n(e)
              })
            : r
        },
        nt = {
          pointerdown: 'mousedown',
          pointermove: 'mousemove',
          pointerup: 'mouseup',
          pointercancel: 'mousecancel',
          pointerover: 'mouseover',
          pointerout: 'mouseout',
          pointerenter: 'mouseenter',
          pointerleave: 'mouseleave',
        },
        rt = {
          pointerdown: 'touchstart',
          pointermove: 'touchmove',
          pointerup: 'touchend',
          pointercancel: 'touchcancel',
        }
      function it(e) {
        return w && null === window.onpointerdown
          ? e
          : w && null === window.ontouchstart
          ? rt[e]
          : w && null === window.onmousedown
          ? nt[e]
          : e
      }
      function ot(e, t, n, r) {
        return Ke(e, it(t), tt(n, 'pointerdown' === t), r)
      }
      function at(e, t, n, r) {
        return Ze(e, it(t), n && tt(n, 'pointerdown' === t), r)
      }
      function st(e) {
        var t = null
        return function () {
          return (
            null === t &&
            ((t = e),
            function () {
              t = null
            })
          )
        }
      }
      var ut = st('dragHorizontal'),
        lt = st('dragVertical')
      function ct(e) {
        var t = !1
        if ('y' === e) t = lt()
        else if ('x' === e) t = ut()
        else {
          var n = ut(),
            r = lt()
          n && r
            ? (t = function () {
                n(), r()
              })
            : (n && n(), r && r())
        }
        return t
      }
      function dt() {
        var e = ct(!0)
        return !e || (e(), !1)
      }
      function ft(e, t, n) {
        return function (r, i) {
          var o
          $e(r) &&
            !dt() &&
            (null === n || void 0 === n || n(r, i),
            null === (o = e.animationState) || void 0 === o || o.setActive(qe.Hover, t))
        }
      }
      var ht = function (e, t) {
          return !!t && (e === t || ht(e, t.parentElement))
        },
        pt = n(6717),
        vt = function (e, t) {
          return function (n) {
            return t(e(n))
          }
        },
        mt = function () {
          for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t]
          return e.reduce(vt)
        }
      var gt = function (e) {
          return function (t) {
            return e(t), null
          }
        },
        yt = {
          tap: gt(function (e) {
            var t = e.onTap,
              n = e.onTapStart,
              r = e.onTapCancel,
              o = e.whileTap,
              a = e.visualElement,
              s = t || n || r || o,
              u = (0, i.useRef)(!1),
              l = (0, i.useRef)(null)
            function c() {
              var e
              null === (e = l.current) || void 0 === e || e.call(l), (l.current = null)
            }
            function d() {
              var e
              return (
                c(),
                (u.current = !1),
                null === (e = a.animationState) || void 0 === e || e.setActive(qe.Tap, !1),
                !dt()
              )
            }
            function f(e, n) {
              d() &&
                (ht(a.getInstance(), e.target)
                  ? null === t || void 0 === t || t(e, n)
                  : null === r || void 0 === r || r(e, n))
            }
            function h(e, t) {
              d() && (null === r || void 0 === r || r(e, t))
            }
            at(
              a,
              'pointerdown',
              s
                ? function (e, t) {
                    var r
                    c(),
                      u.current ||
                        ((u.current = !0),
                        (l.current = mt(
                          ot(window, 'pointerup', f),
                          ot(window, 'pointercancel', h),
                        )),
                        null === n || void 0 === n || n(e, t),
                        null === (r = a.animationState) || void 0 === r || r.setActive(qe.Tap, !0))
                  }
                : void 0,
            ),
              (0, pt.z)(c)
          }),
          focus: gt(function (e) {
            var t = e.whileFocus,
              n = e.visualElement
            Ze(
              n,
              'focus',
              t
                ? function () {
                    var e
                    null === (e = n.animationState) || void 0 === e || e.setActive(qe.Focus, !0)
                  }
                : void 0,
            ),
              Ze(
                n,
                'blur',
                t
                  ? function () {
                      var e
                      null === (e = n.animationState) || void 0 === e || e.setActive(qe.Focus, !1)
                    }
                  : void 0,
              )
          }),
          hover: gt(function (e) {
            var t = e.onHoverStart,
              n = e.onHoverEnd,
              r = e.whileHover,
              i = e.visualElement
            at(i, 'pointerenter', t || r ? ft(i, !0, t) : void 0),
              at(i, 'pointerleave', n || r ? ft(i, !1, n) : void 0)
          }),
        }
      function bt(e, t) {
        if (!Array.isArray(t)) return !1
        var n = t.length
        if (n !== e.length) return !1
        for (var r = 0; r < n; r++) if (t[r] !== e[r]) return !1
        return !0
      }
      var wt = function () {
        return (wt =
          Object.assign ||
          function (e) {
            for (var t, n = 1, r = arguments.length; n < r; n++)
              for (var i in (t = arguments[n]))
                Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i])
            return e
          }).apply(this, arguments)
      }
      function xt(e, t) {
        var n = {}
        for (var r in e)
          Object.prototype.hasOwnProperty.call(e, r) && t.indexOf(r) < 0 && (n[r] = e[r])
        if (null != e && 'function' === typeof Object.getOwnPropertySymbols) {
          var i = 0
          for (r = Object.getOwnPropertySymbols(e); i < r.length; i++)
            t.indexOf(r[i]) < 0 &&
              Object.prototype.propertyIsEnumerable.call(e, r[i]) &&
              (n[r[i]] = e[r[i]])
        }
        return n
      }
      Object.create
      Object.create
      var Et = function (e, t, n) {
          return Math.min(Math.max(n, e), t)
        },
        kt = 0.001
      function _t(e) {
        var t,
          n,
          r = e.duration,
          i = void 0 === r ? 800 : r,
          o = e.bounce,
          a = void 0 === o ? 0.25 : o,
          s = e.velocity,
          u = void 0 === s ? 0 : s,
          l = e.mass,
          c = void 0 === l ? 1 : l,
          d = 1 - a
        ;(d = Et(0.05, 1, d)),
          (i = Et(0.01, 10, i / 1e3)),
          d < 1
            ? ((t = function (e) {
                var t = e * d,
                  n = t * i,
                  r = t - u,
                  o = Tt(e, d),
                  a = Math.exp(-n)
                return kt - (r / o) * a
              }),
              (n = function (e) {
                var n = e * d * i,
                  r = n * u + u,
                  o = Math.pow(d, 2) * Math.pow(e, 2) * i,
                  a = Math.exp(-n),
                  s = Tt(Math.pow(e, 2), d)
                return ((-t(e) + kt > 0 ? -1 : 1) * ((r - o) * a)) / s
              }))
            : ((t = function (e) {
                return Math.exp(-e * i) * ((e - u) * i + 1) - 0.001
              }),
              (n = function (e) {
                return Math.exp(-e * i) * (i * i * (u - e))
              }))
        var f = (function (e, t, n) {
          for (var r = n, i = 1; i < 12; i++) r -= e(r) / t(r)
          return r
        })(t, n, 5 / i)
        if (((i *= 1e3), isNaN(f))) return { stiffness: 100, damping: 10, duration: i }
        var h = Math.pow(f, 2) * c
        return { stiffness: h, damping: 2 * d * Math.sqrt(c * h), duration: i }
      }
      function Tt(e, t) {
        return e * Math.sqrt(1 - t * t)
      }
      var Ot = ['duration', 'bounce'],
        Ct = ['stiffness', 'damping', 'mass']
      function St(e, t) {
        return t.some(function (t) {
          return void 0 !== e[t]
        })
      }
      function At(e) {
        var t = e.from,
          n = void 0 === t ? 0 : t,
          r = e.to,
          i = void 0 === r ? 1 : r,
          o = e.restSpeed,
          a = void 0 === o ? 2 : o,
          s = e.restDelta,
          u = xt(e, ['from', 'to', 'restSpeed', 'restDelta']),
          l = { done: !1, value: n },
          c = (function (e) {
            var t = wt(
              { velocity: 0, stiffness: 100, damping: 10, mass: 1, isResolvedFromDuration: !1 },
              e,
            )
            if (!St(e, Ct) && St(e, Ot)) {
              var n = _t(e)
              ;(t = wt(wt(wt({}, t), n), { velocity: 0, mass: 1 })).isResolvedFromDuration = !0
            }
            return t
          })(u),
          d = c.stiffness,
          f = c.damping,
          h = c.mass,
          p = c.velocity,
          v = c.duration,
          m = c.isResolvedFromDuration,
          g = Pt,
          y = Pt
        function b() {
          var e = p ? -p / 1e3 : 0,
            t = i - n,
            r = f / (2 * Math.sqrt(d * h)),
            o = Math.sqrt(d / h) / 1e3
          if (((null !== s && void 0 !== s) || (s = Math.abs(i - n) <= 1 ? 0.01 : 0.4), r < 1)) {
            var a = Tt(o, r)
            ;(g = function (n) {
              var s = Math.exp(-r * o * n)
              return i - s * (((e + r * o * t) / a) * Math.sin(a * n) + t * Math.cos(a * n))
            }),
              (y = function (n) {
                var i = Math.exp(-r * o * n)
                return (
                  r * o * i * ((Math.sin(a * n) * (e + r * o * t)) / a + t * Math.cos(a * n)) -
                  i * (Math.cos(a * n) * (e + r * o * t) - a * t * Math.sin(a * n))
                )
              })
          } else if (1 === r)
            g = function (n) {
              return i - Math.exp(-o * n) * (t + (e + o * t) * n)
            }
          else {
            var u = o * Math.sqrt(r * r - 1)
            g = function (n) {
              var a = Math.exp(-r * o * n),
                s = Math.min(u * n, 300)
              return i - (a * ((e + r * o * t) * Math.sinh(s) + u * t * Math.cosh(s))) / u
            }
          }
        }
        return (
          b(),
          {
            next: function (e) {
              var t = g(e)
              if (m) l.done = e >= v
              else {
                var n = 1e3 * y(e),
                  r = Math.abs(n) <= a,
                  o = Math.abs(i - t) <= s
                l.done = r && o
              }
              return (l.value = l.done ? i : t), l
            },
            flipTarget: function () {
              var e
              ;(p = -p), (n = (e = [i, n])[0]), (i = e[1]), b()
            },
          }
        )
      }
      At.needsInterpolation = function (e, t) {
        return 'string' === typeof e || 'string' === typeof t
      }
      var Pt = function (e) {
          return 0
        },
        Mt = function (e, t, n) {
          var r = t - e
          return 0 === r ? 1 : (n - e) / r
        },
        Rt = function (e, t, n) {
          return -n * e + n * t + e
        },
        jt = function (e, t) {
          return function (n) {
            return Boolean(
              (te(n) && ee.test(n) && n.startsWith(e)) ||
                (t && Object.prototype.hasOwnProperty.call(n, t)),
            )
          }
        },
        Dt = function (e, t, n) {
          return function (r) {
            var i
            if (!te(r)) return r
            var o = r.match(Q),
              a = o[0],
              s = o[1],
              u = o[2],
              l = o[3]
            return (
              ((i = {})[e] = parseFloat(a)),
              (i[t] = parseFloat(s)),
              (i[n] = parseFloat(u)),
              (i.alpha = void 0 !== l ? parseFloat(l) : 1),
              i
            )
          }
        },
        Lt = X(0, 255),
        Nt = $($({}, le), {
          transform: function (e) {
            return Math.round(Lt(e))
          },
        }),
        It = {
          test: jt('rgb', 'red'),
          parse: Dt('red', 'green', 'blue'),
          transform: function (e) {
            var t = e.red,
              n = e.green,
              r = e.blue,
              i = e.alpha,
              o = void 0 === i ? 1 : i
            return (
              'rgba(' +
              Nt.transform(t) +
              ', ' +
              Nt.transform(n) +
              ', ' +
              Nt.transform(r) +
              ', ' +
              Y(ce.transform(o)) +
              ')'
            )
          },
        }
      var zt = {
          test: jt('#'),
          parse: function (e) {
            var t = '',
              n = '',
              r = '',
              i = ''
            return (
              e.length > 5
                ? ((t = e.substr(1, 2)),
                  (n = e.substr(3, 2)),
                  (r = e.substr(5, 2)),
                  (i = e.substr(7, 2)))
                : ((t = e.substr(1, 1)),
                  (n = e.substr(2, 1)),
                  (r = e.substr(3, 1)),
                  (i = e.substr(4, 1)),
                  (t += t),
                  (n += n),
                  (r += r),
                  (i += i)),
              {
                red: parseInt(t, 16),
                green: parseInt(n, 16),
                blue: parseInt(r, 16),
                alpha: i ? parseInt(i, 16) / 255 : 1,
              }
            )
          },
          transform: It.transform,
        },
        Ht = {
          test: jt('hsl', 'hue'),
          parse: Dt('hue', 'saturation', 'lightness'),
          transform: function (e) {
            var t = e.hue,
              n = e.saturation,
              r = e.lightness,
              i = e.alpha,
              o = void 0 === i ? 1 : i
            return (
              'hsla(' +
              Math.round(t) +
              ', ' +
              ie.transform(Y(n)) +
              ', ' +
              ie.transform(Y(r)) +
              ', ' +
              Y(ce.transform(o)) +
              ')'
            )
          },
        },
        Bt = function (e, t, n) {
          var r = e * e,
            i = t * t
          return Math.sqrt(Math.max(0, n * (i - r) + r))
        },
        Ft = [zt, It, Ht],
        Vt = function (e) {
          return Ft.find(function (t) {
            return t.test(e)
          })
        },
        Ut = function (e) {
          return "'" + e + "' is not an animatable color. Use the equivalent color code instead."
        },
        Gt = function (e, t) {
          var n = Vt(e),
            r = Vt(t)
          Ut(e), Ut(t), n.transform, r.transform
          var i = n.parse(e),
            o = r.parse(t),
            a = wt({}, i),
            s = n === Ht ? Rt : Bt
          return function (e) {
            for (var t in a) 'alpha' !== t && (a[t] = s(i[t], o[t], e))
            return (a.alpha = Rt(i.alpha, o.alpha, e)), n.transform(a)
          }
        },
        qt = {
          test: function (e) {
            return It.test(e) || zt.test(e) || Ht.test(e)
          },
          parse: function (e) {
            return It.test(e) ? It.parse(e) : Ht.test(e) ? Ht.parse(e) : zt.parse(e)
          },
          transform: function (e) {
            return te(e) ? e : e.hasOwnProperty('red') ? It.transform(e) : Ht.transform(e)
          },
        },
        Wt = '${c}',
        Kt = '${n}'
      function Zt(e) {
        var t = [],
          n = 0,
          r = e.match(J)
        r && ((n = r.length), (e = e.replace(J, Wt)), t.push.apply(t, r.map(qt.parse)))
        var i = e.match(Q)
        return (
          i && ((e = e.replace(Q, Kt)), t.push.apply(t, i.map(le.parse))),
          { values: t, numColors: n, tokenised: e }
        )
      }
      function $t(e) {
        return Zt(e).values
      }
      function Xt(e) {
        var t = Zt(e),
          n = t.values,
          r = t.numColors,
          i = t.tokenised,
          o = n.length
        return function (e) {
          for (var t = i, n = 0; n < o; n++)
            t = t.replace(n < r ? Wt : Kt, n < r ? qt.transform(e[n]) : Y(e[n]))
          return t
        }
      }
      var Yt = function (e) {
        return 'number' === typeof e ? 0 : e
      }
      var Qt = {
          test: function (e) {
            var t, n, r, i
            return (
              isNaN(e) &&
              te(e) &&
              (null !== (n = null === (t = e.match(Q)) || void 0 === t ? void 0 : t.length) &&
              void 0 !== n
                ? n
                : 0) +
                (null !== (i = null === (r = e.match(J)) || void 0 === r ? void 0 : r.length) &&
                void 0 !== i
                  ? i
                  : 0) >
                0
            )
          },
          parse: $t,
          createTransformer: Xt,
          getAnimatableNone: function (e) {
            var t = $t(e)
            return Xt(e)(t.map(Yt))
          },
        },
        Jt = function (e) {
          return 'number' === typeof e
        }
      function en(e, t) {
        return Jt(e)
          ? function (n) {
              return Rt(e, t, n)
            }
          : qt.test(e)
          ? Gt(e, t)
          : on(e, t)
      }
      var tn = function (e, t) {
          var n = (function (e, t, n) {
              if (n || 2 === arguments.length)
                for (var r, i = 0, o = t.length; i < o; i++)
                  (!r && i in t) || (r || (r = Array.prototype.slice.call(t, 0, i)), (r[i] = t[i]))
              return e.concat(r || t)
            })([], e),
            r = n.length,
            i = e.map(function (e, n) {
              return en(e, t[n])
            })
          return function (e) {
            for (var t = 0; t < r; t++) n[t] = i[t](e)
            return n
          }
        },
        nn = function (e, t) {
          var n = wt(wt({}, e), t),
            r = {}
          for (var i in n) void 0 !== e[i] && void 0 !== t[i] && (r[i] = en(e[i], t[i]))
          return function (e) {
            for (var t in r) n[t] = r[t](e)
            return n
          }
        }
      function rn(e) {
        for (var t = Qt.parse(e), n = t.length, r = 0, i = 0, o = 0, a = 0; a < n; a++)
          r || 'number' === typeof t[a] ? r++ : void 0 !== t[a].hue ? o++ : i++
        return { parsed: t, numNumbers: r, numRGB: i, numHSL: o }
      }
      var on = function (e, t) {
          var n = Qt.createTransformer(t),
            r = rn(e),
            i = rn(t)
          return (
            r.numHSL === i.numHSL && r.numRGB === i.numRGB && (r.numNumbers, i.numNumbers),
            mt(tn(r.parsed, i.parsed), n)
          )
        },
        an = function (e, t) {
          return function (n) {
            return Rt(e, t, n)
          }
        }
      function sn(e, t, n) {
        for (
          var r,
            i = [],
            o =
              n ||
              ('number' === typeof (r = e[0])
                ? an
                : 'string' === typeof r
                ? qt.test(r)
                  ? Gt
                  : on
                : Array.isArray(r)
                ? tn
                : 'object' === typeof r
                ? nn
                : void 0),
            a = e.length - 1,
            s = 0;
          s < a;
          s++
        ) {
          var u = o(e[s], e[s + 1])
          if (t) {
            var l = Array.isArray(t) ? t[s] : t
            u = mt(l, u)
          }
          i.push(u)
        }
        return i
      }
      function un(e, t, n) {
        var r = void 0 === n ? {} : n,
          i = r.clamp,
          o = void 0 === i || i,
          a = r.ease,
          s = r.mixer,
          u = e.length
        t.length,
          !a || !Array.isArray(a) || a.length,
          e[0] > e[u - 1] && ((e = [].concat(e)), (t = [].concat(t)), e.reverse(), t.reverse())
        var l = sn(t, a, s),
          c =
            2 === u
              ? (function (e, t) {
                  var n = e[0],
                    r = e[1],
                    i = t[0]
                  return function (e) {
                    return i(Mt(n, r, e))
                  }
                })(e, l)
              : (function (e, t) {
                  var n = e.length,
                    r = n - 1
                  return function (i) {
                    var o = 0,
                      a = !1
                    if ((i <= e[0] ? (a = !0) : i >= e[r] && ((o = r - 1), (a = !0)), !a)) {
                      for (var s = 1; s < n && !(e[s] > i || s === r); s++);
                      o = s - 1
                    }
                    var u = Mt(e[o], e[o + 1], i)
                    return t[o](u)
                  }
                })(e, l)
        return o
          ? function (t) {
              return c(Et(e[0], e[u - 1], t))
            }
          : c
      }
      var ln,
        cn = function (e) {
          return function (t) {
            return 1 - e(1 - t)
          }
        },
        dn = function (e) {
          return function (t) {
            return t <= 0.5 ? e(2 * t) / 2 : (2 - e(2 * (1 - t))) / 2
          }
        },
        fn = function (e) {
          return function (t) {
            return t * t * ((e + 1) * t - e)
          }
        },
        hn = function (e) {
          return e
        },
        pn =
          ((ln = 2),
          function (e) {
            return Math.pow(e, ln)
          }),
        vn = cn(pn),
        mn = dn(pn),
        gn = function (e) {
          return 1 - Math.sin(Math.acos(e))
        },
        yn = cn(gn),
        bn = dn(yn),
        wn = fn(1.525),
        xn = cn(wn),
        En = dn(wn),
        kn = (function (e) {
          var t = fn(e)
          return function (e) {
            return (e *= 2) < 1 ? 0.5 * t(e) : 0.5 * (2 - Math.pow(2, -10 * (e - 1)))
          }
        })(1.525),
        _n = function (e) {
          if (1 === e || 0 === e) return e
          var t = e * e
          return e < 0.36363636363636365
            ? 7.5625 * t
            : e < 0.7272727272727273
            ? 9.075 * t - 9.9 * e + 3.4
            : e < 0.9
            ? 12.066481994459833 * t - 19.63545706371191 * e + 8.898060941828255
            : 10.8 * e * e - 20.52 * e + 10.72
        },
        Tn = cn(_n)
      function On(e, t) {
        return e
          .map(function () {
            return t || mn
          })
          .splice(0, e.length - 1)
      }
      function Cn(e) {
        var t = e.from,
          n = void 0 === t ? 0 : t,
          r = e.to,
          i = void 0 === r ? 1 : r,
          o = e.ease,
          a = e.offset,
          s = e.duration,
          u = void 0 === s ? 300 : s,
          l = { done: !1, value: n },
          c = Array.isArray(i) ? i : [n, i],
          d = (function (e, t) {
            return e.map(function (e) {
              return e * t
            })
          })(
            a && a.length === c.length
              ? a
              : (function (e) {
                  var t = e.length
                  return e.map(function (e, n) {
                    return 0 !== n ? n / (t - 1) : 0
                  })
                })(c),
            u,
          )
        function f() {
          return un(d, c, { ease: Array.isArray(o) ? o : On(c, o) })
        }
        var h = f()
        return {
          next: function (e) {
            return (l.value = h(e)), (l.done = e >= u), l
          },
          flipTarget: function () {
            c.reverse(), (h = f())
          },
        }
      }
      var Sn = {
        keyframes: Cn,
        spring: At,
        decay: function (e) {
          var t = e.velocity,
            n = void 0 === t ? 0 : t,
            r = e.from,
            i = void 0 === r ? 0 : r,
            o = e.power,
            a = void 0 === o ? 0.8 : o,
            s = e.timeConstant,
            u = void 0 === s ? 350 : s,
            l = e.restDelta,
            c = void 0 === l ? 0.5 : l,
            d = e.modifyTarget,
            f = { done: !1, value: i },
            h = a * n,
            p = i + h,
            v = void 0 === d ? p : d(p)
          return (
            v !== p && (h = v - i),
            {
              next: function (e) {
                var t = -h * Math.exp(-e / u)
                return (f.done = !(t > c || t < -c)), (f.value = f.done ? v : v + t), f
              },
              flipTarget: function () {},
            }
          )
        },
      }
      var An = n(9839)
      function Pn(e, t, n) {
        return void 0 === n && (n = 0), e - t - n
      }
      var Mn = function (e) {
        var t = function (t) {
          var n = t.delta
          return e(n)
        }
        return {
          start: function () {
            return An.ZP.update(t, !0)
          },
          stop: function () {
            return An.qY.update(t)
          },
        }
      }
      function Rn(e) {
        var t,
          n,
          r,
          i,
          o,
          a = e.from,
          s = e.autoplay,
          u = void 0 === s || s,
          l = e.driver,
          c = void 0 === l ? Mn : l,
          d = e.elapsed,
          f = void 0 === d ? 0 : d,
          h = e.repeat,
          p = void 0 === h ? 0 : h,
          v = e.repeatType,
          m = void 0 === v ? 'loop' : v,
          g = e.repeatDelay,
          y = void 0 === g ? 0 : g,
          b = e.onPlay,
          w = e.onStop,
          x = e.onComplete,
          E = e.onRepeat,
          k = e.onUpdate,
          _ = xt(e, [
            'from',
            'autoplay',
            'driver',
            'elapsed',
            'repeat',
            'repeatType',
            'repeatDelay',
            'onPlay',
            'onStop',
            'onComplete',
            'onRepeat',
            'onUpdate',
          ]),
          T = _.to,
          O = 0,
          C = _.duration,
          S = !1,
          A = !0,
          P = (function (e) {
            if (Array.isArray(e.to)) return Cn
            if (Sn[e.type]) return Sn[e.type]
            var t = new Set(Object.keys(e))
            return t.has('ease') || (t.has('duration') && !t.has('dampingRatio'))
              ? Cn
              : t.has('dampingRatio') ||
                t.has('stiffness') ||
                t.has('mass') ||
                t.has('damping') ||
                t.has('restSpeed') ||
                t.has('restDelta')
              ? At
              : Cn
          })(_)
        ;(null === (n = (t = P).needsInterpolation) || void 0 === n ? void 0 : n.call(t, a, T)) &&
          ((o = un([0, 100], [a, T], { clamp: !1 })), (a = 0), (T = 100))
        var M = P(wt(wt({}, _), { from: a, to: T }))
        function R() {
          O++,
            'reverse' === m
              ? (f = (function (e, t, n, r) {
                  return (
                    void 0 === n && (n = 0),
                    void 0 === r && (r = !0),
                    r ? Pn(t + -e, t, n) : t - (e - t) + n
                  )
                })(f, C, y, (A = O % 2 === 0)))
              : ((f = Pn(f, C, y)), 'mirror' === m && M.flipTarget()),
            (S = !1),
            E && E()
        }
        function j(e) {
          if ((A || (e = -e), (f += e), !S)) {
            var t = M.next(Math.max(0, f))
            ;(i = t.value), o && (i = o(i)), (S = A ? t.done : f <= 0)
          }
          null === k || void 0 === k || k(i),
            S &&
              (0 === O && ((null !== C && void 0 !== C) || (C = f)),
              O < p
                ? (function (e, t, n, r) {
                    return r ? e >= t + n : e <= -n
                  })(f, C, y, A) && R()
                : (r.stop(), x && x()))
        }
        return (
          u && (null === b || void 0 === b || b(), (r = c(j)).start()),
          {
            stop: function () {
              null === w || void 0 === w || w(), r.stop()
            },
          }
        )
      }
      function jn(e, t) {
        return t ? e * (1e3 / t) : 0
      }
      var Dn = function (e) {
          return 1e3 * e
        },
        Ln = function (e, t) {
          return 1 - 3 * t + 3 * e
        },
        Nn = function (e, t) {
          return 3 * t - 6 * e
        },
        In = function (e) {
          return 3 * e
        },
        zn = function (e, t, n) {
          return ((Ln(t, n) * e + Nn(t, n)) * e + In(t)) * e
        },
        Hn = function (e, t, n) {
          return 3 * Ln(t, n) * e * e + 2 * Nn(t, n) * e + In(t)
        }
      var Bn = 0.1
      function Fn(e, t, n, r) {
        if (e === t && n === r) return hn
        for (var i = new Float32Array(11), o = 0; o < 11; ++o) i[o] = zn(o * Bn, e, n)
        function a(t) {
          for (var r = 0, o = 1; 10 !== o && i[o] <= t; ++o) r += Bn
          --o
          var a = r + ((t - i[o]) / (i[o + 1] - i[o])) * Bn,
            s = Hn(a, e, n)
          return s >= 0.001
            ? (function (e, t, n, r) {
                for (var i = 0; i < 8; ++i) {
                  var o = Hn(t, n, r)
                  if (0 === o) return t
                  t -= (zn(t, n, r) - e) / o
                }
                return t
              })(t, a, e, n)
            : 0 === s
            ? a
            : (function (e, t, n, r, i) {
                var o,
                  a,
                  s = 0
                do {
                  ;(o = zn((a = t + (n - t) / 2), r, i) - e) > 0 ? (n = a) : (t = a)
                } while (Math.abs(o) > 1e-7 && ++s < 10)
                return a
              })(t, r, r + Bn, e, n)
        }
        return function (e) {
          return 0 === e || 1 === e ? e : zn(a(e), t, r)
        }
      }
      var Vn = {
          linear: hn,
          easeIn: pn,
          easeInOut: mn,
          easeOut: vn,
          circIn: gn,
          circInOut: bn,
          circOut: yn,
          backIn: wn,
          backInOut: En,
          backOut: xn,
          anticipate: kn,
          bounceIn: Tn,
          bounceInOut: function (e) {
            return e < 0.5 ? 0.5 * (1 - _n(1 - 2 * e)) : 0.5 * _n(2 * e - 1) + 0.5
          },
          bounceOut: _n,
        },
        Un = function (e) {
          if (Array.isArray(e)) {
            e.length
            var t = (0, r.CR)(e, 4)
            return Fn(t[0], t[1], t[2], t[3])
          }
          return 'string' === typeof e ? Vn[e] : e
        },
        Gn = function (e, t) {
          return (
            'zIndex' !== e &&
            (!('number' !== typeof t && !Array.isArray(t)) ||
              !('string' !== typeof t || !Qt.test(t) || t.startsWith('url(')))
          )
        },
        qn = function () {
          return { type: 'spring', stiffness: 500, damping: 25, restDelta: 0.5, restSpeed: 10 }
        },
        Wn = function (e) {
          return {
            type: 'spring',
            stiffness: 550,
            damping: 0 === e ? 2 * Math.sqrt(550) : 30,
            restDelta: 0.01,
            restSpeed: 10,
          }
        },
        Kn = function () {
          return { type: 'keyframes', ease: 'linear', duration: 0.3 }
        },
        Zn = function (e) {
          return { type: 'keyframes', duration: 0.8, values: e }
        },
        $n = {
          x: qn,
          y: qn,
          z: qn,
          rotate: qn,
          rotateX: qn,
          rotateY: qn,
          rotateZ: qn,
          scaleX: Wn,
          scaleY: Wn,
          scale: Wn,
          opacity: Kn,
          backgroundColor: Kn,
          color: Kn,
          default: Wn,
        },
        Xn = new Set(['brightness', 'contrast', 'saturate', 'opacity'])
      function Yn(e) {
        var t = e.slice(0, -1).split('('),
          n = t[0],
          r = t[1]
        if ('drop-shadow' === n) return e
        var i = (r.match(Q) || [])[0]
        if (!i) return e
        var o = r.replace(i, ''),
          a = Xn.has(n) ? 1 : 0
        return i !== r && (a *= 100), n + '(' + a + o + ')'
      }
      var Qn = /([a-z-]*)\(.*?\)/g,
        Jn = $($({}, Qt), {
          getAnimatableNone: function (e) {
            var t = e.match(Qn)
            return t ? t.map(Yn).join(' ') : e
          },
        }),
        er = (0, r.pi)((0, r.pi)({}, he), {
          color: qt,
          backgroundColor: qt,
          outlineColor: qt,
          fill: qt,
          stroke: qt,
          borderColor: qt,
          borderTopColor: qt,
          borderRightColor: qt,
          borderBottomColor: qt,
          borderLeftColor: qt,
          filter: Jn,
          WebkitFilter: Jn,
        }),
        tr = function (e) {
          return er[e]
        }
      function nr(e, t) {
        var n,
          r = tr(e)
        return (
          r !== Jn && (r = Qt),
          null === (n = r.getAnimatableNone) || void 0 === n ? void 0 : n.call(r, t)
        )
      }
      function rr(e) {
        var t = e.ease,
          n = e.times,
          i = e.yoyo,
          o = e.flip,
          a = e.loop,
          s = (0, r._T)(e, ['ease', 'times', 'yoyo', 'flip', 'loop']),
          u = (0, r.pi)({}, s)
        return (
          n && (u.offset = n),
          s.duration && (u.duration = Dn(s.duration)),
          s.repeatDelay && (u.repeatDelay = Dn(s.repeatDelay)),
          t &&
            (u.ease = (function (e) {
              return Array.isArray(e) && 'number' !== typeof e[0]
            })(t)
              ? t.map(Un)
              : Un(t)),
          'tween' === s.type && (u.type = 'keyframes'),
          (i || a || o) &&
            (!0,
            i
              ? (u.repeatType = 'reverse')
              : a
              ? (u.repeatType = 'loop')
              : o && (u.repeatType = 'mirror'),
            (u.repeat = a || i || o || s.repeat)),
          'spring' !== s.type && (u.type = 'keyframes'),
          u
        )
      }
      function ir(e, t, n) {
        var i
        return (
          Array.isArray(t.to) &&
            ((null !== (i = e.duration) && void 0 !== i) || (e.duration = 0.8)),
          (function (e) {
            Array.isArray(e.to) &&
              null === e.to[0] &&
              ((e.to = (0, r.ev)([], (0, r.CR)(e.to))), (e.to[0] = e.from))
          })(t),
          (function (e) {
            e.when,
              e.delay,
              e.delayChildren,
              e.staggerChildren,
              e.staggerDirection,
              e.repeat,
              e.repeatType,
              e.repeatDelay,
              e.from
            var t = (0, r._T)(e, [
              'when',
              'delay',
              'delayChildren',
              'staggerChildren',
              'staggerDirection',
              'repeat',
              'repeatType',
              'repeatDelay',
              'from',
            ])
            return !!Object.keys(t).length
          })(e) ||
            (e = (0, r.pi)(
              (0, r.pi)({}, e),
              (function (e, t) {
                var n
                return (n = He(t) ? Zn : $n[e] || $n.default), (0, r.pi)({ to: t }, n(t))
              })(n, t.to),
            )),
          (0, r.pi)((0, r.pi)({}, t), rr(e))
        )
      }
      function or(e, t, n, i, o) {
        var a,
          s = ur(i, e),
          u = null !== (a = s.from) && void 0 !== a ? a : t.get(),
          l = Gn(e, n)
        'none' === u && l && 'string' === typeof n
          ? (u = nr(e, n))
          : ar(u) && 'string' === typeof n
          ? (u = sr(n))
          : !Array.isArray(n) && ar(n) && 'string' === typeof u && (n = sr(u))
        var c = Gn(e, u)
        return c && l && !1 !== s.type
          ? function () {
              var i = {
                from: u,
                to: n,
                velocity: t.getVelocity(),
                onComplete: o,
                onUpdate: function (e) {
                  return t.set(e)
                },
              }
              return 'inertia' === s.type || 'decay' === s.type
                ? (function (e) {
                    var t,
                      n = e.from,
                      r = void 0 === n ? 0 : n,
                      i = e.velocity,
                      o = void 0 === i ? 0 : i,
                      a = e.min,
                      s = e.max,
                      u = e.power,
                      l = void 0 === u ? 0.8 : u,
                      c = e.timeConstant,
                      d = void 0 === c ? 750 : c,
                      f = e.bounceStiffness,
                      h = void 0 === f ? 500 : f,
                      p = e.bounceDamping,
                      v = void 0 === p ? 10 : p,
                      m = e.restDelta,
                      g = void 0 === m ? 1 : m,
                      y = e.modifyTarget,
                      b = e.driver,
                      w = e.onUpdate,
                      x = e.onComplete
                    function E(e) {
                      return (void 0 !== a && e < a) || (void 0 !== s && e > s)
                    }
                    function k(e) {
                      return void 0 === a
                        ? s
                        : void 0 === s || Math.abs(a - e) < Math.abs(s - e)
                        ? a
                        : s
                    }
                    function _(e) {
                      null === t || void 0 === t || t.stop(),
                        (t = Rn(
                          wt(wt({}, e), {
                            driver: b,
                            onUpdate: function (t) {
                              var n
                              null === w || void 0 === w || w(t),
                                null === (n = e.onUpdate) || void 0 === n || n.call(e, t)
                            },
                            onComplete: x,
                          }),
                        ))
                    }
                    function T(e) {
                      _(wt({ type: 'spring', stiffness: h, damping: v, restDelta: g }, e))
                    }
                    if (E(r)) T({ from: r, velocity: o, to: k(r) })
                    else {
                      var O = l * o + r
                      'undefined' !== typeof y && (O = y(O))
                      var C,
                        S,
                        A = k(O),
                        P = A === a ? -1 : 1
                      _({
                        type: 'decay',
                        from: r,
                        velocity: o,
                        timeConstant: d,
                        power: l,
                        restDelta: g,
                        modifyTarget: y,
                        onUpdate: E(O)
                          ? function (e) {
                              ;(C = S),
                                (S = e),
                                (o = jn(e - C, (0, An.$B)().delta)),
                                ((1 === P && e > A) || (-1 === P && e < A)) &&
                                  T({ from: e, to: A, velocity: o })
                            }
                          : void 0,
                      })
                    }
                    return {
                      stop: function () {
                        return null === t || void 0 === t ? void 0 : t.stop()
                      },
                    }
                  })((0, r.pi)((0, r.pi)({}, i), s))
                : Rn(
                    (0, r.pi)((0, r.pi)({}, ir(s, i, e)), {
                      onUpdate: function (e) {
                        var t
                        i.onUpdate(e), null === (t = s.onUpdate) || void 0 === t || t.call(s, e)
                      },
                      onComplete: function () {
                        var e
                        i.onComplete(), null === (e = s.onComplete) || void 0 === e || e.call(s)
                      },
                    }),
                  )
            }
          : function () {
              var e
              return (
                t.set(n),
                o(),
                null === (e = null === s || void 0 === s ? void 0 : s.onComplete) ||
                  void 0 === e ||
                  e.call(s),
                { stop: function () {} }
              )
            }
      }
      function ar(e) {
        return 0 === e || ('string' === typeof e && 0 === parseFloat(e) && -1 === e.indexOf(' '))
      }
      function sr(e) {
        return 'number' === typeof e ? 0 : nr('', e)
      }
      function ur(e, t) {
        return e[t] || e.default || e
      }
      function lr(e, t, n, r) {
        return (
          void 0 === r && (r = {}),
          t.start(function (i) {
            var o,
              a,
              s = or(e, t, n, r, i),
              u = (function (e, t) {
                var n
                return null !== (n = (ur(e, t) || {}).delay) && void 0 !== n ? n : 0
              })(r, e),
              l = function () {
                return (a = s())
              }
            return (
              u ? (o = setTimeout(l, Dn(u))) : l(),
              function () {
                clearTimeout(o), null === a || void 0 === a || a.stop()
              }
            )
          })
        )
      }
      function cr(e, t) {
        ;-1 === e.indexOf(t) && e.push(t)
      }
      function dr(e, t) {
        var n = e.indexOf(t)
        n > -1 && e.splice(n, 1)
      }
      var fr = (function () {
          function e() {
            this.subscriptions = []
          }
          return (
            (e.prototype.add = function (e) {
              var t = this
              return (
                cr(this.subscriptions, e),
                function () {
                  return dr(t.subscriptions, e)
                }
              )
            }),
            (e.prototype.notify = function (e, t, n) {
              var r = this.subscriptions.length
              if (r)
                if (1 === r) this.subscriptions[0](e, t, n)
                else
                  for (var i = 0; i < r; i++) {
                    var o = this.subscriptions[i]
                    o && o(e, t, n)
                  }
            }),
            (e.prototype.getSize = function () {
              return this.subscriptions.length
            }),
            (e.prototype.clear = function () {
              this.subscriptions.length = 0
            }),
            e
          )
        })(),
        hr = (function () {
          function e(e) {
            var t,
              n = this
            ;(this.timeDelta = 0),
              (this.lastUpdated = 0),
              (this.updateSubscribers = new fr()),
              (this.velocityUpdateSubscribers = new fr()),
              (this.renderSubscribers = new fr()),
              (this.canTrackVelocity = !1),
              (this.updateAndNotify = function (e, t) {
                void 0 === t && (t = !0), (n.prev = n.current), (n.current = e)
                var r = (0, An.$B)(),
                  i = r.delta,
                  o = r.timestamp
                n.lastUpdated !== o &&
                  ((n.timeDelta = i),
                  (n.lastUpdated = o),
                  An.ZP.postRender(n.scheduleVelocityCheck)),
                  n.prev !== n.current && n.updateSubscribers.notify(n.current),
                  n.velocityUpdateSubscribers.getSize() &&
                    n.velocityUpdateSubscribers.notify(n.getVelocity()),
                  t && n.renderSubscribers.notify(n.current)
              }),
              (this.scheduleVelocityCheck = function () {
                return An.ZP.postRender(n.velocityCheck)
              }),
              (this.velocityCheck = function (e) {
                e.timestamp !== n.lastUpdated &&
                  ((n.prev = n.current), n.velocityUpdateSubscribers.notify(n.getVelocity()))
              }),
              (this.hasAnimated = !1),
              (this.prev = this.current = e),
              (this.canTrackVelocity = ((t = this.current), !isNaN(parseFloat(t))))
          }
          return (
            (e.prototype.onChange = function (e) {
              return this.updateSubscribers.add(e)
            }),
            (e.prototype.clearListeners = function () {
              this.updateSubscribers.clear()
            }),
            (e.prototype.onRenderRequest = function (e) {
              return e(this.get()), this.renderSubscribers.add(e)
            }),
            (e.prototype.attach = function (e) {
              this.passiveEffect = e
            }),
            (e.prototype.set = function (e, t) {
              void 0 === t && (t = !0),
                t && this.passiveEffect
                  ? this.passiveEffect(e, this.updateAndNotify)
                  : this.updateAndNotify(e, t)
            }),
            (e.prototype.get = function () {
              return this.current
            }),
            (e.prototype.getPrevious = function () {
              return this.prev
            }),
            (e.prototype.getVelocity = function () {
              return this.canTrackVelocity
                ? jn(parseFloat(this.current) - parseFloat(this.prev), this.timeDelta)
                : 0
            }),
            (e.prototype.start = function (e) {
              var t = this
              return (
                this.stop(),
                new Promise(function (n) {
                  ;(t.hasAnimated = !0), (t.stopAnimation = e(n))
                }).then(function () {
                  return t.clearAnimation()
                })
              )
            }),
            (e.prototype.stop = function () {
              this.stopAnimation && this.stopAnimation(), this.clearAnimation()
            }),
            (e.prototype.isAnimating = function () {
              return !!this.stopAnimation
            }),
            (e.prototype.clearAnimation = function () {
              this.stopAnimation = null
            }),
            (e.prototype.destroy = function () {
              this.updateSubscribers.clear(), this.renderSubscribers.clear(), this.stop()
            }),
            e
          )
        })()
      function pr(e) {
        return new hr(e)
      }
      var vr = function (e) {
          return function (t) {
            return t.test(e)
          }
        },
        mr = [
          le,
          oe,
          ie,
          re,
          se,
          ae,
          {
            test: function (e) {
              return 'auto' === e
            },
            parse: function (e) {
              return e
            },
          },
        ],
        gr = function (e) {
          return mr.find(vr(e))
        },
        yr = (0, r.ev)((0, r.ev)([], (0, r.CR)(mr)), [qt, Qt]),
        br = function (e) {
          return yr.find(vr(e))
        }
      function wr(e, t, n) {
        e.hasValue(t) ? e.getValue(t).set(n) : e.addValue(t, pr(n))
      }
      function xr(e, t) {
        var n = C(e, t),
          i = n ? e.makeTargetAnimatable(n, !1) : {},
          o = i.transitionEnd,
          a = void 0 === o ? {} : o
        i.transition
        var s,
          u = (0, r._T)(i, ['transitionEnd', 'transition'])
        for (var l in (u = (0, r.pi)((0, r.pi)({}, u), a))) {
          wr(e, l, ((s = u[l]), He(s) ? s[s.length - 1] || 0 : s))
        }
      }
      function Er(e, t) {
        if (t) return (t[e] || t.default || t).from
      }
      function kr(e, t, n) {
        var i
        void 0 === n && (n = {})
        var o = C(e, t, n.custom),
          a = (o || {}).transition,
          s = void 0 === a ? e.getDefaultTransition() || {} : a
        n.transitionOverride && (s = n.transitionOverride)
        var u = o
            ? function () {
                return _r(e, o, n)
              }
            : function () {
                return Promise.resolve()
              },
          l = (null === (i = e.variantChildren) || void 0 === i ? void 0 : i.size)
            ? function (i) {
                void 0 === i && (i = 0)
                var o = s.delayChildren,
                  a = void 0 === o ? 0 : o,
                  u = s.staggerChildren,
                  l = s.staggerDirection
                return (function (e, t, n, i, o, a) {
                  void 0 === n && (n = 0)
                  void 0 === i && (i = 0)
                  void 0 === o && (o = 1)
                  var s = [],
                    u = (e.variantChildren.size - 1) * i,
                    l =
                      1 === o
                        ? function (e) {
                            return void 0 === e && (e = 0), e * i
                          }
                        : function (e) {
                            return void 0 === e && (e = 0), u - e * i
                          }
                  return (
                    Array.from(e.variantChildren)
                      .sort(Tr)
                      .forEach(function (e, i) {
                        s.push(
                          kr(e, t, (0, r.pi)((0, r.pi)({}, a), { delay: n + l(i) })).then(
                            function () {
                              return e.notifyAnimationComplete(t)
                            },
                          ),
                        )
                      }),
                    Promise.all(s)
                  )
                })(e, t, a + i, u, l, n)
              }
            : function () {
                return Promise.resolve()
              },
          c = s.when
        if (c) {
          var d = (0, r.CR)('beforeChildren' === c ? [u, l] : [l, u], 2),
            f = d[0],
            h = d[1]
          return f().then(h)
        }
        return Promise.all([u(), l(n.delay)])
      }
      function _r(e, t, n) {
        var i,
          o = void 0 === n ? {} : n,
          a = o.delay,
          s = void 0 === a ? 0 : a,
          u = o.transitionOverride,
          l = o.type,
          c = e.makeTargetAnimatable(t),
          d = c.transition,
          f = void 0 === d ? e.getDefaultTransition() : d,
          h = c.transitionEnd,
          p = (0, r._T)(c, ['transition', 'transitionEnd'])
        u && (f = u)
        var v = [],
          m = l && (null === (i = e.animationState) || void 0 === i ? void 0 : i.getState()[l])
        for (var g in p) {
          var y = e.getValue(g),
            b = p[g]
          if (!(!y || void 0 === b || (m && Or(m, g)))) {
            var w = lr(g, y, b, (0, r.pi)({ delay: s }, f))
            v.push(w)
          }
        }
        return Promise.all(v).then(function () {
          h && xr(e, h)
        })
      }
      function Tr(e, t) {
        return e.sortNodePosition(t)
      }
      function Or(e, t) {
        var n = e.protectedKeys,
          r = e.needsAnimating,
          i = n.hasOwnProperty(t) && !0 !== r[t]
        return (r[t] = !1), i
      }
      var Cr = [qe.Animate, qe.Hover, qe.Tap, qe.Drag, qe.Focus, qe.Exit],
        Sr = (0, r.ev)([], (0, r.CR)(Cr)).reverse(),
        Ar = Cr.length
      function Pr(e) {
        return function (t) {
          return Promise.all(
            t.map(function (t) {
              var n = t.animation,
                r = t.options
              return (function (e, t, n) {
                var r
                if ((void 0 === n && (n = {}), e.notifyAnimationStart(), Array.isArray(t))) {
                  var i = t.map(function (t) {
                    return kr(e, t, n)
                  })
                  r = Promise.all(i)
                } else if ('string' === typeof t) r = kr(e, t, n)
                else {
                  var o = 'function' === typeof t ? C(e, t, n.custom) : t
                  r = _r(e, o, n)
                }
                return r.then(function () {
                  return e.notifyAnimationComplete(t)
                })
              })(e, n, r)
            }),
          )
        }
      }
      function Mr(e) {
        var t = Pr(e),
          n = (function () {
            var e
            return (
              ((e = {})[qe.Animate] = Rr(!0)),
              (e[qe.Hover] = Rr()),
              (e[qe.Tap] = Rr()),
              (e[qe.Drag] = Rr()),
              (e[qe.Focus] = Rr()),
              (e[qe.Exit] = Rr()),
              e
            )
          })(),
          i = {},
          o = !0,
          a = function (t, n) {
            var i = C(e, n)
            if (i) {
              i.transition
              var o = i.transitionEnd,
                a = (0, r._T)(i, ['transition', 'transitionEnd'])
              t = (0, r.pi)((0, r.pi)((0, r.pi)({}, t), a), o)
            }
            return t
          }
        function s(s, u) {
          for (
            var l,
              c = e.getProps(),
              d = e.getVariantContext(!0) || {},
              f = [],
              h = new Set(),
              p = {},
              v = 1 / 0,
              m = function (t) {
                var i = Sr[t],
                  m = n[i],
                  g = null !== (l = c[i]) && void 0 !== l ? l : d[i],
                  y = T(g),
                  b = i === u ? m.isActive : null
                !1 === b && (v = t)
                var w = g === d[i] && g !== c[i] && y
                if (
                  (w && o && e.manuallyAnimateOnMount && (w = !1),
                  (m.protectedKeys = (0, r.pi)({}, p)),
                  (!m.isActive && null === b) ||
                    (!g && !m.prevProp) ||
                    ze(g) ||
                    'boolean' === typeof g)
                )
                  return 'continue'
                var x =
                    (function (e, t) {
                      if ('string' === typeof t) return t !== e
                      if (_(t)) return !bt(t, e)
                      return !1
                    })(m.prevProp, g) ||
                    (i === u && m.isActive && !w && y) ||
                    (t > v && y),
                  E = Array.isArray(g) ? g : [g],
                  k = E.reduce(a, {})
                !1 === b && (k = {})
                var O = m.prevResolvedValues,
                  C = void 0 === O ? {} : O,
                  S = (0, r.pi)((0, r.pi)({}, C), k),
                  A = function (e) {
                    ;(x = !0), h.delete(e), (m.needsAnimating[e] = !0)
                  }
                for (var P in S) {
                  var M = k[P],
                    R = C[P]
                  p.hasOwnProperty(P) ||
                    (M !== R
                      ? He(M) && He(R)
                        ? bt(M, R)
                          ? (m.protectedKeys[P] = !0)
                          : A(P)
                        : void 0 !== M
                        ? A(P)
                        : h.add(P)
                      : void 0 !== M && h.has(P)
                      ? A(P)
                      : (m.protectedKeys[P] = !0))
                }
                ;(m.prevProp = g),
                  (m.prevResolvedValues = k),
                  m.isActive && (p = (0, r.pi)((0, r.pi)({}, p), k)),
                  o && e.blockInitialAnimation && (x = !1),
                  x &&
                    !w &&
                    f.push.apply(
                      f,
                      (0, r.ev)(
                        [],
                        (0, r.CR)(
                          E.map(function (e) {
                            return { animation: e, options: (0, r.pi)({ type: i }, s) }
                          }),
                        ),
                      ),
                    )
              },
              g = 0;
            g < Ar;
            g++
          )
            m(g)
          if (((i = (0, r.pi)({}, p)), h.size)) {
            var y = {}
            h.forEach(function (t) {
              var n = e.getBaseTarget(t)
              void 0 !== n && (y[t] = n)
            }),
              f.push({ animation: y })
          }
          var b = Boolean(f.length)
          return (
            o && !1 === c.initial && !e.manuallyAnimateOnMount && (b = !1),
            (o = !1),
            b ? t(f) : Promise.resolve()
          )
        }
        return {
          isAnimated: function (e) {
            return void 0 !== i[e]
          },
          animateChanges: s,
          setActive: function (t, r, i) {
            var o
            return n[t].isActive === r
              ? Promise.resolve()
              : (null === (o = e.variantChildren) ||
                  void 0 === o ||
                  o.forEach(function (e) {
                    var n
                    return null === (n = e.animationState) || void 0 === n
                      ? void 0
                      : n.setActive(t, r)
                  }),
                (n[t].isActive = r),
                s(i, t))
          },
          setAnimateFunction: function (n) {
            t = n(e)
          },
          getState: function () {
            return n
          },
        }
      }
      function Rr(e) {
        return (
          void 0 === e && (e = !1),
          { isActive: e, protectedKeys: {}, needsAnimating: {}, prevResolvedValues: {} }
        )
      }
      var jr = {
          animation: gt(function (e) {
            var t = e.visualElement,
              n = e.animate
            t.animationState || (t.animationState = Mr(t)),
              ze(n) &&
                (0, i.useEffect)(
                  function () {
                    return n.subscribe(t)
                  },
                  [n],
                )
          }),
          exit: gt(function (e) {
            var t = e.custom,
              n = e.visualElement,
              o = (0, r.CR)(p(), 2),
              a = o[0],
              s = o[1],
              u = (0, i.useContext)(f.O)
            ;(0, i.useEffect)(
              function () {
                var e,
                  r,
                  i =
                    null === (e = n.animationState) || void 0 === e
                      ? void 0
                      : e.setActive(qe.Exit, !a, {
                          custom:
                            null !== (r = null === u || void 0 === u ? void 0 : u.custom) &&
                            void 0 !== r
                              ? r
                              : t,
                        })
                !a && (null === i || void 0 === i || i.then(s))
              },
              [a],
            )
          }),
        },
        Dr = function (e) {
          return e.hasOwnProperty('x') && e.hasOwnProperty('y')
        },
        Lr = function (e) {
          return Dr(e) && e.hasOwnProperty('z')
        },
        Nr = function (e, t) {
          return Math.abs(e - t)
        }
      function Ir(e, t) {
        if (Jt(e) && Jt(t)) return Nr(e, t)
        if (Dr(e) && Dr(t)) {
          var n = Nr(e.x, t.x),
            r = Nr(e.y, t.y),
            i = Lr(e) && Lr(t) ? Nr(e.z, t.z) : 0
          return Math.sqrt(Math.pow(n, 2) + Math.pow(r, 2) + Math.pow(i, 2))
        }
      }
      var zr = (function () {
        function e(e, t, n) {
          var i = this,
            o = (void 0 === n ? {} : n).transformPagePoint
          if (
            ((this.startEvent = null),
            (this.lastMoveEvent = null),
            (this.lastMoveEventInfo = null),
            (this.handlers = {}),
            (this.updatePoint = function () {
              if (i.lastMoveEvent && i.lastMoveEventInfo) {
                var e = Fr(i.lastMoveEventInfo, i.history),
                  t = null !== i.startEvent,
                  n = Ir(e.offset, { x: 0, y: 0 }) >= 3
                if (t || n) {
                  var o = e.point,
                    a = (0, An.$B)().timestamp
                  i.history.push((0, r.pi)((0, r.pi)({}, o), { timestamp: a }))
                  var s = i.handlers,
                    u = s.onStart,
                    l = s.onMove
                  t || (u && u(i.lastMoveEvent, e), (i.startEvent = i.lastMoveEvent)),
                    l && l(i.lastMoveEvent, e)
                }
              }
            }),
            (this.handlePointerMove = function (e, t) {
              ;(i.lastMoveEvent = e),
                (i.lastMoveEventInfo = Hr(t, i.transformPagePoint)),
                $e(e) && 0 === e.buttons ? i.handlePointerUp(e, t) : An.ZP.update(i.updatePoint, !0)
            }),
            (this.handlePointerUp = function (e, t) {
              i.end()
              var n = i.handlers,
                r = n.onEnd,
                o = n.onSessionEnd,
                a = Fr(Hr(t, i.transformPagePoint), i.history)
              i.startEvent && r && r(e, a), o && o(e, a)
            }),
            !(Xe(e) && e.touches.length > 1))
          ) {
            ;(this.handlers = t), (this.transformPagePoint = o)
            var a = Hr(et(e), this.transformPagePoint),
              s = a.point,
              u = (0, An.$B)().timestamp
            this.history = [(0, r.pi)((0, r.pi)({}, s), { timestamp: u })]
            var l = t.onSessionStart
            l && l(e, Fr(a, this.history)),
              (this.removeListeners = mt(
                ot(window, 'pointermove', this.handlePointerMove),
                ot(window, 'pointerup', this.handlePointerUp),
                ot(window, 'pointercancel', this.handlePointerUp),
              ))
          }
        }
        return (
          (e.prototype.updateHandlers = function (e) {
            this.handlers = e
          }),
          (e.prototype.end = function () {
            this.removeListeners && this.removeListeners(), An.qY.update(this.updatePoint)
          }),
          e
        )
      })()
      function Hr(e, t) {
        return t ? { point: t(e.point) } : e
      }
      function Br(e, t) {
        return { x: e.x - t.x, y: e.y - t.y }
      }
      function Fr(e, t) {
        var n = e.point
        return { point: n, delta: Br(n, Ur(t)), offset: Br(n, Vr(t)), velocity: Gr(t, 0.1) }
      }
      function Vr(e) {
        return e[0]
      }
      function Ur(e) {
        return e[e.length - 1]
      }
      function Gr(e, t) {
        if (e.length < 2) return { x: 0, y: 0 }
        for (
          var n = e.length - 1, r = null, i = Ur(e);
          n >= 0 && ((r = e[n]), !(i.timestamp - r.timestamp > Dn(t)));

        )
          n--
        if (!r) return { x: 0, y: 0 }
        var o = (i.timestamp - r.timestamp) / 1e3
        if (0 === o) return { x: 0, y: 0 }
        var a = { x: (i.x - r.x) / o, y: (i.y - r.y) / o }
        return a.x === 1 / 0 && (a.x = 0), a.y === 1 / 0 && (a.y = 0), a
      }
      var qr = n(3327)
      function Wr(e) {
        return [e('x'), e('y')]
      }
      function Kr(e, t, n) {
        var r = t.min,
          i = t.max
        return (
          void 0 !== r && e < r
            ? (e = n ? Rt(r, e, n.min) : Math.max(e, r))
            : void 0 !== i && e > i && (e = n ? Rt(i, e, n.max) : Math.min(e, i)),
          e
        )
      }
      function Zr(e, t, n) {
        return {
          min: void 0 !== t ? e.min + t : void 0,
          max: void 0 !== n ? e.max + n - (e.max - e.min) : void 0,
        }
      }
      function $r(e, t) {
        var n,
          i = t.min - e.min,
          o = t.max - e.max
        return (
          t.max - t.min < e.max - e.min && ((i = (n = (0, r.CR)([o, i], 2))[0]), (o = n[1])),
          { min: e.min + i, max: e.min + o }
        )
      }
      function Xr(e, t, n) {
        return { min: Yr(e, t), max: Yr(e, n) }
      }
      function Yr(e, t) {
        var n
        return 'number' === typeof e ? e : null !== (n = e[t]) && void 0 !== n ? n : 0
      }
      function Qr(e, t) {
        var n = e.getBoundingClientRect()
        return (0, qr.RX)((0, qr.dV)(n, t))
      }
      function Jr(e, t, n) {
        return void 0 === t && (t = 0), void 0 === n && (n = 0.01), Ir(e, t) < n
      }
      function ei(e) {
        return e.max - e.min
      }
      function ti(e, t) {
        var n = 0.5,
          r = ei(e),
          i = ei(t)
        return (
          i > r ? (n = Mt(t.min, t.max - r, e.min)) : r > i && (n = Mt(e.min, e.max - i, t.min)),
          Et(0, 1, n)
        )
      }
      function ni(e, t, n, r) {
        void 0 === r && (r = 0.5),
          (e.origin = r),
          (e.originPoint = Rt(t.min, t.max, e.origin)),
          (e.scale = ei(n) / ei(t)),
          Jr(e.scale, 1, 1e-4) && (e.scale = 1),
          (e.translate = Rt(n.min, n.max, e.origin) - e.originPoint),
          Jr(e.translate) && (e.translate = 0)
      }
      function ri(e, t, n, r) {
        ni(e.x, t.x, n.x, ii(r.originX)), ni(e.y, t.y, n.y, ii(r.originY))
      }
      function ii(e) {
        return 'number' === typeof e ? e : 0.5
      }
      function oi(e, t, n) {
        ;(e.min = n.min + t.min), (e.max = e.min + ei(t))
      }
      var ai = n(8839)
      function si(e, t) {
        return { min: t.min - e.min, max: t.max - e.min }
      }
      function ui(e, t) {
        return { x: si(e.x, t.x), y: si(e.y, t.y) }
      }
      function li(e, t) {
        var n = e.getLayoutId(),
          r = t.getLayoutId()
        return n !== r || (void 0 === r && e !== t)
      }
      function ci(e) {
        var t = e.getProps(),
          n = t.drag,
          r = t._dragX
        return n && !r
      }
      function di(e, t) {
        ;(e.min = t.min), (e.max = t.max)
      }
      function fi(e, t, n) {
        return n + t * (e - n)
      }
      function hi(e, t, n, r, i) {
        return void 0 !== i && (e = fi(e, i, r)), fi(e, n, r) + t
      }
      function pi(e, t, n, r, i) {
        void 0 === t && (t = 0),
          void 0 === n && (n = 1),
          (e.min = hi(e.min, t, n, r, i)),
          (e.max = hi(e.max, t, n, r, i))
      }
      function vi(e, t) {
        var n = t.x,
          r = t.y
        pi(e.x, n.translate, n.scale, n.originPoint), pi(e.y, r.translate, r.scale, r.originPoint)
      }
      function mi(e, t, n, i) {
        var o = (0, r.CR)(i, 3),
          a = o[0],
          s = o[1],
          u = o[2]
        ;(e.min = t.min), (e.max = t.max)
        var l = void 0 !== n[u] ? n[u] : 0.5,
          c = Rt(t.min, t.max, l)
        pi(e, n[a], n[s], c, n.scale)
      }
      var gi = ['x', 'scaleX', 'originX'],
        yi = ['y', 'scaleY', 'originY']
      function bi(e, t, n) {
        mi(e.x, t.x, n, gi), mi(e.y, t.y, n, yi)
      }
      function wi(e, t, n, r, i) {
        return (e = fi((e -= t), 1 / n, r)), void 0 !== i && (e = fi(e, 1 / i, r)), e
      }
      function xi(e, t, n) {
        var i = (0, r.CR)(n, 3),
          o = i[0],
          a = i[1],
          s = i[2]
        !(function (e, t, n, r, i) {
          void 0 === t && (t = 0), void 0 === n && (n = 1), void 0 === r && (r = 0.5)
          var o = Rt(e.min, e.max, r) - t
          ;(e.min = wi(e.min, t, n, o, i)), (e.max = wi(e.max, t, n, o, i))
        })(e, t[o], t[a], t[s], t.scale)
      }
      function Ei(e, t) {
        xi(e.x, t, gi), xi(e.y, t, yi)
      }
      var ki,
        _i = n(7565),
        Ti = new WeakMap(),
        Oi = (function () {
          function e(e) {
            var t = e.visualElement
            ;(this.isDragging = !1),
              (this.currentDirection = null),
              (this.constraints = !1),
              (this.elastic = (0, qr.VZ)()),
              (this.props = {}),
              (this.hasMutatedConstraints = !1),
              (this.cursorProgress = { x: 0.5, y: 0.5 }),
              (this.originPoint = {}),
              (this.openGlobalLock = null),
              (this.panSession = null),
              (this.visualElement = t),
              this.visualElement.enableLayoutProjection(),
              Ti.set(t, this)
          }
          return (
            (e.prototype.start = function (e, t) {
              var n = this,
                i = void 0 === t ? {} : t,
                o = i.snapToCursor,
                a = void 0 !== o && o,
                s = i.cursorProgress,
                u = this.props.transformPagePoint
              this.panSession = new zr(
                e,
                {
                  onSessionStart: function (e) {
                    var t
                    n.stopMotion()
                    var i = (function (e) {
                      return et(e, 'client')
                    })(e).point
                    null === (t = n.cancelLayout) || void 0 === t || t.call(n),
                      (n.cancelLayout = (0, _i.U)(function (e, t) {
                        var o = (0, ai.kv)(n.visualElement),
                          u = (0, ai.e3)(n.visualElement),
                          l = (0, r.ev)((0, r.ev)([], (0, r.CR)(o)), (0, r.CR)(u)),
                          c = !1
                        n.isLayoutDrag() && n.visualElement.lockProjectionTarget(),
                          t(function () {
                            l.forEach(function (e) {
                              return e.resetTransform()
                            })
                          }),
                          e(function () {
                            ;(0, ai.de)(n.visualElement), u.forEach(ai.de)
                          }),
                          t(function () {
                            l.forEach(function (e) {
                              return e.restoreTransform()
                            }),
                              a && (c = n.snapToCursor(i))
                          }),
                          e(function () {
                            Boolean(n.getAxisMotionValue('x') && !n.isExternalDrag()) ||
                              n.visualElement.rebaseProjectionTarget(
                                !0,
                                n.visualElement.measureViewportBox(!1),
                              ),
                              n.visualElement.scheduleUpdateLayoutProjection()
                            var e = n.visualElement.projection
                            Wr(function (t) {
                              if (!c) {
                                var r = e.target[t],
                                  o = r.min,
                                  a = r.max
                                n.cursorProgress[t] = s ? s[t] : Mt(o, a, i[t])
                              }
                              var u = n.getAxisMotionValue(t)
                              u && (n.originPoint[t] = u.get())
                            })
                          }),
                          t(function () {
                            An.iW.update(), An.iW.preRender(), An.iW.render(), An.iW.postRender()
                          }),
                          e(function () {
                            return n.resolveDragConstraints()
                          })
                      }))
                  },
                  onStart: function (e, t) {
                    var r,
                      i,
                      o,
                      a = n.props,
                      s = a.drag,
                      u = a.dragPropagation
                    ;(!s ||
                      u ||
                      (n.openGlobalLock && n.openGlobalLock(),
                      (n.openGlobalLock = ct(s)),
                      n.openGlobalLock)) &&
                      ((0, _i.R)(),
                      (n.isDragging = !0),
                      (n.currentDirection = null),
                      null === (i = (r = n.props).onDragStart) || void 0 === i || i.call(r, e, t),
                      null === (o = n.visualElement.animationState) ||
                        void 0 === o ||
                        o.setActive(qe.Drag, !0))
                  },
                  onMove: function (e, t) {
                    var r,
                      i,
                      o,
                      a,
                      s = n.props,
                      u = s.dragPropagation,
                      l = s.dragDirectionLock
                    if (u || n.openGlobalLock) {
                      var c = t.offset
                      if (l && null === n.currentDirection)
                        return (
                          (n.currentDirection = (function (e, t) {
                            void 0 === t && (t = 10)
                            var n = null
                            Math.abs(e.y) > t ? (n = 'y') : Math.abs(e.x) > t && (n = 'x')
                            return n
                          })(c)),
                          void (
                            null !== n.currentDirection &&
                            (null === (i = (r = n.props).onDirectionLock) ||
                              void 0 === i ||
                              i.call(r, n.currentDirection))
                          )
                        )
                      n.updateAxis('x', t.point, c),
                        n.updateAxis('y', t.point, c),
                        null === (a = (o = n.props).onDrag) || void 0 === a || a.call(o, e, t),
                        (ki = e)
                    }
                  },
                  onSessionEnd: function (e, t) {
                    return n.stop(e, t)
                  },
                },
                { transformPagePoint: u },
              )
            }),
            (e.prototype.resolveDragConstraints = function () {
              var e = this,
                t = this.props,
                n = t.dragConstraints,
                r = t.dragElastic,
                i = this.visualElement.getLayoutState().layoutCorrected
              ;(this.constraints =
                !!n &&
                (k(n)
                  ? this.resolveRefConstraints(i, n)
                  : (function (e, t) {
                      var n = t.top,
                        r = t.left,
                        i = t.bottom,
                        o = t.right
                      return { x: Zr(e.x, r, o), y: Zr(e.y, n, i) }
                    })(i, n))),
                (this.elastic = (function (e) {
                  return (
                    !1 === e ? (e = 0) : !0 === e && (e = 0.35),
                    { x: Xr(e, 'left', 'right'), y: Xr(e, 'top', 'bottom') }
                  )
                })(r)),
                this.constraints &&
                  !this.hasMutatedConstraints &&
                  Wr(function (t) {
                    e.getAxisMotionValue(t) &&
                      (e.constraints[t] = (function (e, t) {
                        var n = {}
                        return (
                          void 0 !== t.min && (n.min = t.min - e.min),
                          void 0 !== t.max && (n.max = t.max - e.min),
                          n
                        )
                      })(i[t], e.constraints[t]))
                  })
            }),
            (e.prototype.resolveRefConstraints = function (e, t) {
              var n = this.props,
                r = n.onMeasureDragConstraints,
                i = n.transformPagePoint,
                o = t.current
              this.constraintsBox = Qr(o, i)
              var a = (function (e, t) {
                return { x: $r(e.x, t.x), y: $r(e.y, t.y) }
              })(e, this.constraintsBox)
              if (r) {
                var s = r((0, qr._6)(a))
                ;(this.hasMutatedConstraints = !!s), s && (a = (0, qr.RX)(s))
              }
              return a
            }),
            (e.prototype.cancelDrag = function () {
              var e, t
              this.visualElement.unlockProjectionTarget(),
                null === (e = this.cancelLayout) || void 0 === e || e.call(this),
                (this.isDragging = !1),
                this.panSession && this.panSession.end(),
                (this.panSession = null),
                !this.props.dragPropagation &&
                  this.openGlobalLock &&
                  (this.openGlobalLock(), (this.openGlobalLock = null)),
                null === (t = this.visualElement.animationState) ||
                  void 0 === t ||
                  t.setActive(qe.Drag, !1)
            }),
            (e.prototype.stop = function (e, t) {
              var n, r, i
              null === (n = this.panSession) || void 0 === n || n.end(), (this.panSession = null)
              var o = this.isDragging
              if ((this.cancelDrag(), o)) {
                var a = t.velocity
                this.animateDragEnd(a),
                  null === (i = (r = this.props).onDragEnd) || void 0 === i || i.call(r, e, t)
              }
            }),
            (e.prototype.snapToCursor = function (e) {
              var t = this
              return Wr(function (n) {
                if (Ci(n, t.props.drag, t.currentDirection)) {
                  var r = t.getAxisMotionValue(n)
                  if (!r) return (t.cursorProgress[n] = 0.5), !0
                  var i = t.visualElement.getLayoutState().layout,
                    o = i[n].max - i[n].min,
                    a = i[n].min + o / 2,
                    s = e[n] - a
                  ;(t.originPoint[n] = e[n]), r.set(s)
                }
              }).includes(!0)
            }),
            (e.prototype.updateAxis = function (e, t, n) {
              if (Ci(e, this.props.drag, this.currentDirection))
                return this.getAxisMotionValue(e)
                  ? this.updateAxisMotionValue(e, n)
                  : this.updateVisualElementAxis(e, t)
            }),
            (e.prototype.updateAxisMotionValue = function (e, t) {
              var n = this.getAxisMotionValue(e)
              if (t && n) {
                var r = this.originPoint[e] + t[e],
                  i = this.constraints ? Kr(r, this.constraints[e], this.elastic[e]) : r
                n.set(i)
              }
            }),
            (e.prototype.updateVisualElementAxis = function (e, t) {
              var n,
                r = this.visualElement.getLayoutState().layout[e],
                i = r.max - r.min,
                o = this.cursorProgress[e],
                a = (function (e, t, n, r, i) {
                  var o = e - t * n
                  return r ? Kr(o, r, i) : o
                })(
                  t[e],
                  i,
                  o,
                  null === (n = this.constraints) || void 0 === n ? void 0 : n[e],
                  this.elastic[e],
                )
              this.visualElement.setProjectionTargetAxis(e, a, a + i)
            }),
            (e.prototype.setProps = function (e) {
              var t = e.drag,
                n = void 0 !== t && t,
                i = e.dragDirectionLock,
                o = void 0 !== i && i,
                a = e.dragPropagation,
                s = void 0 !== a && a,
                u = e.dragConstraints,
                l = void 0 !== u && u,
                c = e.dragElastic,
                d = void 0 === c ? 0.35 : c,
                f = e.dragMomentum,
                h = void 0 === f || f,
                p = (0, r._T)(e, [
                  'drag',
                  'dragDirectionLock',
                  'dragPropagation',
                  'dragConstraints',
                  'dragElastic',
                  'dragMomentum',
                ])
              this.props = (0, r.pi)(
                {
                  drag: n,
                  dragDirectionLock: o,
                  dragPropagation: s,
                  dragConstraints: l,
                  dragElastic: d,
                  dragMomentum: h,
                },
                p,
              )
            }),
            (e.prototype.getAxisMotionValue = function (e) {
              var t = this.props,
                n = t.layout,
                r = t.layoutId,
                i = '_drag' + e.toUpperCase()
              return this.props[i]
                ? this.props[i]
                : n || void 0 !== r
                ? void 0
                : this.visualElement.getValue(e, 0)
            }),
            (e.prototype.isLayoutDrag = function () {
              return !this.getAxisMotionValue('x')
            }),
            (e.prototype.isExternalDrag = function () {
              var e = this.props,
                t = e._dragX,
                n = e._dragY
              return t || n
            }),
            (e.prototype.animateDragEnd = function (e) {
              var t = this,
                n = this.props,
                i = n.drag,
                o = n.dragMomentum,
                a = n.dragElastic,
                s = n.dragTransition,
                u = (function (e, t) {
                  void 0 === t && (t = !0)
                  var n,
                    r = e.getProjectionParent()
                  return (
                    !!r &&
                    (t
                      ? Ei((n = ui(r.projection.target, e.projection.target)), r.getLatestValues())
                      : (n = ui(r.getLayoutState().layout, e.getLayoutState().layout)),
                    Wr(function (t) {
                      return e.setProjectionTargetAxis(t, n[t].min, n[t].max, !0)
                    }),
                    !0)
                  )
                })(this.visualElement, this.isLayoutDrag() && !this.isExternalDrag()),
                l = this.constraints || {}
              if (u && Object.keys(l).length && this.isLayoutDrag()) {
                var c = this.visualElement.getProjectionParent()
                if (c) {
                  var d = ui(c.projection.targetFinal, l)
                  Wr(function (e) {
                    var t = d[e],
                      n = t.min,
                      r = t.max
                    l[e] = { min: isNaN(n) ? void 0 : n, max: isNaN(r) ? void 0 : r }
                  })
                }
              }
              var f = Wr(function (n) {
                var c
                if (Ci(n, i, t.currentDirection)) {
                  var d =
                      null !== (c = null === l || void 0 === l ? void 0 : l[n]) && void 0 !== c
                        ? c
                        : {},
                    f = a ? 200 : 1e6,
                    h = a ? 40 : 1e7,
                    p = (0, r.pi)(
                      (0, r.pi)(
                        {
                          type: 'inertia',
                          velocity: o ? e[n] : 0,
                          bounceStiffness: f,
                          bounceDamping: h,
                          timeConstant: 750,
                          restDelta: 1,
                          restSpeed: 10,
                        },
                        s,
                      ),
                      d,
                    )
                  return t.getAxisMotionValue(n)
                    ? t.startAxisValueAnimation(n, p)
                    : t.visualElement.startLayoutAnimation(n, p, u)
                }
              })
              return Promise.all(f).then(function () {
                var e, n
                null === (n = (e = t.props).onDragTransitionEnd) || void 0 === n || n.call(e)
              })
            }),
            (e.prototype.stopMotion = function () {
              var e = this
              Wr(function (t) {
                var n = e.getAxisMotionValue(t)
                n ? n.stop() : e.visualElement.stopLayoutAnimation()
              })
            }),
            (e.prototype.startAxisValueAnimation = function (e, t) {
              var n = this.getAxisMotionValue(e)
              if (n) {
                var r = n.get()
                return n.set(r), n.set(r), lr(e, n, 0, t)
              }
            }),
            (e.prototype.scalePoint = function () {
              var e = this,
                t = this.props,
                n = t.drag
              if (k(t.dragConstraints) && this.constraintsBox) {
                this.stopMotion()
                var r = { x: 0, y: 0 }
                Wr(function (t) {
                  r[t] = ti(e.visualElement.projection.target[t], e.constraintsBox[t])
                }),
                  this.updateConstraints(function () {
                    Wr(function (t) {
                      if (Ci(t, n, null)) {
                        var i = (function (e, t, n) {
                            var r = e.max - e.min,
                              i = Rt(t.min, t.max - r, n)
                            return { min: i, max: i + r }
                          })(e.visualElement.projection.target[t], e.constraintsBox[t], r[t]),
                          o = i.min,
                          a = i.max
                        e.visualElement.setProjectionTargetAxis(t, o, a)
                      }
                    })
                  }),
                  setTimeout(_i.R, 1)
              }
            }),
            (e.prototype.updateConstraints = function (e) {
              var t = this
              this.cancelLayout = (0, _i.U)(function (n, r) {
                var i = (0, ai.kv)(t.visualElement)
                r(function () {
                  return i.forEach(function (e) {
                    return e.resetTransform()
                  })
                }),
                  n(function () {
                    return (0, ai.de)(t.visualElement)
                  }),
                  r(function () {
                    return i.forEach(function (e) {
                      return e.restoreTransform()
                    })
                  }),
                  n(function () {
                    t.resolveDragConstraints()
                  }),
                  e && r(e)
              })
            }),
            (e.prototype.mount = function (e) {
              var t = this,
                n = ot(e.getInstance(), 'pointerdown', function (e) {
                  var n = t.props,
                    r = n.drag,
                    i = n.dragListener
                  r && (void 0 === i || i) && t.start(e)
                }),
                r = Ke(window, 'resize', function () {
                  t.scalePoint()
                }),
                i = e.onLayoutUpdate(function () {
                  t.isDragging && t.resolveDragConstraints()
                }),
                o = e.prevDragCursor
              return (
                o && this.start(ki, { cursorProgress: o }),
                function () {
                  null === n || void 0 === n || n(),
                    null === r || void 0 === r || r(),
                    null === i || void 0 === i || i(),
                    t.cancelDrag()
                }
              )
            }),
            e
          )
        })()
      function Ci(e, t, n) {
        return (!0 === t || t === e) && (null === n || n === e)
      }
      var Si = {
          pan: gt(function (e) {
            var t = e.onPan,
              n = e.onPanStart,
              r = e.onPanEnd,
              o = e.onPanSessionStart,
              a = e.visualElement,
              s = t || n || r || o,
              u = (0, i.useRef)(null),
              l = (0, i.useContext)(c).transformPagePoint,
              d = {
                onSessionStart: o,
                onStart: n,
                onMove: t,
                onEnd: function (e, t) {
                  ;(u.current = null), r && r(e, t)
                },
              }
            ;(0, i.useEffect)(function () {
              null !== u.current && u.current.updateHandlers(d)
            }),
              at(
                a,
                'pointerdown',
                s &&
                  function (e) {
                    u.current = new zr(e, d, { transformPagePoint: l })
                  },
              ),
              (0, pt.z)(function () {
                return u.current && u.current.end()
              })
          }),
          drag: gt(function (e) {
            var t = e.dragControls,
              n = e.visualElement,
              o = (0, i.useContext)(c).transformPagePoint,
              a = (0, h.h)(function () {
                return new Oi({ visualElement: n })
              })
            a.setProps((0, r.pi)((0, r.pi)({}, e), { transformPagePoint: o })),
              (0, i.useEffect)(
                function () {
                  return t && t.subscribe(a)
                },
                [a],
              ),
              (0, i.useEffect)(function () {
                return a.mount(n)
              }, [])
          }),
        },
        Ai = n(7646)
      function Pi(e) {
        return 'string' === typeof e && e.startsWith('var(--')
      }
      var Mi = /var\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\)/
      function Ri(e, t, n) {
        void 0 === n && (n = 1)
        var i = (0, r.CR)(
            (function (e) {
              var t = Mi.exec(e)
              if (!t) return [,]
              var n = (0, r.CR)(t, 3)
              return [n[1], n[2]]
            })(e),
            2,
          ),
          o = i[0],
          a = i[1]
        if (o) {
          var s = window.getComputedStyle(t).getPropertyValue(o)
          return s ? s.trim() : Pi(a) ? Ri(a, t, n + 1) : a
        }
      }
      function ji(e, t) {
        return (e / (t.max - t.min)) * 100
      }
      var Di = '_$css'
      var Li = {
          process: function (e, t, n) {
            var r = n.target
            if ('string' === typeof e) {
              if (!oe.test(e)) return e
              e = parseFloat(e)
            }
            return ji(e, r.x) + '% ' + ji(e, r.y) + '%'
          },
        },
        Ni = {
          borderRadius: (0, r.pi)((0, r.pi)({}, Li), {
            applyTo: [
              'borderTopLeftRadius',
              'borderTopRightRadius',
              'borderBottomLeftRadius',
              'borderBottomRightRadius',
            ],
          }),
          borderTopLeftRadius: Li,
          borderTopRightRadius: Li,
          borderBottomLeftRadius: Li,
          borderBottomRightRadius: Li,
          boxShadow: {
            process: function (e, t) {
              var n = t.delta,
                r = t.treeScale,
                i = e,
                o = e.includes('var('),
                a = []
              o &&
                (e = e.replace(Mi, function (e) {
                  return a.push(e), Di
                }))
              var s = Qt.parse(e)
              if (s.length > 5) return i
              var u = Qt.createTransformer(e),
                l = 'number' !== typeof s[0] ? 1 : 0,
                c = n.x.scale * r.x,
                d = n.y.scale * r.y
              ;(s[0 + l] /= c), (s[1 + l] /= d)
              var f = Rt(c, d, 0.5)
              'number' === typeof s[2 + l] && (s[2 + l] /= f),
                'number' === typeof s[3 + l] && (s[3 + l] /= f)
              var h = u(s)
              if (o) {
                var p = 0
                h = h.replace(Di, function () {
                  var e = a[p]
                  return p++, e
                })
              }
              return h
            },
          },
        },
        Ii = (function (e) {
          function t() {
            var t = (null !== e && e.apply(this, arguments)) || this
            return (
              (t.frameTarget = (0, qr.VZ)()),
              (t.currentAnimationTarget = (0, qr.VZ)()),
              (t.isAnimating = { x: !1, y: !1 }),
              (t.stopAxisAnimation = { x: void 0, y: void 0 }),
              (t.isAnimatingTree = !1),
              (t.animate = function (e, n, i) {
                void 0 === i && (i = {})
                var o = i.originBox,
                  a = i.targetBox,
                  s = i.visibilityAction,
                  u = i.shouldStackAnimate,
                  l = i.onComplete,
                  c = i.prevParent,
                  d = (0, r._T)(i, [
                    'originBox',
                    'targetBox',
                    'visibilityAction',
                    'shouldStackAnimate',
                    'onComplete',
                    'prevParent',
                  ]),
                  f = t.props,
                  h = f.visualElement,
                  p = f.layout
                if (!1 === u) return (t.isAnimatingTree = !1), t.safeToRemove()
                if (!t.isAnimatingTree || !0 === u) {
                  u && (t.isAnimatingTree = !0), (n = o || n), (e = a || e)
                  var v = !1,
                    m = h.getProjectionParent()
                  if (m) {
                    var g = m.prevViewportBox,
                      y = m.getLayoutState().layout
                    c &&
                      (a && (y = c.getLayoutState().layout),
                      o && !li(c, m) && c.prevViewportBox && (g = c.prevViewportBox)),
                      g && Ui(c, o, a) && ((v = !0), (n = ui(g, n)), (e = ui(y, e)))
                  }
                  var b = zi(n, e),
                    w = Wr(function (i) {
                      var o, a
                      if ('position' === p) {
                        var u = e[i].max - e[i].min
                        n[i].max = n[i].min + u
                      }
                      if (!h.projection.isTargetLocked)
                        return void 0 === s
                          ? b
                            ? t.animateAxis(
                                i,
                                e[i],
                                n[i],
                                (0, r.pi)((0, r.pi)({}, d), { isRelative: v }),
                              )
                            : (null === (a = (o = t.stopAxisAnimation)[i]) ||
                                void 0 === a ||
                                a.call(o),
                              h.setProjectionTargetAxis(i, e[i].min, e[i].max, v))
                          : void h.setVisibility(s === Ai.c.Show)
                    })
                  return (
                    h.syncRender(),
                    Promise.all(w).then(function () {
                      ;(t.isAnimatingTree = !1), l && l(), h.notifyLayoutAnimationComplete()
                    })
                  )
                }
              }),
              t
            )
          }
          return (
            (0, r.ZT)(t, e),
            (t.prototype.componentDidMount = function () {
              var e = this,
                t = this.props.visualElement
              ;(t.animateMotionValue = lr),
                t.enableLayoutProjection(),
                (this.unsubLayoutReady = t.onLayoutUpdate(this.animate)),
                (t.layoutSafeToRemove = function () {
                  return e.safeToRemove()
                }),
                (function (e) {
                  for (var t in e) N[t] = e[t]
                })(Ni)
            }),
            (t.prototype.componentWillUnmount = function () {
              var e = this
              this.unsubLayoutReady(),
                Wr(function (t) {
                  var n, r
                  return null === (r = (n = e.stopAxisAnimation)[t]) || void 0 === r
                    ? void 0
                    : r.call(n)
                })
            }),
            (t.prototype.animateAxis = function (e, t, n, r) {
              var i,
                o,
                a = this,
                s = void 0 === r ? {} : r,
                u = s.transition,
                l = s.isRelative
              if (!this.isAnimating[e] || !Fi(t, this.currentAnimationTarget[e])) {
                null === (o = (i = this.stopAxisAnimation)[e]) || void 0 === o || o.call(i),
                  (this.isAnimating[e] = !0)
                var c = this.props.visualElement,
                  d = this.frameTarget[e],
                  f = c.getProjectionAnimationProgress()[e]
                f.clearListeners(), f.set(0), f.set(0)
                var h = function () {
                  var r = f.get() / 1e3
                  !(function (e, t, n, r) {
                    ;(e.min = Rt(t.min, n.min, r)), (e.max = Rt(t.max, n.max, r))
                  })(d, n, t, r),
                    c.setProjectionTargetAxis(e, d.min, d.max, l)
                }
                h()
                var p = f.onChange(h)
                ;(this.stopAxisAnimation[e] = function () {
                  ;(a.isAnimating[e] = !1), f.stop(), p()
                }),
                  (this.currentAnimationTarget[e] = t)
                var v = u || c.getDefaultTransition() || Vi
                return lr('x' === e ? 'layoutX' : 'layoutY', f, 1e3, v && ur(v, 'layout')).then(
                  this.stopAxisAnimation[e],
                )
              }
            }),
            (t.prototype.safeToRemove = function () {
              var e, t
              null === (t = (e = this.props).safeToRemove) || void 0 === t || t.call(e)
            }),
            (t.prototype.render = function () {
              return null
            }),
            t
          )
        })(i.Component)
      function zi(e, t) {
        return !Bi(e) && !Bi(t) && (!Fi(e.x, t.x) || !Fi(e.y, t.y))
      }
      var Hi = { min: 0, max: 0 }
      function Bi(e) {
        return Fi(e.x, Hi) && Fi(e.y, Hi)
      }
      function Fi(e, t) {
        return e.min === t.min && e.max === t.max
      }
      var Vi = { duration: 0.45, ease: [0.4, 0, 0.1, 1] }
      function Ui(e, t, n) {
        return e || (!e && !(t || n))
      }
      var Gi = n(9870),
        qi = (function (e) {
          function t() {
            return (null !== e && e.apply(this, arguments)) || this
          }
          return (
            (0, r.ZT)(t, e),
            (t.prototype.componentDidMount = function () {
              var e = this.props,
                t = e.syncLayout,
                n = e.framerSyncLayout,
                r = e.visualElement
              ;(0, Gi.Md)(t) && t.register(r),
                (0, Gi.Md)(n) && n.register(r),
                r.onUnmount(function () {
                  ;(0, Gi.Md)(t) && t.remove(r), (0, Gi.Md)(n) && n.remove(r)
                })
            }),
            (t.prototype.getSnapshotBeforeUpdate = function () {
              var e = this.props,
                t = e.syncLayout,
                n = e.visualElement
              return (0, Gi.Md)(t) ? t.syncUpdate() : ((0, ai.x7)(n), t.add(n)), null
            }),
            (t.prototype.componentDidUpdate = function () {
              var e = this.props.syncLayout
              ;(0, Gi.Md)(e) || e.flush()
            }),
            (t.prototype.render = function () {
              return null
            }),
            t
          )
        })(i.Component)
      var Wi = {
        measureLayout: function (e) {
          var t = (0, i.useContext)(Gi.WH),
            n = (0, i.useContext)(Gi.bg)
          return i.createElement(qi, (0, r.pi)({}, e, { syncLayout: t, framerSyncLayout: n }))
        },
        layoutAnimation: function (e) {
          var t = (0, r.CR)(p(), 2)[1]
          return i.createElement(Ii, (0, r.pi)({}, e, { safeToRemove: t }))
        },
      }
      function Ki() {
        return {
          isHydrated: !1,
          layout: (0, qr.VZ)(),
          layoutCorrected: (0, qr.VZ)(),
          treeScale: { x: 1, y: 1 },
          delta: (0, qr.pY)(),
          deltaFinal: (0, qr.pY)(),
          deltaTransform: '',
        }
      }
      var Zi = Ki()
      function $i(e, t, n) {
        var r = e.x,
          i = e.y,
          o = 'translate3d(' + r.translate / t.x + 'px, ' + i.translate / t.y + 'px, 0) '
        if (n) {
          var a = n.rotate,
            s = n.rotateX,
            u = n.rotateY
          a && (o += 'rotate(' + a + ') '),
            s && (o += 'rotateX(' + s + ') '),
            u && (o += 'rotateY(' + u + ') ')
        }
        return (o += 'scale(' + r.scale + ', ' + i.scale + ')'), n || o !== Yi ? o : ''
      }
      function Xi(e) {
        var t = e.deltaFinal
        return 100 * t.x.origin + '% ' + 100 * t.y.origin + '% 0'
      }
      var Yi = $i(Zi.delta, Zi.treeScale, { x: 1, y: 1 }),
        Qi = [
          'LayoutMeasure',
          'BeforeLayoutMeasure',
          'LayoutUpdate',
          'ViewportBoxUpdate',
          'Update',
          'Render',
          'AnimationComplete',
          'LayoutAnimationComplete',
          'AnimationStart',
          'SetAxisTarget',
          'Unmount',
        ]
      function Ji(e, t, n, r) {
        var i,
          o,
          a = e.delta,
          s = e.layout,
          u = e.layoutCorrected,
          l = e.treeScale,
          c = t.target
        ;(o = s),
          di((i = u).x, o.x),
          di(i.y, o.y),
          (function (e, t, n) {
            var r = n.length
            if (r) {
              var i, o
              t.x = t.y = 1
              for (var a = 0; a < r; a++)
                (o = (i = n[a]).getLayoutState().delta),
                  (t.x *= o.x.scale),
                  (t.y *= o.y.scale),
                  vi(e, o),
                  ci(i) && bi(e, e, i.getLatestValues())
            }
          })(u, l, n),
          ri(a, u, c, r)
      }
      var eo = n(519),
        to = (function () {
          function e() {
            ;(this.children = []), (this.isDirty = !1)
          }
          return (
            (e.prototype.add = function (e) {
              cr(this.children, e), (this.isDirty = !0)
            }),
            (e.prototype.remove = function (e) {
              dr(this.children, e), (this.isDirty = !0)
            }),
            (e.prototype.forEach = function (e) {
              this.isDirty && this.children.sort(eo._),
                (this.isDirty = !1),
                this.children.forEach(e)
            }),
            e
          )
        })()
      var no = function (e) {
        var t = e.treeType,
          n = void 0 === t ? '' : t,
          i = e.build,
          o = e.getBaseTarget,
          a = e.makeTargetAnimatable,
          s = e.measureViewportBox,
          u = e.render,
          l = e.readValueFromInstance,
          c = e.resetTransform,
          d = e.restoreTransform,
          f = e.removeValueFromRenderState,
          h = e.sortNodePosition,
          p = e.scrapeMotionValuesFromProps
        return function (e, t) {
          var v = e.parent,
            m = e.props,
            g = e.presenceId,
            y = e.blockInitialAnimation,
            b = e.visualState
          void 0 === t && (t = {})
          var w,
            x,
            E,
            k,
            _,
            O,
            C = b.latestValues,
            P = b.renderState,
            M = (function () {
              var e = Qi.map(function () {
                  return new fr()
                }),
                t = {},
                n = {
                  clearAllListeners: function () {
                    return e.forEach(function (e) {
                      return e.clear()
                    })
                  },
                  updatePropListeners: function (e) {
                    return Qi.forEach(function (r) {
                      var i
                      null === (i = t[r]) || void 0 === i || i.call(t)
                      var o = 'on' + r,
                        a = e[o]
                      a && (t[r] = n[o](a))
                    })
                  },
                }
              return (
                e.forEach(function (e, t) {
                  ;(n['on' + Qi[t]] = function (t) {
                    return e.add(t)
                  }),
                    (n['notify' + Qi[t]] = function () {
                      for (var t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n]
                      return e.notify.apply(e, (0, r.ev)([], (0, r.CR)(t)))
                    })
                }),
                n
              )
            })(),
            R = {
              isEnabled: !1,
              isHydrated: !1,
              isTargetLocked: !1,
              target: (0, qr.VZ)(),
              targetFinal: (0, qr.VZ)(),
            },
            j = R,
            D = C,
            L = Ki(),
            N = !1,
            I = new Map(),
            z = new Map(),
            H = {},
            B = (0, r.pi)({}, C)
          function F() {
            w &&
              (Y.isProjectionReady() &&
                (bi(j.targetFinal, j.target, D),
                ri(L.deltaFinal, L.layoutCorrected, j.targetFinal, C)),
              V(),
              u(w, P))
          }
          function V() {
            var e = C
            if (k && k.isActive()) {
              var n = k.getCrossfadeState(Y)
              n && (e = n)
            }
            i(Y, P, e, j, L, t, m)
          }
          function U() {
            M.notifyUpdate(C)
          }
          function G() {
            Y.layoutTree.forEach(io)
          }
          var W = p(m)
          for (var K in W) {
            var Z = W[K]
            void 0 !== C[K] && q(Z) && Z.set(C[K], !1)
          }
          var $ = S(m),
            X = A(m),
            Y = (0, r.pi)(
              (0, r.pi)(
                {
                  treeType: n,
                  current: null,
                  depth: v ? v.depth + 1 : 0,
                  parent: v,
                  children: new Set(),
                  path: v ? (0, r.ev)((0, r.ev)([], (0, r.CR)(v.path)), [v]) : [],
                  layoutTree: v ? v.layoutTree : new to(),
                  presenceId: g,
                  projection: R,
                  variantChildren: X ? new Set() : void 0,
                  isVisible: void 0,
                  manuallyAnimateOnMount: Boolean(
                    null === v || void 0 === v ? void 0 : v.isMounted(),
                  ),
                  blockInitialAnimation: y,
                  isMounted: function () {
                    return Boolean(w)
                  },
                  mount: function (e) {
                    ;(w = Y.current = e),
                      Y.pointTo(Y),
                      X &&
                        v &&
                        !$ &&
                        (O = null === v || void 0 === v ? void 0 : v.addVariantChild(Y)),
                      null === v || void 0 === v || v.children.add(Y)
                  },
                  unmount: function () {
                    An.qY.update(U),
                      An.qY.render(F),
                      An.qY.preRender(Y.updateLayoutProjection),
                      z.forEach(function (e) {
                        return e()
                      }),
                      Y.stopLayoutAnimation(),
                      Y.layoutTree.remove(Y),
                      null === O || void 0 === O || O(),
                      null === v || void 0 === v || v.children.delete(Y),
                      null === E || void 0 === E || E(),
                      M.clearAllListeners()
                  },
                  addVariantChild: function (e) {
                    var t,
                      n = Y.getClosestVariantNode()
                    if (n)
                      return (
                        null === (t = n.variantChildren) || void 0 === t || t.add(e),
                        function () {
                          return n.variantChildren.delete(e)
                        }
                      )
                  },
                  sortNodePosition: function (e) {
                    return h && n === e.treeType ? h(Y.getInstance(), e.getInstance()) : 0
                  },
                  getClosestVariantNode: function () {
                    return X ? Y : null === v || void 0 === v ? void 0 : v.getClosestVariantNode()
                  },
                  scheduleUpdateLayoutProjection: v
                    ? v.scheduleUpdateLayoutProjection
                    : function () {
                        return An.ZP.preRender(Y.updateTreeLayoutProjection, !1, !0)
                      },
                  getLayoutId: function () {
                    return m.layoutId
                  },
                  getInstance: function () {
                    return w
                  },
                  getStaticValue: function (e) {
                    return C[e]
                  },
                  setStaticValue: function (e, t) {
                    return (C[e] = t)
                  },
                  getLatestValues: function () {
                    return C
                  },
                  setVisibility: function (e) {
                    Y.isVisible !== e && ((Y.isVisible = e), Y.scheduleRender())
                  },
                  makeTargetAnimatable: function (e, t) {
                    return void 0 === t && (t = !0), a(Y, e, m, t)
                  },
                  addValue: function (e, t) {
                    Y.hasValue(e) && Y.removeValue(e),
                      I.set(e, t),
                      (C[e] = t.get()),
                      (function (e, t) {
                        var n = t.onChange(function (t) {
                            ;(C[e] = t), m.onUpdate && An.ZP.update(U, !1, !0)
                          }),
                          r = t.onRenderRequest(Y.scheduleRender)
                        z.set(e, function () {
                          n(), r()
                        })
                      })(e, t)
                  },
                  removeValue: function (e) {
                    var t
                    I.delete(e),
                      null === (t = z.get(e)) || void 0 === t || t(),
                      z.delete(e),
                      delete C[e],
                      f(e, P)
                  },
                  hasValue: function (e) {
                    return I.has(e)
                  },
                  getValue: function (e, t) {
                    var n = I.get(e)
                    return void 0 === n && void 0 !== t && ((n = pr(t)), Y.addValue(e, n)), n
                  },
                  forEachValue: function (e) {
                    return I.forEach(e)
                  },
                  readValue: function (e) {
                    var n
                    return null !== (n = C[e]) && void 0 !== n ? n : l(w, e, t)
                  },
                  setBaseTarget: function (e, t) {
                    B[e] = t
                  },
                  getBaseTarget: function (e) {
                    if (o) {
                      var t = o(m, e)
                      if (void 0 !== t && !q(t)) return t
                    }
                    return B[e]
                  },
                },
                M,
              ),
              {
                build: function () {
                  return V(), P
                },
                scheduleRender: function () {
                  An.ZP.render(F, !1, !0)
                },
                syncRender: F,
                setProps: function (e) {
                  ;(m = e),
                    M.updatePropListeners(e),
                    (H = (function (e, t, n) {
                      var r
                      for (var i in t) {
                        var o = t[i],
                          a = n[i]
                        if (q(o)) e.addValue(i, o)
                        else if (q(a)) e.addValue(i, pr(o))
                        else if (a !== o)
                          if (e.hasValue(i)) {
                            var s = e.getValue(i)
                            !s.hasAnimated && s.set(o)
                          } else
                            e.addValue(
                              i,
                              pr(null !== (r = e.getStaticValue(i)) && void 0 !== r ? r : o),
                            )
                      }
                      for (var i in n) void 0 === t[i] && e.removeValue(i)
                      return t
                    })(Y, p(m), H))
                },
                getProps: function () {
                  return m
                },
                getVariant: function (e) {
                  var t
                  return null === (t = m.variants) || void 0 === t ? void 0 : t[e]
                },
                getDefaultTransition: function () {
                  return m.transition
                },
                getVariantContext: function (e) {
                  if ((void 0 === e && (e = !1), e))
                    return null === v || void 0 === v ? void 0 : v.getVariantContext()
                  if (!$) {
                    var t = (null === v || void 0 === v ? void 0 : v.getVariantContext()) || {}
                    return void 0 !== m.initial && (t.initial = m.initial), t
                  }
                  for (var n = {}, r = 0; r < so; r++) {
                    var i = ao[r],
                      o = m[i]
                    ;(T(o) || !1 === o) && (n[i] = o)
                  }
                  return n
                },
                enableLayoutProjection: function () {
                  ;(R.isEnabled = !0), Y.layoutTree.add(Y)
                },
                lockProjectionTarget: function () {
                  R.isTargetLocked = !0
                },
                unlockProjectionTarget: function () {
                  Y.stopLayoutAnimation(), (R.isTargetLocked = !1)
                },
                getLayoutState: function () {
                  return L
                },
                setCrossfader: function (e) {
                  k = e
                },
                isProjectionReady: function () {
                  return R.isEnabled && R.isHydrated && L.isHydrated
                },
                startLayoutAnimation: function (e, t, n) {
                  void 0 === n && (n = !1)
                  var r = Y.getProjectionAnimationProgress()[e],
                    i = n ? R.relativeTarget[e] : R.target[e],
                    o = i.min,
                    a = i.max - o
                  return (
                    r.clearListeners(),
                    r.set(o),
                    r.set(o),
                    r.onChange(function (t) {
                      Y.setProjectionTargetAxis(e, t, t + a, n)
                    }),
                    Y.animateMotionValue(e, r, 0, t)
                  )
                },
                stopLayoutAnimation: function () {
                  Wr(function (e) {
                    return Y.getProjectionAnimationProgress()[e].stop()
                  })
                },
                measureViewportBox: function (e) {
                  void 0 === e && (e = !0)
                  var n = s(w, t)
                  return e || Ei(n, C), n
                },
                getProjectionAnimationProgress: function () {
                  return _ || (_ = { x: pr(0), y: pr(0) }), _
                },
                setProjectionTargetAxis: function (e, t, n, r) {
                  var i
                  void 0 === r && (r = !1),
                    r
                      ? (R.relativeTarget || (R.relativeTarget = (0, qr.VZ)()),
                        (i = R.relativeTarget[e]))
                      : ((R.relativeTarget = void 0), (i = R.target[e])),
                    (R.isHydrated = !0),
                    (i.min = t),
                    (i.max = n),
                    (N = !0),
                    M.notifySetAxisTarget()
                },
                rebaseProjectionTarget: function (e, t) {
                  void 0 === t && (t = L.layout)
                  var n = Y.getProjectionAnimationProgress(),
                    r = n.x,
                    i = n.y,
                    o =
                      !R.relativeTarget && !R.isTargetLocked && !r.isAnimating() && !i.isAnimating()
                  ;(e || o) &&
                    Wr(function (e) {
                      var n = t[e],
                        r = n.min,
                        i = n.max
                      Y.setProjectionTargetAxis(e, r, i)
                    })
                },
                notifyLayoutReady: function (e) {
                  !(function (e) {
                    var t = e.getProjectionParent()
                    if (t) {
                      var n = ui(t.getLayoutState().layout, e.getLayoutState().layout)
                      Wr(function (t) {
                        e.setProjectionTargetAxis(t, n[t].min, n[t].max, !0)
                      })
                    } else e.rebaseProjectionTarget()
                  })(Y),
                    Y.notifyLayoutUpdate(L.layout, Y.prevViewportBox || L.layout, e)
                },
                resetTransform: function () {
                  return c(Y, w, m)
                },
                restoreTransform: function () {
                  return d(w, P)
                },
                updateLayoutProjection: function () {
                  if (Y.isProjectionReady()) {
                    var e = L.delta,
                      t = L.treeScale,
                      n = t.x,
                      r = t.y,
                      i = L.deltaTransform
                    Ji(L, j, Y.path, C), N && Y.notifyViewportBoxUpdate(j.target, e), (N = !1)
                    var o = $i(e, t)
                    ;(o === i && n === t.x && r === t.y) || Y.scheduleRender(),
                      (L.deltaTransform = o)
                  }
                },
                updateTreeLayoutProjection: function () {
                  Y.layoutTree.forEach(ro), An.ZP.preRender(G, !1, !0)
                },
                getProjectionParent: function () {
                  if (void 0 === x) {
                    for (var e = !1, t = Y.path.length - 1; t >= 0; t--) {
                      var n = Y.path[t]
                      if (n.projection.isEnabled) {
                        e = n
                        break
                      }
                    }
                    x = e
                  }
                  return x
                },
                resolveRelativeTargetBox: function () {
                  var e = Y.getProjectionParent()
                  if (
                    R.relativeTarget &&
                    e &&
                    ((function (e, t) {
                      oi(e.target.x, e.relativeTarget.x, t.target.x),
                        oi(e.target.y, e.relativeTarget.y, t.target.y)
                    })(R, e.projection),
                    ci(e))
                  ) {
                    var t = R.target
                    bi(t, t, e.getLatestValues())
                  }
                },
                shouldResetTransform: function () {
                  return Boolean(m._layoutResetTransform)
                },
                pointTo: function (e) {
                  ;(j = e.projection),
                    (D = e.getLatestValues()),
                    null === E || void 0 === E || E(),
                    (E = mt(
                      e.onSetAxisTarget(Y.scheduleUpdateLayoutProjection),
                      e.onLayoutAnimationComplete(function () {
                        var e
                        Y.isPresent
                          ? (Y.presence = Ai.z.Present)
                          : null === (e = Y.layoutSafeToRemove) || void 0 === e || e.call(Y)
                      }),
                    ))
                },
                isPresent: !0,
                presence: Ai.z.Entering,
              },
            )
          return Y
        }
      }
      function ro(e) {
        e.resolveRelativeTargetBox()
      }
      function io(e) {
        e.updateLayoutProjection()
      }
      var oo,
        ao = (0, r.ev)(['initial'], (0, r.CR)(Cr)),
        so = ao.length,
        uo = new Set(['width', 'height', 'top', 'left', 'right', 'bottom', 'x', 'y']),
        lo = function (e) {
          return uo.has(e)
        },
        co = function (e, t) {
          e.set(t, !1), e.set(t)
        },
        fo = function (e) {
          return e === le || e === oe
        }
      !(function (e) {
        ;(e.width = 'width'),
          (e.height = 'height'),
          (e.left = 'left'),
          (e.right = 'right'),
          (e.top = 'top'),
          (e.bottom = 'bottom')
      })(oo || (oo = {}))
      var ho = function (e, t) {
          return parseFloat(e.split(', ')[t])
        },
        po = function (e, t) {
          return function (n, r) {
            var i = r.transform
            if ('none' === i || !i) return 0
            var o = i.match(/^matrix3d\((.+)\)$/)
            if (o) return ho(o[1], t)
            var a = i.match(/^matrix\((.+)\)$/)
            return a ? ho(a[1], e) : 0
          }
        },
        vo = new Set(['x', 'y', 'z']),
        mo = z.filter(function (e) {
          return !vo.has(e)
        })
      var go = {
          width: function (e) {
            var t = e.x
            return t.max - t.min
          },
          height: function (e) {
            var t = e.y
            return t.max - t.min
          },
          top: function (e, t) {
            var n = t.top
            return parseFloat(n)
          },
          left: function (e, t) {
            var n = t.left
            return parseFloat(n)
          },
          bottom: function (e, t) {
            var n = e.y,
              r = t.top
            return parseFloat(r) + (n.max - n.min)
          },
          right: function (e, t) {
            var n = e.x,
              r = t.left
            return parseFloat(r) + (n.max - n.min)
          },
          x: po(4, 13),
          y: po(5, 14),
        },
        yo = function (e, t, n, i) {
          void 0 === n && (n = {}),
            void 0 === i && (i = {}),
            (t = (0, r.pi)({}, t)),
            (i = (0, r.pi)({}, i))
          var o = Object.keys(t).filter(lo),
            a = [],
            s = !1,
            u = []
          if (
            (o.forEach(function (r) {
              var o = e.getValue(r)
              if (e.hasValue(r)) {
                var l,
                  c = n[r],
                  d = t[r],
                  f = gr(c)
                if (He(d))
                  for (var h = d.length, p = null === d[0] ? 1 : 0; p < h; p++)
                    l ? gr(d[p]) : (l = gr(d[p])) === f || (fo(f) && fo(l))
                else l = gr(d)
                if (f !== l)
                  if (fo(f) && fo(l)) {
                    var v = o.get()
                    'string' === typeof v && o.set(parseFloat(v)),
                      'string' === typeof d
                        ? (t[r] = parseFloat(d))
                        : Array.isArray(d) && l === oe && (t[r] = d.map(parseFloat))
                  } else
                    (null === f || void 0 === f ? void 0 : f.transform) &&
                    (null === l || void 0 === l ? void 0 : l.transform) &&
                    (0 === c || 0 === d)
                      ? 0 === c
                        ? o.set(l.transform(c))
                        : (t[r] = f.transform(d))
                      : (s ||
                          ((a = (function (e) {
                            var t = []
                            return (
                              mo.forEach(function (n) {
                                var r = e.getValue(n)
                                void 0 !== r &&
                                  (t.push([n, r.get()]), r.set(n.startsWith('scale') ? 1 : 0))
                              }),
                              t.length && e.syncRender(),
                              t
                            )
                          })(e)),
                          (s = !0)),
                        u.push(r),
                        (i[r] = void 0 !== i[r] ? i[r] : t[r]),
                        co(o, d))
              }
            }),
            u.length)
          ) {
            var l = (function (e, t, n) {
              var r = t.measureViewportBox(),
                i = t.getInstance(),
                o = getComputedStyle(i),
                a = o.display,
                s = {
                  top: o.top,
                  left: o.left,
                  bottom: o.bottom,
                  right: o.right,
                  transform: o.transform,
                }
              'none' === a && t.setStaticValue('display', e.display || 'block'), t.syncRender()
              var u = t.measureViewportBox()
              return (
                n.forEach(function (n) {
                  var i = t.getValue(n)
                  co(i, go[n](r, s)), (e[n] = go[n](u, o))
                }),
                e
              )
            })(t, e, u)
            return (
              a.length &&
                a.forEach(function (t) {
                  var n = (0, r.CR)(t, 2),
                    i = n[0],
                    o = n[1]
                  e.getValue(i).set(o)
                }),
              e.syncRender(),
              { target: l, transitionEnd: i }
            )
          }
          return { target: t, transitionEnd: i }
        }
      function bo(e, t, n, r) {
        return (function (e) {
          return Object.keys(e).some(lo)
        })(t)
          ? yo(e, t, n, r)
          : { target: t, transitionEnd: r }
      }
      var wo = function (e, t, n, i) {
        var o = (function (e, t, n) {
          var i,
            o = (0, r._T)(t, []),
            a = e.getInstance()
          if (!(a instanceof HTMLElement)) return { target: o, transitionEnd: n }
          for (var s in (n && (n = (0, r.pi)({}, n)),
          e.forEachValue(function (e) {
            var t = e.get()
            if (Pi(t)) {
              var n = Ri(t, a)
              n && e.set(n)
            }
          }),
          o)) {
            var u = o[s]
            if (Pi(u)) {
              var l = Ri(u, a)
              l && ((o[s] = l), n && ((null !== (i = n[s]) && void 0 !== i) || (n[s] = u)))
            }
          }
          return { target: o, transitionEnd: n }
        })(e, t, i)
        return bo(e, (t = o.target), n, (i = o.transitionEnd))
      }
      var xo = {
          treeType: 'dom',
          readValueFromInstance: function (e, t) {
            if (F(t)) {
              var n = tr(t)
              return (n && n.default) || 0
            }
            var r,
              i = ((r = e), window.getComputedStyle(r))
            return (K(t) ? i.getPropertyValue(t) : i[t]) || 0
          },
          sortNodePosition: function (e, t) {
            return 2 & e.compareDocumentPosition(t) ? 1 : -1
          },
          getBaseTarget: function (e, t) {
            var n
            return null === (n = e.style) || void 0 === n ? void 0 : n[t]
          },
          measureViewportBox: function (e, t) {
            return Qr(e, t.transformPagePoint)
          },
          resetTransform: function (e, t, n) {
            var r = n.transformTemplate
            ;(t.style.transform = r ? r({}, '') : 'none'), e.scheduleRender()
          },
          restoreTransform: function (e, t) {
            e.style.transform = t.style.transform
          },
          removeValueFromRenderState: function (e, t) {
            var n = t.vars,
              r = t.style
            delete n[e], delete r[e]
          },
          makeTargetAnimatable: function (e, t, n, i) {
            var o = n.transformValues
            void 0 === i && (i = !0)
            var a = t.transition,
              s = t.transitionEnd,
              u = (0, r._T)(t, ['transition', 'transitionEnd']),
              l = (function (e, t, n) {
                var r,
                  i,
                  o = {}
                for (var a in e)
                  o[a] =
                    null !== (r = Er(a, t)) && void 0 !== r
                      ? r
                      : null === (i = n.getValue(a)) || void 0 === i
                      ? void 0
                      : i.get()
                return o
              })(u, a || {}, e)
            if ((o && (s && (s = o(s)), u && (u = o(u)), l && (l = o(l))), i)) {
              !(function (e, t, n) {
                var r,
                  i,
                  o,
                  a,
                  s = Object.keys(t).filter(function (t) {
                    return !e.hasValue(t)
                  }),
                  u = s.length
                if (u)
                  for (var l = 0; l < u; l++) {
                    var c = s[l],
                      d = t[c],
                      f = null
                    Array.isArray(d) && (f = d[0]),
                      null === f &&
                        (f =
                          null !== (i = null !== (r = n[c]) && void 0 !== r ? r : e.readValue(c)) &&
                          void 0 !== i
                            ? i
                            : t[c]),
                      void 0 !== f &&
                        null !== f &&
                        ('string' === typeof f && /^\-?\d*\.?\d+$/.test(f)
                          ? (f = parseFloat(f))
                          : !br(f) && Qt.test(d) && (f = nr(c, d)),
                        e.addValue(c, pr(f)),
                        (null !== (o = (a = n)[c]) && void 0 !== o) || (a[c] = f),
                        e.setBaseTarget(c, f))
                  }
              })(e, u, l)
              var c = wo(e, u, l, s)
              ;(s = c.transitionEnd), (u = c.target)
            }
            return (0, r.pi)({ transition: a, transitionEnd: s }, u)
          },
          scrapeMotionValuesFromProps: Ne,
          build: function (e, t, n, r, i, o, a) {
            void 0 !== e.isVisible && (t.style.visibility = e.isVisible ? 'visible' : 'hidden')
            var s = r.isEnabled && i.isHydrated
            pe(t, n, r, i, o, a.transformTemplate, s ? $i : void 0, s ? Xi : void 0)
          },
          render: je,
        },
        Eo = no(xo),
        ko = no(
          (0, r.pi)((0, r.pi)({}, xo), {
            getBaseTarget: function (e, t) {
              return e[t]
            },
            readValueFromInstance: function (e, t) {
              var n
              return F(t)
                ? (null === (n = tr(t)) || void 0 === n ? void 0 : n.default) || 0
                : ((t = De.has(t) ? t : Re(t)), e.getAttribute(t))
            },
            scrapeMotionValuesFromProps: Ie,
            build: function (e, t, n, r, i, o, a) {
              var s = r.isEnabled && i.isHydrated
              Ce(t, n, r, i, o, a.transformTemplate, s ? $i : void 0, s ? Xi : void 0)
            },
            render: Le,
          }),
        ),
        _o = function (e, t) {
          return L(e)
            ? ko(t, { enableHardwareAcceleration: !1 })
            : Eo(t, { enableHardwareAcceleration: !0 })
        },
        To = (0, r.pi)((0, r.pi)((0, r.pi)((0, r.pi)({}, jr), yt), Si), Wi),
        Oo = j(function (e, t) {
          return (function (e, t, n, i) {
            var o = t.forwardMotionProps,
              a = void 0 !== o && o,
              s = L(e) ? Ge : We
            return (0,
            r.pi)((0, r.pi)({}, s), { preloadedFeatures: n, useRender: Pe(a), createVisualElement: i, Component: e })
          })(e, t, To, _o)
        })
    },
    8839: function (e, t, n) {
      'use strict'
      n.d(t, {
        kv: function () {
          return s
        },
        e3: function () {
          return u
        },
        x7: function () {
          return c
        },
        de: function () {
          return l
        },
      })
      var r = n(9839),
        i = n(3327),
        o = n(519)
      function a(e) {
        return e.projection.isEnabled || e.shouldResetTransform()
      }
      function s(e, t) {
        void 0 === t && (t = [])
        var n = e.parent
        return n && s(n, t), a(e) && t.push(e), t
      }
      function u(e) {
        var t = [],
          n = function (e) {
            a(e) && t.push(e), e.children.forEach(n)
          }
        return e.children.forEach(n), t.sort(o._)
      }
      function l(e) {
        if (!e.shouldResetTransform()) {
          var t = e.getLayoutState()
          e.notifyBeforeLayoutMeasure(t.layout),
            (t.isHydrated = !0),
            (t.layout = e.measureViewportBox()),
            (t.layoutCorrected = (0, i.nP)(t.layout)),
            e.notifyLayoutMeasure(t.layout, e.prevViewportBox || t.layout),
            r.ZP.update(function () {
              return e.rebaseProjectionTarget()
            })
        }
      }
      function c(e) {
        e.shouldResetTransform() ||
          ((e.prevViewportBox = e.measureViewportBox(!1)),
          e.rebaseProjectionTarget(!1, e.prevViewportBox))
      }
    },
    7565: function (e, t, n) {
      'use strict'
      n.d(t, {
        U: function () {
          return o
        },
        R: function () {
          return a
        },
      })
      var r = new Set()
      function i(e, t, n) {
        e[n] || (e[n] = []), e[n].push(t)
      }
      function o(e) {
        return (
          r.add(e),
          function () {
            return r.delete(e)
          }
        )
      }
      function a() {
        if (r.size) {
          var e = 0,
            t = [[]],
            n = [],
            o = function (n) {
              return i(t, n, e)
            },
            a = function (t) {
              i(n, t, e), e++
            }
          r.forEach(function (t) {
            t(o, a), (e = 0)
          }),
            r.clear()
          for (var u = n.length, l = 0; l <= u; l++)
            t[l] && t[l].forEach(s), n[l] && n[l].forEach(s)
        }
      }
      var s = function (e) {
        return e()
      }
    },
    519: function (e, t, n) {
      'use strict'
      n.d(t, {
        _: function () {
          return r
        },
      })
      var r = function (e, t) {
        return e.depth - t.depth
      }
    },
    3327: function (e, t, n) {
      'use strict'
      n.d(t, {
        VZ: function () {
          return u
        },
        _6: function () {
          return a
        },
        RX: function () {
          return o
        },
        nP: function () {
          return l
        },
        pY: function () {
          return d
        },
        dV: function () {
          return s
        },
      })
      var r = n(1439)
      function i(e) {
        return e
      }
      function o(e) {
        var t = e.top
        return { x: { min: e.left, max: e.right }, y: { min: t, max: e.bottom } }
      }
      function a(e) {
        var t = e.x,
          n = e.y
        return { top: n.min, bottom: n.max, left: t.min, right: t.max }
      }
      function s(e, t) {
        var n = e.top,
          r = e.left,
          o = e.bottom,
          a = e.right
        void 0 === t && (t = i)
        var s = t({ x: r, y: n }),
          u = t({ x: a, y: o })
        return { top: s.y, left: s.x, bottom: u.y, right: u.x }
      }
      function u() {
        return { x: { min: 0, max: 1 }, y: { min: 0, max: 1 } }
      }
      function l(e) {
        return { x: (0, r.pi)({}, e.x), y: (0, r.pi)({}, e.y) }
      }
      var c = { translate: 0, scale: 1, origin: 0, originPoint: 0 }
      function d() {
        return { x: (0, r.pi)({}, c), y: (0, r.pi)({}, c) }
      }
    },
    5930: function (e, t, n) {
      'use strict'
      n.d(t, {
        h: function () {
          return i
        },
      })
      var r = n(7294)
      function i(e) {
        var t = (0, r.useRef)(null)
        return null === t.current && (t.current = e()), t.current
      }
    },
    6717: function (e, t, n) {
      'use strict'
      n.d(t, {
        z: function () {
          return i
        },
      })
      var r = n(7294)
      function i(e) {
        return (0, r.useEffect)(function () {
          return function () {
            return e()
          }
        }, [])
      }
    },
    1439: function (e, t, n) {
      'use strict'
      n.d(t, {
        ZT: function () {
          return i
        },
        pi: function () {
          return o
        },
        _T: function () {
          return a
        },
        CR: function () {
          return s
        },
        ev: function () {
          return u
        },
      })
      var r = function (e, t) {
        return (r =
          Object.setPrototypeOf ||
          ({ __proto__: [] } instanceof Array &&
            function (e, t) {
              e.__proto__ = t
            }) ||
          function (e, t) {
            for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n])
          })(e, t)
      }
      function i(e, t) {
        if ('function' !== typeof t && null !== t)
          throw new TypeError('Class extends value ' + String(t) + ' is not a constructor or null')
        function n() {
          this.constructor = e
        }
        r(e, t),
          (e.prototype = null === t ? Object.create(t) : ((n.prototype = t.prototype), new n()))
      }
      var o = function () {
        return (o =
          Object.assign ||
          function (e) {
            for (var t, n = 1, r = arguments.length; n < r; n++)
              for (var i in (t = arguments[n]))
                Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i])
            return e
          }).apply(this, arguments)
      }
      function a(e, t) {
        var n = {}
        for (var r in e)
          Object.prototype.hasOwnProperty.call(e, r) && t.indexOf(r) < 0 && (n[r] = e[r])
        if (null != e && 'function' === typeof Object.getOwnPropertySymbols) {
          var i = 0
          for (r = Object.getOwnPropertySymbols(e); i < r.length; i++)
            t.indexOf(r[i]) < 0 &&
              Object.prototype.propertyIsEnumerable.call(e, r[i]) &&
              (n[r[i]] = e[r[i]])
        }
        return n
      }
      Object.create
      function s(e, t) {
        var n = 'function' === typeof Symbol && e[Symbol.iterator]
        if (!n) return e
        var r,
          i,
          o = n.call(e),
          a = []
        try {
          for (; (void 0 === t || t-- > 0) && !(r = o.next()).done; ) a.push(r.value)
        } catch (s) {
          i = { error: s }
        } finally {
          try {
            r && !r.done && (n = o.return) && n.call(o)
          } finally {
            if (i) throw i.error
          }
        }
        return a
      }
      function u(e, t, n) {
        if (n || 2 === arguments.length)
          for (var r, i = 0, o = t.length; i < o; i++)
            (!r && i in t) || (r || (r = Array.prototype.slice.call(t, 0, i)), (r[i] = t[i]))
        return e.concat(r || t)
      }
      Object.create
    },
    9839: function (e, t, n) {
      'use strict'
      n.d(t, {
        qY: function () {
          return h
        },
        ZP: function () {
          return b
        },
        iW: function () {
          return p
        },
        $B: function () {
          return y
        },
      })
      var r = (1 / 60) * 1e3,
        i =
          'undefined' !== typeof performance
            ? function () {
                return performance.now()
              }
            : function () {
                return Date.now()
              },
        o =
          'undefined' !== typeof window
            ? function (e) {
                return window.requestAnimationFrame(e)
              }
            : function (e) {
                return setTimeout(function () {
                  return e(i())
                }, r)
              }
      var a = !0,
        s = !1,
        u = !1,
        l = { delta: 0, timestamp: 0 },
        c = ['read', 'update', 'preRender', 'render', 'postRender'],
        d = c.reduce(function (e, t) {
          return (
            (e[t] = (function (e) {
              var t = [],
                n = [],
                r = 0,
                i = !1,
                o = new WeakSet(),
                a = {
                  schedule: function (e, a, s) {
                    void 0 === a && (a = !1), void 0 === s && (s = !1)
                    var u = s && i,
                      l = u ? t : n
                    return (
                      a && o.add(e), -1 === l.indexOf(e) && (l.push(e), u && i && (r = t.length)), e
                    )
                  },
                  cancel: function (e) {
                    var t = n.indexOf(e)
                    ;-1 !== t && n.splice(t, 1), o.delete(e)
                  },
                  process: function (s) {
                    var u
                    if (((i = !0), (t = (u = [n, t])[0]), ((n = u[1]).length = 0), (r = t.length)))
                      for (var l = 0; l < r; l++) {
                        var c = t[l]
                        c(s), o.has(c) && (a.schedule(c), e())
                      }
                    i = !1
                  },
                }
              return a
            })(function () {
              return (s = !0)
            })),
            e
          )
        }, {}),
        f = c.reduce(function (e, t) {
          var n = d[t]
          return (
            (e[t] = function (e, t, r) {
              return (
                void 0 === t && (t = !1), void 0 === r && (r = !1), s || g(), n.schedule(e, t, r)
              )
            }),
            e
          )
        }, {}),
        h = c.reduce(function (e, t) {
          return (e[t] = d[t].cancel), e
        }, {}),
        p = c.reduce(function (e, t) {
          return (
            (e[t] = function () {
              return d[t].process(l)
            }),
            e
          )
        }, {}),
        v = function (e) {
          return d[e].process(l)
        },
        m = function (e) {
          ;(s = !1),
            (l.delta = a ? r : Math.max(Math.min(e - l.timestamp, 40), 1)),
            (l.timestamp = e),
            (u = !0),
            c.forEach(v),
            (u = !1),
            s && ((a = !1), o(m))
        },
        g = function () {
          ;(s = !0), (a = !0), u || o(m)
        },
        y = function () {
          return l
        },
        b = f
    },
    3405: function (e) {
      e.exports = function (e) {
        return [...e].reduce((e, [t, n]) => ((e[t] = n), e), {})
      }
    },
    1527: function (e, t) {
      'use strict'
      function n(e, t) {
        if (null == e) return {}
        var n,
          r,
          i = (function (e, t) {
            if (null == e) return {}
            var n,
              r,
              i = {},
              o = Object.keys(e)
            for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n])
            return i
          })(e, t)
        if (Object.getOwnPropertySymbols) {
          var o = Object.getOwnPropertySymbols(e)
          for (r = 0; r < o.length; r++)
            (n = o[r]),
              t.indexOf(n) >= 0 ||
                (Object.prototype.propertyIsEnumerable.call(e, n) && (i[n] = e[n]))
        }
        return i
      }
      function r(e, t) {
        return (
          (function (e) {
            if (Array.isArray(e)) return e
          })(e) ||
          (function (e, t) {
            var n = e && (('undefined' !== typeof Symbol && e[Symbol.iterator]) || e['@@iterator'])
            if (null == n) return
            var r,
              i,
              o = [],
              a = !0,
              s = !1
            try {
              for (
                n = n.call(e);
                !(a = (r = n.next()).done) && (o.push(r.value), !t || o.length !== t);
                a = !0
              );
            } catch (u) {
              ;(s = !0), (i = u)
            } finally {
              try {
                a || null == n.return || n.return()
              } finally {
                if (s) throw i
              }
            }
            return o
          })(e, t) ||
          o(e, t) ||
          (function () {
            throw new TypeError(
              'Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.',
            )
          })()
        )
      }
      function i(e) {
        return (
          (function (e) {
            if (Array.isArray(e)) return a(e)
          })(e) ||
          (function (e) {
            if (
              ('undefined' !== typeof Symbol && null != e[Symbol.iterator]) ||
              null != e['@@iterator']
            )
              return Array.from(e)
          })(e) ||
          o(e) ||
          (function () {
            throw new TypeError(
              'Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.',
            )
          })()
        )
      }
      function o(e, t) {
        if (e) {
          if ('string' === typeof e) return a(e, t)
          var n = Object.prototype.toString.call(e).slice(8, -1)
          return (
            'Object' === n && e.constructor && (n = e.constructor.name),
            'Map' === n || 'Set' === n
              ? Array.from(e)
              : 'Arguments' === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)
              ? a(e, t)
              : void 0
          )
        }
      }
      function a(e, t) {
        ;(null == t || t > e.length) && (t = e.length)
        for (var n = 0, r = new Array(t); n < t; n++) r[n] = e[n]
        return r
      }
      function s(e) {
        var t = (function (e, t) {
          if ('object' !== typeof e || null === e) return e
          var n = e[Symbol.toPrimitive]
          if (void 0 !== n) {
            var r = n.call(e, t || 'default')
            if ('object' !== typeof r) return r
            throw new TypeError('@@toPrimitive must return a primitive value.')
          }
          return ('string' === t ? String : Number)(e)
        })(e, 'string')
        return 'symbol' === typeof t ? t : String(t)
      }
      t.Z = function () {
        var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [],
          t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [],
          o = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2],
          a = arguments.length > 3 && void 0 !== arguments[3] && arguments[3],
          u = (t instanceof Array ? (t.length ? t : [void 0]) : [t]).map(function (e) {
            return { keyAccessor: e, isProp: !(e instanceof Function) }
          }),
          l = e.reduce(function (e, t) {
            var r = e,
              i = t
            return (
              u.forEach(function (e, t) {
                var a,
                  l = e.keyAccessor
                if (e.isProp) {
                  var c = i,
                    d = c[l],
                    f = n(c, [l].map(s))
                  ;(a = d), (i = f)
                } else a = l(i, t)
                t + 1 < u.length
                  ? (r.hasOwnProperty(a) || (r[a] = {}), (r = r[a]))
                  : o
                  ? (r.hasOwnProperty(a) || (r[a] = []), r[a].push(i))
                  : (r[a] = i)
              }),
              e
            )
          }, {})
        o instanceof Function &&
          (function e(t) {
            var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1
            n === u.length
              ? Object.keys(t).forEach(function (e) {
                  return (t[e] = o(t[e]))
                })
              : Object.values(t).forEach(function (t) {
                  return e(t, n + 1)
                })
          })(l)
        var c = l
        return (
          a &&
            ((c = []),
            (function e(t) {
              var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : []
              n.length === u.length
                ? c.push({ keys: n, vals: t })
                : Object.entries(t).forEach(function (t) {
                    var o = r(t, 2),
                      a = o[0],
                      s = o[1]
                    return e(s, [].concat(i(n), [a]))
                  })
            })(l),
            t instanceof Array && 0 === t.length && 1 === c.length && (c[0].keys = [])),
          c
        )
      }
    },
    6808: function (e, t, n) {
      var r, i
      !(function (o) {
        if (
          (void 0 === (i = 'function' === typeof (r = o) ? r.call(t, n, t, e) : r) ||
            (e.exports = i),
          !0,
          (e.exports = o()),
          !!0)
        ) {
          var a = window.Cookies,
            s = (window.Cookies = o())
          s.noConflict = function () {
            return (window.Cookies = a), s
          }
        }
      })(function () {
        function e() {
          for (var e = 0, t = {}; e < arguments.length; e++) {
            var n = arguments[e]
            for (var r in n) t[r] = n[r]
          }
          return t
        }
        function t(e) {
          return e.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent)
        }
        return (function n(r) {
          function i() {}
          function o(t, n, o) {
            if ('undefined' !== typeof document) {
              'number' === typeof (o = e({ path: '/' }, i.defaults, o)).expires &&
                (o.expires = new Date(1 * new Date() + 864e5 * o.expires)),
                (o.expires = o.expires ? o.expires.toUTCString() : '')
              try {
                var a = JSON.stringify(n)
                ;/^[\{\[]/.test(a) && (n = a)
              } catch (l) {}
              ;(n = r.write
                ? r.write(n, t)
                : encodeURIComponent(String(n)).replace(
                    /%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g,
                    decodeURIComponent,
                  )),
                (t = encodeURIComponent(String(t))
                  .replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)
                  .replace(/[\(\)]/g, escape))
              var s = ''
              for (var u in o)
                o[u] && ((s += '; ' + u), !0 !== o[u] && (s += '=' + o[u].split(';')[0]))
              return (document.cookie = t + '=' + n + s)
            }
          }
          function a(e, n) {
            if ('undefined' !== typeof document) {
              for (
                var i = {}, o = document.cookie ? document.cookie.split('; ') : [], a = 0;
                a < o.length;
                a++
              ) {
                var s = o[a].split('='),
                  u = s.slice(1).join('=')
                n || '"' !== u.charAt(0) || (u = u.slice(1, -1))
                try {
                  var l = t(s[0])
                  if (((u = (r.read || r)(u, l) || t(u)), n))
                    try {
                      u = JSON.parse(u)
                    } catch (c) {}
                  if (((i[l] = u), e === l)) break
                } catch (c) {}
              }
              return e ? i[e] : i
            }
          }
          return (
            (i.set = o),
            (i.get = function (e) {
              return a(e, !1)
            }),
            (i.getJSON = function (e) {
              return a(e, !0)
            }),
            (i.remove = function (t, n) {
              o(t, '', e(n, { expires: -1 }))
            }),
            (i.defaults = {}),
            (i.withConverter = n),
            i
          )
        })(function () {})
      })
    },
    4858: function (e, t, n) {
      'use strict'
      var r = n(296),
        i = n.n(r)
      function o(e, t) {
        return (
          (function (e) {
            if (Array.isArray(e)) return e
          })(e) ||
          (function (e, t) {
            var n = e && (('undefined' !== typeof Symbol && e[Symbol.iterator]) || e['@@iterator'])
            if (null == n) return
            var r,
              i,
              o = [],
              a = !0,
              s = !1
            try {
              for (
                n = n.call(e);
                !(a = (r = n.next()).done) && (o.push(r.value), !t || o.length !== t);
                a = !0
              );
            } catch (u) {
              ;(s = !0), (i = u)
            } finally {
              try {
                a || null == n.return || n.return()
              } finally {
                if (s) throw i
              }
            }
            return o
          })(e, t) ||
          (function (e, t) {
            if (!e) return
            if ('string' === typeof e) return a(e, t)
            var n = Object.prototype.toString.call(e).slice(8, -1)
            'Object' === n && e.constructor && (n = e.constructor.name)
            if ('Map' === n || 'Set' === n) return Array.from(e)
            if ('Arguments' === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
              return a(e, t)
          })(e, t) ||
          (function () {
            throw new TypeError(
              'Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.',
            )
          })()
        )
      }
      function a(e, t) {
        ;(null == t || t > e.length) && (t = e.length)
        for (var n = 0, r = new Array(t); n < t; n++) r[n] = e[n]
        return r
      }
      var s = function e(t, n) {
        var r = n.default,
          i = void 0 === r ? null : r,
          o = n.triggerUpdate,
          a = void 0 === o || o,
          s = n.onChange,
          u = void 0 === s ? function (e, t) {} : s
        !(function (e, t) {
          if (!(e instanceof t)) throw new TypeError('Cannot call a class as a function')
        })(this, e),
          (this.name = t),
          (this.defaultVal = i),
          (this.triggerUpdate = a),
          (this.onChange = u)
      }
      t.Z = function (e) {
        var t = e.stateInit,
          n =
            void 0 === t
              ? function () {
                  return {}
                }
              : t,
          r = e.props,
          a = void 0 === r ? {} : r,
          u = e.methods,
          l = void 0 === u ? {} : u,
          c = e.aliases,
          d = void 0 === c ? {} : c,
          f = e.init,
          h = void 0 === f ? function () {} : f,
          p = e.update,
          v = void 0 === p ? function () {} : p,
          m = Object.keys(a).map(function (e) {
            return new s(e, a[e])
          })
        return function () {
          var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
            t = Object.assign({}, n instanceof Function ? n(e) : n, { initialised: !1 }),
            r = {}
          function a(t) {
            return s(t, e), u(), a
          }
          var s = function (e, n) {
              h.call(a, e, t, n), (t.initialised = !0)
            },
            u = i()(function () {
              t.initialised && (v.call(a, t, r), (r = {}))
            }, 1)
          return (
            m.forEach(function (e) {
              a[e.name] = (function (e) {
                var n = e.name,
                  i = e.triggerUpdate,
                  o = void 0 !== i && i,
                  s = e.onChange,
                  l = void 0 === s ? function (e, t) {} : s,
                  c = e.defaultVal,
                  d = void 0 === c ? null : c
                return function (e) {
                  var i = t[n]
                  if (!arguments.length) return i
                  var s = void 0 === e ? d : e
                  return (
                    (t[n] = s), l.call(a, s, t, i), !r.hasOwnProperty(n) && (r[n] = i), o && u(), a
                  )
                }
              })(e)
            }),
            Object.keys(l).forEach(function (e) {
              a[e] = function () {
                for (var n, r = arguments.length, i = new Array(r), o = 0; o < r; o++)
                  i[o] = arguments[o]
                return (n = l[e]).call.apply(n, [a, t].concat(i))
              }
            }),
            Object.entries(d).forEach(function (e) {
              var t = o(e, 2),
                n = t[0],
                r = t[1]
              return (a[n] = a[r])
            }),
            (a.resetProps = function () {
              return (
                m.forEach(function (e) {
                  a[e.name](e.defaultVal)
                }),
                a
              )
            }),
            a.resetProps(),
            (t._rerender = u),
            a
          )
        }
      }
    },
    3096: function (e, t, n) {
      var r = 'Expected a function',
        i = /^\s+|\s+$/g,
        o = /^[-+]0x[0-9a-f]+$/i,
        a = /^0b[01]+$/i,
        s = /^0o[0-7]+$/i,
        u = parseInt,
        l = 'object' == typeof n.g && n.g && n.g.Object === Object && n.g,
        c = 'object' == typeof self && self && self.Object === Object && self,
        d = l || c || Function('return this')(),
        f = Object.prototype.toString,
        h = Math.max,
        p = Math.min,
        v = function () {
          return d.Date.now()
        }
      function m(e, t, n) {
        var i,
          o,
          a,
          s,
          u,
          l,
          c = 0,
          d = !1,
          f = !1,
          m = !0
        if ('function' != typeof e) throw new TypeError(r)
        function b(t) {
          var n = i,
            r = o
          return (i = o = void 0), (c = t), (s = e.apply(r, n))
        }
        function w(e) {
          return (c = e), (u = setTimeout(E, t)), d ? b(e) : s
        }
        function x(e) {
          var n = e - l
          return void 0 === l || n >= t || n < 0 || (f && e - c >= a)
        }
        function E() {
          var e = v()
          if (x(e)) return k(e)
          u = setTimeout(
            E,
            (function (e) {
              var n = t - (e - l)
              return f ? p(n, a - (e - c)) : n
            })(e),
          )
        }
        function k(e) {
          return (u = void 0), m && i ? b(e) : ((i = o = void 0), s)
        }
        function _() {
          var e = v(),
            n = x(e)
          if (((i = arguments), (o = this), (l = e), n)) {
            if (void 0 === u) return w(l)
            if (f) return (u = setTimeout(E, t)), b(l)
          }
          return void 0 === u && (u = setTimeout(E, t)), s
        }
        return (
          (t = y(t) || 0),
          g(n) &&
            ((d = !!n.leading),
            (a = (f = 'maxWait' in n) ? h(y(n.maxWait) || 0, t) : a),
            (m = 'trailing' in n ? !!n.trailing : m)),
          (_.cancel = function () {
            void 0 !== u && clearTimeout(u), (c = 0), (i = l = o = u = void 0)
          }),
          (_.flush = function () {
            return void 0 === u ? s : k(v())
          }),
          _
        )
      }
      function g(e) {
        var t = typeof e
        return !!e && ('object' == t || 'function' == t)
      }
      function y(e) {
        if ('number' == typeof e) return e
        if (
          (function (e) {
            return (
              'symbol' == typeof e ||
              ((function (e) {
                return !!e && 'object' == typeof e
              })(e) &&
                '[object Symbol]' == f.call(e))
            )
          })(e)
        )
          return NaN
        if (g(e)) {
          var t = 'function' == typeof e.valueOf ? e.valueOf() : e
          e = g(t) ? t + '' : t
        }
        if ('string' != typeof e) return 0 === e ? e : +e
        e = e.replace(i, '')
        var n = a.test(e)
        return n || s.test(e) ? u(e.slice(2), n ? 2 : 8) : o.test(e) ? NaN : +e
      }
      e.exports = function (e, t, n) {
        var i = !0,
          o = !0
        if ('function' != typeof e) throw new TypeError(r)
        return (
          g(n) &&
            ((i = 'leading' in n ? !!n.leading : i), (o = 'trailing' in n ? !!n.trailing : o)),
          m(e, t, { leading: i, maxWait: t, trailing: o })
        )
      }
    },
    3752: function (e, t, n) {
      'use strict'
      function r(e, t) {
        var n
        if ('undefined' === typeof Symbol || null == e[Symbol.iterator]) {
          if (
            Array.isArray(e) ||
            (n = (function (e, t) {
              if (!e) return
              if ('string' === typeof e) return i(e, t)
              var n = Object.prototype.toString.call(e).slice(8, -1)
              'Object' === n && e.constructor && (n = e.constructor.name)
              if ('Map' === n || 'Set' === n) return Array.from(e)
              if ('Arguments' === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
                return i(e, t)
            })(e)) ||
            (t && e && 'number' === typeof e.length)
          ) {
            n && (e = n)
            var r = 0,
              o = function () {}
            return {
              s: o,
              n: function () {
                return r >= e.length ? { done: !0 } : { done: !1, value: e[r++] }
              },
              e: function (e) {
                throw e
              },
              f: o,
            }
          }
          throw new TypeError(
            'Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.',
          )
        }
        var a,
          s = !0,
          u = !1
        return {
          s: function () {
            n = e[Symbol.iterator]()
          },
          n: function () {
            var e = n.next()
            return (s = e.done), e
          },
          e: function (e) {
            ;(u = !0), (a = e)
          },
          f: function () {
            try {
              s || null == n.return || n.return()
            } finally {
              if (u) throw a
            }
          },
        }
      }
      function i(e, t) {
        ;(null == t || t > e.length) && (t = e.length)
        for (var n = 0, r = new Array(t); n < t; n++) r[n] = e[n]
        return r
      }
      function o(e, t) {
        var n
        if (void 0 === t) {
          var i,
            o = r(e)
          try {
            for (o.s(); !(i = o.n()).done; ) {
              var a = i.value
              null != a && (n < a || (void 0 === n && a >= a)) && (n = a)
            }
          } catch (d) {
            o.e(d)
          } finally {
            o.f()
          }
        } else {
          var s,
            u = -1,
            l = r(e)
          try {
            for (l.s(); !(s = l.n()).done; ) {
              var c = s.value
              null != (c = t(c, ++u, e)) && (n < c || (void 0 === n && c >= c)) && (n = c)
            }
          } catch (d) {
            l.e(d)
          } finally {
            l.f()
          }
        }
        return n
      }
      n.d(t, {
        Z: function () {
          return o
        },
      })
    },
    6701: function (e, t, n) {
      'use strict'
      function r(e, t) {
        var n
        if ('undefined' === typeof Symbol || null == e[Symbol.iterator]) {
          if (
            Array.isArray(e) ||
            (n = (function (e, t) {
              if (!e) return
              if ('string' === typeof e) return i(e, t)
              var n = Object.prototype.toString.call(e).slice(8, -1)
              'Object' === n && e.constructor && (n = e.constructor.name)
              if ('Map' === n || 'Set' === n) return Array.from(e)
              if ('Arguments' === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
                return i(e, t)
            })(e)) ||
            (t && e && 'number' === typeof e.length)
          ) {
            n && (e = n)
            var r = 0,
              o = function () {}
            return {
              s: o,
              n: function () {
                return r >= e.length ? { done: !0 } : { done: !1, value: e[r++] }
              },
              e: function (e) {
                throw e
              },
              f: o,
            }
          }
          throw new TypeError(
            'Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.',
          )
        }
        var a,
          s = !0,
          u = !1
        return {
          s: function () {
            n = e[Symbol.iterator]()
          },
          n: function () {
            var e = n.next()
            return (s = e.done), e
          },
          e: function (e) {
            ;(u = !0), (a = e)
          },
          f: function () {
            try {
              s || null == n.return || n.return()
            } finally {
              if (u) throw a
            }
          },
        }
      }
      function i(e, t) {
        ;(null == t || t > e.length) && (t = e.length)
        for (var n = 0, r = new Array(t); n < t; n++) r[n] = e[n]
        return r
      }
      function o(e, t) {
        var n
        if (void 0 === t) {
          var i,
            o = r(e)
          try {
            for (o.s(); !(i = o.n()).done; ) {
              var a = i.value
              null != a && (n > a || (void 0 === n && a >= a)) && (n = a)
            }
          } catch (d) {
            o.e(d)
          } finally {
            o.f()
          }
        } else {
          var s,
            u = -1,
            l = r(e)
          try {
            for (l.s(); !(s = l.n()).done; ) {
              var c = s.value
              null != (c = t(c, ++u, e)) && (n > c || (void 0 === n && c >= c)) && (n = c)
            }
          } catch (d) {
            l.e(d)
          } finally {
            l.f()
          }
        }
        return n
      }
      n.d(t, {
        Z: function () {
          return o
        },
      })
    },
    4275: function (e, t, n) {
      'use strict'
      function r(e, t, n) {
        if (isNaN(t)) return e
        var r,
          i,
          o,
          a,
          s,
          u,
          l = e._root,
          c = { data: n },
          d = e._x0,
          f = e._x1
        if (!l) return (e._root = c), e
        for (; l.length; )
          if (((a = t >= (i = (d + f) / 2)) ? (d = i) : (f = i), (r = l), !(l = l[(s = +a)])))
            return (r[s] = c), e
        if (t === (o = +e._x.call(null, l.data)))
          return (c.next = l), r ? (r[s] = c) : (e._root = c), e
        do {
          ;(r = r ? (r[s] = new Array(2)) : (e._root = new Array(2))),
            (a = t >= (i = (d + f) / 2)) ? (d = i) : (f = i)
        } while ((s = +a) === (u = +(o >= i)))
        return (r[u] = l), (r[s] = c), e
      }
      function i(e, t, n) {
        ;(this.node = e), (this.x0 = t), (this.x1 = n)
      }
      function o(e) {
        return e[0]
      }
      function a(e, t) {
        var n = new s(null == t ? o : t, NaN, NaN)
        return null == e ? n : n.addAll(e)
      }
      function s(e, t, n) {
        ;(this._x = e), (this._x0 = t), (this._x1 = n), (this._root = void 0)
      }
      function u(e) {
        for (var t = { data: e.data }, n = t; (e = e.next); ) n = n.next = { data: e.data }
        return t
      }
      n.d(t, {
        Z: function () {
          return a
        },
      })
      var l = (a.prototype = s.prototype)
      ;(l.copy = function () {
        var e,
          t,
          n = new s(this._x, this._x0, this._x1),
          r = this._root
        if (!r) return n
        if (!r.length) return (n._root = u(r)), n
        for (e = [{ source: r, target: (n._root = new Array(2)) }]; (r = e.pop()); )
          for (var i = 0; i < 2; ++i)
            (t = r.source[i]) &&
              (t.length
                ? e.push({ source: t, target: (r.target[i] = new Array(2)) })
                : (r.target[i] = u(t)))
        return n
      }),
        (l.add = function (e) {
          var t = +this._x.call(null, e)
          return r(this.cover(t), t, e)
        }),
        (l.addAll = function (e) {
          var t,
            n,
            i = e.length,
            o = new Array(i),
            a = 1 / 0,
            s = -1 / 0
          for (t = 0; t < i; ++t)
            isNaN((n = +this._x.call(null, e[t]))) ||
              ((o[t] = n), n < a && (a = n), n > s && (s = n))
          if (a > s) return this
          for (this.cover(a).cover(s), t = 0; t < i; ++t) r(this, o[t], e[t])
          return this
        }),
        (l.cover = function (e) {
          if (isNaN((e = +e))) return this
          var t = this._x0,
            n = this._x1
          if (isNaN(t)) n = (t = Math.floor(e)) + 1
          else {
            for (var r, i, o = n - t || 1, a = this._root; t > e || e >= n; )
              switch (((i = +(e < t)), ((r = new Array(2))[i] = a), (a = r), (o *= 2), i)) {
                case 0:
                  n = t + o
                  break
                case 1:
                  t = n - o
              }
            this._root && this._root.length && (this._root = a)
          }
          return (this._x0 = t), (this._x1 = n), this
        }),
        (l.data = function () {
          var e = []
          return (
            this.visit(function (t) {
              if (!t.length)
                do {
                  e.push(t.data)
                } while ((t = t.next))
            }),
            e
          )
        }),
        (l.extent = function (e) {
          return arguments.length
            ? this.cover(+e[0][0]).cover(+e[1][0])
            : isNaN(this._x0)
            ? void 0
            : [[this._x0], [this._x1]]
        }),
        (l.find = function (e, t) {
          var n,
            r,
            o,
            a,
            s,
            u = this._x0,
            l = this._x1,
            c = [],
            d = this._root
          for (
            d && c.push(new i(d, u, l)), null == t ? (t = 1 / 0) : ((u = e - t), (l = e + t));
            (a = c.pop());

          )
            if (!(!(d = a.node) || (r = a.x0) > l || (o = a.x1) < u))
              if (d.length) {
                var f = (r + o) / 2
                c.push(new i(d[1], f, o), new i(d[0], r, f)),
                  (s = +(e >= f)) &&
                    ((a = c[c.length - 1]),
                    (c[c.length - 1] = c[c.length - 1 - s]),
                    (c[c.length - 1 - s] = a))
              } else {
                var h = Math.abs(e - +this._x.call(null, d.data))
                h < t && ((t = h), (u = e - h), (l = e + h), (n = d.data))
              }
          return n
        }),
        (l.remove = function (e) {
          if (isNaN((o = +this._x.call(null, e)))) return this
          var t,
            n,
            r,
            i,
            o,
            a,
            s,
            u,
            l,
            c = this._root,
            d = this._x0,
            f = this._x1
          if (!c) return this
          if (c.length)
            for (;;) {
              if (((s = o >= (a = (d + f) / 2)) ? (d = a) : (f = a), (t = c), !(c = c[(u = +s)])))
                return this
              if (!c.length) break
              t[(u + 1) & 1] && ((n = t), (l = u))
            }
          for (; c.data !== e; ) if (((r = c), !(c = c.next))) return this
          return (
            (i = c.next) && delete c.next,
            r
              ? (i ? (r.next = i) : delete r.next, this)
              : t
              ? (i ? (t[u] = i) : delete t[u],
                (c = t[0] || t[1]) &&
                  c === (t[1] || t[0]) &&
                  !c.length &&
                  (n ? (n[l] = c) : (this._root = c)),
                this)
              : ((this._root = i), this)
          )
        }),
        (l.removeAll = function (e) {
          for (var t = 0, n = e.length; t < n; ++t) this.remove(e[t])
          return this
        }),
        (l.root = function () {
          return this._root
        }),
        (l.size = function () {
          var e = 0
          return (
            this.visit(function (t) {
              if (!t.length)
                do {
                  ++e
                } while ((t = t.next))
            }),
            e
          )
        }),
        (l.visit = function (e) {
          var t,
            n,
            r,
            o,
            a = [],
            s = this._root
          for (s && a.push(new i(s, this._x0, this._x1)); (t = a.pop()); )
            if (!e((s = t.node), (r = t.x0), (o = t.x1)) && s.length) {
              var u = (r + o) / 2
              ;(n = s[1]) && a.push(new i(n, u, o)), (n = s[0]) && a.push(new i(n, r, u))
            }
          return this
        }),
        (l.visitAfter = function (e) {
          var t,
            n = [],
            r = []
          for (this._root && n.push(new i(this._root, this._x0, this._x1)); (t = n.pop()); ) {
            var o = t.node
            if (o.length) {
              var a,
                s = t.x0,
                u = t.x1,
                l = (s + u) / 2
              ;(a = o[0]) && n.push(new i(a, s, l)), (a = o[1]) && n.push(new i(a, l, u))
            }
            r.push(t)
          }
          for (; (t = r.pop()); ) e(t.node, t.x0, t.x1)
          return this
        }),
        (l.x = function (e) {
          return arguments.length ? ((this._x = e), this) : this._x
        })
    },
    7137: function (e, t) {
      'use strict'
      var n = { value: function () {} }
      function r() {
        for (var e, t = 0, n = arguments.length, r = {}; t < n; ++t) {
          if (!(e = arguments[t] + '') || e in r || /[\s.]/.test(e))
            throw new Error('illegal type: ' + e)
          r[e] = []
        }
        return new i(r)
      }
      function i(e) {
        this._ = e
      }
      function o(e, t) {
        return e
          .trim()
          .split(/^|\s+/)
          .map(function (e) {
            var n = '',
              r = e.indexOf('.')
            if ((r >= 0 && ((n = e.slice(r + 1)), (e = e.slice(0, r))), e && !t.hasOwnProperty(e)))
              throw new Error('unknown type: ' + e)
            return { type: e, name: n }
          })
      }
      function a(e, t) {
        for (var n, r = 0, i = e.length; r < i; ++r) if ((n = e[r]).name === t) return n.value
      }
      function s(e, t, r) {
        for (var i = 0, o = e.length; i < o; ++i)
          if (e[i].name === t) {
            ;(e[i] = n), (e = e.slice(0, i).concat(e.slice(i + 1)))
            break
          }
        return null != r && e.push({ name: t, value: r }), e
      }
      ;(i.prototype = r.prototype =
        {
          constructor: i,
          on: function (e, t) {
            var n,
              r = this._,
              i = o(e + '', r),
              u = -1,
              l = i.length
            if (!(arguments.length < 2)) {
              if (null != t && 'function' !== typeof t) throw new Error('invalid callback: ' + t)
              for (; ++u < l; )
                if ((n = (e = i[u]).type)) r[n] = s(r[n], e.name, t)
                else if (null == t) for (n in r) r[n] = s(r[n], e.name, null)
              return this
            }
            for (; ++u < l; ) if ((n = (e = i[u]).type) && (n = a(r[n], e.name))) return n
          },
          copy: function () {
            var e = {},
              t = this._
            for (var n in t) e[n] = t[n].slice()
            return new i(e)
          },
          call: function (e, t) {
            if ((n = arguments.length - 2) > 0)
              for (var n, r, i = new Array(n), o = 0; o < n; ++o) i[o] = arguments[o + 2]
            if (!this._.hasOwnProperty(e)) throw new Error('unknown type: ' + e)
            for (o = 0, n = (r = this._[e]).length; o < n; ++o) r[o].value.apply(t, i)
          },
          apply: function (e, t, n) {
            if (!this._.hasOwnProperty(e)) throw new Error('unknown type: ' + e)
            for (var r = this._[e], i = 0, o = r.length; i < o; ++i) r[i].value.apply(t, n)
          },
        }),
        (t.Z = r)
    },
    216: function (e, t, n) {
      'use strict'
      function r(e, t, n) {
        var r,
          i = 1
        function o() {
          var o,
            a,
            s = r.length,
            u = 0,
            l = 0,
            c = 0
          for (o = 0; o < s; ++o) (u += (a = r[o]).x || 0), (l += a.y || 0), (c += a.z || 0)
          for (u = (u / s - e) * i, l = (l / s - t) * i, c = (c / s - n) * i, o = 0; o < s; ++o)
            (a = r[o]), u && (a.x -= u), l && (a.y -= l), c && (a.z -= c)
        }
        return (
          null == e && (e = 0),
          null == t && (t = 0),
          null == n && (n = 0),
          (o.initialize = function (e) {
            r = e
          }),
          (o.x = function (t) {
            return arguments.length ? ((e = +t), o) : e
          }),
          (o.y = function (e) {
            return arguments.length ? ((t = +e), o) : t
          }),
          (o.z = function (e) {
            return arguments.length ? ((n = +e), o) : n
          }),
          (o.strength = function (e) {
            return arguments.length ? ((i = +e), o) : i
          }),
          o
        )
      }
      n.d(t, {
        Z: function () {
          return r
        },
      })
    },
    9437: function (e, t, n) {
      'use strict'
      function r(e) {
        return function () {
          return e
        }
      }
      n.d(t, {
        Z: function () {
          return r
        },
      })
    },
    8246: function (e, t, n) {
      'use strict'
      function r(e) {
        return 1e-6 * (e() - 0.5)
      }
      n.d(t, {
        Z: function () {
          return r
        },
      })
    },
    5560: function (e, t, n) {
      'use strict'
      n.d(t, {
        Z: function () {
          return s
        },
      })
      var r = n(9437),
        i = n(8246)
      function o(e) {
        return e.index
      }
      function a(e, t) {
        var n = e.get(t)
        if (!n) throw new Error('node not found: ' + t)
        return n
      }
      function s(e) {
        var t,
          n,
          s,
          u,
          l,
          c,
          d,
          f = o,
          h = function (e) {
            return 1 / Math.min(l[e.source.index], l[e.target.index])
          },
          p = (0, r.Z)(30),
          v = 1
        function m(r) {
          for (var o = 0, a = e.length; o < v; ++o)
            for (var s, l, f, h, p, m = 0, g = 0, y = 0, b = 0; m < a; ++m)
              (l = (s = e[m]).source),
                (g = (f = s.target).x + f.vx - l.x - l.vx || (0, i.Z)(d)),
                u > 1 && (y = f.y + f.vy - l.y - l.vy || (0, i.Z)(d)),
                u > 2 && (b = f.z + f.vz - l.z - l.vz || (0, i.Z)(d)),
                (g *= h = (((h = Math.sqrt(g * g + y * y + b * b)) - n[m]) / h) * r * t[m]),
                (y *= h),
                (b *= h),
                (f.vx -= g * (p = c[m])),
                u > 1 && (f.vy -= y * p),
                u > 2 && (f.vz -= b * p),
                (l.vx += g * (p = 1 - p)),
                u > 1 && (l.vy += y * p),
                u > 2 && (l.vz += b * p)
        }
        function g() {
          if (s) {
            var r,
              i,
              o = s.length,
              u = e.length,
              d = new Map(
                s.map(function (e, t) {
                  return [f(e, t, s), e]
                }),
              )
            for (r = 0, l = new Array(o); r < u; ++r)
              ((i = e[r]).index = r),
                'object' !== typeof i.source && (i.source = a(d, i.source)),
                'object' !== typeof i.target && (i.target = a(d, i.target)),
                (l[i.source.index] = (l[i.source.index] || 0) + 1),
                (l[i.target.index] = (l[i.target.index] || 0) + 1)
            for (r = 0, c = new Array(u); r < u; ++r)
              (i = e[r]), (c[r] = l[i.source.index] / (l[i.source.index] + l[i.target.index]))
            ;(t = new Array(u)), y(), (n = new Array(u)), b()
          }
        }
        function y() {
          if (s) for (var n = 0, r = e.length; n < r; ++n) t[n] = +h(e[n], n, e)
        }
        function b() {
          if (s) for (var t = 0, r = e.length; t < r; ++t) n[t] = +p(e[t], t, e)
        }
        return (
          null == e && (e = []),
          (m.initialize = function (e) {
            s = e
            for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), r = 1; r < t; r++)
              n[r - 1] = arguments[r]
            ;(d =
              n.find(function (e) {
                return 'function' === typeof e
              }) || Math.random),
              (u =
                n.find(function (e) {
                  return [1, 2, 3].includes(e)
                }) || 2),
              g()
          }),
          (m.links = function (t) {
            return arguments.length ? ((e = t), g(), m) : e
          }),
          (m.id = function (e) {
            return arguments.length ? ((f = e), m) : f
          }),
          (m.iterations = function (e) {
            return arguments.length ? ((v = +e), m) : v
          }),
          (m.strength = function (e) {
            return arguments.length ? ((h = 'function' === typeof e ? e : (0, r.Z)(+e)), y(), m) : h
          }),
          (m.distance = function (e) {
            return arguments.length ? ((p = 'function' === typeof e ? e : (0, r.Z)(+e)), b(), m) : p
          }),
          m
        )
      }
    },
    2405: function (e, t, n) {
      'use strict'
      n.d(t, {
        Z: function () {
          return l
        },
      })
      var r = n(4275),
        i = n(54),
        o = n(8357),
        a = n(9437),
        s = n(8246),
        u = n(4505)
      function l() {
        var e,
          t,
          n,
          l,
          c,
          d,
          f = (0, a.Z)(-30),
          h = 1,
          p = 1 / 0,
          v = 0.81
        function m(a) {
          var s,
            l = e.length,
            d = (
              1 === t
                ? (0, r.Z)(e, u.x)
                : 2 === t
                ? (0, i.Z)(e, u.x, u.y)
                : 3 === t
                ? (0, o.Z)(e, u.x, u.y, u.z)
                : null
            ).visitAfter(y)
          for (c = a, s = 0; s < l; ++s) (n = e[s]), d.visit(b)
        }
        function g() {
          if (e) {
            var t,
              n,
              r = e.length
            for (d = new Array(r), t = 0; t < r; ++t) (n = e[t]), (d[n.index] = +f(n, t, e))
          }
        }
        function y(e) {
          var n,
            r,
            i,
            o,
            a,
            s,
            u = 0,
            l = 0,
            c = e.length
          if (c) {
            for (i = o = a = s = 0; s < c; ++s)
              (n = e[s]) &&
                (r = Math.abs(n.value)) &&
                ((u += n.value),
                (l += r),
                (i += r * (n.x || 0)),
                (o += r * (n.y || 0)),
                (a += r * (n.z || 0)))
            ;(u *= Math.sqrt(4 / c)), (e.x = i / l), t > 1 && (e.y = o / l), t > 2 && (e.z = a / l)
          } else {
            ;((n = e).x = n.data.x), t > 1 && (n.y = n.data.y), t > 2 && (n.z = n.data.z)
            do {
              u += d[n.data.index]
            } while ((n = n.next))
          }
          e.value = u
        }
        function b(e, r, i, o, a) {
          if (!e.value) return !0
          var u = [i, o, a][t - 1],
            f = e.x - n.x,
            m = t > 1 ? e.y - n.y : 0,
            g = t > 2 ? e.z - n.z : 0,
            y = u - r,
            b = f * f + m * m + g * g
          if ((y * y) / v < b)
            return (
              b < p &&
                (0 === f && (b += (f = (0, s.Z)(l)) * f),
                t > 1 && 0 === m && (b += (m = (0, s.Z)(l)) * m),
                t > 2 && 0 === g && (b += (g = (0, s.Z)(l)) * g),
                b < h && (b = Math.sqrt(h * b)),
                (n.vx += (f * e.value * c) / b),
                t > 1 && (n.vy += (m * e.value * c) / b),
                t > 2 && (n.vz += (g * e.value * c) / b)),
              !0
            )
          if (!(e.length || b >= p)) {
            ;(e.data !== n || e.next) &&
              (0 === f && (b += (f = (0, s.Z)(l)) * f),
              t > 1 && 0 === m && (b += (m = (0, s.Z)(l)) * m),
              t > 2 && 0 === g && (b += (g = (0, s.Z)(l)) * g),
              b < h && (b = Math.sqrt(h * b)))
            do {
              e.data !== n &&
                ((y = (d[e.data.index] * c) / b),
                (n.vx += f * y),
                t > 1 && (n.vy += m * y),
                t > 2 && (n.vz += g * y))
            } while ((e = e.next))
          }
        }
        return (
          (m.initialize = function (n) {
            e = n
            for (var r = arguments.length, i = new Array(r > 1 ? r - 1 : 0), o = 1; o < r; o++)
              i[o - 1] = arguments[o]
            ;(l =
              i.find(function (e) {
                return 'function' === typeof e
              }) || Math.random),
              (t =
                i.find(function (e) {
                  return [1, 2, 3].includes(e)
                }) || 2),
              g()
          }),
          (m.strength = function (e) {
            return arguments.length ? ((f = 'function' === typeof e ? e : (0, a.Z)(+e)), g(), m) : f
          }),
          (m.distanceMin = function (e) {
            return arguments.length ? ((h = e * e), m) : Math.sqrt(h)
          }),
          (m.distanceMax = function (e) {
            return arguments.length ? ((p = e * e), m) : Math.sqrt(p)
          }),
          (m.theta = function (e) {
            return arguments.length ? ((v = e * e), m) : Math.sqrt(v)
          }),
          m
        )
      }
    },
    6917: function (e, t, n) {
      'use strict'
      n.d(t, {
        Z: function () {
          return i
        },
      })
      var r = n(9437)
      function i(e, t, n, i) {
        var o,
          a,
          s,
          u,
          l = (0, r.Z)(0.1)
        function c(e) {
          for (var r = 0, l = o.length; r < l; ++r) {
            var c = o[r],
              d = c.x - t || 1e-6,
              f = (c.y || 0) - n || 1e-6,
              h = (c.z || 0) - i || 1e-6,
              p = Math.sqrt(d * d + f * f + h * h),
              v = ((u[r] - p) * s[r] * e) / p
            ;(c.vx += d * v), a > 1 && (c.vy += f * v), a > 2 && (c.vz += h * v)
          }
        }
        function d() {
          if (o) {
            var t,
              n = o.length
            for (s = new Array(n), u = new Array(n), t = 0; t < n; ++t)
              (u[t] = +e(o[t], t, o)), (s[t] = isNaN(u[t]) ? 0 : +l(o[t], t, o))
          }
        }
        return (
          'function' !== typeof e && (e = (0, r.Z)(+e)),
          null == t && (t = 0),
          null == n && (n = 0),
          null == i && (i = 0),
          (c.initialize = function (e) {
            o = e
            for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), r = 1; r < t; r++)
              n[r - 1] = arguments[r]
            ;(a =
              n.find(function (e) {
                return [1, 2, 3].includes(e)
              }) || 2),
              d()
          }),
          (c.strength = function (e) {
            return arguments.length ? ((l = 'function' === typeof e ? e : (0, r.Z)(+e)), d(), c) : l
          }),
          (c.radius = function (t) {
            return arguments.length ? ((e = 'function' === typeof t ? t : (0, r.Z)(+t)), d(), c) : e
          }),
          (c.x = function (e) {
            return arguments.length ? ((t = +e), c) : t
          }),
          (c.y = function (e) {
            return arguments.length ? ((n = +e), c) : n
          }),
          (c.z = function (e) {
            return arguments.length ? ((i = +e), c) : i
          }),
          c
        )
      }
    },
    4505: function (e, t, n) {
      'use strict'
      n.d(t, {
        Z: function () {
          return d
        },
        x: function () {
          return a
        },
        y: function () {
          return s
        },
        z: function () {
          return u
        },
      })
      var r = n(7137),
        i = n(513),
        o = 4294967296
      function a(e) {
        return e.x
      }
      function s(e) {
        return e.y
      }
      function u(e) {
        return e.z
      }
      var l = Math.PI * (3 - Math.sqrt(5)),
        c = (20 * Math.PI) / (9 + Math.sqrt(221))
      function d(e, t) {
        t = t || 2
        var n,
          a = Math.min(3, Math.max(1, Math.round(t))),
          s = 1,
          u = 0.001,
          d = 1 - Math.pow(u, 1 / 300),
          f = 0,
          h = 0.6,
          p = new Map(),
          v = (0, i.HT)(y),
          m = (0, r.Z)('tick', 'end'),
          g = (function () {
            var e = 1
            return function () {
              return (e = (1664525 * e + 1013904223) % o) / o
            }
          })()
        function y() {
          b(), m.call('tick', n), s < u && (v.stop(), m.call('end', n))
        }
        function b(t) {
          var r,
            i,
            o = e.length
          void 0 === t && (t = 1)
          for (var u = 0; u < t; ++u)
            for (
              s += (f - s) * d,
                p.forEach(function (e) {
                  e(s)
                }),
                r = 0;
              r < o;
              ++r
            )
              null == (i = e[r]).fx ? (i.x += i.vx *= h) : ((i.x = i.fx), (i.vx = 0)),
                a > 1 && (null == i.fy ? (i.y += i.vy *= h) : ((i.y = i.fy), (i.vy = 0))),
                a > 2 && (null == i.fz ? (i.z += i.vz *= h) : ((i.z = i.fz), (i.vz = 0)))
          return n
        }
        function w() {
          for (var t, n = 0, r = e.length; n < r; ++n) {
            if (
              (((t = e[n]).index = n),
              null != t.fx && (t.x = t.fx),
              null != t.fy && (t.y = t.fy),
              null != t.fz && (t.z = t.fz),
              isNaN(t.x) || (a > 1 && isNaN(t.y)) || (a > 2 && isNaN(t.z)))
            ) {
              var i = 10 * (a > 2 ? Math.cbrt(0.5 + n) : a > 1 ? Math.sqrt(0.5 + n) : n),
                o = n * l,
                s = n * c
              1 === a
                ? (t.x = i)
                : 2 === a
                ? ((t.x = i * Math.cos(o)), (t.y = i * Math.sin(o)))
                : ((t.x = i * Math.sin(o) * Math.cos(s)),
                  (t.y = i * Math.cos(o)),
                  (t.z = i * Math.sin(o) * Math.sin(s)))
            }
            ;(isNaN(t.vx) || (a > 1 && isNaN(t.vy)) || (a > 2 && isNaN(t.vz))) &&
              ((t.vx = 0), a > 1 && (t.vy = 0), a > 2 && (t.vz = 0))
          }
        }
        function x(t) {
          return t.initialize && t.initialize(e, g, a), t
        }
        return (
          null == e && (e = []),
          w(),
          (n = {
            tick: b,
            restart: function () {
              return v.restart(y), n
            },
            stop: function () {
              return v.stop(), n
            },
            numDimensions: function (e) {
              return arguments.length
                ? ((a = Math.min(3, Math.max(1, Math.round(e)))), p.forEach(x), n)
                : a
            },
            nodes: function (t) {
              return arguments.length ? ((e = t), w(), p.forEach(x), n) : e
            },
            alpha: function (e) {
              return arguments.length ? ((s = +e), n) : s
            },
            alphaMin: function (e) {
              return arguments.length ? ((u = +e), n) : u
            },
            alphaDecay: function (e) {
              return arguments.length ? ((d = +e), n) : +d
            },
            alphaTarget: function (e) {
              return arguments.length ? ((f = +e), n) : f
            },
            velocityDecay: function (e) {
              return arguments.length ? ((h = 1 - e), n) : 1 - h
            },
            randomSource: function (e) {
              return arguments.length ? ((g = e), p.forEach(x), n) : g
            },
            force: function (e, t) {
              return arguments.length > 1 ? (null == t ? p.delete(e) : p.set(e, x(t)), n) : p.get(e)
            },
            find: function () {
              var t,
                n,
                r,
                i,
                o,
                s,
                u = Array.prototype.slice.call(arguments),
                l = u.shift() || 0,
                c = (a > 1 ? u.shift() : null) || 0,
                d = (a > 2 ? u.shift() : null) || 0,
                f = u.shift() || 1 / 0,
                h = 0,
                p = e.length
              for (f *= f, h = 0; h < p; ++h)
                (i =
                  (t = l - (o = e[h]).x) * t +
                  (n = c - (o.y || 0)) * n +
                  (r = d - (o.z || 0)) * r) < f && ((s = o), (f = i))
              return s
            },
            on: function (e, t) {
              return arguments.length > 1 ? (m.on(e, t), n) : m.on(e)
            },
          })
        )
      }
    },
    8357: function (e, t, n) {
      'use strict'
      function r(e, t, n, r, i) {
        if (isNaN(t) || isNaN(n) || isNaN(r)) return e
        var o,
          a,
          s,
          u,
          l,
          c,
          d,
          f,
          h,
          p,
          v,
          m,
          g = e._root,
          y = { data: i },
          b = e._x0,
          w = e._y0,
          x = e._z0,
          E = e._x1,
          k = e._y1,
          _ = e._z1
        if (!g) return (e._root = y), e
        for (; g.length; )
          if (
            ((f = t >= (a = (b + E) / 2)) ? (b = a) : (E = a),
            (h = n >= (s = (w + k) / 2)) ? (w = s) : (k = s),
            (p = r >= (u = (x + _) / 2)) ? (x = u) : (_ = u),
            (o = g),
            !(g = g[(v = (p << 2) | (h << 1) | f)]))
          )
            return (o[v] = y), e
        if (
          ((l = +e._x.call(null, g.data)),
          (c = +e._y.call(null, g.data)),
          (d = +e._z.call(null, g.data)),
          t === l && n === c && r === d)
        )
          return (y.next = g), o ? (o[v] = y) : (e._root = y), e
        do {
          ;(o = o ? (o[v] = new Array(8)) : (e._root = new Array(8))),
            (f = t >= (a = (b + E) / 2)) ? (b = a) : (E = a),
            (h = n >= (s = (w + k) / 2)) ? (w = s) : (k = s),
            (p = r >= (u = (x + _) / 2)) ? (x = u) : (_ = u)
        } while (
          (v = (p << 2) | (h << 1) | f) === (m = ((d >= u) << 2) | ((c >= s) << 1) | (l >= a))
        )
        return (o[m] = g), (o[v] = y), e
      }
      function i(e, t, n, r, i, o, a) {
        ;(this.node = e),
          (this.x0 = t),
          (this.y0 = n),
          (this.z0 = r),
          (this.x1 = i),
          (this.y1 = o),
          (this.z1 = a)
      }
      function o(e) {
        return e[0]
      }
      function a(e) {
        return e[1]
      }
      function s(e) {
        return e[2]
      }
      function u(e, t, n, r) {
        var i = new l(
          null == t ? o : t,
          null == n ? a : n,
          null == r ? s : r,
          NaN,
          NaN,
          NaN,
          NaN,
          NaN,
          NaN,
        )
        return null == e ? i : i.addAll(e)
      }
      function l(e, t, n, r, i, o, a, s, u) {
        ;(this._x = e),
          (this._y = t),
          (this._z = n),
          (this._x0 = r),
          (this._y0 = i),
          (this._z0 = o),
          (this._x1 = a),
          (this._y1 = s),
          (this._z1 = u),
          (this._root = void 0)
      }
      function c(e) {
        for (var t = { data: e.data }, n = t; (e = e.next); ) n = n.next = { data: e.data }
        return t
      }
      n.d(t, {
        Z: function () {
          return u
        },
      })
      var d = (u.prototype = l.prototype)
      ;(d.copy = function () {
        var e,
          t,
          n = new l(
            this._x,
            this._y,
            this._z,
            this._x0,
            this._y0,
            this._z0,
            this._x1,
            this._y1,
            this._z1,
          ),
          r = this._root
        if (!r) return n
        if (!r.length) return (n._root = c(r)), n
        for (e = [{ source: r, target: (n._root = new Array(8)) }]; (r = e.pop()); )
          for (var i = 0; i < 8; ++i)
            (t = r.source[i]) &&
              (t.length
                ? e.push({ source: t, target: (r.target[i] = new Array(8)) })
                : (r.target[i] = c(t)))
        return n
      }),
        (d.add = function (e) {
          var t = +this._x.call(null, e),
            n = +this._y.call(null, e),
            i = +this._z.call(null, e)
          return r(this.cover(t, n, i), t, n, i, e)
        }),
        (d.addAll = function (e) {
          var t,
            n,
            i,
            o,
            a,
            s = e.length,
            u = new Array(s),
            l = new Array(s),
            c = new Array(s),
            d = 1 / 0,
            f = 1 / 0,
            h = 1 / 0,
            p = -1 / 0,
            v = -1 / 0,
            m = -1 / 0
          for (n = 0; n < s; ++n)
            isNaN((i = +this._x.call(null, (t = e[n])))) ||
              isNaN((o = +this._y.call(null, t))) ||
              isNaN((a = +this._z.call(null, t))) ||
              ((u[n] = i),
              (l[n] = o),
              (c[n] = a),
              i < d && (d = i),
              i > p && (p = i),
              o < f && (f = o),
              o > v && (v = o),
              a < h && (h = a),
              a > m && (m = a))
          if (d > p || f > v || h > m) return this
          for (this.cover(d, f, h).cover(p, v, m), n = 0; n < s; ++n)
            r(this, u[n], l[n], c[n], e[n])
          return this
        }),
        (d.cover = function (e, t, n) {
          if (isNaN((e = +e)) || isNaN((t = +t)) || isNaN((n = +n))) return this
          var r = this._x0,
            i = this._y0,
            o = this._z0,
            a = this._x1,
            s = this._y1,
            u = this._z1
          if (isNaN(r))
            (a = (r = Math.floor(e)) + 1),
              (s = (i = Math.floor(t)) + 1),
              (u = (o = Math.floor(n)) + 1)
          else {
            for (
              var l, c, d = a - r || 1, f = this._root;
              r > e || e >= a || i > t || t >= s || o > n || n >= u;

            )
              switch (
                ((c = ((n < o) << 2) | ((t < i) << 1) | (e < r)),
                ((l = new Array(8))[c] = f),
                (f = l),
                (d *= 2),
                c)
              ) {
                case 0:
                  ;(a = r + d), (s = i + d), (u = o + d)
                  break
                case 1:
                  ;(r = a - d), (s = i + d), (u = o + d)
                  break
                case 2:
                  ;(a = r + d), (i = s - d), (u = o + d)
                  break
                case 3:
                  ;(r = a - d), (i = s - d), (u = o + d)
                  break
                case 4:
                  ;(a = r + d), (s = i + d), (o = u - d)
                  break
                case 5:
                  ;(r = a - d), (s = i + d), (o = u - d)
                  break
                case 6:
                  ;(a = r + d), (i = s - d), (o = u - d)
                  break
                case 7:
                  ;(r = a - d), (i = s - d), (o = u - d)
              }
            this._root && this._root.length && (this._root = f)
          }
          return (
            (this._x0 = r),
            (this._y0 = i),
            (this._z0 = o),
            (this._x1 = a),
            (this._y1 = s),
            (this._z1 = u),
            this
          )
        }),
        (d.data = function () {
          var e = []
          return (
            this.visit(function (t) {
              if (!t.length)
                do {
                  e.push(t.data)
                } while ((t = t.next))
            }),
            e
          )
        }),
        (d.extent = function (e) {
          return arguments.length
            ? this.cover(+e[0][0], +e[0][1], +e[0][2]).cover(+e[1][0], +e[1][1], +e[1][2])
            : isNaN(this._x0)
            ? void 0
            : [
                [this._x0, this._y0, this._z0],
                [this._x1, this._y1, this._z1],
              ]
        }),
        (d.find = function (e, t, n, r) {
          var o,
            a,
            s,
            u,
            l,
            c,
            d,
            f,
            h,
            p = this._x0,
            v = this._y0,
            m = this._z0,
            g = this._x1,
            y = this._y1,
            b = this._z1,
            w = [],
            x = this._root
          for (
            x && w.push(new i(x, p, v, m, g, y, b)),
              null == r
                ? (r = 1 / 0)
                : ((p = e - r),
                  (v = t - r),
                  (m = n - r),
                  (g = e + r),
                  (y = t + r),
                  (b = n + r),
                  (r *= r));
            (f = w.pop());

          )
            if (
              !(
                !(x = f.node) ||
                (a = f.x0) > g ||
                (s = f.y0) > y ||
                (u = f.z0) > b ||
                (l = f.x1) < p ||
                (c = f.y1) < v ||
                (d = f.z1) < m
              )
            )
              if (x.length) {
                var E = (a + l) / 2,
                  k = (s + c) / 2,
                  _ = (u + d) / 2
                w.push(
                  new i(x[7], E, k, _, l, c, d),
                  new i(x[6], a, k, _, E, c, d),
                  new i(x[5], E, s, _, l, k, d),
                  new i(x[4], a, s, _, E, k, d),
                  new i(x[3], E, k, u, l, c, _),
                  new i(x[2], a, k, u, E, c, _),
                  new i(x[1], E, s, u, l, k, _),
                  new i(x[0], a, s, u, E, k, _),
                ),
                  (h = ((n >= _) << 2) | ((t >= k) << 1) | (e >= E)) &&
                    ((f = w[w.length - 1]),
                    (w[w.length - 1] = w[w.length - 1 - h]),
                    (w[w.length - 1 - h] = f))
              } else {
                var T = e - +this._x.call(null, x.data),
                  O = t - +this._y.call(null, x.data),
                  C = n - +this._z.call(null, x.data),
                  S = T * T + O * O + C * C
                if (S < r) {
                  var A = Math.sqrt((r = S))
                  ;(p = e - A),
                    (v = t - A),
                    (m = n - A),
                    (g = e + A),
                    (y = t + A),
                    (b = n + A),
                    (o = x.data)
                }
              }
          return o
        }),
        (d.remove = function (e) {
          if (
            isNaN((o = +this._x.call(null, e))) ||
            isNaN((a = +this._y.call(null, e))) ||
            isNaN((s = +this._z.call(null, e)))
          )
            return this
          var t,
            n,
            r,
            i,
            o,
            a,
            s,
            u,
            l,
            c,
            d,
            f,
            h,
            p,
            v,
            m = this._root,
            g = this._x0,
            y = this._y0,
            b = this._z0,
            w = this._x1,
            x = this._y1,
            E = this._z1
          if (!m) return this
          if (m.length)
            for (;;) {
              if (
                ((d = o >= (u = (g + w) / 2)) ? (g = u) : (w = u),
                (f = a >= (l = (y + x) / 2)) ? (y = l) : (x = l),
                (h = s >= (c = (b + E) / 2)) ? (b = c) : (E = c),
                (t = m),
                !(m = m[(p = (h << 2) | (f << 1) | d)]))
              )
                return this
              if (!m.length) break
              ;(t[(p + 1) & 7] ||
                t[(p + 2) & 7] ||
                t[(p + 3) & 7] ||
                t[(p + 4) & 7] ||
                t[(p + 5) & 7] ||
                t[(p + 6) & 7] ||
                t[(p + 7) & 7]) &&
                ((n = t), (v = p))
            }
          for (; m.data !== e; ) if (((r = m), !(m = m.next))) return this
          return (
            (i = m.next) && delete m.next,
            r
              ? (i ? (r.next = i) : delete r.next, this)
              : t
              ? (i ? (t[p] = i) : delete t[p],
                (m = t[0] || t[1] || t[2] || t[3] || t[4] || t[5] || t[6] || t[7]) &&
                  m === (t[7] || t[6] || t[5] || t[4] || t[3] || t[2] || t[1] || t[0]) &&
                  !m.length &&
                  (n ? (n[v] = m) : (this._root = m)),
                this)
              : ((this._root = i), this)
          )
        }),
        (d.removeAll = function (e) {
          for (var t = 0, n = e.length; t < n; ++t) this.remove(e[t])
          return this
        }),
        (d.root = function () {
          return this._root
        }),
        (d.size = function () {
          var e = 0
          return (
            this.visit(function (t) {
              if (!t.length)
                do {
                  ++e
                } while ((t = t.next))
            }),
            e
          )
        }),
        (d.visit = function (e) {
          var t,
            n,
            r,
            o,
            a,
            s,
            u,
            l,
            c = [],
            d = this._root
          for (
            d && c.push(new i(d, this._x0, this._y0, this._z0, this._x1, this._y1, this._z1));
            (t = c.pop());

          )
            if (
              !e(
                (d = t.node),
                (r = t.x0),
                (o = t.y0),
                (a = t.z0),
                (s = t.x1),
                (u = t.y1),
                (l = t.z1),
              ) &&
              d.length
            ) {
              var f = (r + s) / 2,
                h = (o + u) / 2,
                p = (a + l) / 2
              ;(n = d[7]) && c.push(new i(n, f, h, p, s, u, l)),
                (n = d[6]) && c.push(new i(n, r, h, p, f, u, l)),
                (n = d[5]) && c.push(new i(n, f, o, p, s, h, l)),
                (n = d[4]) && c.push(new i(n, r, o, p, f, h, l)),
                (n = d[3]) && c.push(new i(n, f, h, a, s, u, p)),
                (n = d[2]) && c.push(new i(n, r, h, a, f, u, p)),
                (n = d[1]) && c.push(new i(n, f, o, a, s, h, p)),
                (n = d[0]) && c.push(new i(n, r, o, a, f, h, p))
            }
          return this
        }),
        (d.visitAfter = function (e) {
          var t,
            n = [],
            r = []
          for (
            this._root &&
            n.push(new i(this._root, this._x0, this._y0, this._z0, this._x1, this._y1, this._z1));
            (t = n.pop());

          ) {
            var o = t.node
            if (o.length) {
              var a,
                s = t.x0,
                u = t.y0,
                l = t.z0,
                c = t.x1,
                d = t.y1,
                f = t.z1,
                h = (s + c) / 2,
                p = (u + d) / 2,
                v = (l + f) / 2
              ;(a = o[0]) && n.push(new i(a, s, u, l, h, p, v)),
                (a = o[1]) && n.push(new i(a, h, u, l, c, p, v)),
                (a = o[2]) && n.push(new i(a, s, p, l, h, d, v)),
                (a = o[3]) && n.push(new i(a, h, p, l, c, d, v)),
                (a = o[4]) && n.push(new i(a, s, u, v, h, p, f)),
                (a = o[5]) && n.push(new i(a, h, u, v, c, p, f)),
                (a = o[6]) && n.push(new i(a, s, p, v, h, d, f)),
                (a = o[7]) && n.push(new i(a, h, p, v, c, d, f))
            }
            r.push(t)
          }
          for (; (t = r.pop()); ) e(t.node, t.x0, t.y0, t.z0, t.x1, t.y1, t.z1)
          return this
        }),
        (d.x = function (e) {
          return arguments.length ? ((this._x = e), this) : this._x
        }),
        (d.y = function (e) {
          return arguments.length ? ((this._y = e), this) : this._y
        }),
        (d.z = function (e) {
          return arguments.length ? ((this._z = e), this) : this._z
        })
    },
    54: function (e, t, n) {
      'use strict'
      function r(e, t, n, r) {
        if (isNaN(t) || isNaN(n)) return e
        var i,
          o,
          a,
          s,
          u,
          l,
          c,
          d,
          f,
          h = e._root,
          p = { data: r },
          v = e._x0,
          m = e._y0,
          g = e._x1,
          y = e._y1
        if (!h) return (e._root = p), e
        for (; h.length; )
          if (
            ((l = t >= (o = (v + g) / 2)) ? (v = o) : (g = o),
            (c = n >= (a = (m + y) / 2)) ? (m = a) : (y = a),
            (i = h),
            !(h = h[(d = (c << 1) | l)]))
          )
            return (i[d] = p), e
        if (((s = +e._x.call(null, h.data)), (u = +e._y.call(null, h.data)), t === s && n === u))
          return (p.next = h), i ? (i[d] = p) : (e._root = p), e
        do {
          ;(i = i ? (i[d] = new Array(4)) : (e._root = new Array(4))),
            (l = t >= (o = (v + g) / 2)) ? (v = o) : (g = o),
            (c = n >= (a = (m + y) / 2)) ? (m = a) : (y = a)
        } while ((d = (c << 1) | l) === (f = ((u >= a) << 1) | (s >= o)))
        return (i[f] = h), (i[d] = p), e
      }
      function i(e, t, n, r, i) {
        ;(this.node = e), (this.x0 = t), (this.y0 = n), (this.x1 = r), (this.y1 = i)
      }
      function o(e) {
        return e[0]
      }
      function a(e) {
        return e[1]
      }
      function s(e, t, n) {
        var r = new u(null == t ? o : t, null == n ? a : n, NaN, NaN, NaN, NaN)
        return null == e ? r : r.addAll(e)
      }
      function u(e, t, n, r, i, o) {
        ;(this._x = e),
          (this._y = t),
          (this._x0 = n),
          (this._y0 = r),
          (this._x1 = i),
          (this._y1 = o),
          (this._root = void 0)
      }
      function l(e) {
        for (var t = { data: e.data }, n = t; (e = e.next); ) n = n.next = { data: e.data }
        return t
      }
      n.d(t, {
        Z: function () {
          return s
        },
      })
      var c = (s.prototype = u.prototype)
      ;(c.copy = function () {
        var e,
          t,
          n = new u(this._x, this._y, this._x0, this._y0, this._x1, this._y1),
          r = this._root
        if (!r) return n
        if (!r.length) return (n._root = l(r)), n
        for (e = [{ source: r, target: (n._root = new Array(4)) }]; (r = e.pop()); )
          for (var i = 0; i < 4; ++i)
            (t = r.source[i]) &&
              (t.length
                ? e.push({ source: t, target: (r.target[i] = new Array(4)) })
                : (r.target[i] = l(t)))
        return n
      }),
        (c.add = function (e) {
          var t = +this._x.call(null, e),
            n = +this._y.call(null, e)
          return r(this.cover(t, n), t, n, e)
        }),
        (c.addAll = function (e) {
          var t,
            n,
            i,
            o,
            a = e.length,
            s = new Array(a),
            u = new Array(a),
            l = 1 / 0,
            c = 1 / 0,
            d = -1 / 0,
            f = -1 / 0
          for (n = 0; n < a; ++n)
            isNaN((i = +this._x.call(null, (t = e[n])))) ||
              isNaN((o = +this._y.call(null, t))) ||
              ((s[n] = i),
              (u[n] = o),
              i < l && (l = i),
              i > d && (d = i),
              o < c && (c = o),
              o > f && (f = o))
          if (l > d || c > f) return this
          for (this.cover(l, c).cover(d, f), n = 0; n < a; ++n) r(this, s[n], u[n], e[n])
          return this
        }),
        (c.cover = function (e, t) {
          if (isNaN((e = +e)) || isNaN((t = +t))) return this
          var n = this._x0,
            r = this._y0,
            i = this._x1,
            o = this._y1
          if (isNaN(n)) (i = (n = Math.floor(e)) + 1), (o = (r = Math.floor(t)) + 1)
          else {
            for (var a, s, u = i - n || 1, l = this._root; n > e || e >= i || r > t || t >= o; )
              switch (
                ((s = ((t < r) << 1) | (e < n)), ((a = new Array(4))[s] = l), (l = a), (u *= 2), s)
              ) {
                case 0:
                  ;(i = n + u), (o = r + u)
                  break
                case 1:
                  ;(n = i - u), (o = r + u)
                  break
                case 2:
                  ;(i = n + u), (r = o - u)
                  break
                case 3:
                  ;(n = i - u), (r = o - u)
              }
            this._root && this._root.length && (this._root = l)
          }
          return (this._x0 = n), (this._y0 = r), (this._x1 = i), (this._y1 = o), this
        }),
        (c.data = function () {
          var e = []
          return (
            this.visit(function (t) {
              if (!t.length)
                do {
                  e.push(t.data)
                } while ((t = t.next))
            }),
            e
          )
        }),
        (c.extent = function (e) {
          return arguments.length
            ? this.cover(+e[0][0], +e[0][1]).cover(+e[1][0], +e[1][1])
            : isNaN(this._x0)
            ? void 0
            : [
                [this._x0, this._y0],
                [this._x1, this._y1],
              ]
        }),
        (c.find = function (e, t, n) {
          var r,
            o,
            a,
            s,
            u,
            l,
            c,
            d = this._x0,
            f = this._y0,
            h = this._x1,
            p = this._y1,
            v = [],
            m = this._root
          for (
            m && v.push(new i(m, d, f, h, p)),
              null == n
                ? (n = 1 / 0)
                : ((d = e - n), (f = t - n), (h = e + n), (p = t + n), (n *= n));
            (l = v.pop());

          )
            if (
              !(
                !(m = l.node) ||
                (o = l.x0) > h ||
                (a = l.y0) > p ||
                (s = l.x1) < d ||
                (u = l.y1) < f
              )
            )
              if (m.length) {
                var g = (o + s) / 2,
                  y = (a + u) / 2
                v.push(
                  new i(m[3], g, y, s, u),
                  new i(m[2], o, y, g, u),
                  new i(m[1], g, a, s, y),
                  new i(m[0], o, a, g, y),
                ),
                  (c = ((t >= y) << 1) | (e >= g)) &&
                    ((l = v[v.length - 1]),
                    (v[v.length - 1] = v[v.length - 1 - c]),
                    (v[v.length - 1 - c] = l))
              } else {
                var b = e - +this._x.call(null, m.data),
                  w = t - +this._y.call(null, m.data),
                  x = b * b + w * w
                if (x < n) {
                  var E = Math.sqrt((n = x))
                  ;(d = e - E), (f = t - E), (h = e + E), (p = t + E), (r = m.data)
                }
              }
          return r
        }),
        (c.remove = function (e) {
          if (isNaN((o = +this._x.call(null, e))) || isNaN((a = +this._y.call(null, e))))
            return this
          var t,
            n,
            r,
            i,
            o,
            a,
            s,
            u,
            l,
            c,
            d,
            f,
            h = this._root,
            p = this._x0,
            v = this._y0,
            m = this._x1,
            g = this._y1
          if (!h) return this
          if (h.length)
            for (;;) {
              if (
                ((l = o >= (s = (p + m) / 2)) ? (p = s) : (m = s),
                (c = a >= (u = (v + g) / 2)) ? (v = u) : (g = u),
                (t = h),
                !(h = h[(d = (c << 1) | l)]))
              )
                return this
              if (!h.length) break
              ;(t[(d + 1) & 3] || t[(d + 2) & 3] || t[(d + 3) & 3]) && ((n = t), (f = d))
            }
          for (; h.data !== e; ) if (((r = h), !(h = h.next))) return this
          return (
            (i = h.next) && delete h.next,
            r
              ? (i ? (r.next = i) : delete r.next, this)
              : t
              ? (i ? (t[d] = i) : delete t[d],
                (h = t[0] || t[1] || t[2] || t[3]) &&
                  h === (t[3] || t[2] || t[1] || t[0]) &&
                  !h.length &&
                  (n ? (n[f] = h) : (this._root = h)),
                this)
              : ((this._root = i), this)
          )
        }),
        (c.removeAll = function (e) {
          for (var t = 0, n = e.length; t < n; ++t) this.remove(e[t])
          return this
        }),
        (c.root = function () {
          return this._root
        }),
        (c.size = function () {
          var e = 0
          return (
            this.visit(function (t) {
              if (!t.length)
                do {
                  ++e
                } while ((t = t.next))
            }),
            e
          )
        }),
        (c.visit = function (e) {
          var t,
            n,
            r,
            o,
            a,
            s,
            u = [],
            l = this._root
          for (l && u.push(new i(l, this._x0, this._y0, this._x1, this._y1)); (t = u.pop()); )
            if (!e((l = t.node), (r = t.x0), (o = t.y0), (a = t.x1), (s = t.y1)) && l.length) {
              var c = (r + a) / 2,
                d = (o + s) / 2
              ;(n = l[3]) && u.push(new i(n, c, d, a, s)),
                (n = l[2]) && u.push(new i(n, r, d, c, s)),
                (n = l[1]) && u.push(new i(n, c, o, a, d)),
                (n = l[0]) && u.push(new i(n, r, o, c, d))
            }
          return this
        }),
        (c.visitAfter = function (e) {
          var t,
            n = [],
            r = []
          for (
            this._root && n.push(new i(this._root, this._x0, this._y0, this._x1, this._y1));
            (t = n.pop());

          ) {
            var o = t.node
            if (o.length) {
              var a,
                s = t.x0,
                u = t.y0,
                l = t.x1,
                c = t.y1,
                d = (s + l) / 2,
                f = (u + c) / 2
              ;(a = o[0]) && n.push(new i(a, s, u, d, f)),
                (a = o[1]) && n.push(new i(a, d, u, l, f)),
                (a = o[2]) && n.push(new i(a, s, f, d, c)),
                (a = o[3]) && n.push(new i(a, d, f, l, c))
            }
            r.push(t)
          }
          for (; (t = r.pop()); ) e(t.node, t.x0, t.y0, t.x1, t.y1)
          return this
        }),
        (c.x = function (e) {
          return arguments.length ? ((this._x = e), this) : this._x
        }),
        (c.y = function (e) {
          return arguments.length ? ((this._y = e), this) : this._y
        })
    },
    2816: function (e, t, n) {
      'use strict'
      n.d(t, {
        Z: function () {
          return r
        },
      })
      var r = (function (e) {
        for (var t = (e.length / 6) | 0, n = new Array(t), r = 0; r < t; )
          n[r] = '#' + e.slice(6 * r, 6 * ++r)
        return n
      })('a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928')
    },
    2462: function (e, t, n) {
      'use strict'
      n.d(t, {
        Z: function () {
          return f
        },
      })
      class r extends Map {
        constructor(e, t = s) {
          if (
            (super(),
            Object.defineProperties(this, { _intern: { value: new Map() }, _key: { value: t } }),
            null != e)
          )
            for (const [n, r] of e) this.set(n, r)
        }
        get(e) {
          return super.get(i(this, e))
        }
        has(e) {
          return super.has(i(this, e))
        }
        set(e, t) {
          return super.set(o(this, e), t)
        }
        delete(e) {
          return super.delete(a(this, e))
        }
      }
      Set
      function i({ _intern: e, _key: t }, n) {
        const r = t(n)
        return e.has(r) ? e.get(r) : n
      }
      function o({ _intern: e, _key: t }, n) {
        const r = t(n)
        return e.has(r) ? e.get(r) : (e.set(r, n), n)
      }
      function a({ _intern: e, _key: t }, n) {
        const r = t(n)
        return e.has(r) && ((n = e.get(n)), e.delete(r)), n
      }
      function s(e) {
        return null !== e && 'object' === typeof e ? e.valueOf() : e
      }
      function u(e, t) {
        switch (arguments.length) {
          case 0:
            break
          case 1:
            this.range(e)
            break
          default:
            this.range(t).domain(e)
        }
        return this
      }
      function l(e, t) {
        var n
        if ('undefined' === typeof Symbol || null == e[Symbol.iterator]) {
          if (
            Array.isArray(e) ||
            (n = (function (e, t) {
              if (!e) return
              if ('string' === typeof e) return c(e, t)
              var n = Object.prototype.toString.call(e).slice(8, -1)
              'Object' === n && e.constructor && (n = e.constructor.name)
              if ('Map' === n || 'Set' === n) return Array.from(e)
              if ('Arguments' === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
                return c(e, t)
            })(e)) ||
            (t && e && 'number' === typeof e.length)
          ) {
            n && (e = n)
            var r = 0,
              i = function () {}
            return {
              s: i,
              n: function () {
                return r >= e.length ? { done: !0 } : { done: !1, value: e[r++] }
              },
              e: function (e) {
                throw e
              },
              f: i,
            }
          }
          throw new TypeError(
            'Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.',
          )
        }
        var o,
          a = !0,
          s = !1
        return {
          s: function () {
            n = e[Symbol.iterator]()
          },
          n: function () {
            var e = n.next()
            return (a = e.done), e
          },
          e: function (e) {
            ;(s = !0), (o = e)
          },
          f: function () {
            try {
              a || null == n.return || n.return()
            } finally {
              if (s) throw o
            }
          },
        }
      }
      function c(e, t) {
        ;(null == t || t > e.length) && (t = e.length)
        for (var n = 0, r = new Array(t); n < t; n++) r[n] = e[n]
        return r
      }
      var d = Symbol('implicit')
      function f() {
        var e = new r(),
          t = [],
          n = [],
          i = d
        function o(r) {
          var o = e.get(r)
          if (void 0 === o) {
            if (i !== d) return i
            e.set(r, (o = t.push(r) - 1))
          }
          return n[o % n.length]
        }
        return (
          (o.domain = function (n) {
            if (!arguments.length) return t.slice()
            ;(t = []), (e = new r())
            var i,
              a = l(n)
            try {
              for (a.s(); !(i = a.n()).done; ) {
                var s = i.value
                e.has(s) || e.set(s, t.push(s) - 1)
              }
            } catch (u) {
              a.e(u)
            } finally {
              a.f()
            }
            return o
          }),
          (o.range = function (e) {
            return arguments.length ? ((n = Array.from(e)), o) : n.slice()
          }),
          (o.unknown = function (e) {
            return arguments.length ? ((i = e), o) : i
          }),
          (o.copy = function () {
            return f(t, n).unknown(i)
          }),
          u.apply(o, arguments),
          o
        )
      }
    },
    513: function (e, t, n) {
      'use strict'
      n.d(t, {
        zO: function () {
          return h
        },
        B7: function () {
          return v
        },
        HT: function () {
          return m
        },
      })
      var r,
        i,
        o = 0,
        a = 0,
        s = 0,
        u = 0,
        l = 0,
        c = 0,
        d = 'object' === typeof performance && performance.now ? performance : Date,
        f = window.requestAnimationFrame
          ? window.requestAnimationFrame.bind(window)
          : function (e) {
              setTimeout(e, 17)
            }
      function h() {
        return l || (f(p), (l = d.now() + c))
      }
      function p() {
        l = 0
      }
      function v() {
        this._call = this._time = this._next = null
      }
      function m(e, t, n) {
        var r = new v()
        return r.restart(e, t, n), r
      }
      function g() {
        ;(l = (u = d.now()) + c), (o = a = 0)
        try {
          !(function () {
            h(), ++o
            for (var e, t = r; t; ) (e = l - t._time) >= 0 && t._call.call(void 0, e), (t = t._next)
            --o
          })()
        } finally {
          ;(o = 0),
            (function () {
              var e,
                t,
                n = r,
                o = 1 / 0
              for (; n; )
                n._call
                  ? (o > n._time && (o = n._time), (e = n), (n = n._next))
                  : ((t = n._next), (n._next = null), (n = e ? (e._next = t) : (r = t)))
              ;(i = e), b(o)
            })(),
            (l = 0)
        }
      }
      function y() {
        var e = d.now(),
          t = e - u
        t > 1e3 && ((c -= t), (u = e))
      }
      function b(e) {
        o ||
          (a && (a = clearTimeout(a)),
          e - l > 24
            ? (e < 1 / 0 && (a = setTimeout(g, e - d.now() - c)), s && (s = clearInterval(s)))
            : (s || ((u = d.now()), (s = setInterval(y, 1e3))), (o = 1), f(g)))
      }
      v.prototype = m.prototype = {
        constructor: v,
        restart: function (e, t, n) {
          if ('function' !== typeof e) throw new TypeError('callback is not a function')
          ;(n = (null == n ? h() : +n) + (null == t ? 0 : +t)),
            this._next || i === this || (i ? (i._next = this) : (r = this), (i = this)),
            (this._call = e),
            (this._time = n),
            b()
        },
        stop: function () {
          this._call && ((this._call = null), (this._time = 1 / 0), b())
        },
      }
    },
    4245: function (e) {
      e.exports = function (e) {
        !(function (e) {
          if (!e) throw new Error('Eventify cannot use falsy object as events subject')
          for (var t = ['on', 'fire', 'off'], n = 0; n < t.length; ++n)
            if (e.hasOwnProperty(t[n]))
              throw new Error(
                "Subject cannot be eventified, since it already has property '" + t[n] + "'",
              )
        })(e)
        var t = (function (e) {
          var t = Object.create(null)
          return {
            on: function (n, r, i) {
              if ('function' !== typeof r) throw new Error('callback is expected to be a function')
              var o = t[n]
              return o || (o = t[n] = []), o.push({ callback: r, ctx: i }), e
            },
            off: function (n, r) {
              if ('undefined' === typeof n) return (t = Object.create(null)), e
              if (t[n])
                if ('function' !== typeof r) delete t[n]
                else
                  for (var i = t[n], o = 0; o < i.length; ++o) i[o].callback === r && i.splice(o, 1)
              return e
            },
            fire: function (n) {
              var r,
                i = t[n]
              if (!i) return e
              arguments.length > 1 && (r = Array.prototype.splice.call(arguments, 1))
              for (var o = 0; o < i.length; ++o) {
                var a = i[o]
                a.callback.apply(a.ctx, r)
              }
              return e
            },
          }
        })(e)
        return (e.on = t.on), (e.off = t.off), (e.fire = t.fire), e
      }
    },
    6505: function (e, t, n) {
      ;(e.exports = function (e, t) {
        if (!e) throw new Error('Graph structure cannot be undefined')
        var o = ((t && t.createSimulator) || n(5818))(t)
        if (Array.isArray(t)) throw new Error('Physics settings is expected to be an object')
        var a = function (t) {
          var n = e.getLinks(t)
          return n ? 1 + n.length / 3 : 1
        }
        t && 'function' === typeof t.nodeMass && (a = t.nodeMass)
        var s = new Map(),
          u = {},
          l = 0,
          c = o.settings.springTransform || i
        ;(l = 0),
          e.forEachNode(function (e) {
            m(e.id), (l += 1)
          }),
          e.forEachLink(y),
          e.on('changed', v)
        var d = !1,
          f = {
            step: function () {
              if (0 === l) return h(!0), !0
              var e = o.step()
              ;(f.lastMove = e), f.fire('step')
              var t = e / l <= 0.01
              return h(t), t
            },
            getNodePosition: function (e) {
              return x(e).pos
            },
            setNodePosition: function (e) {
              var t = x(e)
              t.setPosition.apply(t, Array.prototype.slice.call(arguments, 1))
            },
            getLinkPosition: function (e) {
              var t = u[e]
              if (t) return { from: t.from.pos, to: t.to.pos }
            },
            getGraphRect: function () {
              return o.getBBox()
            },
            forEachBody: p,
            pinNode: function (e, t) {
              x(e.id).isPinned = !!t
            },
            isNodePinned: function (e) {
              return x(e.id).isPinned
            },
            dispose: function () {
              e.off('changed', v), f.fire('disposed')
            },
            getBody: function (e) {
              return s.get(e)
            },
            getSpring: function (t, n) {
              var r
              if (void 0 === n) r = 'object' !== typeof t ? t : t.id
              else {
                var i = e.hasLink(t, n)
                if (!i) return
                r = i.id
              }
              return u[r]
            },
            getForceVectorLength: function () {
              var e = 0,
                t = 0
              return (
                p(function (n) {
                  ;(e += Math.abs(n.force.x)), (t += Math.abs(n.force.y))
                }),
                Math.sqrt(e * e + t * t)
              )
            },
            simulator: o,
            graph: e,
            lastMove: 0,
          }
        return r(f), f
        function h(e) {
          var t
          d !== e && ((d = e), (t = e), f.fire('stable', t))
        }
        function p(e) {
          s.forEach(e)
        }
        function v(t) {
          for (var n = 0; n < t.length; ++n) {
            var r = t[n]
            'add' === r.changeType
              ? (r.node && m(r.node.id), r.link && y(r.link))
              : 'remove' === r.changeType && (r.node && g(r.node), r.link && b(r.link))
          }
          l = e.getNodesCount()
        }
        function m(t) {
          var n = s.get(t)
          if (!n) {
            var r = e.getNode(t)
            if (!r) throw new Error('initBody() was called with unknown node id')
            var i = r.position
            if (!i) {
              var a = (function (e) {
                var t = []
                if (!e.links) return t
                for (var n = Math.min(e.links.length, 2), r = 0; r < n; ++r) {
                  var i = e.links[r],
                    o = i.fromId !== e.id ? s.get(i.fromId) : s.get(i.toId)
                  o && o.pos && t.push(o)
                }
                return t
              })(r)
              i = o.getBestNewBodyPosition(a)
            }
            ;((n = o.addBodyAt(i)).id = t),
              s.set(t, n),
              w(t),
              (function (e) {
                return e && (e.isPinned || (e.data && e.data.isPinned))
              })(r) && (n.isPinned = !0)
          }
        }
        function g(e) {
          var t = e.id,
            n = s.get(t)
          n && (s.delete(t), o.removeBody(n))
        }
        function y(e) {
          w(e.fromId), w(e.toId)
          var t = s.get(e.fromId),
            n = s.get(e.toId),
            r = o.addSpring(t, n, e.length)
          c(e, r), (u[e.id] = r)
        }
        function b(t) {
          var n = u[t.id]
          if (n) {
            var r = e.getNode(t.fromId),
              i = e.getNode(t.toId)
            r && w(r.id), i && w(i.id), delete u[t.id], o.removeSpring(n)
          }
        }
        function w(e) {
          var t = s.get(e)
          if (((t.mass = a(e)), Number.isNaN(t.mass)))
            throw new Error('Node mass should be a number')
        }
        function x(e) {
          var t = s.get(e)
          return t || (m(e), (t = s.get(e))), t
        }
      }),
        (e.exports.simulator = n(5818))
      var r = n(4245)
      function i() {}
    },
    5189: function (e, t, n) {
      const r = n(6422)
      e.exports = function (e) {
        return function (t, n) {
          let i = (n && n.indent) || 0,
            o = n && void 0 !== n.join ? n.join : '\n',
            a = Array(i + 1).join(' '),
            s = []
          for (let u = 0; u < e; ++u) {
            let e = r(u),
              n = 0 === u ? '' : a
            s.push(n + t.replace(/{var}/g, e))
          }
          return s.join(o)
        }
      }
    },
    891: function (e, t, n) {
      ;(e.exports = function (e) {
        let t = i(e)
        return new Function('bodies', 'settings', 'random', t)
      }),
        (e.exports.generateFunctionBody = i)
      const r = n(5189)
      function i(e) {
        let t = r(e)
        return `\n  var boundingBox = {\n    ${t('min_{var}: 0, max_{var}: 0,', {
          indent: 4,
        })}\n  };\n\n  return {\n    box: boundingBox,\n\n    update: updateBoundingBox,\n\n    reset: resetBoundingBox,\n\n    getBestNewPosition: function (neighbors) {\n      var ${t(
          'base_{var} = 0',
          { join: ', ' },
        )};\n\n      if (neighbors.length) {\n        for (var i = 0; i < neighbors.length; ++i) {\n          let neighborPos = neighbors[i].pos;\n          ${t(
          'base_{var} += neighborPos.{var};',
          { indent: 10 },
        )}\n        }\n\n        ${t('base_{var} /= neighbors.length;', {
          indent: 8,
        })}\n      } else {\n        ${t(
          'base_{var} = (boundingBox.min_{var} + boundingBox.max_{var}) / 2;',
          { indent: 8 },
        )}\n      }\n\n      var springLength = settings.springLength;\n      return {\n        ${t(
          '{var}: base_{var} + (random.nextDouble() - 0.5) * springLength,',
          { indent: 8 },
        )}\n      };\n    }\n  };\n\n  function updateBoundingBox() {\n    var i = bodies.length;\n    if (i === 0) return; // No bodies - no borders.\n\n    ${t(
          'var max_{var} = -Infinity;',
          { indent: 4 },
        )}\n    ${t('var min_{var} = Infinity;', {
          indent: 4,
        })}\n\n    while(i--) {\n      // this is O(n), it could be done faster with quadtree, if we check the root node bounds\n      var bodyPos = bodies[i].pos;\n      ${t(
          'if (bodyPos.{var} < min_{var}) min_{var} = bodyPos.{var};',
          { indent: 6 },
        )}\n      ${t('if (bodyPos.{var} > max_{var}) max_{var} = bodyPos.{var};', {
          indent: 6,
        })}\n    }\n\n    ${t('boundingBox.min_{var} = min_{var};', { indent: 4 })}\n    ${t(
          'boundingBox.max_{var} = max_{var};',
          { indent: 4 },
        )}\n  }\n\n  function resetBoundingBox() {\n    ${t(
          'boundingBox.min_{var} = boundingBox.max_{var} = 0;',
          { indent: 4 },
        )}\n  }\n`
      }
    },
    6410: function (e, t, n) {
      const r = n(5189)
      function i(e, t) {
        return `\n${a(e, t)}\n${o(e)}\nreturn {Body: Body, Vector: Vector};\n`
      }
      function o(e) {
        let t = r(e),
          n = t('{var}', { join: ', ' })
        return `\nfunction Body(${n}) {\n  this.isPinned = false;\n  this.pos = new Vector(${n});\n  this.force = new Vector();\n  this.velocity = new Vector();\n  this.mass = 1;\n\n  this.springCount = 0;\n  this.springLength = 0;\n}\n\nBody.prototype.reset = function() {\n  this.force.reset();\n  this.springCount = 0;\n  this.springLength = 0;\n}\n\nBody.prototype.setPosition = function (${n}) {\n  ${t(
          'this.pos.{var} = {var} || 0;',
          { indent: 2 },
        )}\n};`
      }
      function a(e, t) {
        let n = r(e),
          i = ''
        return (
          t &&
            (i = `${n(
              "\n   var v{var};\nObject.defineProperty(this, '{var}', {\n  set: function(v) { \n    if (!Number.isFinite(v)) throw new Error('Cannot set non-numbers to {var}');\n    v{var} = v; \n  },\n  get: function() { return v{var}; }\n});",
            )}`),
          `function Vector(${n('{var}', {
            join: ', ',
          })}) {\n  ${i}\n    if (typeof arguments[0] === 'object') {\n      // could be another vector\n      let v = arguments[0];\n      ${n(
            'if (!Number.isFinite(v.{var})) throw new Error("Expected value is not a finite number at Vector constructor ({var})");',
            { indent: 4 },
          )}\n      ${n('this.{var} = v.{var};', { indent: 4 })}\n    } else {\n      ${n(
            'this.{var} = typeof {var} === "number" ? {var} : 0;',
            { indent: 4 },
          )}\n    }\n  }\n  \n  Vector.prototype.reset = function () {\n    ${n('this.{var} = ', {
            join: '',
          })}0;\n  };`
        )
      }
      ;(e.exports = function (e, t) {
        let n = i(e, t),
          { Body: r } = new Function(n)()
        return r
      }),
        (e.exports.generateCreateBodyFunctionBody = i),
        (e.exports.getVectorCode = a),
        (e.exports.getBodyCode = o)
    },
    6647: function (e, t, n) {
      const r = n(5189)
      function i(e) {
        return `\n  if (!Number.isFinite(options.dragCoefficient)) throw new Error('dragCoefficient is not a finite number');\n\n  return {\n    update: function(body) {\n      ${r(
          e,
        )('body.force.{var} -= options.dragCoefficient * body.velocity.{var};', {
          indent: 6,
        })}\n    }\n  };\n`
      }
      ;(e.exports = function (e) {
        let t = i(e)
        return new Function('options', t)
      }),
        (e.exports.generateCreateDragForceFunctionBody = i)
    },
    4079: function (e, t, n) {
      const r = n(5189)
      function i(e) {
        let t = r(e)
        return `\n  if (!Number.isFinite(options.springCoefficient)) throw new Error('Spring coefficient is not a number');\n  if (!Number.isFinite(options.springLength)) throw new Error('Spring length is not a number');\n\n  return {\n    /**\n     * Updates forces acting on a spring\n     */\n    update: function (spring) {\n      var body1 = spring.from;\n      var body2 = spring.to;\n      var length = spring.length < 0 ? options.springLength : spring.length;\n      ${t(
          'var d{var} = body2.pos.{var} - body1.pos.{var};',
          { indent: 6 },
        )}\n      var r = Math.sqrt(${t('d{var} * d{var}', {
          join: ' + ',
        })});\n\n      if (r === 0) {\n        ${t('d{var} = (random.nextDouble() - 0.5) / 50;', {
          indent: 8,
        })}\n        r = Math.sqrt(${t('d{var} * d{var}', {
          join: ' + ',
        })});\n      }\n\n      var d = r - length;\n      var coefficient = ((spring.coefficient > 0) ? spring.coefficient : options.springCoefficient) * d / r;\n\n      ${t(
          'body1.force.{var} += coefficient * d{var}',
          { indent: 6 },
        )};\n      body1.springCount += 1;\n      body1.springLength += r;\n\n      ${t(
          'body2.force.{var} -= coefficient * d{var}',
          { indent: 6 },
        )};\n      body2.springCount += 1;\n      body2.springLength += r;\n    }\n  };\n`
      }
      ;(e.exports = function (e) {
        let t = i(e)
        return new Function('options', 'random', t)
      }),
        (e.exports.generateCreateSpringForceFunctionBody = i)
    },
    1763: function (e, t, n) {
      const r = n(5189)
      function i(e) {
        let t = r(e)
        return `\n  var length = bodies.length;\n  if (length === 0) return 0;\n\n  ${t(
          'var d{var} = 0, t{var} = 0;',
          { indent: 2 },
        )}\n\n  for (var i = 0; i < length; ++i) {\n    var body = bodies[i];\n    if (body.isPinned) continue;\n\n    if (adaptiveTimeStepWeight && body.springCount) {\n      timeStep = (adaptiveTimeStepWeight * body.springLength/body.springCount);\n    }\n\n    var coeff = timeStep / body.mass;\n\n    ${t(
          'body.velocity.{var} += coeff * body.force.{var};',
          { indent: 4 },
        )}\n    ${t('var v{var} = body.velocity.{var};', { indent: 4 })}\n    var v = Math.sqrt(${t(
          'v{var} * v{var}',
          { join: ' + ' },
        )});\n\n    if (v > 1) {\n      // We normalize it so that we move within timeStep range. \n      // for the case when v <= 1 - we let velocity to fade out.\n      ${t(
          'body.velocity.{var} = v{var} / v;',
          { indent: 6 },
        )}\n    }\n\n    ${t('d{var} = timeStep * body.velocity.{var};', { indent: 4 })}\n\n    ${t(
          'body.pos.{var} += d{var};',
          { indent: 4 },
        )}\n\n    ${t('t{var} += Math.abs(d{var});', { indent: 4 })}\n  }\n\n  return (${t(
          't{var} * t{var}',
          { join: ' + ' },
        )})/length;\n`
      }
      ;(e.exports = function (e) {
        let t = i(e)
        return new Function('bodies', 'timeStep', 'adaptiveTimeStepWeight', t)
      }),
        (e.exports.generateIntegratorFunctionBody = i)
    },
    1584: function (e, t, n) {
      const r = n(5189),
        i = n(6422)
      function o(e) {
        let t = r(e),
          n = Math.pow(2, e)
        return `\n${c()}\n${l(e)}\n${a(e)}\n${u(e)}\n${s(
          e,
        )}\n\nfunction createQuadTree(options, random) {\n  options = options || {};\n  options.gravity = typeof options.gravity === 'number' ? options.gravity : -1;\n  options.theta = typeof options.theta === 'number' ? options.theta : 0.8;\n\n  var gravity = options.gravity;\n  var updateQueue = [];\n  var insertStack = new InsertStack();\n  var theta = options.theta;\n\n  var nodesCache = [];\n  var currentInCache = 0;\n  var root = newNode();\n\n  return {\n    insertBodies: insertBodies,\n\n    /**\n     * Gets root node if it is present\n     */\n    getRoot: function() {\n      return root;\n    },\n\n    updateBodyForce: update,\n\n    options: function(newOptions) {\n      if (newOptions) {\n        if (typeof newOptions.gravity === 'number') {\n          gravity = newOptions.gravity;\n        }\n        if (typeof newOptions.theta === 'number') {\n          theta = newOptions.theta;\n        }\n\n        return this;\n      }\n\n      return {\n        gravity: gravity,\n        theta: theta\n      };\n    }\n  };\n\n  function newNode() {\n    // To avoid pressure on GC we reuse nodes.\n    var node = nodesCache[currentInCache];\n    if (node) {\n${(function (
          e,
        ) {
          let t = []
          for (let r = 0; r < n; ++r) t.push(`${e}quad${r} = null;`)
          return t.join('\n')
        })('      node.')}\n      node.body = null;\n      node.mass = ${t('node.mass_{var} = ', {
          join: '',
        })}0;\n      ${t('node.min_{var} = node.max_{var} = ', {
          join: '',
        })}0;\n    } else {\n      node = new QuadNode();\n      nodesCache[currentInCache] = node;\n    }\n\n    ++currentInCache;\n    return node;\n  }\n\n  function update(sourceBody) {\n    var queue = updateQueue;\n    var v;\n    ${t(
          'var d{var};',
          { indent: 4 },
        )}\n    var r; \n    ${t('var f{var} = 0;', {
          indent: 4,
        })}\n    var queueLength = 1;\n    var shiftIdx = 0;\n    var pushIdx = 1;\n\n    queue[0] = root;\n\n    while (queueLength) {\n      var node = queue[shiftIdx];\n      var body = node.body;\n\n      queueLength -= 1;\n      shiftIdx += 1;\n      var differentBody = (body !== sourceBody);\n      if (body && differentBody) {\n        // If the current node is a leaf node (and it is not source body),\n        // calculate the force exerted by the current node on body, and add this\n        // amount to body's net force.\n        ${t(
          'd{var} = body.pos.{var} - sourceBody.pos.{var};',
          { indent: 8 },
        )}\n        r = Math.sqrt(${t('d{var} * d{var}', {
          join: ' + ',
        })});\n\n        if (r === 0) {\n          // Poor man's protection against zero distance.\n          ${t(
          'd{var} = (random.nextDouble() - 0.5) / 50;',
          { indent: 10 },
        )}\n          r = Math.sqrt(${t('d{var} * d{var}', {
          join: ' + ',
        })});\n        }\n\n        // This is standard gravitation force calculation but we divide\n        // by r^3 to save two operations when normalizing force vector.\n        v = gravity * body.mass * sourceBody.mass / (r * r * r);\n        ${t(
          'f{var} += v * d{var};',
          { indent: 8 },
        )}\n      } else if (differentBody) {\n        // Otherwise, calculate the ratio s / r,  where s is the width of the region\n        // represented by the internal node, and r is the distance between the body\n        // and the node's center-of-mass\n        ${t(
          'd{var} = node.mass_{var} / node.mass - sourceBody.pos.{var};',
          { indent: 8 },
        )}\n        r = Math.sqrt(${t('d{var} * d{var}', {
          join: ' + ',
        })});\n\n        if (r === 0) {\n          // Sorry about code duplication. I don't want to create many functions\n          // right away. Just want to see performance first.\n          ${t(
          'd{var} = (random.nextDouble() - 0.5) / 50;',
          { indent: 10 },
        )}\n          r = Math.sqrt(${t('d{var} * d{var}', {
          join: ' + ',
        })});\n        }\n        // If s / r < \u03b8, treat this internal node as a single body, and calculate the\n        // force it exerts on sourceBody, and add this amount to sourceBody's net force.\n        if ((node.max_${i(
          0,
        )} - node.min_${i(
          0,
        )}) / r < theta) {\n          // in the if statement above we consider node's width only\n          // because the region was made into square during tree creation.\n          // Thus there is no difference between using width or height.\n          v = gravity * node.mass * sourceBody.mass / (r * r * r);\n          ${t(
          'f{var} += v * d{var};',
          { indent: 10 },
        )}\n        } else {\n          // Otherwise, run the procedure recursively on each of the current node's children.\n\n          // I intentionally unfolded this loop, to save several CPU cycles.\n${(function () {
          let e = Array(11).join(' '),
            t = []
          for (let r = 0; r < n; ++r)
            t.push(e + `if (node.quad${r}) {`),
              t.push(e + `  queue[pushIdx] = node.quad${r};`),
              t.push(e + '  queueLength += 1;'),
              t.push(e + '  pushIdx += 1;'),
              t.push(e + '}')
          return t.join('\n')
        })()}\n        }\n      }\n    }\n\n    ${t('sourceBody.force.{var} += f{var};', {
          indent: 4,
        })}\n  }\n\n  function insertBodies(bodies) {\n    ${t('var {var}min = Number.MAX_VALUE;', {
          indent: 4,
        })}\n    ${t('var {var}max = Number.MIN_VALUE;', {
          indent: 4,
        })}\n    var i = bodies.length;\n\n    // To reduce quad tree depth we are looking for exact bounding box of all particles.\n    while (i--) {\n      var pos = bodies[i].pos;\n      ${t(
          'if (pos.{var} < {var}min) {var}min = pos.{var};',
          { indent: 6 },
        )}\n      ${t('if (pos.{var} > {var}max) {var}max = pos.{var};', {
          indent: 6,
        })}\n    }\n\n    // Makes the bounds square.\n    var maxSideLength = -Infinity;\n    ${t(
          'if ({var}max - {var}min > maxSideLength) maxSideLength = {var}max - {var}min ;',
          { indent: 4 },
        )}\n\n    currentInCache = 0;\n    root = newNode();\n    ${t(
          'root.min_{var} = {var}min;',
          { indent: 4 },
        )}\n    ${t('root.max_{var} = {var}min + maxSideLength;', {
          indent: 4,
        })}\n\n    i = bodies.length - 1;\n    if (i >= 0) {\n      root.body = bodies[i];\n    }\n    while (i--) {\n      insert(bodies[i], root);\n    }\n  }\n\n  function insert(newBody) {\n    insertStack.reset();\n    insertStack.push(root, newBody);\n\n    while (!insertStack.isEmpty()) {\n      var stackItem = insertStack.pop();\n      var node = stackItem.node;\n      var body = stackItem.body;\n\n      if (!node.body) {\n        // This is internal node. Update the total mass of the node and center-of-mass.\n        ${t(
          'var {var} = body.pos.{var};',
          { indent: 8 },
        )}\n        node.mass += body.mass;\n        ${t('node.mass_{var} += body.mass * {var};', {
          indent: 8,
        })}\n\n        // Recursively insert the body in the appropriate quadrant.\n        // But first find the appropriate quadrant.\n        var quadIdx = 0; // Assume we are in the 0's quad.\n        ${t(
          'var min_{var} = node.min_{var};',
          { indent: 8 },
        )}\n        ${t('var max_{var} = (min_{var} + node.max_{var}) / 2;', {
          indent: 8,
        })}\n\n${(function (t) {
          let n = [],
            r = Array(t + 1).join(' ')
          for (let o = 0; o < e; ++o)
            n.push(r + `if (${i(o)} > max_${i(o)}) {`),
              n.push(r + `  quadIdx = quadIdx + ${Math.pow(2, o)};`),
              n.push(r + `  min_${i(o)} = max_${i(o)};`),
              n.push(r + `  max_${i(o)} = node.max_${i(o)};`),
              n.push(r + '}')
          return n.join('\n')
        })(
          8,
        )}\n\n        var child = getChild(node, quadIdx);\n\n        if (!child) {\n          // The node is internal but this quadrant is not taken. Add\n          // subnode to it.\n          child = newNode();\n          ${t(
          'child.min_{var} = min_{var};',
          { indent: 10 },
        )}\n          ${t('child.max_{var} = max_{var};', {
          indent: 10,
        })}\n          child.body = body;\n\n          setChild(node, quadIdx, child);\n        } else {\n          // continue searching in this quadrant.\n          insertStack.push(child, body);\n        }\n      } else {\n        // We are trying to add to the leaf node.\n        // We have to convert current leaf into internal node\n        // and continue adding two nodes.\n        var oldBody = node.body;\n        node.body = null; // internal nodes do not cary bodies\n\n        if (isSamePosition(oldBody.pos, body.pos)) {\n          // Prevent infinite subdivision by bumping one node\n          // anywhere in this quadrant\n          var retriesCount = 3;\n          do {\n            var offset = random.nextDouble();\n            ${t(
          'var d{var} = (node.max_{var} - node.min_{var}) * offset;',
          { indent: 12 },
        )}\n\n            ${t('oldBody.pos.{var} = node.min_{var} + d{var};', {
          indent: 12,
        })}\n            retriesCount -= 1;\n            // Make sure we don't bump it out of the box. If we do, next iteration should fix it\n          } while (retriesCount > 0 && isSamePosition(oldBody.pos, body.pos));\n\n          if (retriesCount === 0 && isSamePosition(oldBody.pos, body.pos)) {\n            // This is very bad, we ran out of precision.\n            // if we do not return from the method we'll get into\n            // infinite loop here. So we sacrifice correctness of layout, and keep the app running\n            // Next layout iteration should get larger bounding box in the first step and fix this\n            return;\n          }\n        }\n        // Next iteration should subdivide node further.\n        insertStack.push(node, oldBody);\n        insertStack.push(node, body);\n      }\n    }\n  }\n}\nreturn createQuadTree;\n\n`
      }
      function a(e) {
        let t = r(e)
        return `\n  function isSamePosition(point1, point2) {\n    ${t(
          'var d{var} = Math.abs(point1.{var} - point2.{var});',
          { indent: 2 },
        )}\n  \n    return ${t('d{var} < 1e-8', { join: ' && ' })};\n  }  \n`
      }
      function s(e) {
        var t = Math.pow(2, e)
        return `\nfunction setChild(node, idx, child) {\n  ${(function () {
          let e = []
          for (let n = 0; n < t; ++n) {
            let t = 0 === n ? '  ' : '  else '
            e.push(`${t}if (idx === ${n}) node.quad${n} = child;`)
          }
          return e.join('\n')
        })()}\n}`
      }
      function u(e) {
        return `function getChild(node, idx) {\n${(function () {
          let t = [],
            n = Math.pow(2, e)
          for (let e = 0; e < n; ++e) t.push(`  if (idx === ${e}) return node.quad${e};`)
          return t.join('\n')
        })()}\n  return null;\n}`
      }
      function l(e) {
        let t = r(e),
          n = Math.pow(2, e)
        return `\nfunction QuadNode() {\n  // body stored inside this node. In quad tree only leaf nodes (by construction)\n  // contain bodies:\n  this.body = null;\n\n  // Child nodes are stored in quads. Each quad is presented by number:\n  // 0 | 1\n  // -----\n  // 2 | 3\n${(function (
          e,
        ) {
          let t = []
          for (let r = 0; r < n; ++r) t.push(`${e}quad${r} = null;`)
          return t.join('\n')
        })(
          '  this.',
        )}\n\n  // Total mass of current node\n  this.mass = 0;\n\n  // Center of mass coordinates\n  ${t(
          'this.mass_{var} = 0;',
          { indent: 2 },
        )}\n\n  // bounding box coordinates\n  ${t('this.min_{var} = 0;', { indent: 2 })}\n  ${t(
          'this.max_{var} = 0;',
          { indent: 2 },
        )}\n}\n`
      }
      function c() {
        return '\n/**\n * Our implementation of QuadTree is non-recursive to avoid GC hit\n * This data structure represent stack of elements\n * which we are trying to insert into quad tree.\n */\nfunction InsertStack () {\n    this.stack = [];\n    this.popIdx = 0;\n}\n\nInsertStack.prototype = {\n    isEmpty: function() {\n        return this.popIdx === 0;\n    },\n    push: function (node, body) {\n        var item = this.stack[this.popIdx];\n        if (!item) {\n            // we are trying to avoid memory pressure: create new element\n            // only when absolutely necessary\n            this.stack[this.popIdx] = new InsertStackElement(node, body);\n        } else {\n            item.node = node;\n            item.body = body;\n        }\n        ++this.popIdx;\n    },\n    pop: function () {\n        if (this.popIdx > 0) {\n            return this.stack[--this.popIdx];\n        }\n    },\n    reset: function () {\n        this.popIdx = 0;\n    }\n};\n\nfunction InsertStackElement(node, body) {\n    this.node = node; // QuadTree node\n    this.body = body; // physical body which needs to be inserted to node\n}\n'
      }
      ;(e.exports = function (e) {
        let t = o(e)
        return new Function(t)()
      }),
        (e.exports.generateQuadTreeFunctionBody = o),
        (e.exports.getInsertStackCode = c),
        (e.exports.getQuadNodeCode = l),
        (e.exports.isSamePosition = a),
        (e.exports.getChildBodyCode = u),
        (e.exports.setChildBodyCode = s)
    },
    6422: function (e) {
      e.exports = function (e) {
        return 0 === e ? 'x' : 1 === e ? 'y' : 2 === e ? 'z' : 'c' + (e + 1)
      }
    },
    5818: function (e, t, n) {
      e.exports = function (e) {
        var t = n(8403),
          d = n(5510),
          f = n(4245)
        if (e) {
          if (void 0 !== e.springCoeff)
            throw new Error('springCoeff was renamed to springCoefficient')
          if (void 0 !== e.dragCoeff) throw new Error('dragCoeff was renamed to dragCoefficient')
        }
        e = d(e, {
          springLength: 10,
          springCoefficient: 0.8,
          gravity: -12,
          theta: 0.8,
          dragCoefficient: 0.9,
          timeStep: 0.5,
          adaptiveTimeStepWeight: 0,
          dimensions: 2,
          debug: !1,
        })
        var h = l[e.dimensions]
        if (!h) {
          var p = e.dimensions
          ;(h = {
            Body: r(p, e.debug),
            createQuadTree: i(p),
            createBounds: o(p),
            createDragForce: a(p),
            createSpringForce: s(p),
            integrate: u(p),
          }),
            (l[p] = h)
        }
        var v = h.Body,
          m = h.createQuadTree,
          g = h.createBounds,
          y = h.createDragForce,
          b = h.createSpringForce,
          w = h.integrate,
          x = n(8712).random(42),
          E = [],
          k = [],
          _ = m(e, x),
          T = g(E, e, x),
          O = b(e, x),
          C = y(e),
          S = [],
          A = new Map(),
          P = 0
        j('nbody', function () {
          if (0 === E.length) return
          _.insertBodies(E)
          var e = E.length
          for (; e--; ) {
            var t = E[e]
            t.isPinned || (t.reset(), _.updateBodyForce(t), C.update(t))
          }
        }),
          j('spring', function () {
            var e = k.length
            for (; e--; ) O.update(k[e])
          })
        var M = {
          bodies: E,
          quadTree: _,
          springs: k,
          settings: e,
          addForce: j,
          removeForce: function (e) {
            var t = S.indexOf(A.get(e))
            if (t < 0) return
            S.splice(t, 1), A.delete(e)
          },
          getForces: function () {
            return A
          },
          step: function () {
            for (var t = 0; t < S.length; ++t) S[t](P)
            var n = w(E, e.timeStep, e.adaptiveTimeStepWeight)
            return (P += 1), n
          },
          addBody: function (e) {
            if (!e) throw new Error('Body is required')
            return E.push(e), e
          },
          addBodyAt: function (e) {
            if (!e) throw new Error('Body position is required')
            var t = ((e) => new v(e))(e)
            return E.push(t), t
          },
          removeBody: function (e) {
            if (e) {
              var t = E.indexOf(e)
              if (!(t < 0)) return E.splice(t, 1), 0 === E.length && T.reset(), !0
            }
          },
          addSpring: function (e, n, r, i) {
            if (!e || !n) throw new Error('Cannot add null spring to force simulator')
            'number' !== typeof r && (r = -1)
            var o = new t(e, n, r, i >= 0 ? i : -1)
            return k.push(o), o
          },
          getTotalMovement: function () {
            return 0
          },
          removeSpring: function (e) {
            if (e) {
              var t = k.indexOf(e)
              return t > -1 ? (k.splice(t, 1), !0) : void 0
            }
          },
          getBestNewBodyPosition: function (e) {
            return T.getBestNewPosition(e)
          },
          getBBox: R,
          getBoundingBox: R,
          invalidateBBox: function () {
            console.warn(
              'invalidateBBox() is deprecated, bounds always recomputed on `getBBox()` call',
            )
          },
          gravity: function (t) {
            return void 0 !== t ? ((e.gravity = t), _.options({ gravity: t }), this) : e.gravity
          },
          theta: function (t) {
            return void 0 !== t ? ((e.theta = t), _.options({ theta: t }), this) : e.theta
          },
          random: x,
        }
        return (
          (function (e, t) {
            for (var n in e) c(e, t, n)
          })(e, M),
          f(M),
          M
        )
        function R() {
          return T.update(), T.box
        }
        function j(e, t) {
          if (A.has(e)) throw new Error('Force ' + e + ' is already added')
          A.set(e, t), S.push(t)
        }
      }
      var r = n(6410),
        i = n(1584),
        o = n(891),
        a = n(6647),
        s = n(4079),
        u = n(1763),
        l = {}
      function c(e, t, n) {
        if (e.hasOwnProperty(n) && 'function' !== typeof t[n]) {
          var r = Number.isFinite(e[n])
          t[n] = r
            ? function (r) {
                if (void 0 !== r) {
                  if (!Number.isFinite(r))
                    throw new Error('Value of ' + n + ' should be a valid number.')
                  return (e[n] = r), t
                }
                return e[n]
              }
            : function (r) {
                return void 0 !== r ? ((e[n] = r), t) : e[n]
              }
        }
      }
    },
    8403: function (e) {
      e.exports = function (e, t, n, r) {
        ;(this.from = e), (this.to = t), (this.length = n), (this.coefficient = r)
      }
    },
    4736: function (e, t, n) {
      e.exports = function (e) {
        'uniqueLinkId' in (e = e || {}) &&
          (console.warn(
            'ngraph.graph: Starting from version 0.14 `uniqueLinkId` is deprecated.\nUse `multigraph` option instead\n',
            '\n',
            'Note: there is also change in default behavior: From now on each graph\nis considered to be not a multigraph by default (each edge is unique).',
          ),
          (e.multigraph = e.uniqueLinkId))
        void 0 === e.multigraph && (e.multigraph = !1)
        if ('function' !== typeof Map)
          throw new Error(
            'ngraph.graph requires `Map` to be defined. Please polyfill it before using ngraph',
          )
        var t = new Map(),
          n = [],
          l = {},
          c = 0,
          d = e.multigraph
            ? function (e, t, n) {
                var r = u(e, t),
                  i = l.hasOwnProperty(r)
                if (i || O(e, t)) {
                  i || (l[r] = 0)
                  var o = '@' + ++l[r]
                  r = u(e + o, t + o)
                }
                return new s(e, t, n, r)
              }
            : function (e, t, n) {
                var r = u(e, t)
                return new s(e, t, n, r)
              },
          f = [],
          h = C,
          p = C,
          v = C,
          m = C,
          g = {
            addNode: w,
            addLink: function (e, t, r) {
              v()
              var i = x(e) || w(e),
                o = x(t) || w(t),
                s = d(e, t, r)
              n.push(s), a(i, s), e !== t && a(o, s)
              return h(s, 'add'), m(), s
            },
            removeLink: T,
            removeNode: E,
            getNode: x,
            getNodeCount: k,
            getLinkCount: _,
            getLinksCount: _,
            getNodesCount: k,
            getLinks: function (e) {
              var t = x(e)
              return t ? t.links : null
            },
            forEachNode: P,
            forEachLinkedNode: function (e, n, r) {
              var i = x(e)
              if (i && i.links && 'function' === typeof n)
                return r
                  ? (function (e, n, r) {
                      for (var i = 0; i < e.length; ++i) {
                        var o = e[i]
                        if (o.fromId === n && r(t.get(o.toId), o)) return !0
                      }
                    })(i.links, e, n)
                  : (function (e, n, r) {
                      for (var i = 0; i < e.length; ++i) {
                        var o = e[i],
                          a = o.fromId === n ? o.toId : o.fromId
                        if (r(t.get(a), o)) return !0
                      }
                    })(i.links, e, n)
            },
            forEachLink: function (e) {
              var t, r
              if ('function' === typeof e) for (t = 0, r = n.length; t < r; ++t) e(n[t])
            },
            beginUpdate: v,
            endUpdate: m,
            clear: function () {
              v(),
                P(function (e) {
                  E(e.id)
                }),
                m()
            },
            hasLink: O,
            hasNode: x,
            getLink: O,
          }
        return (
          r(g),
          (function () {
            var e = g.on
            function t() {
              return (
                (g.beginUpdate = v = S),
                (g.endUpdate = m = A),
                (h = y),
                (p = b),
                (g.on = e),
                e.apply(g, arguments)
              )
            }
            g.on = t
          })(),
          g
        )
        function y(e, t) {
          f.push({ link: e, changeType: t })
        }
        function b(e, t) {
          f.push({ node: e, changeType: t })
        }
        function w(e, n) {
          if (void 0 === e) throw new Error('Invalid node identifier')
          v()
          var r = x(e)
          return (
            r ? ((r.data = n), p(r, 'update')) : ((r = new o(e, n)), p(r, 'add')),
            t.set(e, r),
            m(),
            r
          )
        }
        function x(e) {
          return t.get(e)
        }
        function E(e) {
          var n = x(e)
          if (!n) return !1
          v()
          var r = n.links
          if (r) {
            n.links = null
            for (var i = 0; i < r.length; ++i) T(r[i])
          }
          return t.delete(e), p(n, 'remove'), m(), !0
        }
        function k() {
          return t.size
        }
        function _() {
          return n.length
        }
        function T(e) {
          if (!e) return !1
          var t = i(e, n)
          if (t < 0) return !1
          v(), n.splice(t, 1)
          var r = x(e.fromId),
            o = x(e.toId)
          return (
            r && (t = i(e, r.links)) >= 0 && r.links.splice(t, 1),
            o && (t = i(e, o.links)) >= 0 && o.links.splice(t, 1),
            h(e, 'remove'),
            m(),
            !0
          )
        }
        function O(e, t) {
          var n,
            r = x(e)
          if (!r || !r.links) return null
          for (n = 0; n < r.links.length; ++n) {
            var i = r.links[n]
            if (i.fromId === e && i.toId === t) return i
          }
          return null
        }
        function C() {}
        function S() {
          c += 1
        }
        function A() {
          0 === (c -= 1) && f.length > 0 && (g.fire('changed', f), (f.length = 0))
        }
        function P(e) {
          if ('function' !== typeof e)
            throw new Error('Function is expected to iterate over graph nodes. You passed ' + e)
          for (var n = t.values(), r = n.next(); !r.done; ) {
            if (e(r.value)) return !0
            r = n.next()
          }
        }
      }
      var r = n(4245)
      function i(e, t) {
        if (!t) return -1
        if (t.indexOf) return t.indexOf(e)
        var n,
          r = t.length
        for (n = 0; n < r; n += 1) if (t[n] === e) return n
        return -1
      }
      function o(e, t) {
        ;(this.id = e), (this.links = null), (this.data = t)
      }
      function a(e, t) {
        e.links ? e.links.push(t) : (e.links = [t])
      }
      function s(e, t, n, r) {
        ;(this.fromId = e), (this.toId = t), (this.data = n), (this.id = r)
      }
      function u(e, t) {
        return e.toString() + '\ud83d\udc49 ' + t.toString()
      }
    },
    5510: function (e) {
      e.exports = function e(t, n) {
        var r
        t || (t = {})
        if (n)
          for (r in n)
            if (n.hasOwnProperty(r)) {
              var i = t.hasOwnProperty(r),
                o = typeof n[r]
              !i || typeof t[r] !== o ? (t[r] = n[r]) : 'object' === o && (t[r] = e(t[r], n[r]))
            }
        return t
      }
    },
    8712: function (e) {
      function t(e) {
        return new n('number' === typeof e ? e : +new Date())
      }
      function n(e) {
        this.seed = e
      }
      function r(e) {
        return (
          Math.sqrt((2 * Math.PI) / e) *
          Math.pow((1 / Math.E) * (e + 1 / (12 * e - 1 / (10 * e))), e)
        )
      }
      function i() {
        var e = this.seed
        return (
          (e =
            4294967295 &
            (3042594569 ^
              (e =
                ((e =
                  4294967295 &
                  (((e =
                    ((e =
                      4294967295 &
                      (3345072700 ^ (e = (e + 2127912214 + (e << 12)) & 4294967295) ^ (e >>> 19))) +
                      374761393 +
                      (e << 5)) &
                    4294967295) +
                    3550635116) ^
                    (e << 9))) +
                  4251993797 +
                  (e << 3)) &
                4294967295) ^
              (e >>> 16))),
          (this.seed = e),
          (268435455 & e) / 268435456
        )
      }
      ;(e.exports = t),
        (e.exports.random = t),
        (e.exports.randomIterator = function (e, n) {
          var r = n || t()
          if ('function' !== typeof r.next)
            throw new Error('customRandom does not match expected API: next() function is missing')
          return {
            forEach: function (t) {
              var n, i, o
              for (n = e.length - 1; n > 0; --n)
                (i = r.next(n + 1)), (o = e[i]), (e[i] = e[n]), (e[n] = o), t(o)
              e.length && t(e[0])
            },
            shuffle: function () {
              var t, n, i
              for (t = e.length - 1; t > 0; --t)
                (n = r.next(t + 1)), (i = e[n]), (e[n] = e[t]), (e[t] = i)
              return e
            },
          }
        }),
        (n.prototype.next = function (e) {
          return Math.floor(this.nextDouble() * e)
        }),
        (n.prototype.nextDouble = i),
        (n.prototype.uniform = i),
        (n.prototype.gaussian = function () {
          var e, t, n
          do {
            ;(t = 2 * this.nextDouble() - 1), (n = 2 * this.nextDouble() - 1), (e = t * t + n * n)
          } while (e >= 1 || 0 === e)
          return t * Math.sqrt((-2 * Math.log(e)) / e)
        }),
        (n.prototype.levy = function () {
          var e = 1.5,
            t = Math.pow(
              (r(2.5) * Math.sin((Math.PI * e) / 2)) / (r(1.25) * e * Math.pow(2, 0.25)),
              1 / e,
            )
          return (this.gaussian() * t) / Math.pow(Math.abs(this.gaussian()), 1 / e)
        })
    },
    75: function (e, t, n) {
      var r = n(4155)
      ;(function () {
        var t, n, i, o, a, s
        'undefined' !== typeof performance && null !== performance && performance.now
          ? (e.exports = function () {
              return performance.now()
            })
          : 'undefined' !== typeof r && null !== r && r.hrtime
          ? ((e.exports = function () {
              return (t() - a) / 1e6
            }),
            (n = r.hrtime),
            (o = (t = function () {
              var e
              return 1e9 * (e = n())[0] + e[1]
            })()),
            (s = 1e9 * r.uptime()),
            (a = o - s))
          : Date.now
          ? ((e.exports = function () {
              return Date.now() - i
            }),
            (i = Date.now()))
          : ((e.exports = function () {
              return new Date().getTime() - i
            }),
            (i = new Date().getTime()))
      }.call(this))
    },
    7236: function (e) {
      var t = null,
        n = ['Webkit', 'Moz', 'O', 'ms']
      e.exports = function (e) {
        t || (t = document.createElement('div'))
        var r = t.style
        if (e in r) return e
        for (var i = e.charAt(0).toUpperCase() + e.slice(1), o = n.length; o >= 0; o--) {
          var a = n[o] + i
          if (a in r) return a
        }
        return !1
      }
    },
    4155: function (e) {
      var t,
        n,
        r = (e.exports = {})
      function i() {
        throw new Error('setTimeout has not been defined')
      }
      function o() {
        throw new Error('clearTimeout has not been defined')
      }
      function a(e) {
        if (t === setTimeout) return setTimeout(e, 0)
        if ((t === i || !t) && setTimeout) return (t = setTimeout), setTimeout(e, 0)
        try {
          return t(e, 0)
        } catch (n) {
          try {
            return t.call(null, e, 0)
          } catch (n) {
            return t.call(this, e, 0)
          }
        }
      }
      !(function () {
        try {
          t = 'function' === typeof setTimeout ? setTimeout : i
        } catch (e) {
          t = i
        }
        try {
          n = 'function' === typeof clearTimeout ? clearTimeout : o
        } catch (e) {
          n = o
        }
      })()
      var s,
        u = [],
        l = !1,
        c = -1
      function d() {
        l && s && ((l = !1), s.length ? (u = s.concat(u)) : (c = -1), u.length && f())
      }
      function f() {
        if (!l) {
          var e = a(d)
          l = !0
          for (var t = u.length; t; ) {
            for (s = u, u = []; ++c < t; ) s && s[c].run()
            ;(c = -1), (t = u.length)
          }
          ;(s = null),
            (l = !1),
            (function (e) {
              if (n === clearTimeout) return clearTimeout(e)
              if ((n === o || !n) && clearTimeout) return (n = clearTimeout), clearTimeout(e)
              try {
                n(e)
              } catch (t) {
                try {
                  return n.call(null, e)
                } catch (t) {
                  return n.call(this, e)
                }
              }
            })(e)
        }
      }
      function h(e, t) {
        ;(this.fun = e), (this.array = t)
      }
      function p() {}
      ;(r.nextTick = function (e) {
        var t = new Array(arguments.length - 1)
        if (arguments.length > 1) for (var n = 1; n < arguments.length; n++) t[n - 1] = arguments[n]
        u.push(new h(e, t)), 1 !== u.length || l || a(f)
      }),
        (h.prototype.run = function () {
          this.fun.apply(null, this.array)
        }),
        (r.title = 'browser'),
        (r.browser = !0),
        (r.env = {}),
        (r.argv = []),
        (r.version = ''),
        (r.versions = {}),
        (r.on = p),
        (r.addListener = p),
        (r.once = p),
        (r.off = p),
        (r.removeListener = p),
        (r.removeAllListeners = p),
        (r.emit = p),
        (r.prependListener = p),
        (r.prependOnceListener = p),
        (r.listeners = function (e) {
          return []
        }),
        (r.binding = function (e) {
          throw new Error('process.binding is not supported')
        }),
        (r.cwd = function () {
          return '/'
        }),
        (r.chdir = function (e) {
          throw new Error('process.chdir is not supported')
        }),
        (r.umask = function () {
          return 0
        })
    },
    4087: function (e, t, n) {
      for (
        var r = n(75),
          i = 'undefined' === typeof window ? n.g : window,
          o = ['moz', 'webkit'],
          a = 'AnimationFrame',
          s = i['request' + a],
          u = i['cancel' + a] || i['cancelRequest' + a],
          l = 0;
        !s && l < o.length;
        l++
      )
        (s = i[o[l] + 'Request' + a]), (u = i[o[l] + 'Cancel' + a] || i[o[l] + 'CancelRequest' + a])
      if (!s || !u) {
        var c = 0,
          d = 0,
          f = []
        ;(s = function (e) {
          if (0 === f.length) {
            var t = r(),
              n = Math.max(0, 16.666666666666668 - (t - c))
            ;(c = n + t),
              setTimeout(function () {
                var e = f.slice(0)
                f.length = 0
                for (var t = 0; t < e.length; t++)
                  if (!e[t].cancelled)
                    try {
                      e[t].callback(c)
                    } catch (n) {
                      setTimeout(function () {
                        throw n
                      }, 0)
                    }
              }, Math.round(n))
          }
          return f.push({ handle: ++d, callback: e, cancelled: !1 }), d
        }),
          (u = function (e) {
            for (var t = 0; t < f.length; t++) f[t].handle === e && (f[t].cancelled = !0)
          })
      }
      ;(e.exports = function (e) {
        return s.call(i, e)
      }),
        (e.exports.cancel = function () {
          u.apply(i, arguments)
        }),
        (e.exports.polyfill = function (e) {
          e || (e = i), (e.requestAnimationFrame = s), (e.cancelAnimationFrame = u)
        })
    },
    3485: function (e, t, n) {
      'use strict'
      Object.defineProperty(t, '__esModule', { value: !0 })
      var r =
        Object.assign ||
        function (e) {
          for (var t = 1; t < arguments.length; t++) {
            var n = arguments[t]
            for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
          }
          return e
        }
      ;(t.renderViewDefault = function (e) {
        return a.default.createElement('div', e)
      }),
        (t.renderTrackHorizontalDefault = function (e) {
          var t = e.style,
            n = s(e, ['style']),
            i = r({}, t, { right: 2, bottom: 2, left: 2, borderRadius: 3 })
          return a.default.createElement('div', r({ style: i }, n))
        }),
        (t.renderTrackVerticalDefault = function (e) {
          var t = e.style,
            n = s(e, ['style']),
            i = r({}, t, { right: 2, bottom: 2, top: 2, borderRadius: 3 })
          return a.default.createElement('div', r({ style: i }, n))
        }),
        (t.renderThumbHorizontalDefault = function (e) {
          var t = e.style,
            n = s(e, ['style']),
            i = r({}, t, {
              cursor: 'pointer',
              borderRadius: 'inherit',
              backgroundColor: 'rgba(0,0,0,.2)',
            })
          return a.default.createElement('div', r({ style: i }, n))
        }),
        (t.renderThumbVerticalDefault = function (e) {
          var t = e.style,
            n = s(e, ['style']),
            i = r({}, t, {
              cursor: 'pointer',
              borderRadius: 'inherit',
              backgroundColor: 'rgba(0,0,0,.2)',
            })
          return a.default.createElement('div', r({ style: i }, n))
        })
      var i,
        o = n(7294),
        a = (i = o) && i.__esModule ? i : { default: i }
      function s(e, t) {
        var n = {}
        for (var r in e)
          t.indexOf(r) >= 0 || (Object.prototype.hasOwnProperty.call(e, r) && (n[r] = e[r]))
        return n
      }
    },
    6164: function (e, t, n) {
      'use strict'
      Object.defineProperty(t, '__esModule', { value: !0 })
      var r =
          Object.assign ||
          function (e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t]
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          },
        i = (function () {
          function e(e, t) {
            for (var n = 0; n < t.length; n++) {
              var r = t[n]
              ;(r.enumerable = r.enumerable || !1),
                (r.configurable = !0),
                'value' in r && (r.writable = !0),
                Object.defineProperty(e, r.key, r)
            }
          }
          return function (t, n, r) {
            return n && e(t.prototype, n), r && e(t, r), t
          }
        })(),
        o = n(4087),
        a = g(o),
        s = g(n(3879)),
        u = n(7294),
        l = g(n(5697)),
        c = g(n(7928)),
        d = g(n(6445)),
        f = g(n(8309)),
        h = g(n(1608)),
        p = g(n(7114)),
        v = n(8285),
        m = n(3485)
      function g(e) {
        return e && e.__esModule ? e : { default: e }
      }
      function y(e, t) {
        if (!(e instanceof t)) throw new TypeError('Cannot call a class as a function')
      }
      function b(e, t) {
        if (!e)
          throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
        return !t || ('object' !== typeof t && 'function' !== typeof t) ? e : t
      }
      var w = (function (e) {
        function t(e) {
          var n
          y(this, t)
          for (var r = arguments.length, i = Array(r > 1 ? r - 1 : 0), o = 1; o < r; o++)
            i[o - 1] = arguments[o]
          var a = b(
            this,
            (n = t.__proto__ || Object.getPrototypeOf(t)).call.apply(n, [this, e].concat(i)),
          )
          return (
            (a.getScrollLeft = a.getScrollLeft.bind(a)),
            (a.getScrollTop = a.getScrollTop.bind(a)),
            (a.getScrollWidth = a.getScrollWidth.bind(a)),
            (a.getScrollHeight = a.getScrollHeight.bind(a)),
            (a.getClientWidth = a.getClientWidth.bind(a)),
            (a.getClientHeight = a.getClientHeight.bind(a)),
            (a.getValues = a.getValues.bind(a)),
            (a.getThumbHorizontalWidth = a.getThumbHorizontalWidth.bind(a)),
            (a.getThumbVerticalHeight = a.getThumbVerticalHeight.bind(a)),
            (a.getScrollLeftForOffset = a.getScrollLeftForOffset.bind(a)),
            (a.getScrollTopForOffset = a.getScrollTopForOffset.bind(a)),
            (a.scrollLeft = a.scrollLeft.bind(a)),
            (a.scrollTop = a.scrollTop.bind(a)),
            (a.scrollToLeft = a.scrollToLeft.bind(a)),
            (a.scrollToTop = a.scrollToTop.bind(a)),
            (a.scrollToRight = a.scrollToRight.bind(a)),
            (a.scrollToBottom = a.scrollToBottom.bind(a)),
            (a.handleTrackMouseEnter = a.handleTrackMouseEnter.bind(a)),
            (a.handleTrackMouseLeave = a.handleTrackMouseLeave.bind(a)),
            (a.handleHorizontalTrackMouseDown = a.handleHorizontalTrackMouseDown.bind(a)),
            (a.handleVerticalTrackMouseDown = a.handleVerticalTrackMouseDown.bind(a)),
            (a.handleHorizontalThumbMouseDown = a.handleHorizontalThumbMouseDown.bind(a)),
            (a.handleVerticalThumbMouseDown = a.handleVerticalThumbMouseDown.bind(a)),
            (a.handleWindowResize = a.handleWindowResize.bind(a)),
            (a.handleScroll = a.handleScroll.bind(a)),
            (a.handleDrag = a.handleDrag.bind(a)),
            (a.handleDragEnd = a.handleDragEnd.bind(a)),
            (a.state = { didMountUniversal: !1 }),
            a
          )
        }
        return (
          (function (e, t) {
            if ('function' !== typeof t && null !== t)
              throw new TypeError(
                'Super expression must either be null or a function, not ' + typeof t,
              )
            ;(e.prototype = Object.create(t && t.prototype, {
              constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 },
            })),
              t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : (e.__proto__ = t))
          })(t, e),
          i(t, [
            {
              key: 'componentDidMount',
              value: function () {
                this.addListeners(), this.update(), this.componentDidMountUniversal()
              },
            },
            {
              key: 'componentDidMountUniversal',
              value: function () {
                this.props.universal && this.setState({ didMountUniversal: !0 })
              },
            },
            {
              key: 'componentDidUpdate',
              value: function () {
                this.update()
              },
            },
            {
              key: 'componentWillUnmount',
              value: function () {
                this.removeListeners(),
                  (0, o.cancel)(this.requestFrame),
                  clearTimeout(this.hideTracksTimeout),
                  clearInterval(this.detectScrollingInterval)
              },
            },
            {
              key: 'getScrollLeft',
              value: function () {
                return this.view ? this.view.scrollLeft : 0
              },
            },
            {
              key: 'getScrollTop',
              value: function () {
                return this.view ? this.view.scrollTop : 0
              },
            },
            {
              key: 'getScrollWidth',
              value: function () {
                return this.view ? this.view.scrollWidth : 0
              },
            },
            {
              key: 'getScrollHeight',
              value: function () {
                return this.view ? this.view.scrollHeight : 0
              },
            },
            {
              key: 'getClientWidth',
              value: function () {
                return this.view ? this.view.clientWidth : 0
              },
            },
            {
              key: 'getClientHeight',
              value: function () {
                return this.view ? this.view.clientHeight : 0
              },
            },
            {
              key: 'getValues',
              value: function () {
                var e = this.view || {},
                  t = e.scrollLeft,
                  n = void 0 === t ? 0 : t,
                  r = e.scrollTop,
                  i = void 0 === r ? 0 : r,
                  o = e.scrollWidth,
                  a = void 0 === o ? 0 : o,
                  s = e.scrollHeight,
                  u = void 0 === s ? 0 : s,
                  l = e.clientWidth,
                  c = void 0 === l ? 0 : l,
                  d = e.clientHeight,
                  f = void 0 === d ? 0 : d
                return {
                  left: n / (a - c) || 0,
                  top: i / (u - f) || 0,
                  scrollLeft: n,
                  scrollTop: i,
                  scrollWidth: a,
                  scrollHeight: u,
                  clientWidth: c,
                  clientHeight: f,
                }
              },
            },
            {
              key: 'getThumbHorizontalWidth',
              value: function () {
                var e = this.props,
                  t = e.thumbSize,
                  n = e.thumbMinSize,
                  r = this.view,
                  i = r.scrollWidth,
                  o = r.clientWidth,
                  a = (0, h.default)(this.trackHorizontal),
                  s = Math.ceil((o / i) * a)
                return a <= s ? 0 : t || Math.max(s, n)
              },
            },
            {
              key: 'getThumbVerticalHeight',
              value: function () {
                var e = this.props,
                  t = e.thumbSize,
                  n = e.thumbMinSize,
                  r = this.view,
                  i = r.scrollHeight,
                  o = r.clientHeight,
                  a = (0, p.default)(this.trackVertical),
                  s = Math.ceil((o / i) * a)
                return a <= s ? 0 : t || Math.max(s, n)
              },
            },
            {
              key: 'getScrollLeftForOffset',
              value: function (e) {
                var t = this.view,
                  n = t.scrollWidth,
                  r = t.clientWidth
                return (
                  (e / ((0, h.default)(this.trackHorizontal) - this.getThumbHorizontalWidth())) *
                  (n - r)
                )
              },
            },
            {
              key: 'getScrollTopForOffset',
              value: function (e) {
                var t = this.view,
                  n = t.scrollHeight,
                  r = t.clientHeight
                return (
                  (e / ((0, p.default)(this.trackVertical) - this.getThumbVerticalHeight())) *
                  (n - r)
                )
              },
            },
            {
              key: 'scrollLeft',
              value: function () {
                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0
                this.view && (this.view.scrollLeft = e)
              },
            },
            {
              key: 'scrollTop',
              value: function () {
                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0
                this.view && (this.view.scrollTop = e)
              },
            },
            {
              key: 'scrollToLeft',
              value: function () {
                this.view && (this.view.scrollLeft = 0)
              },
            },
            {
              key: 'scrollToTop',
              value: function () {
                this.view && (this.view.scrollTop = 0)
              },
            },
            {
              key: 'scrollToRight',
              value: function () {
                this.view && (this.view.scrollLeft = this.view.scrollWidth)
              },
            },
            {
              key: 'scrollToBottom',
              value: function () {
                this.view && (this.view.scrollTop = this.view.scrollHeight)
              },
            },
            {
              key: 'addListeners',
              value: function () {
                if ('undefined' !== typeof document && this.view) {
                  var e = this.view,
                    t = this.trackHorizontal,
                    n = this.trackVertical,
                    r = this.thumbHorizontal,
                    i = this.thumbVertical
                  e.addEventListener('scroll', this.handleScroll),
                    (0, d.default)() &&
                      (t.addEventListener('mouseenter', this.handleTrackMouseEnter),
                      t.addEventListener('mouseleave', this.handleTrackMouseLeave),
                      t.addEventListener('mousedown', this.handleHorizontalTrackMouseDown),
                      n.addEventListener('mouseenter', this.handleTrackMouseEnter),
                      n.addEventListener('mouseleave', this.handleTrackMouseLeave),
                      n.addEventListener('mousedown', this.handleVerticalTrackMouseDown),
                      r.addEventListener('mousedown', this.handleHorizontalThumbMouseDown),
                      i.addEventListener('mousedown', this.handleVerticalThumbMouseDown),
                      window.addEventListener('resize', this.handleWindowResize))
                }
              },
            },
            {
              key: 'removeListeners',
              value: function () {
                if ('undefined' !== typeof document && this.view) {
                  var e = this.view,
                    t = this.trackHorizontal,
                    n = this.trackVertical,
                    r = this.thumbHorizontal,
                    i = this.thumbVertical
                  e.removeEventListener('scroll', this.handleScroll),
                    (0, d.default)() &&
                      (t.removeEventListener('mouseenter', this.handleTrackMouseEnter),
                      t.removeEventListener('mouseleave', this.handleTrackMouseLeave),
                      t.removeEventListener('mousedown', this.handleHorizontalTrackMouseDown),
                      n.removeEventListener('mouseenter', this.handleTrackMouseEnter),
                      n.removeEventListener('mouseleave', this.handleTrackMouseLeave),
                      n.removeEventListener('mousedown', this.handleVerticalTrackMouseDown),
                      r.removeEventListener('mousedown', this.handleHorizontalThumbMouseDown),
                      i.removeEventListener('mousedown', this.handleVerticalThumbMouseDown),
                      window.removeEventListener('resize', this.handleWindowResize),
                      this.teardownDragging())
                }
              },
            },
            {
              key: 'handleScroll',
              value: function (e) {
                var t = this,
                  n = this.props,
                  r = n.onScroll,
                  i = n.onScrollFrame
                r && r(e),
                  this.update(function (e) {
                    var n = e.scrollLeft,
                      r = e.scrollTop
                    ;(t.viewScrollLeft = n), (t.viewScrollTop = r), i && i(e)
                  }),
                  this.detectScrolling()
              },
            },
            {
              key: 'handleScrollStart',
              value: function () {
                var e = this.props.onScrollStart
                e && e(), this.handleScrollStartAutoHide()
              },
            },
            {
              key: 'handleScrollStartAutoHide',
              value: function () {
                this.props.autoHide && this.showTracks()
              },
            },
            {
              key: 'handleScrollStop',
              value: function () {
                var e = this.props.onScrollStop
                e && e(), this.handleScrollStopAutoHide()
              },
            },
            {
              key: 'handleScrollStopAutoHide',
              value: function () {
                this.props.autoHide && this.hideTracks()
              },
            },
            {
              key: 'handleWindowResize',
              value: function () {
                ;(0, d.default)(!1), this.forceUpdate()
              },
            },
            {
              key: 'handleHorizontalTrackMouseDown',
              value: function (e) {
                e.preventDefault()
                var t = e.target,
                  n = e.clientX,
                  r = t.getBoundingClientRect().left,
                  i = this.getThumbHorizontalWidth(),
                  o = Math.abs(r - n) - i / 2
                this.view.scrollLeft = this.getScrollLeftForOffset(o)
              },
            },
            {
              key: 'handleVerticalTrackMouseDown',
              value: function (e) {
                e.preventDefault()
                var t = e.target,
                  n = e.clientY,
                  r = t.getBoundingClientRect().top,
                  i = this.getThumbVerticalHeight(),
                  o = Math.abs(r - n) - i / 2
                this.view.scrollTop = this.getScrollTopForOffset(o)
              },
            },
            {
              key: 'handleHorizontalThumbMouseDown',
              value: function (e) {
                e.preventDefault(), this.handleDragStart(e)
                var t = e.target,
                  n = e.clientX,
                  r = t.offsetWidth,
                  i = t.getBoundingClientRect().left
                this.prevPageX = r - (n - i)
              },
            },
            {
              key: 'handleVerticalThumbMouseDown',
              value: function (e) {
                e.preventDefault(), this.handleDragStart(e)
                var t = e.target,
                  n = e.clientY,
                  r = t.offsetHeight,
                  i = t.getBoundingClientRect().top
                this.prevPageY = r - (n - i)
              },
            },
            {
              key: 'setupDragging',
              value: function () {
                ;(0, s.default)(document.body, v.disableSelectStyle),
                  document.addEventListener('mousemove', this.handleDrag),
                  document.addEventListener('mouseup', this.handleDragEnd),
                  (document.onselectstart = f.default)
              },
            },
            {
              key: 'teardownDragging',
              value: function () {
                ;(0, s.default)(document.body, v.disableSelectStyleReset),
                  document.removeEventListener('mousemove', this.handleDrag),
                  document.removeEventListener('mouseup', this.handleDragEnd),
                  (document.onselectstart = void 0)
              },
            },
            {
              key: 'handleDragStart',
              value: function (e) {
                ;(this.dragging = !0), e.stopImmediatePropagation(), this.setupDragging()
              },
            },
            {
              key: 'handleDrag',
              value: function (e) {
                if (this.prevPageX) {
                  var t = e.clientX,
                    n =
                      -this.trackHorizontal.getBoundingClientRect().left +
                      t -
                      (this.getThumbHorizontalWidth() - this.prevPageX)
                  this.view.scrollLeft = this.getScrollLeftForOffset(n)
                }
                if (this.prevPageY) {
                  var r = e.clientY,
                    i =
                      -this.trackVertical.getBoundingClientRect().top +
                      r -
                      (this.getThumbVerticalHeight() - this.prevPageY)
                  this.view.scrollTop = this.getScrollTopForOffset(i)
                }
                return !1
              },
            },
            {
              key: 'handleDragEnd',
              value: function () {
                ;(this.dragging = !1),
                  (this.prevPageX = this.prevPageY = 0),
                  this.teardownDragging(),
                  this.handleDragEndAutoHide()
              },
            },
            {
              key: 'handleDragEndAutoHide',
              value: function () {
                this.props.autoHide && this.hideTracks()
              },
            },
            {
              key: 'handleTrackMouseEnter',
              value: function () {
                ;(this.trackMouseOver = !0), this.handleTrackMouseEnterAutoHide()
              },
            },
            {
              key: 'handleTrackMouseEnterAutoHide',
              value: function () {
                this.props.autoHide && this.showTracks()
              },
            },
            {
              key: 'handleTrackMouseLeave',
              value: function () {
                ;(this.trackMouseOver = !1), this.handleTrackMouseLeaveAutoHide()
              },
            },
            {
              key: 'handleTrackMouseLeaveAutoHide',
              value: function () {
                this.props.autoHide && this.hideTracks()
              },
            },
            {
              key: 'showTracks',
              value: function () {
                clearTimeout(this.hideTracksTimeout),
                  (0, s.default)(this.trackHorizontal, { opacity: 1 }),
                  (0, s.default)(this.trackVertical, { opacity: 1 })
              },
            },
            {
              key: 'hideTracks',
              value: function () {
                var e = this
                if (!this.dragging && !this.scrolling && !this.trackMouseOver) {
                  var t = this.props.autoHideTimeout
                  clearTimeout(this.hideTracksTimeout),
                    (this.hideTracksTimeout = setTimeout(function () {
                      ;(0, s.default)(e.trackHorizontal, { opacity: 0 }),
                        (0, s.default)(e.trackVertical, { opacity: 0 })
                    }, t))
                }
              },
            },
            {
              key: 'detectScrolling',
              value: function () {
                var e = this
                this.scrolling ||
                  ((this.scrolling = !0),
                  this.handleScrollStart(),
                  (this.detectScrollingInterval = setInterval(function () {
                    e.lastViewScrollLeft === e.viewScrollLeft &&
                      e.lastViewScrollTop === e.viewScrollTop &&
                      (clearInterval(e.detectScrollingInterval),
                      (e.scrolling = !1),
                      e.handleScrollStop()),
                      (e.lastViewScrollLeft = e.viewScrollLeft),
                      (e.lastViewScrollTop = e.viewScrollTop)
                  }, 100)))
              },
            },
            {
              key: 'raf',
              value: function (e) {
                var t = this
                this.requestFrame && a.default.cancel(this.requestFrame),
                  (this.requestFrame = (0, a.default)(function () {
                    ;(t.requestFrame = void 0), e()
                  }))
              },
            },
            {
              key: 'update',
              value: function (e) {
                var t = this
                this.raf(function () {
                  return t._update(e)
                })
              },
            },
            {
              key: '_update',
              value: function (e) {
                var t = this.props,
                  n = t.onUpdate,
                  r = t.hideTracksWhenNotNeeded,
                  i = this.getValues()
                if ((0, d.default)()) {
                  var o = i.scrollLeft,
                    a = i.clientWidth,
                    u = i.scrollWidth,
                    l = (0, h.default)(this.trackHorizontal),
                    c = this.getThumbHorizontalWidth(),
                    f = { width: c, transform: 'translateX(' + (o / (u - a)) * (l - c) + 'px)' },
                    v = i.scrollTop,
                    m = i.clientHeight,
                    g = i.scrollHeight,
                    y = (0, p.default)(this.trackVertical),
                    b = this.getThumbVerticalHeight(),
                    w = { height: b, transform: 'translateY(' + (v / (g - m)) * (y - b) + 'px)' }
                  if (r) {
                    var x = { visibility: u > a ? 'visible' : 'hidden' },
                      E = { visibility: g > m ? 'visible' : 'hidden' }
                    ;(0, s.default)(this.trackHorizontal, x), (0, s.default)(this.trackVertical, E)
                  }
                  ;(0, s.default)(this.thumbHorizontal, f), (0, s.default)(this.thumbVertical, w)
                }
                n && n(i), 'function' === typeof e && e(i)
              },
            },
            {
              key: 'render',
              value: function () {
                var e = this,
                  t = (0, d.default)(),
                  n = this.props,
                  i =
                    (n.onScroll,
                    n.onScrollFrame,
                    n.onScrollStart,
                    n.onScrollStop,
                    n.onUpdate,
                    n.renderView),
                  o = n.renderTrackHorizontal,
                  a = n.renderTrackVertical,
                  s = n.renderThumbHorizontal,
                  l = n.renderThumbVertical,
                  f = n.tagName,
                  h = (n.hideTracksWhenNotNeeded, n.autoHide),
                  p = (n.autoHideTimeout, n.autoHideDuration),
                  m = (n.thumbSize, n.thumbMinSize, n.universal),
                  g = n.autoHeight,
                  y = n.autoHeightMin,
                  b = n.autoHeightMax,
                  w = n.style,
                  x = n.children,
                  E = (function (e, t) {
                    var n = {}
                    for (var r in e)
                      t.indexOf(r) >= 0 ||
                        (Object.prototype.hasOwnProperty.call(e, r) && (n[r] = e[r]))
                    return n
                  })(n, [
                    'onScroll',
                    'onScrollFrame',
                    'onScrollStart',
                    'onScrollStop',
                    'onUpdate',
                    'renderView',
                    'renderTrackHorizontal',
                    'renderTrackVertical',
                    'renderThumbHorizontal',
                    'renderThumbVertical',
                    'tagName',
                    'hideTracksWhenNotNeeded',
                    'autoHide',
                    'autoHideTimeout',
                    'autoHideDuration',
                    'thumbSize',
                    'thumbMinSize',
                    'universal',
                    'autoHeight',
                    'autoHeightMin',
                    'autoHeightMax',
                    'style',
                    'children',
                  ]),
                  k = this.state.didMountUniversal,
                  _ = r(
                    {},
                    v.containerStyleDefault,
                    g && r({}, v.containerStyleAutoHeight, { minHeight: y, maxHeight: b }),
                    w,
                  ),
                  T = r(
                    {},
                    v.viewStyleDefault,
                    { marginRight: t ? -t : 0, marginBottom: t ? -t : 0 },
                    g &&
                      r({}, v.viewStyleAutoHeight, {
                        minHeight: (0, c.default)(y) ? 'calc(' + y + ' + ' + t + 'px)' : y + t,
                        maxHeight: (0, c.default)(b) ? 'calc(' + b + ' + ' + t + 'px)' : b + t,
                      }),
                    g && m && !k && { minHeight: y, maxHeight: b },
                    m && !k && v.viewStyleUniversalInitial,
                  ),
                  O = { transition: 'opacity ' + p + 'ms', opacity: 0 },
                  C = r(
                    {},
                    v.trackHorizontalStyleDefault,
                    h && O,
                    (!t || (m && !k)) && { display: 'none' },
                  ),
                  S = r(
                    {},
                    v.trackVerticalStyleDefault,
                    h && O,
                    (!t || (m && !k)) && { display: 'none' },
                  )
                return (0, u.createElement)(
                  f,
                  r({}, E, {
                    style: _,
                    ref: function (t) {
                      e.container = t
                    },
                  }),
                  [
                    (0, u.cloneElement)(
                      i({ style: T }),
                      {
                        key: 'view',
                        ref: function (t) {
                          e.view = t
                        },
                      },
                      x,
                    ),
                    (0, u.cloneElement)(
                      o({ style: C }),
                      {
                        key: 'trackHorizontal',
                        ref: function (t) {
                          e.trackHorizontal = t
                        },
                      },
                      (0, u.cloneElement)(s({ style: v.thumbHorizontalStyleDefault }), {
                        ref: function (t) {
                          e.thumbHorizontal = t
                        },
                      }),
                    ),
                    (0, u.cloneElement)(
                      a({ style: S }),
                      {
                        key: 'trackVertical',
                        ref: function (t) {
                          e.trackVertical = t
                        },
                      },
                      (0, u.cloneElement)(l({ style: v.thumbVerticalStyleDefault }), {
                        ref: function (t) {
                          e.thumbVertical = t
                        },
                      }),
                    ),
                  ],
                )
              },
            },
          ]),
          t
        )
      })(u.Component)
      ;(t.default = w),
        (w.propTypes = {
          onScroll: l.default.func,
          onScrollFrame: l.default.func,
          onScrollStart: l.default.func,
          onScrollStop: l.default.func,
          onUpdate: l.default.func,
          renderView: l.default.func,
          renderTrackHorizontal: l.default.func,
          renderTrackVertical: l.default.func,
          renderThumbHorizontal: l.default.func,
          renderThumbVertical: l.default.func,
          tagName: l.default.string,
          thumbSize: l.default.number,
          thumbMinSize: l.default.number,
          hideTracksWhenNotNeeded: l.default.bool,
          autoHide: l.default.bool,
          autoHideTimeout: l.default.number,
          autoHideDuration: l.default.number,
          autoHeight: l.default.bool,
          autoHeightMin: l.default.oneOfType([l.default.number, l.default.string]),
          autoHeightMax: l.default.oneOfType([l.default.number, l.default.string]),
          universal: l.default.bool,
          style: l.default.object,
          children: l.default.node,
        }),
        (w.defaultProps = {
          renderView: m.renderViewDefault,
          renderTrackHorizontal: m.renderTrackHorizontalDefault,
          renderTrackVertical: m.renderTrackVerticalDefault,
          renderThumbHorizontal: m.renderThumbHorizontalDefault,
          renderThumbVertical: m.renderThumbVerticalDefault,
          tagName: 'div',
          thumbMinSize: 30,
          hideTracksWhenNotNeeded: !1,
          autoHide: !1,
          autoHideTimeout: 1e3,
          autoHideDuration: 200,
          autoHeight: !1,
          autoHeightMin: 0,
          autoHeightMax: 200,
          universal: !1,
        })
    },
    8285: function (e, t) {
      'use strict'
      Object.defineProperty(t, '__esModule', { value: !0 })
      ;(t.containerStyleDefault = {
        position: 'relative',
        overflow: 'hidden',
        width: '100%',
        height: '100%',
      }),
        (t.containerStyleAutoHeight = { height: 'auto' }),
        (t.viewStyleDefault = {
          position: 'absolute',
          top: 0,
          left: 0,
          right: 0,
          bottom: 0,
          overflow: 'scroll',
          WebkitOverflowScrolling: 'touch',
        }),
        (t.viewStyleAutoHeight = {
          position: 'relative',
          top: void 0,
          left: void 0,
          right: void 0,
          bottom: void 0,
        }),
        (t.viewStyleUniversalInitial = { overflow: 'hidden', marginRight: 0, marginBottom: 0 }),
        (t.trackHorizontalStyleDefault = { position: 'absolute', height: 6 }),
        (t.trackVerticalStyleDefault = { position: 'absolute', width: 6 }),
        (t.thumbHorizontalStyleDefault = {
          position: 'relative',
          display: 'block',
          height: '100%',
        }),
        (t.thumbVerticalStyleDefault = { position: 'relative', display: 'block', width: '100%' }),
        (t.disableSelectStyle = { userSelect: 'none' }),
        (t.disableSelectStyleReset = { userSelect: '' })
    },
    6658: function (e, t, n) {
      'use strict'
      var r,
        i = n(6164),
        o = (r = i) && r.__esModule ? r : { default: r }
      ;(t.ZP = o.default), o.default
    },
    7114: function (e, t) {
      'use strict'
      Object.defineProperty(t, '__esModule', { value: !0 }),
        (t.default = function (e) {
          var t = e.clientHeight,
            n = getComputedStyle(e),
            r = n.paddingTop,
            i = n.paddingBottom
          return t - parseFloat(r) - parseFloat(i)
        })
    },
    1608: function (e, t) {
      'use strict'
      Object.defineProperty(t, '__esModule', { value: !0 }),
        (t.default = function (e) {
          var t = e.clientWidth,
            n = getComputedStyle(e),
            r = n.paddingLeft,
            i = n.paddingRight
          return t - parseFloat(r) - parseFloat(i)
        })
    },
    6445: function (e, t, n) {
      'use strict'
      Object.defineProperty(t, '__esModule', { value: !0 }),
        (t.default = function () {
          var e = !(arguments.length > 0 && void 0 !== arguments[0]) || arguments[0]
          if (e && !1 !== a) return a
          if ('undefined' !== typeof document) {
            var t = document.createElement('div')
            ;(0, o.default)(t, {
              width: 100,
              height: 100,
              position: 'absolute',
              top: -9999,
              overflow: 'scroll',
              MsOverflowStyle: 'scrollbar',
            }),
              document.body.appendChild(t),
              (a = t.offsetWidth - t.clientWidth),
              document.body.removeChild(t)
          } else a = 0
          return a || 0
        })
      var r,
        i = n(3879),
        o = (r = i) && r.__esModule ? r : { default: r }
      var a = !1
    },
    7928: function (e, t) {
      'use strict'
      Object.defineProperty(t, '__esModule', { value: !0 }),
        (t.default = function (e) {
          return 'string' === typeof e
        })
    },
    8309: function (e, t) {
      'use strict'
      Object.defineProperty(t, '__esModule', { value: !0 }),
        (t.default = function () {
          return !1
        })
    },
    9590: function (e) {
      var t = 'undefined' !== typeof Element,
        n = 'function' === typeof Map,
        r = 'function' === typeof Set,
        i = 'function' === typeof ArrayBuffer && !!ArrayBuffer.isView
      function o(e, a) {
        if (e === a) return !0
        if (e && a && 'object' == typeof e && 'object' == typeof a) {
          if (e.constructor !== a.constructor) return !1
          var s, u, l, c
          if (Array.isArray(e)) {
            if ((s = e.length) != a.length) return !1
            for (u = s; 0 !== u--; ) if (!o(e[u], a[u])) return !1
            return !0
          }
          if (n && e instanceof Map && a instanceof Map) {
            if (e.size !== a.size) return !1
            for (c = e.entries(); !(u = c.next()).done; ) if (!a.has(u.value[0])) return !1
            for (c = e.entries(); !(u = c.next()).done; )
              if (!o(u.value[1], a.get(u.value[0]))) return !1
            return !0
          }
          if (r && e instanceof Set && a instanceof Set) {
            if (e.size !== a.size) return !1
            for (c = e.entries(); !(u = c.next()).done; ) if (!a.has(u.value[0])) return !1
            return !0
          }
          if (i && ArrayBuffer.isView(e) && ArrayBuffer.isView(a)) {
            if ((s = e.length) != a.length) return !1
            for (u = s; 0 !== u--; ) if (e[u] !== a[u]) return !1
            return !0
          }
          if (e.constructor === RegExp) return e.source === a.source && e.flags === a.flags
          if (e.valueOf !== Object.prototype.valueOf) return e.valueOf() === a.valueOf()
          if (e.toString !== Object.prototype.toString) return e.toString() === a.toString()
          if ((s = (l = Object.keys(e)).length) !== Object.keys(a).length) return !1
          for (u = s; 0 !== u--; ) if (!Object.prototype.hasOwnProperty.call(a, l[u])) return !1
          if (t && e instanceof Element) return !1
          for (u = s; 0 !== u--; )
            if (
              (('_owner' !== l[u] && '__v' !== l[u] && '__o' !== l[u]) || !e.$$typeof) &&
              !o(e[l[u]], a[l[u]])
            )
              return !1
          return !0
        }
        return e !== e && a !== a
      }
      e.exports = function (e, t) {
        try {
          return o(e, t)
        } catch (n) {
          if ((n.message || '').match(/stack|recursion/i))
            return console.warn('react-fast-compare cannot handle circular refs'), !1
          throw n
        }
      }
    },
    1957: function (e, n, r) {
      'use strict'
      r.d(n, {
        f$: function () {
          return Bo
        },
        s6: function () {
          return Ho
        },
      })
      var i = r(7294)
      function o(e, t, n) {
        return (
          t in e
            ? Object.defineProperty(e, t, {
                value: n,
                enumerable: !0,
                configurable: !0,
                writable: !0,
              })
            : (e[t] = n),
          e
        )
      }
      function a(e, t) {
        return (
          (function (e) {
            if (Array.isArray(e)) return e
          })(e) ||
          (function (e, t) {
            var n = e && (('undefined' !== typeof Symbol && e[Symbol.iterator]) || e['@@iterator'])
            if (null == n) return
            var r,
              i,
              o = [],
              a = !0,
              s = !1
            try {
              for (
                n = n.call(e);
                !(a = (r = n.next()).done) && (o.push(r.value), !t || o.length !== t);
                a = !0
              );
            } catch (u) {
              ;(s = !0), (i = u)
            } finally {
              try {
                a || null == n.return || n.return()
              } finally {
                if (s) throw i
              }
            }
            return o
          })(e, t) ||
          u(e, t) ||
          (function () {
            throw new TypeError(
              'Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.',
            )
          })()
        )
      }
      function s(e) {
        return (
          (function (e) {
            if (Array.isArray(e)) return l(e)
          })(e) ||
          (function (e) {
            if (
              ('undefined' !== typeof Symbol && null != e[Symbol.iterator]) ||
              null != e['@@iterator']
            )
              return Array.from(e)
          })(e) ||
          u(e) ||
          (function () {
            throw new TypeError(
              'Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.',
            )
          })()
        )
      }
      function u(e, t) {
        if (e) {
          if ('string' === typeof e) return l(e, t)
          var n = Object.prototype.toString.call(e).slice(8, -1)
          return (
            'Object' === n && e.constructor && (n = e.constructor.name),
            'Map' === n || 'Set' === n
              ? Array.from(e)
              : 'Arguments' === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)
              ? l(e, t)
              : void 0
          )
        }
      }
      function l(e, t) {
        ;(null == t || t > e.length) && (t = e.length)
        for (var n = 0, r = new Array(t); n < t; n++) r[n] = e[n]
        return r
      }
      var c = function (e, t) {
          var n = new Set(t)
          return Object.assign.apply(
            Object,
            [{}].concat(
              s(
                Object.entries(e)
                  .filter(function (e) {
                    var t = a(e, 1)[0]
                    return !n.has(t)
                  })
                  .map(function (e) {
                    var t = a(e, 2)
                    return o({}, t[0], t[1])
                  }),
              ),
            ),
          )
        },
        d = r(3405),
        f = r.n(d)
      function h(e) {
        return (h =
          'function' === typeof Symbol && 'symbol' === typeof Symbol.iterator
            ? function (e) {
                return typeof e
              }
            : function (e) {
                return e &&
                  'function' === typeof Symbol &&
                  e.constructor === Symbol &&
                  e !== Symbol.prototype
                  ? 'symbol'
                  : typeof e
              })(e)
      }
      function p(e, t) {
        return (
          (function (e) {
            if (Array.isArray(e)) return e
          })(e) ||
          (function (e, t) {
            var n = e && (('undefined' !== typeof Symbol && e[Symbol.iterator]) || e['@@iterator'])
            if (null == n) return
            var r,
              i,
              o = [],
              a = !0,
              s = !1
            try {
              for (
                n = n.call(e);
                !(a = (r = n.next()).done) && (o.push(r.value), !t || o.length !== t);
                a = !0
              );
            } catch (u) {
              ;(s = !0), (i = u)
            } finally {
              try {
                a || null == n.return || n.return()
              } finally {
                if (s) throw i
              }
            }
            return o
          })(e, t) ||
          m(e, t) ||
          (function () {
            throw new TypeError(
              'Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.',
            )
          })()
        )
      }
      function v(e) {
        return (
          (function (e) {
            if (Array.isArray(e)) return g(e)
          })(e) ||
          (function (e) {
            if (
              ('undefined' !== typeof Symbol && null != e[Symbol.iterator]) ||
              null != e['@@iterator']
            )
              return Array.from(e)
          })(e) ||
          m(e) ||
          (function () {
            throw new TypeError(
              'Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.',
            )
          })()
        )
      }
      function m(e, t) {
        if (e) {
          if ('string' === typeof e) return g(e, t)
          var n = Object.prototype.toString.call(e).slice(8, -1)
          return (
            'Object' === n && e.constructor && (n = e.constructor.name),
            'Map' === n || 'Set' === n
              ? Array.from(e)
              : 'Arguments' === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)
              ? g(e, t)
              : void 0
          )
        }
      }
      function g(e, t) {
        ;(null == t || t > e.length) && (t = e.length)
        for (var n = 0, r = new Array(t); n < t; n++) r[n] = e[n]
        return r
      }
      var y = function (e, t) {
          var n =
              'object' === h(t)
                ? t
                : {
                    wrapperElementType: t,
                    methodNames: (arguments.length <= 2 ? void 0 : arguments[2]) || void 0,
                    initPropNames: (arguments.length <= 3 ? void 0 : arguments[3]) || void 0,
                  },
            r = n.wrapperElementType,
            o = void 0 === r ? 'div' : r,
            a = n.nodeMapper,
            s =
              void 0 === a
                ? function (e) {
                    return e
                  }
                : a,
            u = n.methodNames,
            l = void 0 === u ? [] : u,
            d = n.initPropNames,
            m = void 0 === d ? [] : d
          return (0, i.forwardRef)(function (t, n) {
            var r = (0, i.useRef)(),
              a = p((0, i.useState)({}), 2),
              u = a[0],
              d = a[1]
            ;(0, i.useEffect)(function () {
              return d(t)
            })
            var h = (0, i.useMemo)(function () {
              var n = f()(
                m
                  .filter(function (e) {
                    return t.hasOwnProperty(e)
                  })
                  .map(function (e) {
                    return [e, t[e]]
                  }),
              )
              return e(n)
            }, [])
            ;(0, i.useLayoutEffect)(function () {
              h(s(r.current))
            }, []),
              (0, i.useEffect)(function () {
                return h._destructor instanceof Function ? h._destructor : void 0
              }, [])
            var g = (0, i.useCallback)(
                function (e) {
                  for (
                    var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), r = 1;
                    r < t;
                    r++
                  )
                    n[r - 1] = arguments[r]
                  return h[e] instanceof Function ? h[e].apply(h, n) : void 0
                },
                [h],
              ),
              y = c(t, [].concat(v(l), v(m)))
            return (
              Object.keys(y)
                .filter(function (e) {
                  return u[e] !== t[e]
                })
                .forEach(function (e) {
                  return g(e, t[e])
                }),
              (0, i.useImperativeHandle)(n, function () {
                return f()(
                  l.map(function (e) {
                    return [
                      e,
                      function () {
                        for (var t = arguments.length, n = new Array(t), r = 0; r < t; r++)
                          n[r] = arguments[r]
                        return g.apply(void 0, [e].concat(n))
                      },
                    ]
                  }),
                )
              }),
              i.createElement(o, { ref: r })
            )
          })
        },
        b = (r(5569), r(401), r(1359), r(4858)),
        w = r(2539)
      function x(e, t) {
        var n = Object.keys(e)
        if (Object.getOwnPropertySymbols) {
          var r = Object.getOwnPropertySymbols(e)
          t &&
            (r = r.filter(function (t) {
              return Object.getOwnPropertyDescriptor(e, t).enumerable
            })),
            n.push.apply(n, r)
        }
        return n
      }
      function E(e) {
        for (var t = 1; t < arguments.length; t++) {
          var n = null != arguments[t] ? arguments[t] : {}
          t % 2
            ? x(Object(n), !0).forEach(function (t) {
                k(e, t, n[t])
              })
            : Object.getOwnPropertyDescriptors
            ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n))
            : x(Object(n)).forEach(function (t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t))
              })
        }
        return e
      }
      function k(e, t, n) {
        return (
          t in e
            ? Object.defineProperty(e, t, {
                value: n,
                enumerable: !0,
                configurable: !0,
                writable: !0,
              })
            : (e[t] = n),
          e
        )
      }
      function _(e, t) {
        return (
          (function (e) {
            if (Array.isArray(e)) return e
          })(e) ||
          (function (e, t) {
            var n =
              null == e
                ? null
                : ('undefined' !== typeof Symbol && e[Symbol.iterator]) || e['@@iterator']
            if (null == n) return
            var r,
              i,
              o = [],
              a = !0,
              s = !1
            try {
              for (
                n = n.call(e);
                !(a = (r = n.next()).done) && (o.push(r.value), !t || o.length !== t);
                a = !0
              );
            } catch (u) {
              ;(s = !0), (i = u)
            } finally {
              try {
                a || null == n.return || n.return()
              } finally {
                if (s) throw i
              }
            }
            return o
          })(e, t) ||
          O(e, t) ||
          (function () {
            throw new TypeError(
              'Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.',
            )
          })()
        )
      }
      function T(e) {
        return (
          (function (e) {
            if (Array.isArray(e)) return C(e)
          })(e) ||
          (function (e) {
            if (
              ('undefined' !== typeof Symbol && null != e[Symbol.iterator]) ||
              null != e['@@iterator']
            )
              return Array.from(e)
          })(e) ||
          O(e) ||
          (function () {
            throw new TypeError(
              'Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.',
            )
          })()
        )
      }
      function O(e, t) {
        if (e) {
          if ('string' === typeof e) return C(e, t)
          var n = Object.prototype.toString.call(e).slice(8, -1)
          return (
            'Object' === n && e.constructor && (n = e.constructor.name),
            'Map' === n || 'Set' === n
              ? Array.from(e)
              : 'Arguments' === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)
              ? C(e, t)
              : void 0
          )
        }
      }
      function C(e, t) {
        ;(null == t || t > e.length) && (t = e.length)
        for (var n = 0, r = new Array(t); n < t; n++) r[n] = e[n]
        return r
      }
      !(function (e, t) {
        void 0 === t && (t = {})
        var n = t.insertAt
        if (e && 'undefined' !== typeof document) {
          var r = document.head || document.getElementsByTagName('head')[0],
            i = document.createElement('style')
          ;(i.type = 'text/css'),
            'top' === n && r.firstChild ? r.insertBefore(i, r.firstChild) : r.appendChild(i),
            i.styleSheet ? (i.styleSheet.cssText = e) : i.appendChild(document.createTextNode(e))
        }
      })(
        '.graph-nav-info {\n  position: absolute;\n  bottom: 5px;\n  width: 100%;\n  text-align: center;\n  color: slategrey;\n  opacity: 0.7;\n  font-size: 10px;\n  font-family: Sans-serif;\n  z-index: 1000;\n}',
      )
      var S = (0, b.Z)({
          props: {
            width: {
              default: window.innerWidth,
              triggerUpdate: !1,
              onChange: function (e, t) {
                t.container && (t.container.style.width = e)
              },
            },
            height: {
              default: window.innerHeight,
              triggerUpdate: !1,
              onChange: function (e, t) {
                t.container && (t.container.style.height = e)
              },
            },
            jsonUrl: {},
            graphData: { default: { nodes: [], links: [] } },
            numDimensions: { default: 3 },
            dagMode: {},
            dagLevelDistance: {},
            dagNodeFilter: {
              default: function () {
                return !0
              },
            },
            onDagError: { default: void 0 },
            backgroundColor: { default: '#002' },
            showNavInfo: { default: !0 },
            nodeRelSize: { default: 4 },
            nodeId: { default: 'id' },
            nodeLabel: { default: 'name' },
            nodeDesc: { default: 'desc' },
            onNodeHover: {},
            onNodeClick: {},
            nodeVal: { default: 'val' },
            nodeResolution: { default: 8 },
            nodeVisibility: { default: !0 },
            nodeColor: { default: 'color' },
            nodeAutoColorBy: {},
            nodeOpacity: { default: 0.75 },
            nodeThreeObject: {},
            nodeThreeObjectExtend: { default: !1 },
            linkSource: { default: 'source' },
            linkTarget: { default: 'target' },
            linkLabel: { default: 'name' },
            linkDesc: { default: 'desc' },
            onLinkHover: {},
            onLinkClick: {},
            linkVisibility: { default: !0 },
            linkColor: { default: 'color' },
            linkAutoColorBy: {},
            linkOpacity: { default: 0.2 },
            linkWidth: { default: 0 },
            linkResolution: { default: 6 },
            linkCurvature: { default: 0 },
            linkCurveRotation: { default: 0 },
            linkMaterial: {},
            linkThreeObject: {},
            linkThreeObjectExtend: { default: !1 },
            linkPositionUpdate: {},
            linkDirectionalArrowLength: { default: 0 },
            linkDirectionalArrowColor: {},
            linkDirectionalArrowRelPos: { default: 0.5 },
            linkDirectionalArrowResolution: { default: 8 },
            linkDirectionalParticles: { default: 0 },
            linkDirectionalParticleSpeed: { default: 0.01 },
            linkDirectionalParticleWidth: { default: 0.5 },
            linkDirectionalParticleColor: {},
            linkDirectionalParticleResolution: { default: 4 },
            forceEngine: { default: 'd3' },
            d3AlphaMin: { default: 0 },
            d3AlphaDecay: { default: 0.0228 },
            d3VelocityDecay: { default: 0.4 },
            ngraphPhysics: {},
            warmupTicks: { default: 0 },
            cooldownTicks: {},
            cooldownTime: { default: 15e3 },
            onEngineTick: {},
            onEngineStop: {},
          },
          methods: E(
            E(
              {},
              Object.assign.apply(
                Object,
                [{}].concat(
                  T(
                    [
                      'getGraphBbox',
                      'emitParticle',
                      'd3Force',
                      'd3ReheatSimulation',
                      'refresh',
                    ].map(function (e) {
                      return k({}, e, function (t) {
                        for (
                          var n = t.forcegraph.components.forcegraph,
                            r = arguments.length,
                            i = new Array(r > 1 ? r - 1 : 0),
                            o = 1;
                          o < r;
                          o++
                        )
                          i[o - 1] = arguments[o]
                        var a = n[e].apply(n, i)
                        return a === n ? this : a
                      })
                    }),
                  ),
                ),
              ),
            ),
            {},
            {
              _destructor: function () {
                this.graphData({ nodes: [], links: [] })
              },
            },
          ),
          init: function (e, t) {
            ;(e.innerHTML = ''),
              (t.container = document.createElement('div')),
              e.appendChild(t.container),
              (t.container.style.position = 'relative'),
              (t.container.style.width = t.width),
              (t.container.style.height = t.height),
              t.container.appendChild((t.navInfo = document.createElement('div'))),
              (t.navInfo.className = 'graph-nav-info'),
              (t.navInfo.textContent = 'Mouse drag: look, gamepad/arrow/wasd keys: move')
            var n,
              r,
              i,
              o,
              a,
              s = document.createElement('a-scene')
            s.setAttribute('embedded', ''),
              s.appendChild((t.sky = document.createElement('a-sky'))),
              t.sky.setAttribute('radius', 3e3),
              s.appendChild((n = document.createElement('a-entity'))),
              n.setAttribute('position', '0 0 300'),
              n.setAttribute('movement-controls', 'fly: true; speed: 7'),
              n.appendChild((r = document.createElement('a-entity'))),
              r.setAttribute('camera', ''),
              r.setAttribute('position', '0 0 0'),
              r.setAttribute('look-controls', 'reverseMouseDrag: false; pointerLockEnabled: false'),
              r.appendChild((i = document.createElement('a-text'))),
              i.setAttribute('position', '0 -0.3 -1'),
              i.setAttribute('width', 2),
              i.setAttribute('align', 'center'),
              i.setAttribute('color', 'lavender'),
              i.setAttribute('value', ''),
              r.appendChild((o = document.createElement('a-text'))),
              o.setAttribute('position', '0 -0.4 -1'),
              o.setAttribute('width', 1.3),
              o.setAttribute('align', 'center'),
              o.setAttribute('color', 'lavender'),
              o.setAttribute('value', ''),
              s.appendChild((a = document.createElement('a-entity'))),
              a.setAttribute('cursor', 'rayOrigin: mouse; mouseCursorStylesEnabled: true'),
              a.setAttribute('raycaster', 'objects: [forcegraph]; interval: 100'),
              ['left', 'right'].forEach(function (e) {
                var t
                n.appendChild((t = document.createElement('a-entity'))),
                  t.setAttribute('laser-controls', 'hand: '.concat(e)),
                  t.setAttribute(
                    'raycaster',
                    'objects: [forcegraph]; interval: 100; lineColor: steelblue; lineOpacity: 0.85',
                  )
              }),
              s.appendChild((t.forcegraph = document.createElement('a-entity'))),
              t.forcegraph.setAttribute('forcegraph', null),
              t.container.appendChild(s),
              t.forcegraph.setAttribute(
                'forcegraph',
                Object.assign.apply(
                  Object,
                  T(
                    ['node', 'link'].map(function (e) {
                      var n = { node: 'Node', link: 'Link' }[e]
                      return k({}, 'on'.concat(n, 'Hover'), function (r, a) {
                        var s = (r && (0, w.default)(t[''.concat(e, 'Label')])(r)) || '',
                          u = (r && (0, w.default)(t[''.concat(e, 'Desc')])(r)) || ''
                        i.setAttribute('value', s),
                          o.setAttribute('value', u),
                          t['on'.concat(n, 'Hover')] && t['on'.concat(n, 'Hover')](r, a)
                      })
                    }),
                  ),
                ),
              )
          },
          update: function (e, t) {
            t.hasOwnProperty('backgroundColor') && e.sky.setAttribute('color', e.backgroundColor),
              t.hasOwnProperty('showNavInfo') &&
                (e.navInfo.style.display = e.showNavInfo ? null : 'none')
            var n = [
                'jsonUrl',
                'numDimensions',
                'dagMode',
                'dagLevelDistance',
                'dagNodeFilter',
                'onDagError',
                'nodeRelSize',
                'nodeId',
                'onNodeClick',
                'nodeVal',
                'nodeResolution',
                'nodeVisibility',
                'nodeColor',
                'nodeAutoColorBy',
                'nodeOpacity',
                'nodeThreeObject',
                'nodeThreeObjectExtend',
                'linkSource',
                'linkTarget',
                'onLinkClick',
                'linkVisibility',
                'linkColor',
                'linkAutoColorBy',
                'linkOpacity',
                'linkWidth',
                'linkResolution',
                'linkCurvature',
                'linkCurveRotation',
                'linkMaterial',
                'linkThreeObject',
                'linkThreeObjectExtend',
                'linkPositionUpdate',
                'linkDirectionalArrowLength',
                'linkDirectionalArrowColor',
                'linkDirectionalArrowRelPos',
                'linkDirectionalArrowResolution',
                'linkDirectionalParticles',
                'linkDirectionalParticleSpeed',
                'linkDirectionalParticleWidth',
                'linkDirectionalParticleColor',
                'linkDirectionalParticleResolution',
                'forceEngine',
                'd3AlphaMin',
                'd3AlphaDecay',
                'd3VelocityDecay',
                'ngraphPhysics',
                'warmupTicks',
                'cooldownTicks',
                'cooldownTime',
                'onEngineTick',
                'onEngineStop',
              ],
              r = Object.assign.apply(
                Object,
                [{}].concat(
                  T(
                    Object.entries(e)
                      .filter(function (e) {
                        var r = _(e, 2),
                          i = r[0],
                          o = r[1]
                        return (
                          t.hasOwnProperty(i) && -1 !== n.indexOf(i) && void 0 !== o && null !== o
                        )
                      })
                      .map(function (e) {
                        var t = _(e, 2)
                        return k({}, t[0], t[1])
                      }),
                  ),
                  T(
                    Object.entries(e.graphData).map(function (e) {
                      var t = _(e, 2)
                      return k({}, t[0], t[1])
                    }),
                  ),
                ),
              )
            e.forcegraph.setAttribute('forcegraph', r)
          },
        }),
        A = r(5697),
        P = r.n(A)
      function M(e, t) {
        var n = Object.keys(e)
        if (Object.getOwnPropertySymbols) {
          var r = Object.getOwnPropertySymbols(e)
          t &&
            (r = r.filter(function (t) {
              return Object.getOwnPropertyDescriptor(e, t).enumerable
            })),
            n.push.apply(n, r)
        }
        return n
      }
      function R(e) {
        for (var t = 1; t < arguments.length; t++) {
          var n = null != arguments[t] ? arguments[t] : {}
          t % 2
            ? M(Object(n), !0).forEach(function (t) {
                j(e, t, n[t])
              })
            : Object.getOwnPropertyDescriptors
            ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n))
            : M(Object(n)).forEach(function (t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t))
              })
        }
        return e
      }
      function j(e, t, n) {
        return (
          t in e
            ? Object.defineProperty(e, t, {
                value: n,
                enumerable: !0,
                configurable: !0,
                writable: !0,
              })
            : (e[t] = n),
          e
        )
      }
      function D(e, t) {
        return (
          (function (e) {
            if (Array.isArray(e)) return e
          })(e) ||
          (function (e, t) {
            var n =
              null == e
                ? null
                : ('undefined' !== typeof Symbol && e[Symbol.iterator]) || e['@@iterator']
            if (null == n) return
            var r,
              i,
              o = [],
              a = !0,
              s = !1
            try {
              for (
                n = n.call(e);
                !(a = (r = n.next()).done) && (o.push(r.value), !t || o.length !== t);
                a = !0
              );
            } catch (u) {
              ;(s = !0), (i = u)
            } finally {
              try {
                a || null == n.return || n.return()
              } finally {
                if (s) throw i
              }
            }
            return o
          })(e, t) ||
          N(e, t) ||
          (function () {
            throw new TypeError(
              'Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.',
            )
          })()
        )
      }
      function L(e) {
        return (
          (function (e) {
            if (Array.isArray(e)) return I(e)
          })(e) ||
          (function (e) {
            if (
              ('undefined' !== typeof Symbol && null != e[Symbol.iterator]) ||
              null != e['@@iterator']
            )
              return Array.from(e)
          })(e) ||
          N(e) ||
          (function () {
            throw new TypeError(
              'Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.',
            )
          })()
        )
      }
      function N(e, t) {
        if (e) {
          if ('string' === typeof e) return I(e, t)
          var n = Object.prototype.toString.call(e).slice(8, -1)
          return (
            'Object' === n && e.constructor && (n = e.constructor.name),
            'Map' === n || 'Set' === n
              ? Array.from(e)
              : 'Arguments' === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)
              ? I(e, t)
              : void 0
          )
        }
      }
      function I(e, t) {
        ;(null == t || t > e.length) && (t = e.length)
        for (var n = 0, r = new Array(t); n < t; n++) r[n] = e[n]
        return r
      }
      var z = (0, b.Z)({
          props: {
            width: {},
            height: {},
            yOffset: { default: 1.5 },
            glScale: { default: 200 },
            jsonUrl: {},
            graphData: { default: { nodes: [], links: [] } },
            numDimensions: { default: 3 },
            dagMode: {},
            dagLevelDistance: {},
            dagNodeFilter: {
              default: function () {
                return !0
              },
            },
            onDagError: { default: void 0 },
            nodeRelSize: { default: 4 },
            nodeId: { default: 'id' },
            nodeVal: { default: 'val' },
            nodeResolution: { default: 8 },
            nodeVisibility: { default: !0 },
            nodeColor: { default: 'color' },
            nodeAutoColorBy: {},
            nodeOpacity: { default: 0.75 },
            nodeThreeObject: {},
            nodeThreeObjectExtend: { default: !1 },
            linkSource: { default: 'source' },
            linkTarget: { default: 'target' },
            linkVisibility: { default: !0 },
            linkColor: { default: 'color' },
            linkAutoColorBy: {},
            linkOpacity: { default: 0.2 },
            linkWidth: { default: 0 },
            linkResolution: { default: 6 },
            linkCurvature: { default: 0 },
            linkCurveRotation: { default: 0 },
            linkMaterial: {},
            linkThreeObject: {},
            linkThreeObjectExtend: { default: !1 },
            linkPositionUpdate: {},
            linkDirectionalArrowLength: { default: 0 },
            linkDirectionalArrowColor: {},
            linkDirectionalArrowRelPos: { default: 0.5 },
            linkDirectionalArrowResolution: { default: 8 },
            linkDirectionalParticles: { default: 0 },
            linkDirectionalParticleSpeed: { default: 0.01 },
            linkDirectionalParticleWidth: { default: 0.5 },
            linkDirectionalParticleColor: {},
            linkDirectionalParticleResolution: { default: 4 },
            onNodeHover: {},
            onNodeClick: {},
            onLinkHover: {},
            onLinkClick: {},
            forceEngine: { default: 'd3' },
            d3AlphaMin: { default: 0 },
            d3AlphaDecay: { default: 0.0228 },
            d3VelocityDecay: { default: 0.4 },
            ngraphPhysics: {},
            warmupTicks: { default: 0 },
            cooldownTicks: {},
            cooldownTime: { default: 15e3 },
            onEngineTick: {},
            onEngineStop: {},
          },
          methods: R(
            R(
              {},
              Object.assign.apply(
                Object,
                [{}].concat(
                  L(
                    [
                      'getGraphBbox',
                      'emitParticle',
                      'd3Force',
                      'd3ReheatSimulation',
                      'refresh',
                    ].map(function (e) {
                      return j({}, e, function (t) {
                        for (
                          var n = t.forcegraph.components.forcegraph,
                            r = arguments.length,
                            i = new Array(r > 1 ? r - 1 : 0),
                            o = 1;
                          o < r;
                          o++
                        )
                          i[o - 1] = arguments[o]
                        var a = n[e].apply(n, i)
                        return a === n ? this : a
                      })
                    }),
                  ),
                ),
              ),
            ),
            {},
            {
              _destructor: function () {
                this.graphData({ nodes: [], links: [] })
              },
            },
          ),
          init: function (e, t) {
            var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
              r = n.markerAttrs,
              i = void 0 === r ? { preset: 'hiro' } : r
            ;(e.innerHTML = ''),
              (t.container = document.createElement('div')),
              e.appendChild(t.container)
            var o = document.createElement('a-scene')
            o.setAttribute('embedded', ''), o.setAttribute('arjs', 'debugUIEnabled: false;')
            var a,
              s = document.createElement('a-marker')
            Object.entries(i).forEach(function (e) {
              var t = D(e, 2),
                n = t[0],
                r = t[1]
              return s.setAttribute(n, r)
            }),
              o.appendChild(s),
              o.appendChild((a = document.createElement('a-entity'))),
              a.setAttribute('cursor'),
              a.setAttribute('raycaster', 'objects: [forcegraph]'),
              (t.forcegraph = document.createElement('a-entity')),
              t.forcegraph.setAttribute('forcegraph', null),
              s.appendChild(t.forcegraph)
            var u = document.createElement('a-entity')
            u.setAttribute('camera', ''), o.appendChild(u), t.container.appendChild(o)
          },
          update: function (e, t) {
            t.hasOwnProperty('width') && e.width && (e.container.style.width = e.width),
              t.hasOwnProperty('height') && e.height && (e.container.style.height = e.height),
              t.hasOwnProperty('glScale') &&
                e.forcegraph.setAttribute(
                  'scale',
                  L(new Array(3))
                    .map(function () {
                      return 1 / e.glScale
                    })
                    .join(' '),
                ),
              t.hasOwnProperty('yOffset') &&
                e.forcegraph.setAttribute('position', '0 '.concat(e.yOffset, ' 0'))
            var n = [
                'jsonUrl',
                'numDimensions',
                'dagMode',
                'dagLevelDistance',
                'dagNodeFilter',
                'onDagError',
                'nodeRelSize',
                'nodeId',
                'nodeVal',
                'nodeResolution',
                'nodeVisibility',
                'nodeColor',
                'nodeAutoColorBy',
                'nodeOpacity',
                'nodeThreeObject',
                'nodeThreeObjectExtend',
                'linkSource',
                'linkTarget',
                'linkVisibility',
                'linkColor',
                'linkAutoColorBy',
                'linkOpacity',
                'linkWidth',
                'linkResolution',
                'linkCurvature',
                'linkCurveRotation',
                'linkMaterial',
                'linkThreeObject',
                'linkThreeObjectExtend',
                'linkPositionUpdate',
                'linkDirectionalArrowLength',
                'linkDirectionalArrowColor',
                'linkDirectionalArrowRelPos',
                'linkDirectionalArrowResolution',
                'linkDirectionalParticles',
                'linkDirectionalParticleSpeed',
                'linkDirectionalParticleWidth',
                'linkDirectionalParticleColor',
                'linkDirectionalParticleResolution',
                'onNodeHover',
                'onNodeClick',
                'onLinkHover',
                'onLinkClick',
                'forceEngine',
                'd3AlphaMin',
                'd3AlphaDecay',
                'd3VelocityDecay',
                'ngraphPhysics',
                'warmupTicks',
                'cooldownTicks',
                'cooldownTime',
                'onEngineTick',
                'onEngineStop',
              ],
              r = Object.assign.apply(
                Object,
                [{}].concat(
                  L(
                    Object.entries(e)
                      .filter(function (e) {
                        var r = D(e, 2),
                          i = r[0],
                          o = r[1]
                        return (
                          t.hasOwnProperty(i) && -1 !== n.indexOf(i) && void 0 !== o && null !== o
                        )
                      })
                      .map(function (e) {
                        var t = D(e, 2)
                        return j({}, t[0], t[1])
                      }),
                  ),
                  L(
                    Object.entries(e.graphData).map(function (e) {
                      var t = D(e, 2)
                      return j({}, t[0], t[1])
                    }),
                  ),
                ),
              )
            e.forcegraph.setAttribute('forcegraph', r)
          },
        }),
        H = r(2212)
      const B = new H.JOQ(),
        F = new H.iMs(),
        V = new H.FM8(),
        U = new H.Pa4(),
        G = new H.Pa4(),
        q = new H.Pa4(),
        W = new H.yGw()
      class K extends H.pBf {
        constructor(e, t, n) {
          super(), (n.style.touchAction = 'none')
          let r = null,
            i = null
          const o = [],
            a = this
          function s() {
            n.addEventListener('pointermove', l),
              n.addEventListener('pointerdown', c),
              n.addEventListener('pointerup', d),
              n.addEventListener('pointerleave', d)
          }
          function u() {
            n.removeEventListener('pointermove', l),
              n.removeEventListener('pointerdown', c),
              n.removeEventListener('pointerup', d),
              n.removeEventListener('pointerleave', d),
              (n.style.cursor = '')
          }
          function l(s) {
            if (!1 !== a.enabled) {
              if ((f(s), F.setFromCamera(V, t), r))
                return (
                  F.ray.intersectPlane(B, G) && r.position.copy(G.sub(U).applyMatrix4(W)),
                  void a.dispatchEvent({ type: 'drag', object: r })
                )
              if ('mouse' === s.pointerType || 'pen' === s.pointerType)
                if (
                  ((o.length = 0),
                  F.setFromCamera(V, t),
                  F.intersectObjects(e, !0, o),
                  o.length > 0)
                ) {
                  const e = o[0].object
                  B.setFromNormalAndCoplanarPoint(
                    t.getWorldDirection(B.normal),
                    q.setFromMatrixPosition(e.matrixWorld),
                  ),
                    i !== e &&
                      null !== i &&
                      (a.dispatchEvent({ type: 'hoveroff', object: i }),
                      (n.style.cursor = 'auto'),
                      (i = null)),
                    i !== e &&
                      (a.dispatchEvent({ type: 'hoveron', object: e }),
                      (n.style.cursor = 'pointer'),
                      (i = e))
                } else
                  null !== i &&
                    (a.dispatchEvent({ type: 'hoveroff', object: i }),
                    (n.style.cursor = 'auto'),
                    (i = null))
            }
          }
          function c(i) {
            !1 !== a.enabled &&
              (f(i),
              (o.length = 0),
              F.setFromCamera(V, t),
              F.intersectObjects(e, !0, o),
              o.length > 0 &&
                ((r = !0 === a.transformGroup ? e[0] : o[0].object),
                B.setFromNormalAndCoplanarPoint(
                  t.getWorldDirection(B.normal),
                  q.setFromMatrixPosition(r.matrixWorld),
                ),
                F.ray.intersectPlane(B, G) &&
                  (W.copy(r.parent.matrixWorld).invert(),
                  U.copy(G).sub(q.setFromMatrixPosition(r.matrixWorld))),
                (n.style.cursor = 'move'),
                a.dispatchEvent({ type: 'dragstart', object: r })))
          }
          function d() {
            !1 !== a.enabled &&
              (r && (a.dispatchEvent({ type: 'dragend', object: r }), (r = null)),
              (n.style.cursor = i ? 'pointer' : 'auto'))
          }
          function f(e) {
            const t = n.getBoundingClientRect()
            ;(V.x = ((e.clientX - t.left) / t.width) * 2 - 1),
              (V.y = (-(e.clientY - t.top) / t.height) * 2 + 1)
          }
          s(),
            (this.enabled = !0),
            (this.transformGroup = !1),
            (this.activate = s),
            (this.deactivate = u),
            (this.dispose = function () {
              u()
            }),
            (this.getObjects = function () {
              return e
            })
        }
      }
      var Z = r(1398)
      const $ = { type: 'change' },
        X = { type: 'start' },
        Y = { type: 'end' }
      class Q extends H.pBf {
        constructor(e, t) {
          super(),
            void 0 === t &&
              console.warn(
                'THREE.TrackballControls: The second parameter "domElement" is now mandatory.',
              ),
            t === document &&
              console.error(
                'THREE.TrackballControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.',
              )
          const n = this,
            r = -1,
            i = 0,
            o = 1,
            a = 2,
            s = 3,
            u = 4
          ;(this.object = e),
            (this.domElement = t),
            (this.domElement.style.touchAction = 'none'),
            (this.enabled = !0),
            (this.screen = { left: 0, top: 0, width: 0, height: 0 }),
            (this.rotateSpeed = 1),
            (this.zoomSpeed = 1.2),
            (this.panSpeed = 0.3),
            (this.noRotate = !1),
            (this.noZoom = !1),
            (this.noPan = !1),
            (this.staticMoving = !1),
            (this.dynamicDampingFactor = 0.2),
            (this.minDistance = 0),
            (this.maxDistance = 1 / 0),
            (this.keys = ['KeyA', 'KeyS', 'KeyD']),
            (this.mouseButtons = { LEFT: H.RsA.ROTATE, MIDDLE: H.RsA.DOLLY, RIGHT: H.RsA.PAN }),
            (this.target = new H.Pa4())
          const l = 1e-6,
            c = new H.Pa4()
          let d = 1,
            f = r,
            h = r,
            p = 0,
            v = 0,
            m = 0
          const g = new H.Pa4(),
            y = new H.FM8(),
            b = new H.FM8(),
            w = new H.Pa4(),
            x = new H.FM8(),
            E = new H.FM8(),
            k = new H.FM8(),
            _ = new H.FM8(),
            T = [],
            O = {}
          ;(this.target0 = this.target.clone()),
            (this.position0 = this.object.position.clone()),
            (this.up0 = this.object.up.clone()),
            (this.zoom0 = this.object.zoom),
            (this.handleResize = function () {
              const e = n.domElement.getBoundingClientRect(),
                t = n.domElement.ownerDocument.documentElement
              ;(n.screen.left = e.left + window.pageXOffset - t.clientLeft),
                (n.screen.top = e.top + window.pageYOffset - t.clientTop),
                (n.screen.width = e.width),
                (n.screen.height = e.height)
            })
          const C = (function () {
              const e = new H.FM8()
              return function (t, r) {
                return (
                  e.set((t - n.screen.left) / n.screen.width, (r - n.screen.top) / n.screen.height),
                  e
                )
              }
            })(),
            S = (function () {
              const e = new H.FM8()
              return function (t, r) {
                return (
                  e.set(
                    (t - 0.5 * n.screen.width - n.screen.left) / (0.5 * n.screen.width),
                    (n.screen.height + 2 * (n.screen.top - r)) / n.screen.width,
                  ),
                  e
                )
              }
            })()
          function A(e) {
            !1 !== n.enabled &&
              (0 === T.length &&
                (n.domElement.ownerDocument.addEventListener('pointermove', P),
                n.domElement.ownerDocument.addEventListener('pointerup', M)),
              (function (e) {
                T.push(e)
              })(e),
              'touch' === e.pointerType
                ? (function (e) {
                    switch ((z(e), T.length)) {
                      case 1:
                        ;(f = s), b.copy(S(T[0].pageX, T[0].pageY)), y.copy(b)
                        break
                      default:
                        f = u
                        const e = T[0].pageX - T[1].pageX,
                          t = T[0].pageY - T[1].pageY
                        v = p = Math.sqrt(e * e + t * t)
                        const n = (T[0].pageX + T[1].pageX) / 2,
                          r = (T[0].pageY + T[1].pageY) / 2
                        k.copy(C(n, r)), _.copy(k)
                    }
                    n.dispatchEvent(X)
                  })(e)
                : (function (e) {
                    if (f === r)
                      switch (e.button) {
                        case n.mouseButtons.LEFT:
                          f = i
                          break
                        case n.mouseButtons.MIDDLE:
                          f = o
                          break
                        case n.mouseButtons.RIGHT:
                          f = a
                          break
                        default:
                          f = r
                      }
                    const t = h !== r ? h : f
                    t !== i || n.noRotate
                      ? t !== o || n.noZoom
                        ? t !== a || n.noPan || (k.copy(C(e.pageX, e.pageY)), _.copy(k))
                        : (x.copy(C(e.pageX, e.pageY)), E.copy(x))
                      : (b.copy(S(e.pageX, e.pageY)), y.copy(b))
                    n.domElement.ownerDocument.addEventListener('pointermove', P),
                      n.domElement.ownerDocument.addEventListener('pointerup', M),
                      n.dispatchEvent(X)
                  })(e))
          }
          function P(e) {
            !1 !== n.enabled &&
              ('touch' === e.pointerType
                ? (function (e) {
                    switch ((z(e), T.length)) {
                      case 1:
                        y.copy(b), b.copy(S(e.pageX, e.pageY))
                        break
                      default:
                        const t = (function (e) {
                            const t = e.pointerId === T[0].pointerId ? T[1] : T[0]
                            return O[t.pointerId]
                          })(e),
                          n = e.pageX - t.x,
                          r = e.pageY - t.y
                        v = Math.sqrt(n * n + r * r)
                        const i = (e.pageX + t.x) / 2,
                          o = (e.pageY + t.y) / 2
                        _.copy(C(i, o))
                    }
                  })(e)
                : (function (e) {
                    const t = h !== r ? h : f
                    t !== i || n.noRotate
                      ? t !== o || n.noZoom
                        ? t !== a || n.noPan || _.copy(C(e.pageX, e.pageY))
                        : E.copy(C(e.pageX, e.pageY))
                      : (y.copy(b), b.copy(S(e.pageX, e.pageY)))
                  })(e))
          }
          function M(e) {
            !1 !== n.enabled &&
              ('touch' === e.pointerType
                ? (function (e) {
                    switch (T.length) {
                      case 0:
                        f = r
                        break
                      case 1:
                        ;(f = s), b.copy(S(e.pageX, e.pageY)), y.copy(b)
                    }
                    n.dispatchEvent(Y)
                  })(e)
                : ((f = r),
                  n.domElement.ownerDocument.removeEventListener('pointermove', P),
                  n.domElement.ownerDocument.removeEventListener('pointerup', M),
                  n.dispatchEvent(Y)),
              I(e),
              0 === T.length &&
                (n.domElement.ownerDocument.removeEventListener('pointermove', P),
                n.domElement.ownerDocument.removeEventListener('pointerup', M)))
          }
          function R(e) {
            I(e)
          }
          function j(e) {
            !1 !== n.enabled &&
              (window.removeEventListener('keydown', j),
              h === r &&
                (e.code !== n.keys[i] || n.noRotate
                  ? e.code !== n.keys[o] || n.noZoom
                    ? e.code !== n.keys[a] || n.noPan || (h = a)
                    : (h = o)
                  : (h = i)))
          }
          function D() {
            !1 !== n.enabled && ((h = r), window.addEventListener('keydown', j))
          }
          function L(e) {
            if (!1 !== n.enabled && !0 !== n.noZoom) {
              switch ((e.preventDefault(), e.deltaMode)) {
                case 2:
                  x.y -= 0.025 * e.deltaY
                  break
                case 1:
                  x.y -= 0.01 * e.deltaY
                  break
                default:
                  x.y -= 25e-5 * e.deltaY
              }
              n.dispatchEvent(X), n.dispatchEvent(Y)
            }
          }
          function N(e) {
            !1 !== n.enabled && e.preventDefault()
          }
          function I(e) {
            delete O[e.pointerId]
            for (let t = 0; t < T.length; t++)
              if (T[t].pointerId == e.pointerId) return void T.splice(t, 1)
          }
          function z(e) {
            let t = O[e.pointerId]
            void 0 === t && ((t = new H.FM8()), (O[e.pointerId] = t)), t.set(e.pageX, e.pageY)
          }
          ;(this.rotateCamera = (function () {
            const e = new H.Pa4(),
              t = new H._fP(),
              r = new H.Pa4(),
              i = new H.Pa4(),
              o = new H.Pa4(),
              a = new H.Pa4()
            return function () {
              a.set(b.x - y.x, b.y - y.y, 0)
              let s = a.length()
              s
                ? (g.copy(n.object.position).sub(n.target),
                  r.copy(g).normalize(),
                  i.copy(n.object.up).normalize(),
                  o.crossVectors(i, r).normalize(),
                  i.setLength(b.y - y.y),
                  o.setLength(b.x - y.x),
                  a.copy(i.add(o)),
                  e.crossVectors(a, g).normalize(),
                  (s *= n.rotateSpeed),
                  t.setFromAxisAngle(e, s),
                  g.applyQuaternion(t),
                  n.object.up.applyQuaternion(t),
                  w.copy(e),
                  (m = s))
                : !n.staticMoving &&
                  m &&
                  ((m *= Math.sqrt(1 - n.dynamicDampingFactor)),
                  g.copy(n.object.position).sub(n.target),
                  t.setFromAxisAngle(w, m),
                  g.applyQuaternion(t),
                  n.object.up.applyQuaternion(t)),
                y.copy(b)
            }
          })()),
            (this.zoomCamera = function () {
              let e
              f === u
                ? ((e = p / v),
                  (p = v),
                  n.object.isPerspectiveCamera
                    ? g.multiplyScalar(e)
                    : n.object.isOrthographicCamera
                    ? ((n.object.zoom *= e), n.object.updateProjectionMatrix())
                    : console.warn('THREE.TrackballControls: Unsupported camera type'))
                : ((e = 1 + (E.y - x.y) * n.zoomSpeed),
                  1 !== e &&
                    e > 0 &&
                    (n.object.isPerspectiveCamera
                      ? g.multiplyScalar(e)
                      : n.object.isOrthographicCamera
                      ? ((n.object.zoom /= e), n.object.updateProjectionMatrix())
                      : console.warn('THREE.TrackballControls: Unsupported camera type')),
                  n.staticMoving ? x.copy(E) : (x.y += (E.y - x.y) * this.dynamicDampingFactor))
            }),
            (this.panCamera = (function () {
              const e = new H.FM8(),
                t = new H.Pa4(),
                r = new H.Pa4()
              return function () {
                if ((e.copy(_).sub(k), e.lengthSq())) {
                  if (n.object.isOrthographicCamera) {
                    const t =
                        (n.object.right - n.object.left) / n.object.zoom / n.domElement.clientWidth,
                      r =
                        (n.object.top - n.object.bottom) / n.object.zoom / n.domElement.clientWidth
                    ;(e.x *= t), (e.y *= r)
                  }
                  e.multiplyScalar(g.length() * n.panSpeed),
                    r.copy(g).cross(n.object.up).setLength(e.x),
                    r.add(t.copy(n.object.up).setLength(e.y)),
                    n.object.position.add(r),
                    n.target.add(r),
                    n.staticMoving
                      ? k.copy(_)
                      : k.add(e.subVectors(_, k).multiplyScalar(n.dynamicDampingFactor))
                }
              }
            })()),
            (this.checkDistances = function () {
              ;(n.noZoom && n.noPan) ||
                (g.lengthSq() > n.maxDistance * n.maxDistance &&
                  (n.object.position.addVectors(n.target, g.setLength(n.maxDistance)), x.copy(E)),
                g.lengthSq() < n.minDistance * n.minDistance &&
                  (n.object.position.addVectors(n.target, g.setLength(n.minDistance)), x.copy(E)))
            }),
            (this.update = function () {
              g.subVectors(n.object.position, n.target),
                n.noRotate || n.rotateCamera(),
                n.noZoom || n.zoomCamera(),
                n.noPan || n.panCamera(),
                n.object.position.addVectors(n.target, g),
                n.object.isPerspectiveCamera
                  ? (n.checkDistances(),
                    n.object.lookAt(n.target),
                    c.distanceToSquared(n.object.position) > l &&
                      (n.dispatchEvent($), c.copy(n.object.position)))
                  : n.object.isOrthographicCamera
                  ? (n.object.lookAt(n.target),
                    (c.distanceToSquared(n.object.position) > l || d !== n.object.zoom) &&
                      (n.dispatchEvent($), c.copy(n.object.position), (d = n.object.zoom)))
                  : console.warn('THREE.TrackballControls: Unsupported camera type')
            }),
            (this.reset = function () {
              ;(f = r),
                (h = r),
                n.target.copy(n.target0),
                n.object.position.copy(n.position0),
                n.object.up.copy(n.up0),
                (n.object.zoom = n.zoom0),
                n.object.updateProjectionMatrix(),
                g.subVectors(n.object.position, n.target),
                n.object.lookAt(n.target),
                n.dispatchEvent($),
                c.copy(n.object.position),
                (d = n.object.zoom)
            }),
            (this.dispose = function () {
              n.domElement.removeEventListener('contextmenu', N),
                n.domElement.removeEventListener('pointerdown', A),
                n.domElement.removeEventListener('pointercancel', R),
                n.domElement.removeEventListener('wheel', L),
                window.removeEventListener('keydown', j),
                window.removeEventListener('keyup', D)
            }),
            this.domElement.addEventListener('contextmenu', N),
            this.domElement.addEventListener('pointerdown', A),
            this.domElement.addEventListener('pointercancel', R),
            this.domElement.addEventListener('wheel', L, { passive: !1 }),
            window.addEventListener('keydown', j),
            window.addEventListener('keyup', D),
            this.handleResize(),
            this.update()
        }
      }
      const J = { type: 'change' },
        ee = { type: 'start' },
        te = { type: 'end' }
      class ne extends H.pBf {
        constructor(e, t) {
          super(),
            void 0 === t &&
              console.warn(
                'THREE.OrbitControls: The second parameter "domElement" is now mandatory.',
              ),
            t === document &&
              console.error(
                'THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.',
              ),
            (this.object = e),
            (this.domElement = t),
            (this.domElement.style.touchAction = 'none'),
            (this.enabled = !0),
            (this.target = new H.Pa4()),
            (this.minDistance = 0),
            (this.maxDistance = 1 / 0),
            (this.minZoom = 0),
            (this.maxZoom = 1 / 0),
            (this.minPolarAngle = 0),
            (this.maxPolarAngle = Math.PI),
            (this.minAzimuthAngle = -1 / 0),
            (this.maxAzimuthAngle = 1 / 0),
            (this.enableDamping = !1),
            (this.dampingFactor = 0.05),
            (this.enableZoom = !0),
            (this.zoomSpeed = 1),
            (this.enableRotate = !0),
            (this.rotateSpeed = 1),
            (this.enablePan = !0),
            (this.panSpeed = 1),
            (this.screenSpacePanning = !0),
            (this.keyPanSpeed = 7),
            (this.autoRotate = !1),
            (this.autoRotateSpeed = 2),
            (this.keys = {
              LEFT: 'ArrowLeft',
              UP: 'ArrowUp',
              RIGHT: 'ArrowRight',
              BOTTOM: 'ArrowDown',
            }),
            (this.mouseButtons = { LEFT: H.RsA.ROTATE, MIDDLE: H.RsA.DOLLY, RIGHT: H.RsA.PAN }),
            (this.touches = { ONE: H.QmN.ROTATE, TWO: H.QmN.DOLLY_PAN }),
            (this.target0 = this.target.clone()),
            (this.position0 = this.object.position.clone()),
            (this.zoom0 = this.object.zoom),
            (this._domElementKeyEvents = null),
            (this.getPolarAngle = function () {
              return a.phi
            }),
            (this.getAzimuthalAngle = function () {
              return a.theta
            }),
            (this.listenToKeyEvents = function (e) {
              e.addEventListener('keydown', G), (this._domElementKeyEvents = e)
            }),
            (this.saveState = function () {
              n.target0.copy(n.target),
                n.position0.copy(n.object.position),
                (n.zoom0 = n.object.zoom)
            }),
            (this.reset = function () {
              n.target.copy(n.target0),
                n.object.position.copy(n.position0),
                (n.object.zoom = n.zoom0),
                n.object.updateProjectionMatrix(),
                n.dispatchEvent(J),
                n.update(),
                (i = r.NONE)
            }),
            (this.update = (function () {
              const t = new H.Pa4(),
                d = new H._fP().setFromUnitVectors(e.up, new H.Pa4(0, 1, 0)),
                f = d.clone().invert(),
                h = new H.Pa4(),
                p = new H._fP(),
                v = 2 * Math.PI
              return function () {
                const e = n.object.position
                t.copy(e).sub(n.target),
                  t.applyQuaternion(d),
                  a.setFromVector3(t),
                  n.autoRotate && i === r.NONE && k(((2 * Math.PI) / 60 / 60) * n.autoRotateSpeed),
                  n.enableDamping
                    ? ((a.theta += s.theta * n.dampingFactor), (a.phi += s.phi * n.dampingFactor))
                    : ((a.theta += s.theta), (a.phi += s.phi))
                let m = n.minAzimuthAngle,
                  g = n.maxAzimuthAngle
                return (
                  isFinite(m) &&
                    isFinite(g) &&
                    (m < -Math.PI ? (m += v) : m > Math.PI && (m -= v),
                    g < -Math.PI ? (g += v) : g > Math.PI && (g -= v),
                    (a.theta =
                      m <= g
                        ? Math.max(m, Math.min(g, a.theta))
                        : a.theta > (m + g) / 2
                        ? Math.max(m, a.theta)
                        : Math.min(g, a.theta))),
                  (a.phi = Math.max(n.minPolarAngle, Math.min(n.maxPolarAngle, a.phi))),
                  a.makeSafe(),
                  (a.radius *= u),
                  (a.radius = Math.max(n.minDistance, Math.min(n.maxDistance, a.radius))),
                  !0 === n.enableDamping
                    ? n.target.addScaledVector(l, n.dampingFactor)
                    : n.target.add(l),
                  t.setFromSpherical(a),
                  t.applyQuaternion(f),
                  e.copy(n.target).add(t),
                  n.object.lookAt(n.target),
                  !0 === n.enableDamping
                    ? ((s.theta *= 1 - n.dampingFactor),
                      (s.phi *= 1 - n.dampingFactor),
                      l.multiplyScalar(1 - n.dampingFactor))
                    : (s.set(0, 0, 0), l.set(0, 0, 0)),
                  (u = 1),
                  !!(
                    c ||
                    h.distanceToSquared(n.object.position) > o ||
                    8 * (1 - p.dot(n.object.quaternion)) > o
                  ) &&
                    (n.dispatchEvent(J),
                    h.copy(n.object.position),
                    p.copy(n.object.quaternion),
                    (c = !1),
                    !0)
                )
              }
            })()),
            (this.dispose = function () {
              n.domElement.removeEventListener('contextmenu', q),
                n.domElement.removeEventListener('pointerdown', z),
                n.domElement.removeEventListener('pointercancel', V),
                n.domElement.removeEventListener('wheel', U),
                n.domElement.ownerDocument.removeEventListener('pointermove', B),
                n.domElement.ownerDocument.removeEventListener('pointerup', F),
                null !== n._domElementKeyEvents &&
                  n._domElementKeyEvents.removeEventListener('keydown', G)
            })
          const n = this,
            r = {
              NONE: -1,
              ROTATE: 0,
              DOLLY: 1,
              PAN: 2,
              TOUCH_ROTATE: 3,
              TOUCH_PAN: 4,
              TOUCH_DOLLY_PAN: 5,
              TOUCH_DOLLY_ROTATE: 6,
            }
          let i = r.NONE
          const o = 1e-6,
            a = new H.$V(),
            s = new H.$V()
          let u = 1
          const l = new H.Pa4()
          let c = !1
          const d = new H.FM8(),
            f = new H.FM8(),
            h = new H.FM8(),
            p = new H.FM8(),
            v = new H.FM8(),
            m = new H.FM8(),
            g = new H.FM8(),
            y = new H.FM8(),
            b = new H.FM8(),
            w = [],
            x = {}
          function E() {
            return Math.pow(0.95, n.zoomSpeed)
          }
          function k(e) {
            s.theta -= e
          }
          function _(e) {
            s.phi -= e
          }
          const T = (function () {
              const e = new H.Pa4()
              return function (t, n) {
                e.setFromMatrixColumn(n, 0), e.multiplyScalar(-t), l.add(e)
              }
            })(),
            O = (function () {
              const e = new H.Pa4()
              return function (t, r) {
                !0 === n.screenSpacePanning
                  ? e.setFromMatrixColumn(r, 1)
                  : (e.setFromMatrixColumn(r, 0), e.crossVectors(n.object.up, e)),
                  e.multiplyScalar(t),
                  l.add(e)
              }
            })(),
            C = (function () {
              const e = new H.Pa4()
              return function (t, r) {
                const i = n.domElement
                if (n.object.isPerspectiveCamera) {
                  const o = n.object.position
                  e.copy(o).sub(n.target)
                  let a = e.length()
                  ;(a *= Math.tan(((n.object.fov / 2) * Math.PI) / 180)),
                    T((2 * t * a) / i.clientHeight, n.object.matrix),
                    O((2 * r * a) / i.clientHeight, n.object.matrix)
                } else
                  n.object.isOrthographicCamera
                    ? (T(
                        (t * (n.object.right - n.object.left)) / n.object.zoom / i.clientWidth,
                        n.object.matrix,
                      ),
                      O(
                        (r * (n.object.top - n.object.bottom)) / n.object.zoom / i.clientHeight,
                        n.object.matrix,
                      ))
                    : (console.warn(
                        'WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.',
                      ),
                      (n.enablePan = !1))
              }
            })()
          function S(e) {
            n.object.isPerspectiveCamera
              ? (u /= e)
              : n.object.isOrthographicCamera
              ? ((n.object.zoom = Math.max(n.minZoom, Math.min(n.maxZoom, n.object.zoom * e))),
                n.object.updateProjectionMatrix(),
                (c = !0))
              : (console.warn(
                  'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.',
                ),
                (n.enableZoom = !1))
          }
          function A(e) {
            n.object.isPerspectiveCamera
              ? (u *= e)
              : n.object.isOrthographicCamera
              ? ((n.object.zoom = Math.max(n.minZoom, Math.min(n.maxZoom, n.object.zoom / e))),
                n.object.updateProjectionMatrix(),
                (c = !0))
              : (console.warn(
                  'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.',
                ),
                (n.enableZoom = !1))
          }
          function P(e) {
            d.set(e.clientX, e.clientY)
          }
          function M(e) {
            p.set(e.clientX, e.clientY)
          }
          function R() {
            if (1 === w.length) d.set(w[0].pageX, w[0].pageY)
            else {
              const e = 0.5 * (w[0].pageX + w[1].pageX),
                t = 0.5 * (w[0].pageY + w[1].pageY)
              d.set(e, t)
            }
          }
          function j() {
            if (1 === w.length) p.set(w[0].pageX, w[0].pageY)
            else {
              const e = 0.5 * (w[0].pageX + w[1].pageX),
                t = 0.5 * (w[0].pageY + w[1].pageY)
              p.set(e, t)
            }
          }
          function D() {
            const e = w[0].pageX - w[1].pageX,
              t = w[0].pageY - w[1].pageY,
              n = Math.sqrt(e * e + t * t)
            g.set(0, n)
          }
          function L(e) {
            if (1 == w.length) f.set(e.pageX, e.pageY)
            else {
              const t = Z(e),
                n = 0.5 * (e.pageX + t.x),
                r = 0.5 * (e.pageY + t.y)
              f.set(n, r)
            }
            h.subVectors(f, d).multiplyScalar(n.rotateSpeed)
            const t = n.domElement
            k((2 * Math.PI * h.x) / t.clientHeight),
              _((2 * Math.PI * h.y) / t.clientHeight),
              d.copy(f)
          }
          function N(e) {
            if (1 === w.length) v.set(e.pageX, e.pageY)
            else {
              const t = Z(e),
                n = 0.5 * (e.pageX + t.x),
                r = 0.5 * (e.pageY + t.y)
              v.set(n, r)
            }
            m.subVectors(v, p).multiplyScalar(n.panSpeed), C(m.x, m.y), p.copy(v)
          }
          function I(e) {
            const t = Z(e),
              r = e.pageX - t.x,
              i = e.pageY - t.y,
              o = Math.sqrt(r * r + i * i)
            y.set(0, o), b.set(0, Math.pow(y.y / g.y, n.zoomSpeed)), S(b.y), g.copy(y)
          }
          function z(e) {
            !1 !== n.enabled &&
              (0 === w.length &&
                (n.domElement.ownerDocument.addEventListener('pointermove', B),
                n.domElement.ownerDocument.addEventListener('pointerup', F)),
              (function (e) {
                w.push(e)
              })(e),
              'touch' === e.pointerType
                ? (function (e) {
                    switch ((K(e), w.length)) {
                      case 1:
                        switch (n.touches.ONE) {
                          case H.QmN.ROTATE:
                            if (!1 === n.enableRotate) return
                            R(), (i = r.TOUCH_ROTATE)
                            break
                          case H.QmN.PAN:
                            if (!1 === n.enablePan) return
                            j(), (i = r.TOUCH_PAN)
                            break
                          default:
                            i = r.NONE
                        }
                        break
                      case 2:
                        switch (n.touches.TWO) {
                          case H.QmN.DOLLY_PAN:
                            if (!1 === n.enableZoom && !1 === n.enablePan) return
                            n.enableZoom && D(), n.enablePan && j(), (i = r.TOUCH_DOLLY_PAN)
                            break
                          case H.QmN.DOLLY_ROTATE:
                            if (!1 === n.enableZoom && !1 === n.enableRotate) return
                            n.enableZoom && D(), n.enableRotate && R(), (i = r.TOUCH_DOLLY_ROTATE)
                            break
                          default:
                            i = r.NONE
                        }
                        break
                      default:
                        i = r.NONE
                    }
                    i !== r.NONE && n.dispatchEvent(ee)
                  })(e)
                : (function (e) {
                    let t
                    switch (e.button) {
                      case 0:
                        t = n.mouseButtons.LEFT
                        break
                      case 1:
                        t = n.mouseButtons.MIDDLE
                        break
                      case 2:
                        t = n.mouseButtons.RIGHT
                        break
                      default:
                        t = -1
                    }
                    switch (t) {
                      case H.RsA.DOLLY:
                        if (!1 === n.enableZoom) return
                        !(function (e) {
                          g.set(e.clientX, e.clientY)
                        })(e),
                          (i = r.DOLLY)
                        break
                      case H.RsA.ROTATE:
                        if (e.ctrlKey || e.metaKey || e.shiftKey) {
                          if (!1 === n.enablePan) return
                          M(e), (i = r.PAN)
                        } else {
                          if (!1 === n.enableRotate) return
                          P(e), (i = r.ROTATE)
                        }
                        break
                      case H.RsA.PAN:
                        if (e.ctrlKey || e.metaKey || e.shiftKey) {
                          if (!1 === n.enableRotate) return
                          P(e), (i = r.ROTATE)
                        } else {
                          if (!1 === n.enablePan) return
                          M(e), (i = r.PAN)
                        }
                        break
                      default:
                        i = r.NONE
                    }
                    i !== r.NONE && n.dispatchEvent(ee)
                  })(e))
          }
          function B(e) {
            !1 !== n.enabled &&
              ('touch' === e.pointerType
                ? (function (e) {
                    switch ((K(e), i)) {
                      case r.TOUCH_ROTATE:
                        if (!1 === n.enableRotate) return
                        L(e), n.update()
                        break
                      case r.TOUCH_PAN:
                        if (!1 === n.enablePan) return
                        N(e), n.update()
                        break
                      case r.TOUCH_DOLLY_PAN:
                        if (!1 === n.enableZoom && !1 === n.enablePan) return
                        !(function (e) {
                          n.enableZoom && I(e), n.enablePan && N(e)
                        })(e),
                          n.update()
                        break
                      case r.TOUCH_DOLLY_ROTATE:
                        if (!1 === n.enableZoom && !1 === n.enableRotate) return
                        !(function (e) {
                          n.enableZoom && I(e), n.enableRotate && L(e)
                        })(e),
                          n.update()
                        break
                      default:
                        i = r.NONE
                    }
                  })(e)
                : (function (e) {
                    if (!1 === n.enabled) return
                    switch (i) {
                      case r.ROTATE:
                        if (!1 === n.enableRotate) return
                        !(function (e) {
                          f.set(e.clientX, e.clientY),
                            h.subVectors(f, d).multiplyScalar(n.rotateSpeed)
                          const t = n.domElement
                          k((2 * Math.PI * h.x) / t.clientHeight),
                            _((2 * Math.PI * h.y) / t.clientHeight),
                            d.copy(f),
                            n.update()
                        })(e)
                        break
                      case r.DOLLY:
                        if (!1 === n.enableZoom) return
                        !(function (e) {
                          y.set(e.clientX, e.clientY),
                            b.subVectors(y, g),
                            b.y > 0 ? S(E()) : b.y < 0 && A(E()),
                            g.copy(y),
                            n.update()
                        })(e)
                        break
                      case r.PAN:
                        if (!1 === n.enablePan) return
                        !(function (e) {
                          v.set(e.clientX, e.clientY),
                            m.subVectors(v, p).multiplyScalar(n.panSpeed),
                            C(m.x, m.y),
                            p.copy(v),
                            n.update()
                        })(e)
                    }
                  })(e))
          }
          function F(e) {
            !1 !== n.enabled &&
              (e.pointerType,
              n.dispatchEvent(te),
              (i = r.NONE),
              W(e),
              0 === w.length &&
                (n.domElement.ownerDocument.removeEventListener('pointermove', B),
                n.domElement.ownerDocument.removeEventListener('pointerup', F)))
          }
          function V(e) {
            W(e)
          }
          function U(e) {
            !1 === n.enabled ||
              !1 === n.enableZoom ||
              (i !== r.NONE && i !== r.ROTATE) ||
              (e.preventDefault(),
              n.dispatchEvent(ee),
              (function (e) {
                e.deltaY < 0 ? A(E()) : e.deltaY > 0 && S(E()), n.update()
              })(e),
              n.dispatchEvent(te))
          }
          function G(e) {
            !1 !== n.enabled &&
              !1 !== n.enablePan &&
              (function (e) {
                let t = !1
                switch (e.code) {
                  case n.keys.UP:
                    C(0, n.keyPanSpeed), (t = !0)
                    break
                  case n.keys.BOTTOM:
                    C(0, -n.keyPanSpeed), (t = !0)
                    break
                  case n.keys.LEFT:
                    C(n.keyPanSpeed, 0), (t = !0)
                    break
                  case n.keys.RIGHT:
                    C(-n.keyPanSpeed, 0), (t = !0)
                }
                t && (e.preventDefault(), n.update())
              })(e)
          }
          function q(e) {
            !1 !== n.enabled && e.preventDefault()
          }
          function W(e) {
            delete x[e.pointerId]
            for (let t = 0; t < w.length; t++)
              if (w[t].pointerId == e.pointerId) return void w.splice(t, 1)
          }
          function K(e) {
            let t = x[e.pointerId]
            void 0 === t && ((t = new H.FM8()), (x[e.pointerId] = t)), t.set(e.pageX, e.pageY)
          }
          function Z(e) {
            const t = e.pointerId === w[0].pointerId ? w[1] : w[0]
            return x[t.pointerId]
          }
          n.domElement.addEventListener('contextmenu', q),
            n.domElement.addEventListener('pointerdown', z),
            n.domElement.addEventListener('pointercancel', V),
            n.domElement.addEventListener('wheel', U, { passive: !1 }),
            this.update()
        }
      }
      const re = { type: 'change' }
      class ie extends H.pBf {
        constructor(e, t) {
          super(),
            void 0 === t &&
              (console.warn(
                'THREE.FlyControls: The second parameter "domElement" is now mandatory.',
              ),
              (t = document)),
            (this.object = e),
            (this.domElement = t),
            (this.movementSpeed = 1),
            (this.rollSpeed = 0.005),
            (this.dragToLook = !1),
            (this.autoForward = !1)
          const n = this,
            r = 1e-6,
            i = new H._fP(),
            o = new H.Pa4()
          ;(this.tmpQuaternion = new H._fP()),
            (this.mouseStatus = 0),
            (this.moveState = {
              up: 0,
              down: 0,
              left: 0,
              right: 0,
              forward: 0,
              back: 0,
              pitchUp: 0,
              pitchDown: 0,
              yawLeft: 0,
              yawRight: 0,
              rollLeft: 0,
              rollRight: 0,
            }),
            (this.moveVector = new H.Pa4(0, 0, 0)),
            (this.rotationVector = new H.Pa4(0, 0, 0)),
            (this.keydown = function (e) {
              if (!e.altKey) {
                switch (e.code) {
                  case 'ShiftLeft':
                  case 'ShiftRight':
                    this.movementSpeedMultiplier = 0.1
                    break
                  case 'KeyW':
                    this.moveState.forward = 1
                    break
                  case 'KeyS':
                    this.moveState.back = 1
                    break
                  case 'KeyA':
                    this.moveState.left = 1
                    break
                  case 'KeyD':
                    this.moveState.right = 1
                    break
                  case 'KeyR':
                    this.moveState.up = 1
                    break
                  case 'KeyF':
                    this.moveState.down = 1
                    break
                  case 'ArrowUp':
                    this.moveState.pitchUp = 1
                    break
                  case 'ArrowDown':
                    this.moveState.pitchDown = 1
                    break
                  case 'ArrowLeft':
                    this.moveState.yawLeft = 1
                    break
                  case 'ArrowRight':
                    this.moveState.yawRight = 1
                    break
                  case 'KeyQ':
                    this.moveState.rollLeft = 1
                    break
                  case 'KeyE':
                    this.moveState.rollRight = 1
                }
                this.updateMovementVector(), this.updateRotationVector()
              }
            }),
            (this.keyup = function (e) {
              switch (e.code) {
                case 'ShiftLeft':
                case 'ShiftRight':
                  this.movementSpeedMultiplier = 1
                  break
                case 'KeyW':
                  this.moveState.forward = 0
                  break
                case 'KeyS':
                  this.moveState.back = 0
                  break
                case 'KeyA':
                  this.moveState.left = 0
                  break
                case 'KeyD':
                  this.moveState.right = 0
                  break
                case 'KeyR':
                  this.moveState.up = 0
                  break
                case 'KeyF':
                  this.moveState.down = 0
                  break
                case 'ArrowUp':
                  this.moveState.pitchUp = 0
                  break
                case 'ArrowDown':
                  this.moveState.pitchDown = 0
                  break
                case 'ArrowLeft':
                  this.moveState.yawLeft = 0
                  break
                case 'ArrowRight':
                  this.moveState.yawRight = 0
                  break
                case 'KeyQ':
                  this.moveState.rollLeft = 0
                  break
                case 'KeyE':
                  this.moveState.rollRight = 0
              }
              this.updateMovementVector(), this.updateRotationVector()
            }),
            (this.mousedown = function (e) {
              if (this.dragToLook) this.mouseStatus++
              else {
                switch (e.button) {
                  case 0:
                    this.moveState.forward = 1
                    break
                  case 2:
                    this.moveState.back = 1
                }
                this.updateMovementVector()
              }
            }),
            (this.mousemove = function (e) {
              if (!this.dragToLook || this.mouseStatus > 0) {
                const t = this.getContainerDimensions(),
                  n = t.size[0] / 2,
                  r = t.size[1] / 2
                ;(this.moveState.yawLeft = -(e.pageX - t.offset[0] - n) / n),
                  (this.moveState.pitchDown = (e.pageY - t.offset[1] - r) / r),
                  this.updateRotationVector()
              }
            }),
            (this.mouseup = function (e) {
              if (this.dragToLook)
                this.mouseStatus--, (this.moveState.yawLeft = this.moveState.pitchDown = 0)
              else {
                switch (e.button) {
                  case 0:
                    this.moveState.forward = 0
                    break
                  case 2:
                    this.moveState.back = 0
                }
                this.updateMovementVector()
              }
              this.updateRotationVector()
            }),
            (this.update = function (e) {
              const t = e * n.movementSpeed,
                a = e * n.rollSpeed
              n.object.translateX(n.moveVector.x * t),
                n.object.translateY(n.moveVector.y * t),
                n.object.translateZ(n.moveVector.z * t),
                n.tmpQuaternion
                  .set(n.rotationVector.x * a, n.rotationVector.y * a, n.rotationVector.z * a, 1)
                  .normalize(),
                n.object.quaternion.multiply(n.tmpQuaternion),
                (o.distanceToSquared(n.object.position) > r ||
                  8 * (1 - i.dot(n.object.quaternion)) > r) &&
                  (n.dispatchEvent(re), i.copy(n.object.quaternion), o.copy(n.object.position))
            }),
            (this.updateMovementVector = function () {
              const e = this.moveState.forward || (this.autoForward && !this.moveState.back) ? 1 : 0
              ;(this.moveVector.x = -this.moveState.left + this.moveState.right),
                (this.moveVector.y = -this.moveState.down + this.moveState.up),
                (this.moveVector.z = -e + this.moveState.back)
            }),
            (this.updateRotationVector = function () {
              ;(this.rotationVector.x = -this.moveState.pitchDown + this.moveState.pitchUp),
                (this.rotationVector.y = -this.moveState.yawRight + this.moveState.yawLeft),
                (this.rotationVector.z = -this.moveState.rollRight + this.moveState.rollLeft)
            }),
            (this.getContainerDimensions = function () {
              return this.domElement != document
                ? {
                    size: [this.domElement.offsetWidth, this.domElement.offsetHeight],
                    offset: [this.domElement.offsetLeft, this.domElement.offsetTop],
                  }
                : { size: [window.innerWidth, window.innerHeight], offset: [0, 0] }
            }),
            (this.dispose = function () {
              this.domElement.removeEventListener('contextmenu', oe),
                this.domElement.removeEventListener('mousedown', s),
                this.domElement.removeEventListener('mousemove', a),
                this.domElement.removeEventListener('mouseup', u),
                window.removeEventListener('keydown', l),
                window.removeEventListener('keyup', c)
            })
          const a = this.mousemove.bind(this),
            s = this.mousedown.bind(this),
            u = this.mouseup.bind(this),
            l = this.keydown.bind(this),
            c = this.keyup.bind(this)
          this.domElement.addEventListener('contextmenu', oe),
            this.domElement.addEventListener('mousemove', a),
            this.domElement.addEventListener('mousedown', s),
            this.domElement.addEventListener('mouseup', u),
            window.addEventListener('keydown', l),
            window.addEventListener('keyup', c),
            this.updateMovementVector(),
            this.updateRotationVector()
        }
      }
      function oe(e) {
        e.preventDefault()
      }
      var ae = {
        uniforms: { tDiffuse: { value: null }, opacity: { value: 1 } },
        vertexShader:
          '\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}',
        fragmentShader:
          '\n\n\t\tuniform float opacity;\n\n\t\tuniform sampler2D tDiffuse;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec4 texel = texture2D( tDiffuse, vUv );\n\t\t\tgl_FragColor = opacity * texel;\n\n\t\t}',
      }
      class se {
        constructor() {
          ;(this.enabled = !0), (this.needsSwap = !0), (this.clear = !1), (this.renderToScreen = !1)
        }
        setSize() {}
        render() {
          console.error('THREE.Pass: .render() must be implemented in derived pass.')
        }
      }
      const ue = new H.iKG(-1, 1, 1, -1, 0, 1),
        le = new H.u9r()
      le.setAttribute('position', new H.a$l([-1, 3, 0, -1, -1, 0, 3, -1, 0], 3)),
        le.setAttribute('uv', new H.a$l([0, 2, 0, 0, 2, 0], 2))
      class ce {
        constructor(e) {
          this._mesh = new H.Kj0(le, e)
        }
        dispose() {
          this._mesh.geometry.dispose()
        }
        render(e) {
          e.render(this._mesh, ue)
        }
        get material() {
          return this._mesh.material
        }
        set material(e) {
          this._mesh.material = e
        }
      }
      class de extends se {
        constructor(e, t) {
          super(),
            (this.textureID = void 0 !== t ? t : 'tDiffuse'),
            e instanceof H.jyz
              ? ((this.uniforms = e.uniforms), (this.material = e))
              : e &&
                ((this.uniforms = H.rDY.clone(e.uniforms)),
                (this.material = new H.jyz({
                  defines: Object.assign({}, e.defines),
                  uniforms: this.uniforms,
                  vertexShader: e.vertexShader,
                  fragmentShader: e.fragmentShader,
                }))),
            (this.fsQuad = new ce(this.material))
        }
        render(e, t, n) {
          this.uniforms[this.textureID] && (this.uniforms[this.textureID].value = n.texture),
            (this.fsQuad.material = this.material),
            this.renderToScreen
              ? (e.setRenderTarget(null), this.fsQuad.render(e))
              : (e.setRenderTarget(t),
                this.clear && e.clear(e.autoClearColor, e.autoClearDepth, e.autoClearStencil),
                this.fsQuad.render(e))
        }
      }
      class fe extends se {
        constructor(e, t) {
          super(),
            (this.scene = e),
            (this.camera = t),
            (this.clear = !0),
            (this.needsSwap = !1),
            (this.inverse = !1)
        }
        render(e, t, n) {
          const r = e.getContext(),
            i = e.state
          let o, a
          i.buffers.color.setMask(!1),
            i.buffers.depth.setMask(!1),
            i.buffers.color.setLocked(!0),
            i.buffers.depth.setLocked(!0),
            this.inverse ? ((o = 0), (a = 1)) : ((o = 1), (a = 0)),
            i.buffers.stencil.setTest(!0),
            i.buffers.stencil.setOp(r.REPLACE, r.REPLACE, r.REPLACE),
            i.buffers.stencil.setFunc(r.ALWAYS, o, 4294967295),
            i.buffers.stencil.setClear(a),
            i.buffers.stencil.setLocked(!0),
            e.setRenderTarget(n),
            this.clear && e.clear(),
            e.render(this.scene, this.camera),
            e.setRenderTarget(t),
            this.clear && e.clear(),
            e.render(this.scene, this.camera),
            i.buffers.color.setLocked(!1),
            i.buffers.depth.setLocked(!1),
            i.buffers.stencil.setLocked(!1),
            i.buffers.stencil.setFunc(r.EQUAL, 1, 4294967295),
            i.buffers.stencil.setOp(r.KEEP, r.KEEP, r.KEEP),
            i.buffers.stencil.setLocked(!0)
        }
      }
      class he extends se {
        constructor() {
          super(), (this.needsSwap = !1)
        }
        render(e) {
          e.state.buffers.stencil.setLocked(!1), e.state.buffers.stencil.setTest(!1)
        }
      }
      class pe {
        constructor(e, t) {
          if (((this.renderer = e), void 0 === t)) {
            const n = { minFilter: H.wem, magFilter: H.wem, format: H.wk1 },
              r = e.getSize(new H.FM8())
            ;(this._pixelRatio = e.getPixelRatio()),
              (this._width = r.width),
              (this._height = r.height),
              ((t = new H.dd2(
                this._width * this._pixelRatio,
                this._height * this._pixelRatio,
                n,
              )).texture.name = 'EffectComposer.rt1')
          } else (this._pixelRatio = 1), (this._width = t.width), (this._height = t.height)
          ;(this.renderTarget1 = t),
            (this.renderTarget2 = t.clone()),
            (this.renderTarget2.texture.name = 'EffectComposer.rt2'),
            (this.writeBuffer = this.renderTarget1),
            (this.readBuffer = this.renderTarget2),
            (this.renderToScreen = !0),
            (this.passes = []),
            void 0 === ae && console.error('THREE.EffectComposer relies on CopyShader'),
            void 0 === de && console.error('THREE.EffectComposer relies on ShaderPass'),
            (this.copyPass = new de(ae)),
            (this.clock = new H.SUY())
        }
        swapBuffers() {
          const e = this.readBuffer
          ;(this.readBuffer = this.writeBuffer), (this.writeBuffer = e)
        }
        addPass(e) {
          this.passes.push(e),
            e.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio)
        }
        insertPass(e, t) {
          this.passes.splice(t, 0, e),
            e.setSize(this._width * this._pixelRatio, this._height * this._pixelRatio)
        }
        removePass(e) {
          const t = this.passes.indexOf(e)
          ;-1 !== t && this.passes.splice(t, 1)
        }
        isLastEnabledPass(e) {
          for (let t = e + 1; t < this.passes.length; t++) if (this.passes[t].enabled) return !1
          return !0
        }
        render(e) {
          void 0 === e && (e = this.clock.getDelta())
          const t = this.renderer.getRenderTarget()
          let n = !1
          for (let r = 0, i = this.passes.length; r < i; r++) {
            const t = this.passes[r]
            if (!1 !== t.enabled) {
              if (
                ((t.renderToScreen = this.renderToScreen && this.isLastEnabledPass(r)),
                t.render(this.renderer, this.writeBuffer, this.readBuffer, e, n),
                t.needsSwap)
              ) {
                if (n) {
                  const t = this.renderer.getContext(),
                    n = this.renderer.state.buffers.stencil
                  n.setFunc(t.NOTEQUAL, 1, 4294967295),
                    this.copyPass.render(this.renderer, this.writeBuffer, this.readBuffer, e),
                    n.setFunc(t.EQUAL, 1, 4294967295)
                }
                this.swapBuffers()
              }
              void 0 !== fe && (t instanceof fe ? (n = !0) : t instanceof he && (n = !1))
            }
          }
          this.renderer.setRenderTarget(t)
        }
        reset(e) {
          if (void 0 === e) {
            const t = this.renderer.getSize(new H.FM8())
            ;(this._pixelRatio = this.renderer.getPixelRatio()),
              (this._width = t.width),
              (this._height = t.height),
              (e = this.renderTarget1.clone()).setSize(
                this._width * this._pixelRatio,
                this._height * this._pixelRatio,
              )
          }
          this.renderTarget1.dispose(),
            this.renderTarget2.dispose(),
            (this.renderTarget1 = e),
            (this.renderTarget2 = e.clone()),
            (this.writeBuffer = this.renderTarget1),
            (this.readBuffer = this.renderTarget2)
        }
        setSize(e, t) {
          ;(this._width = e), (this._height = t)
          const n = this._width * this._pixelRatio,
            r = this._height * this._pixelRatio
          this.renderTarget1.setSize(n, r), this.renderTarget2.setSize(n, r)
          for (let i = 0; i < this.passes.length; i++) this.passes[i].setSize(n, r)
        }
        setPixelRatio(e) {
          ;(this._pixelRatio = e), this.setSize(this._width, this._height)
        }
      }
      new H.iKG(-1, 1, 1, -1, 0, 1)
      const ve = new H.u9r()
      ve.setAttribute('position', new H.a$l([-1, 3, 0, -1, -1, 0, 3, -1, 0], 3)),
        ve.setAttribute('uv', new H.a$l([0, 2, 0, 0, 2, 0], 2))
      class me extends se {
        constructor(e, t, n, r, i) {
          super(),
            (this.scene = e),
            (this.camera = t),
            (this.overrideMaterial = n),
            (this.clearColor = r),
            (this.clearAlpha = void 0 !== i ? i : 0),
            (this.clear = !0),
            (this.clearDepth = !1),
            (this.needsSwap = !1),
            (this._oldClearColor = new H.Ilk())
        }
        render(e, t, n) {
          const r = e.autoClear
          let i, o
          ;(e.autoClear = !1),
            void 0 !== this.overrideMaterial &&
              ((o = this.scene.overrideMaterial),
              (this.scene.overrideMaterial = this.overrideMaterial)),
            this.clearColor &&
              (e.getClearColor(this._oldClearColor),
              (i = e.getClearAlpha()),
              e.setClearColor(this.clearColor, this.clearAlpha)),
            this.clearDepth && e.clearDepth(),
            e.setRenderTarget(this.renderToScreen ? null : n),
            this.clear && e.clear(e.autoClearColor, e.autoClearDepth, e.autoClearStencil),
            e.render(this.scene, this.camera),
            this.clearColor && e.setClearColor(this._oldClearColor, i),
            void 0 !== this.overrideMaterial && (this.scene.overrideMaterial = o),
            (e.autoClear = r)
        }
      }
      function ge() {
        return (ge =
          Object.assign ||
          function (e) {
            for (var t = 1; t < arguments.length; t++) {
              var n = arguments[t]
              for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
            }
            return e
          }).apply(this, arguments)
      }
      function ye(e, t) {
        return (ye =
          Object.setPrototypeOf ||
          function (e, t) {
            return (e.__proto__ = t), e
          })(e, t)
      }
      function be(e) {
        return (be = Object.setPrototypeOf
          ? Object.getPrototypeOf
          : function (e) {
              return e.__proto__ || Object.getPrototypeOf(e)
            })(e)
      }
      function we() {
        if ('undefined' === typeof Reflect || !Reflect.construct) return !1
        if (Reflect.construct.sham) return !1
        if ('function' === typeof Proxy) return !0
        try {
          return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})), !0
        } catch (e) {
          return !1
        }
      }
      function xe(e, t, n) {
        return (xe = we()
          ? Reflect.construct
          : function (e, t, n) {
              var r = [null]
              r.push.apply(r, t)
              var i = new (Function.bind.apply(e, r))()
              return n && ye(i, n.prototype), i
            }).apply(null, arguments)
      }
      function Ee(e) {
        var t = 'function' === typeof Map ? new Map() : void 0
        return (Ee = function (e) {
          if (null === e || ((n = e), -1 === Function.toString.call(n).indexOf('[native code]')))
            return e
          var n
          if ('function' !== typeof e)
            throw new TypeError('Super expression must either be null or a function')
          if ('undefined' !== typeof t) {
            if (t.has(e)) return t.get(e)
            t.set(e, r)
          }
          function r() {
            return xe(e, arguments, be(this).constructor)
          }
          return (
            (r.prototype = Object.create(e.prototype, {
              constructor: { value: r, enumerable: !1, writable: !0, configurable: !0 },
            })),
            ye(r, e)
          )
        })(e)
      }
      var ke = (function (e) {
        var t, n
        function r(t) {
          return (function (e) {
            if (void 0 === e)
              throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
            return e
          })(
            e.call(
              this,
              'An error occurred. See https://github.com/styled-components/polished/blob/main/src/internalHelpers/errors.md#' +
                t +
                ' for more information.',
            ) || this,
          )
        }
        return (
          (n = e),
          ((t = r).prototype = Object.create(n.prototype)),
          (t.prototype.constructor = t),
          ye(t, n),
          r
        )
      })(Ee(Error))
      function _e(e) {
        return Math.round(255 * e)
      }
      function Te(e, t, n) {
        return _e(e) + ',' + _e(t) + ',' + _e(n)
      }
      function Oe(e, t, n, r) {
        if ((void 0 === r && (r = Te), 0 === t)) return r(n, n, n)
        var i = (((e % 360) + 360) % 360) / 60,
          o = (1 - Math.abs(2 * n - 1)) * t,
          a = o * (1 - Math.abs((i % 2) - 1)),
          s = 0,
          u = 0,
          l = 0
        i >= 0 && i < 1
          ? ((s = o), (u = a))
          : i >= 1 && i < 2
          ? ((s = a), (u = o))
          : i >= 2 && i < 3
          ? ((u = o), (l = a))
          : i >= 3 && i < 4
          ? ((u = a), (l = o))
          : i >= 4 && i < 5
          ? ((s = a), (l = o))
          : i >= 5 && i < 6 && ((s = o), (l = a))
        var c = n - o / 2
        return r(s + c, u + c, l + c)
      }
      var Ce = {
        aliceblue: 'f0f8ff',
        antiquewhite: 'faebd7',
        aqua: '00ffff',
        aquamarine: '7fffd4',
        azure: 'f0ffff',
        beige: 'f5f5dc',
        bisque: 'ffe4c4',
        black: '000',
        blanchedalmond: 'ffebcd',
        blue: '0000ff',
        blueviolet: '8a2be2',
        brown: 'a52a2a',
        burlywood: 'deb887',
        cadetblue: '5f9ea0',
        chartreuse: '7fff00',
        chocolate: 'd2691e',
        coral: 'ff7f50',
        cornflowerblue: '6495ed',
        cornsilk: 'fff8dc',
        crimson: 'dc143c',
        cyan: '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: '789',
        lightslategrey: '789',
        lightsteelblue: 'b0c4de',
        lightyellow: 'ffffe0',
        lime: '0f0',
        limegreen: '32cd32',
        linen: 'faf0e6',
        magenta: 'f0f',
        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: '639',
        red: 'f00',
        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',
        steelblue: '4682b4',
        tan: 'd2b48c',
        teal: '008080',
        thistle: 'd8bfd8',
        tomato: 'ff6347',
        turquoise: '40e0d0',
        violet: 'ee82ee',
        wheat: 'f5deb3',
        white: 'fff',
        whitesmoke: 'f5f5f5',
        yellow: 'ff0',
        yellowgreen: '9acd32',
      }
      var Se = /^#[a-fA-F0-9]{6}$/,
        Ae = /^#[a-fA-F0-9]{8}$/,
        Pe = /^#[a-fA-F0-9]{3}$/,
        Me = /^#[a-fA-F0-9]{4}$/,
        Re = /^rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)$/i,
        je =
          /^rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*([-+]?[0-9]*[.]?[0-9]+)\s*\)$/i,
        De =
          /^hsl\(\s*(\d{0,3}[.]?[0-9]+)\s*,\s*(\d{1,3}[.]?[0-9]?)%\s*,\s*(\d{1,3}[.]?[0-9]?)%\s*\)$/i,
        Le =
          /^hsla\(\s*(\d{0,3}[.]?[0-9]+)\s*,\s*(\d{1,3}[.]?[0-9]?)%\s*,\s*(\d{1,3}[.]?[0-9]?)%\s*,\s*([-+]?[0-9]*[.]?[0-9]+)\s*\)$/i
      function Ne(e) {
        if ('string' !== typeof e) throw new ke(3)
        var t = (function (e) {
          if ('string' !== typeof e) return e
          var t = e.toLowerCase()
          return Ce[t] ? '#' + Ce[t] : e
        })(e)
        if (t.match(Se))
          return {
            red: parseInt('' + t[1] + t[2], 16),
            green: parseInt('' + t[3] + t[4], 16),
            blue: parseInt('' + t[5] + t[6], 16),
          }
        if (t.match(Ae)) {
          var n = parseFloat((parseInt('' + t[7] + t[8], 16) / 255).toFixed(2))
          return {
            red: parseInt('' + t[1] + t[2], 16),
            green: parseInt('' + t[3] + t[4], 16),
            blue: parseInt('' + t[5] + t[6], 16),
            alpha: n,
          }
        }
        if (t.match(Pe))
          return {
            red: parseInt('' + t[1] + t[1], 16),
            green: parseInt('' + t[2] + t[2], 16),
            blue: parseInt('' + t[3] + t[3], 16),
          }
        if (t.match(Me)) {
          var r = parseFloat((parseInt('' + t[4] + t[4], 16) / 255).toFixed(2))
          return {
            red: parseInt('' + t[1] + t[1], 16),
            green: parseInt('' + t[2] + t[2], 16),
            blue: parseInt('' + t[3] + t[3], 16),
            alpha: r,
          }
        }
        var i = Re.exec(t)
        if (i)
          return {
            red: parseInt('' + i[1], 10),
            green: parseInt('' + i[2], 10),
            blue: parseInt('' + i[3], 10),
          }
        var o = je.exec(t.substring(0, 50))
        if (o)
          return {
            red: parseInt('' + o[1], 10),
            green: parseInt('' + o[2], 10),
            blue: parseInt('' + o[3], 10),
            alpha: parseFloat('' + o[4]),
          }
        var a = De.exec(t)
        if (a) {
          var s =
              'rgb(' +
              Oe(
                parseInt('' + a[1], 10),
                parseInt('' + a[2], 10) / 100,
                parseInt('' + a[3], 10) / 100,
              ) +
              ')',
            u = Re.exec(s)
          if (!u) throw new ke(4, t, s)
          return {
            red: parseInt('' + u[1], 10),
            green: parseInt('' + u[2], 10),
            blue: parseInt('' + u[3], 10),
          }
        }
        var l = Le.exec(t.substring(0, 50))
        if (l) {
          var c =
              'rgb(' +
              Oe(
                parseInt('' + l[1], 10),
                parseInt('' + l[2], 10) / 100,
                parseInt('' + l[3], 10) / 100,
              ) +
              ')',
            d = Re.exec(c)
          if (!d) throw new ke(4, t, c)
          return {
            red: parseInt('' + d[1], 10),
            green: parseInt('' + d[2], 10),
            blue: parseInt('' + d[3], 10),
            alpha: parseFloat('' + l[4]),
          }
        }
        throw new ke(5)
      }
      var Ie = function (e) {
        return 7 === e.length && e[1] === e[2] && e[3] === e[4] && e[5] === e[6]
          ? '#' + e[1] + e[3] + e[5]
          : e
      }
      function ze(e) {
        var t = e.toString(16)
        return 1 === t.length ? '0' + t : t
      }
      function He(e, t, n) {
        if ('number' === typeof e && 'number' === typeof t && 'number' === typeof n)
          return Ie('#' + ze(e) + ze(t) + ze(n))
        if ('object' === typeof e && void 0 === t && void 0 === n)
          return Ie('#' + ze(e.red) + ze(e.green) + ze(e.blue))
        throw new ke(6)
      }
      function Be(e, t, n, r) {
        if ('string' === typeof e && 'number' === typeof t) {
          var i = Ne(e)
          return 'rgba(' + i.red + ',' + i.green + ',' + i.blue + ',' + t + ')'
        }
        if (
          'number' === typeof e &&
          'number' === typeof t &&
          'number' === typeof n &&
          'number' === typeof r
        )
          return r >= 1 ? He(e, t, n) : 'rgba(' + e + ',' + t + ',' + n + ',' + r + ')'
        if ('object' === typeof e && void 0 === t && void 0 === n && void 0 === r)
          return e.alpha >= 1
            ? He(e.red, e.green, e.blue)
            : 'rgba(' + e.red + ',' + e.green + ',' + e.blue + ',' + e.alpha + ')'
        throw new ke(7)
      }
      function Fe(e, t, n) {
        return function () {
          var r = n.concat(Array.prototype.slice.call(arguments))
          return r.length >= t ? e.apply(this, r) : Fe(e, t, r)
        }
      }
      function Ve(e) {
        return Fe(e, e.length, [])
      }
      function Ue(e, t, n) {
        return Math.max(e, Math.min(t, n))
      }
      function Ge(e, t) {
        if ('transparent' === t) return t
        var n = Ne(t)
        return Be(
          ge({}, n, {
            alpha: Ue(
              0,
              1,
              (100 * ('number' === typeof n.alpha ? n.alpha : 1) + 100 * parseFloat(e)) / 100,
            ),
          }),
        )
      }
      var qe = Ve(Ge)
      var We = r(6194)
      function Ke(e, t, n) {
        return (
          t in e
            ? Object.defineProperty(e, t, {
                value: n,
                enumerable: !0,
                configurable: !0,
                writable: !0,
              })
            : (e[t] = n),
          e
        )
      }
      function Ze(e, t) {
        return (
          (function (e) {
            if (Array.isArray(e)) return e
          })(e) ||
          (function (e, t) {
            var n =
              null == e
                ? null
                : ('undefined' !== typeof Symbol && e[Symbol.iterator]) || e['@@iterator']
            if (null == n) return
            var r,
              i,
              o = [],
              a = !0,
              s = !1
            try {
              for (
                n = n.call(e);
                !(a = (r = n.next()).done) && (o.push(r.value), !t || o.length !== t);
                a = !0
              );
            } catch (u) {
              ;(s = !0), (i = u)
            } finally {
              try {
                a || null == n.return || n.return()
              } finally {
                if (s) throw i
              }
            }
            return o
          })(e, t) ||
          Xe(e, t) ||
          (function () {
            throw new TypeError(
              'Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.',
            )
          })()
        )
      }
      function $e(e) {
        return (
          (function (e) {
            if (Array.isArray(e)) return Ye(e)
          })(e) ||
          (function (e) {
            if (
              ('undefined' !== typeof Symbol && null != e[Symbol.iterator]) ||
              null != e['@@iterator']
            )
              return Array.from(e)
          })(e) ||
          Xe(e) ||
          (function () {
            throw new TypeError(
              'Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.',
            )
          })()
        )
      }
      function Xe(e, t) {
        if (e) {
          if ('string' === typeof e) return Ye(e, t)
          var n = Object.prototype.toString.call(e).slice(8, -1)
          return (
            'Object' === n && e.constructor && (n = e.constructor.name),
            'Map' === n || 'Set' === n
              ? Array.from(e)
              : 'Arguments' === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)
              ? Ye(e, t)
              : void 0
          )
        }
      }
      function Ye(e, t) {
        ;(null == t || t > e.length) && (t = e.length)
        for (var n = 0, r = new Array(t); n < t; n++) r[n] = e[n]
        return r
      }
      !(function (e, t) {
        void 0 === t && (t = {})
        var n = t.insertAt
        if (e && 'undefined' !== typeof document) {
          var r = document.head || document.getElementsByTagName('head')[0],
            i = document.createElement('style')
          ;(i.type = 'text/css'),
            'top' === n && r.firstChild ? r.insertBefore(i, r.firstChild) : r.appendChild(i),
            i.styleSheet ? (i.styleSheet.cssText = e) : i.appendChild(document.createTextNode(e))
        }
      })(
        '.scene-nav-info {\n  bottom: 5px;\n  width: 100%;\n  text-align: center;\n  color: slategrey;\n  opacity: 0.7;\n  font-size: 10px;\n}\n\n.scene-tooltip {\n  color: lavender;\n  font-size: 15px;\n}\n\n.scene-nav-info, .scene-tooltip {\n  position: absolute;\n  font-family: sans-serif;\n  pointer-events: none;\n}\n\n.scene-container canvas:focus {\n  outline: none;\n}',
      )
      var Qe = window.THREE
          ? window.THREE
          : {
              WebGLRenderer: H.CP7,
              Scene: H.xsS,
              PerspectiveCamera: H.cPb,
              Raycaster: H.iMs,
              TextureLoader: H.dpR,
              Vector2: H.FM8,
              Vector3: H.Pa4,
              Box3: H.ZzF,
              Color: H.Ilk,
              Mesh: H.Kj0,
              SphereGeometry: H.xo$,
              MeshBasicMaterial: H.vBJ,
              BackSide: H._Li,
              EventDispatcher: H.pBf,
              MOUSE: H.RsA,
              Quaternion: H._fP,
              Spherical: H.$V,
              Clock: H.SUY,
            },
        Je = (0, b.Z)({
          props: {
            width: {
              default: window.innerWidth,
              onChange: function (e, t, n) {
                isNaN(e) && (t.width = n)
              },
            },
            height: {
              default: window.innerHeight,
              onChange: function (e, t, n) {
                isNaN(e) && (t.height = n)
              },
            },
            backgroundColor: { default: '#000011' },
            backgroundImageUrl: {},
            onBackgroundImageLoaded: {},
            showNavInfo: { default: !0 },
            skyRadius: { default: 5e4 },
            objects: { default: [] },
            enablePointerInteraction: {
              default: !0,
              onChange: function (e, t) {
                ;(t.hoverObj = null), t.toolTipElem && (t.toolTipElem.innerHTML = '')
              },
              triggerUpdate: !1,
            },
            lineHoverPrecision: { default: 1, triggerUpdate: !1 },
            hoverOrderComparator: {
              default: function () {
                return -1
              },
              triggerUpdate: !1,
            },
            hoverFilter: {
              default: function () {
                return !0
              },
              triggerUpdate: !1,
            },
            tooltipContent: { triggerUpdate: !1 },
            hoverDuringDrag: { default: !1, triggerUpdate: !1 },
            clickAfterDrag: { default: !1, triggerUpdate: !1 },
            onHover: { default: function () {}, triggerUpdate: !1 },
            onClick: { default: function () {}, triggerUpdate: !1 },
            onRightClick: { triggerUpdate: !1 },
          },
          methods: {
            tick: function (e) {
              if (e.initialised) {
                if (
                  (e.controls.update && e.controls.update(e.clock.getDelta()),
                  e.postProcessingComposer
                    ? e.postProcessingComposer.render()
                    : e.renderer.render(e.scene, e.camera),
                  e.extraRenderers.forEach(function (t) {
                    return t.render(e.scene, e.camera)
                  }),
                  e.enablePointerInteraction)
                ) {
                  var t = null
                  if (e.hoverDuringDrag || !e.isPointerDragging) {
                    var n = this.intersectingObjects(e.pointerPos.x, e.pointerPos.y)
                        .filter(function (t) {
                          return e.hoverFilter(t.object)
                        })
                        .sort(function (t, n) {
                          return e.hoverOrderComparator(t.object, n.object)
                        }),
                      r = n.length ? n[0] : null
                    ;(t = r ? r.object : null), (e.intersectionPoint = r ? r.point : null)
                  }
                  t !== e.hoverObj &&
                    (e.onHover(t, e.hoverObj),
                    (e.toolTipElem.innerHTML = (t && (0, w.default)(e.tooltipContent)(t)) || ''),
                    (e.hoverObj = t))
                }
                We.ZP.update()
              }
              return this
            },
            getPointerPos: function (e) {
              var t = e.pointerPos
              return { x: t.x, y: t.y }
            },
            cameraPosition: function (e, t, n, r) {
              var i = e.camera
              if (t && e.initialised) {
                var o = t,
                  a = n || { x: 0, y: 0, z: 0 }
                if (r) {
                  var s = Object.assign({}, i.position),
                    u = d()
                  new We.ZP.Tween(s)
                    .to(o, r)
                    .easing(We.ZP.Easing.Quadratic.Out)
                    .onUpdate(l)
                    .start(),
                    new We.ZP.Tween(u)
                      .to(a, r / 3)
                      .easing(We.ZP.Easing.Quadratic.Out)
                      .onUpdate(c)
                      .start()
                } else l(o), c(a)
                return this
              }
              return Object.assign({}, i.position, { lookAt: d() })
              function l(e) {
                var t = e.x,
                  n = e.y,
                  r = e.z
                void 0 !== t && (i.position.x = t),
                  void 0 !== n && (i.position.y = n),
                  void 0 !== r && (i.position.z = r)
              }
              function c(t) {
                e.controls.target = new Qe.Vector3(t.x, t.y, t.z)
              }
              function d() {
                return Object.assign(
                  new Qe.Vector3(0, 0, -1e3).applyQuaternion(i.quaternion).add(i.position),
                )
              }
            },
            zoomToFit: function (e) {
              for (
                var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0,
                  n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 10,
                  r = arguments.length,
                  i = new Array(r > 3 ? r - 3 : 0),
                  o = 3;
                o < r;
                o++
              )
                i[o - 3] = arguments[o]
              return this.fitToBbox(this.getBbox.apply(this, i), t, n)
            },
            fitToBbox: function (e, t) {
              var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0,
                r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 10,
                i = e.camera
              if (t) {
                var o = new Qe.Vector3(0, 0, 0),
                  a =
                    2 *
                    Math.max.apply(
                      Math,
                      $e(
                        Object.entries(t).map(function (e) {
                          var t = Ze(e, 2),
                            n = t[0],
                            r = t[1]
                          return Math.max.apply(
                            Math,
                            $e(
                              r.map(function (e) {
                                return Math.abs(o[n] - e)
                              }),
                            ),
                          )
                        }),
                      ),
                    ),
                  s = (1 - (2 * r) / e.height) * i.fov,
                  u = a / Math.atan((s * Math.PI) / 180),
                  l = u / i.aspect,
                  c = Math.max(u, l)
                if (c > 0) {
                  var d = o.clone().sub(i.position).normalize().multiplyScalar(-c)
                  this.cameraPosition(d, o, n)
                }
              }
              return this
            },
            getBbox: function (e) {
              var t =
                  arguments.length > 1 && void 0 !== arguments[1]
                    ? arguments[1]
                    : function () {
                        return !0
                      },
                n = new Qe.Box3(new Qe.Vector3(0, 0, 0), new Qe.Vector3(0, 0, 0)),
                r = e.objects.filter(t)
              return r.length
                ? (r.forEach(function (e) {
                    return n.expandByObject(e)
                  }),
                  Object.assign.apply(
                    Object,
                    $e(
                      ['x', 'y', 'z'].map(function (e) {
                        return Ke({}, e, [n.min[e], n.max[e]])
                      }),
                    ),
                  ))
                : null
            },
            getScreenCoords: function (e, t, n, r) {
              var i = new Qe.Vector3(t, n, r)
              return (
                i.project(this.camera()),
                { x: ((i.x + 1) * e.width) / 2, y: (-(i.y - 1) * e.height) / 2 }
              )
            },
            getSceneCoords: function (e, t, n) {
              var r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0,
                i = new Qe.Vector2((t / e.width) * 2 - 1, (-n / e.height) * 2 + 1),
                o = new Qe.Raycaster()
              return o.setFromCamera(i, e.camera), Object.assign({}, o.ray.at(r, new Qe.Vector3()))
            },
            intersectingObjects: function (e, t, n) {
              var r = new Qe.Vector2((t / e.width) * 2 - 1, (-n / e.height) * 2 + 1),
                i = new Qe.Raycaster()
              return (
                (i.params.Line.threshold = e.lineHoverPrecision),
                i.setFromCamera(r, e.camera),
                i.intersectObjects(e.objects, !0)
              )
            },
            renderer: function (e) {
              return e.renderer
            },
            scene: function (e) {
              return e.scene
            },
            camera: function (e) {
              return e.camera
            },
            postProcessingComposer: function (e) {
              return e.postProcessingComposer
            },
            controls: function (e) {
              return e.controls
            },
            tbControls: function (e) {
              return e.controls
            },
          },
          stateInit: function () {
            return {
              scene: new Qe.Scene(),
              camera: new Qe.PerspectiveCamera(),
              clock: new Qe.Clock(),
            }
          },
          init: function (e, t) {
            var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
              r = n.controlType,
              i = void 0 === r ? 'trackball' : r,
              o = n.rendererConfig,
              a = void 0 === o ? {} : o,
              s = n.extraRenderers,
              u = void 0 === s ? [] : s,
              l = n.waitForLoadComplete,
              c = void 0 === l || l
            ;(e.innerHTML = ''),
              e.appendChild((t.container = document.createElement('div'))),
              (t.container.className = 'scene-container'),
              (t.container.style.position = 'relative'),
              t.container.appendChild((t.navInfo = document.createElement('div'))),
              (t.navInfo.className = 'scene-nav-info'),
              (t.navInfo.textContent =
                {
                  orbit: 'Left-click: rotate, Mouse-wheel/middle-click: zoom, Right-click: pan',
                  trackball: 'Left-click: rotate, Mouse-wheel/middle-click: zoom, Right-click: pan',
                  fly: 'WASD: move, R|F: up | down, Q|E: roll, up|down: pitch, left|right: yaw',
                }[i] || ''),
              (t.navInfo.style.display = t.showNavInfo ? null : 'none'),
              (t.toolTipElem = document.createElement('div')),
              t.toolTipElem.classList.add('scene-tooltip'),
              t.container.appendChild(t.toolTipElem),
              (t.pointerPos = new Qe.Vector2()),
              (t.pointerPos.x = -2),
              (t.pointerPos.y = -2),
              ['pointermove', 'pointerdown'].forEach(function (e) {
                return t.container.addEventListener(
                  e,
                  function (n) {
                    if (
                      ('pointerdown' === e && (t.isPointerPressed = !0),
                      !t.isPointerDragging &&
                        'pointermove' === n.type &&
                        (n.pressure > 0 || t.isPointerPressed) &&
                        ('touch' !== n.pointerType ||
                          void 0 === n.movementX ||
                          [n.movementX, n.movementY].some(function (e) {
                            return Math.abs(e) > 1
                          })) &&
                        (t.isPointerDragging = !0),
                      t.enablePointerInteraction)
                    ) {
                      var r = (function (e) {
                        var t = e.getBoundingClientRect(),
                          n = window.pageXOffset || document.documentElement.scrollLeft,
                          r = window.pageYOffset || document.documentElement.scrollTop
                        return { top: t.top + r, left: t.left + n }
                      })(t.container)
                      ;(t.pointerPos.x = n.pageX - r.left),
                        (t.pointerPos.y = n.pageY - r.top),
                        (t.toolTipElem.style.top = ''.concat(t.pointerPos.y, 'px')),
                        (t.toolTipElem.style.left = ''.concat(t.pointerPos.x, 'px')),
                        (t.toolTipElem.style.transform = 'translate(-'.concat(
                          (t.pointerPos.x / t.width) * 100,
                          '%, 21px)',
                        ))
                    }
                  },
                  { passive: !0 },
                )
              }),
              t.container.addEventListener(
                'pointerup',
                function (e) {
                  ;(t.isPointerPressed = !1),
                    (t.isPointerDragging && ((t.isPointerDragging = !1), !t.clickAfterDrag)) ||
                      requestAnimationFrame(function () {
                        0 === e.button && t.onClick(t.hoverObj || null, e, t.intersectionPoint),
                          2 === e.button &&
                            t.onRightClick &&
                            t.onRightClick(t.hoverObj || null, e, t.intersectionPoint)
                      })
                },
                { passive: !0, capture: !0 },
              ),
              t.container.addEventListener('contextmenu', function (e) {
                t.onRightClick && e.preventDefault()
              }),
              (t.renderer = new Qe.WebGLRenderer(Object.assign({ antialias: !0, alpha: !0 }, a))),
              t.renderer.setPixelRatio(Math.min(2, window.devicePixelRatio)),
              t.container.appendChild(t.renderer.domElement),
              (t.extraRenderers = u),
              t.extraRenderers.forEach(function (e) {
                ;(e.domElement.style.position = 'absolute'),
                  (e.domElement.style.top = '0px'),
                  (e.domElement.style.pointerEvents = 'none'),
                  t.container.appendChild(e.domElement)
              }),
              (t.postProcessingComposer = new pe(t.renderer)),
              t.postProcessingComposer.addPass(new me(t.scene, t.camera)),
              (t.controls = new { trackball: Q, orbit: ne, fly: ie }[i](
                t.camera,
                t.renderer.domElement,
              )),
              'fly' === i &&
                ((t.controls.movementSpeed = 300),
                (t.controls.rollSpeed = Math.PI / 6),
                (t.controls.dragToLook = !0)),
              ('trackball' !== i && 'orbit' !== i) ||
                ((t.controls.minDistance = 0.1),
                (t.controls.maxDistance = t.skyRadius),
                t.controls.addEventListener('start', function () {
                  t.controlsEngaged = !0
                }),
                t.controls.addEventListener('change', function () {
                  t.controlsEngaged && (t.controlsDragging = !0)
                }),
                t.controls.addEventListener('end', function () {
                  ;(t.controlsEngaged = !1), (t.controlsDragging = !1)
                })),
              [t.renderer, t.postProcessingComposer]
                .concat($e(t.extraRenderers))
                .forEach(function (e) {
                  return e.setSize(t.width, t.height)
                }),
              (t.camera.aspect = t.width / t.height),
              t.camera.updateProjectionMatrix(),
              (t.camera.position.z = 1e3),
              t.scene.add((t.skysphere = new Qe.Mesh())),
              (t.skysphere.visible = !1),
              (t.loadComplete = t.scene.visible = !c),
              (window.scene = t.scene)
          },
          update: function (e, t) {
            if (
              (e.width &&
                e.height &&
                (t.hasOwnProperty('width') || t.hasOwnProperty('height')) &&
                ((e.container.style.width = e.width),
                (e.container.style.height = e.height),
                [e.renderer, e.postProcessingComposer]
                  .concat($e(e.extraRenderers))
                  .forEach(function (t) {
                    return t.setSize(e.width, e.height)
                  }),
                (e.camera.aspect = e.width / e.height),
                e.camera.updateProjectionMatrix()),
              t.hasOwnProperty('skyRadius') &&
                e.skyRadius &&
                (e.controls.hasOwnProperty('maxDistance') &&
                  t.skyRadius &&
                  (e.controls.maxDistance = e.skyRadius),
                (e.camera.far = 2.5 * e.skyRadius),
                e.camera.updateProjectionMatrix(),
                (e.skysphere.geometry = new Qe.SphereGeometry(e.skyRadius))),
              t.hasOwnProperty('backgroundColor'))
            ) {
              var n = Ne(e.backgroundColor).alpha
              void 0 === n && (n = 1),
                e.renderer.setClearColor(new Qe.Color(qe(1, e.backgroundColor)), n)
            }
            function r() {
              e.loadComplete = e.scene.visible = !0
            }
            t.hasOwnProperty('backgroundImageUrl') &&
              (e.backgroundImageUrl
                ? new Qe.TextureLoader().load(e.backgroundImageUrl, function (t) {
                    ;(e.skysphere.material = new Qe.MeshBasicMaterial({
                      map: t,
                      side: Qe.BackSide,
                    })),
                      (e.skysphere.visible = !0),
                      e.onBackgroundImageLoaded && setTimeout(e.onBackgroundImageLoaded),
                      !e.loadComplete && r()
                  })
                : ((e.skysphere.visible = !1),
                  (e.skysphere.material.map = null),
                  !e.loadComplete && r())),
              t.hasOwnProperty('showNavInfo') &&
                (e.navInfo.style.display = e.showNavInfo ? null : 'none'),
              t.hasOwnProperty('objects') &&
                ((t.objects || []).forEach(function (t) {
                  return e.scene.remove(t)
                }),
                e.objects.forEach(function (t) {
                  return e.scene.add(t)
                }))
          },
        })
      function et(e, t) {
        var n = Object.keys(e)
        if (Object.getOwnPropertySymbols) {
          var r = Object.getOwnPropertySymbols(e)
          t &&
            (r = r.filter(function (t) {
              return Object.getOwnPropertyDescriptor(e, t).enumerable
            })),
            n.push.apply(n, r)
        }
        return n
      }
      function tt(e) {
        for (var t = 1; t < arguments.length; t++) {
          var n = null != arguments[t] ? arguments[t] : {}
          t % 2
            ? et(Object(n), !0).forEach(function (t) {
                nt(e, t, n[t])
              })
            : Object.getOwnPropertyDescriptors
            ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n))
            : et(Object(n)).forEach(function (t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t))
              })
        }
        return e
      }
      function nt(e, t, n) {
        return (
          t in e
            ? Object.defineProperty(e, t, {
                value: n,
                enumerable: !0,
                configurable: !0,
                writable: !0,
              })
            : (e[t] = n),
          e
        )
      }
      function rt(e) {
        return (
          (function (e) {
            if (Array.isArray(e)) return it(e)
          })(e) ||
          (function (e) {
            if (
              ('undefined' !== typeof Symbol && null != e[Symbol.iterator]) ||
              null != e['@@iterator']
            )
              return Array.from(e)
          })(e) ||
          (function (e, t) {
            if (!e) return
            if ('string' === typeof e) return it(e, t)
            var n = Object.prototype.toString.call(e).slice(8, -1)
            'Object' === n && e.constructor && (n = e.constructor.name)
            if ('Map' === n || 'Set' === n) return Array.from(e)
            if ('Arguments' === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
              return it(e, t)
          })(e) ||
          (function () {
            throw new TypeError(
              'Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.',
            )
          })()
        )
      }
      function it(e, t) {
        ;(null == t || t > e.length) && (t = e.length)
        for (var n = 0, r = new Array(t); n < t; n++) r[n] = e[n]
        return r
      }
      function ot(e, t) {
        var n = new t()
        return {
          linkProp: function (t) {
            return {
              default: n[t](),
              onChange: function (n, r) {
                r[e][t](n)
              },
              triggerUpdate: !1,
            }
          },
          linkMethod: function (t) {
            return function (n) {
              for (
                var r = n[e], i = arguments.length, o = new Array(i > 1 ? i - 1 : 0), a = 1;
                a < i;
                a++
              )
                o[a - 1] = arguments[a]
              var s = r[t].apply(r, o)
              return s === r ? this : s
            }
          },
        }
      }
      !(function (e, t) {
        void 0 === t && (t = {})
        var n = t.insertAt
        if (e && 'undefined' !== typeof document) {
          var r = document.head || document.getElementsByTagName('head')[0],
            i = document.createElement('style')
          ;(i.type = 'text/css'),
            'top' === n && r.firstChild ? r.insertBefore(i, r.firstChild) : r.appendChild(i),
            i.styleSheet ? (i.styleSheet.cssText = e) : i.appendChild(document.createTextNode(e))
        }
      })(
        '.graph-info-msg {\n  top: 50%;\n  width: 100%;\n  text-align: center;\n  color: lavender;\n  opacity: 0.7;\n  font-size: 22px;\n  position: absolute;\n  font-family: Sans-serif;\n}\n\n.scene-container .clickable {\n  cursor: pointer;\n}\n\n.scene-container .grabbable {\n  cursor: move;\n  cursor: grab;\n  cursor: -moz-grab;\n  cursor: -webkit-grab;\n}\n\n.scene-container .grabbable:active {\n  cursor: grabbing;\n  cursor: -moz-grabbing;\n  cursor: -webkit-grabbing;\n}',
      )
      var at = window.THREE
          ? window.THREE
          : { AmbientLight: H.Mig, DirectionalLight: H.Ox3, Vector3: H.Pa4 },
        st = ot('forceGraph', Z.default),
        ut = Object.assign.apply(
          Object,
          rt(
            [
              'jsonUrl',
              'graphData',
              'numDimensions',
              'dagMode',
              'dagLevelDistance',
              'dagNodeFilter',
              'onDagError',
              'nodeRelSize',
              'nodeId',
              'nodeVal',
              'nodeResolution',
              'nodeColor',
              'nodeAutoColorBy',
              'nodeOpacity',
              'nodeVisibility',
              'nodeThreeObject',
              'nodeThreeObjectExtend',
              'linkSource',
              'linkTarget',
              'linkVisibility',
              'linkColor',
              'linkAutoColorBy',
              'linkOpacity',
              'linkWidth',
              'linkResolution',
              'linkCurvature',
              'linkCurveRotation',
              'linkMaterial',
              'linkThreeObject',
              'linkThreeObjectExtend',
              'linkPositionUpdate',
              'linkDirectionalArrowLength',
              'linkDirectionalArrowColor',
              'linkDirectionalArrowRelPos',
              'linkDirectionalArrowResolution',
              'linkDirectionalParticles',
              'linkDirectionalParticleSpeed',
              'linkDirectionalParticleWidth',
              'linkDirectionalParticleColor',
              'linkDirectionalParticleResolution',
              'forceEngine',
              'd3AlphaDecay',
              'd3VelocityDecay',
              'd3AlphaMin',
              'ngraphPhysics',
              'warmupTicks',
              'cooldownTicks',
              'cooldownTime',
              'onEngineTick',
              'onEngineStop',
            ].map(function (e) {
              return nt({}, e, st.linkProp(e))
            }),
          ),
        ),
        lt = Object.assign.apply(
          Object,
          rt(
            ['refresh', 'getGraphBbox', 'd3Force', 'd3ReheatSimulation', 'emitParticle'].map(
              function (e) {
                return nt({}, e, st.linkMethod(e))
              },
            ),
          ),
        ),
        ct = ot('renderObjs', Je),
        dt = Object.assign.apply(
          Object,
          rt(
            ['width', 'height', 'backgroundColor', 'showNavInfo', 'enablePointerInteraction'].map(
              function (e) {
                return nt({}, e, ct.linkProp(e))
              },
            ),
          ),
        ),
        ft = Object.assign.apply(
          Object,
          rt(
            ['cameraPosition', 'postProcessingComposer'].map(function (e) {
              return nt({}, e, ct.linkMethod(e))
            }),
          ).concat([
            {
              graph2ScreenCoords: ct.linkMethod('getScreenCoords'),
              screen2GraphCoords: ct.linkMethod('getSceneCoords'),
            },
          ]),
        )
      function ht(e) {
        for (var t = e; t && !t.hasOwnProperty('__graphObjType'); ) t = t.parent
        return t
      }
      var pt = (0, b.Z)({
          props: tt(
            tt(
              {
                nodeLabel: { default: 'name', triggerUpdate: !1 },
                linkLabel: { default: 'name', triggerUpdate: !1 },
                linkHoverPrecision: {
                  default: 1,
                  onChange: function (e, t) {
                    return t.renderObjs.lineHoverPrecision(e)
                  },
                  triggerUpdate: !1,
                },
                enableNavigationControls: {
                  default: !0,
                  onChange: function (e, t) {
                    var n = t.renderObjs.controls()
                    n && (n.enabled = e)
                  },
                  triggerUpdate: !1,
                },
                enableNodeDrag: { default: !0, triggerUpdate: !1 },
                onNodeDrag: { default: function () {}, triggerUpdate: !1 },
                onNodeDragEnd: { default: function () {}, triggerUpdate: !1 },
                onNodeClick: { triggerUpdate: !1 },
                onNodeRightClick: { triggerUpdate: !1 },
                onNodeHover: { triggerUpdate: !1 },
                onLinkClick: { triggerUpdate: !1 },
                onLinkRightClick: { triggerUpdate: !1 },
                onLinkHover: { triggerUpdate: !1 },
                onBackgroundClick: { triggerUpdate: !1 },
                onBackgroundRightClick: { triggerUpdate: !1 },
              },
              ut,
            ),
            dt,
          ),
          methods: tt(
            tt(
              {
                zoomToFit: function (e, t, n) {
                  for (
                    var r, i = arguments.length, o = new Array(i > 3 ? i - 3 : 0), a = 3;
                    a < i;
                    a++
                  )
                    o[a - 3] = arguments[a]
                  return (
                    e.renderObjs.fitToBbox((r = e.forceGraph).getGraphBbox.apply(r, o), t, n), this
                  )
                },
                pauseAnimation: function (e) {
                  return (
                    null !== e.animationFrameRequestId &&
                      (cancelAnimationFrame(e.animationFrameRequestId),
                      (e.animationFrameRequestId = null)),
                    this
                  )
                },
                resumeAnimation: function (e) {
                  return null === e.animationFrameRequestId && this._animationCycle(), this
                },
                _animationCycle: function (e) {
                  e.enablePointerInteraction && (this.renderer().domElement.style.cursor = null),
                    e.forceGraph.tickFrame(),
                    e.renderObjs.tick(),
                    (e.animationFrameRequestId = requestAnimationFrame(this._animationCycle))
                },
                scene: function (e) {
                  return e.renderObjs.scene()
                },
                camera: function (e) {
                  return e.renderObjs.camera()
                },
                renderer: function (e) {
                  return e.renderObjs.renderer()
                },
                controls: function (e) {
                  return e.renderObjs.controls()
                },
                tbControls: function (e) {
                  return e.renderObjs.tbControls()
                },
                _destructor: function () {
                  this.pauseAnimation(), this.graphData({ nodes: [], links: [] })
                },
              },
              lt,
            ),
            ft,
          ),
          stateInit: function (e) {
            var t = e.controlType,
              n = e.rendererConfig,
              r = e.extraRenderers
            return {
              forceGraph: new Z.default(),
              renderObjs: Je({ controlType: t, rendererConfig: n, extraRenderers: r }),
            }
          },
          init: function (e, t) {
            ;(e.innerHTML = ''),
              e.appendChild((t.container = document.createElement('div'))),
              (t.container.style.position = 'relative')
            var n = document.createElement('div')
            t.container.appendChild(n), t.renderObjs(n)
            var r,
              i = t.renderObjs.camera(),
              o = t.renderObjs.renderer(),
              a = t.renderObjs.controls()
            ;(a.enabled = !!t.enableNavigationControls),
              (t.lastSetCameraZ = i.position.z),
              t.container.appendChild((r = document.createElement('div'))),
              (r.className = 'graph-info-msg'),
              (r.textContent = ''),
              t.forceGraph
                .onLoading(function () {
                  r.textContent = 'Loading...'
                })
                .onFinishLoading(function () {
                  r.textContent = ''
                })
                .onUpdate(function () {
                  ;(t.graphData = t.forceGraph.graphData()),
                    0 === i.position.x &&
                      0 === i.position.y &&
                      i.position.z === t.lastSetCameraZ &&
                      t.graphData.nodes.length &&
                      (i.lookAt(t.forceGraph.position),
                      (t.lastSetCameraZ = i.position.z = 170 * Math.cbrt(t.graphData.nodes.length)))
                })
                .onFinishUpdate(function () {
                  if (t._dragControls) {
                    var e = t.graphData.nodes.find(function (e) {
                      return e.__initialFixedPos && !e.__disposeControlsAfterDrag
                    })
                    e ? (e.__disposeControlsAfterDrag = !0) : t._dragControls.dispose(),
                      (t._dragControls = void 0)
                  }
                  if (t.enableNodeDrag && t.enablePointerInteraction && 'd3' === t.forceEngine) {
                    var n = (t._dragControls = new K(
                      t.graphData.nodes
                        .map(function (e) {
                          return e.__threeObj
                        })
                        .filter(function (e) {
                          return e
                        }),
                      i,
                      o.domElement,
                    ))
                    n.addEventListener('dragstart', function (e) {
                      ;(a.enabled = !1),
                        (e.object.__initialPos = e.object.position.clone()),
                        (e.object.__prevPos = e.object.position.clone())
                      var t = ht(e.object).__data
                      !t.__initialFixedPos &&
                        (t.__initialFixedPos = { fx: t.fx, fy: t.fy, fz: t.fz }),
                        !t.__initialPos && (t.__initialPos = { x: t.x, y: t.y, z: t.z }),
                        ['x', 'y', 'z'].forEach(function (e) {
                          return (t['f'.concat(e)] = t[e])
                        }),
                        o.domElement.classList.add('grabbable')
                    }),
                      n.addEventListener('drag', function (e) {
                        var n = ht(e.object)
                        if (!e.object.hasOwnProperty('__graphObjType')) {
                          var r = e.object.__initialPos,
                            i = e.object.__prevPos,
                            o = e.object.position
                          n.position.add(o.clone().sub(i)), i.copy(o), o.copy(r)
                        }
                        var a = n.__data,
                          s = n.position,
                          u = { x: s.x - a.x, y: s.y - a.y, z: s.z - a.z }
                        ;['x', 'y', 'z'].forEach(function (e) {
                          return (a['f'.concat(e)] = a[e] = s[e])
                        }),
                          t.forceGraph.d3AlphaTarget(0.3).resetCountdown(),
                          (a.__dragged = !0),
                          t.onNodeDrag(a, u)
                      }),
                      n.addEventListener('dragend', function (e) {
                        delete e.object.__initialPos, delete e.object.__prevPos
                        var r = ht(e.object).__data
                        r.__disposeControlsAfterDrag &&
                          (n.dispose(), delete r.__disposeControlsAfterDrag)
                        var i = r.__initialFixedPos,
                          s = r.__initialPos,
                          u = { x: s.x - r.x, y: s.y - r.y, z: s.z - r.z }
                        i &&
                          (['x', 'y', 'z'].forEach(function (e) {
                            var t = 'f'.concat(e)
                            void 0 === i[t] && delete r[t]
                          }),
                          delete r.__initialFixedPos,
                          delete r.__initialPos,
                          r.__dragged && (delete r.__dragged, t.onNodeDragEnd(r, u))),
                          t.forceGraph.d3AlphaTarget(0).resetCountdown(),
                          t.enableNavigationControls &&
                            ((a.enabled = !0),
                            a.domElement &&
                              a.domElement.ownerDocument &&
                              a.domElement.ownerDocument.dispatchEvent(
                                new PointerEvent('pointerup', { pointerType: 'touch' }),
                              )),
                          o.domElement.classList.remove('grabbable')
                      })
                  }
                }),
              t.renderObjs
                .objects([
                  new at.AmbientLight(12303291),
                  new at.DirectionalLight(16777215, 0.6),
                  t.forceGraph,
                ])
                .hoverOrderComparator(function (e, t) {
                  var n = ht(e)
                  if (!n) return 1
                  var r = ht(t)
                  if (!r) return -1
                  var i = function (e) {
                    return 'node' === e.__graphObjType
                  }
                  return i(r) - i(n)
                })
                .tooltipContent(function (e) {
                  var n = ht(e)
                  return (
                    (n && (0, w.default)(t[''.concat(n.__graphObjType, 'Label')])(n.__data)) || ''
                  )
                })
                .hoverDuringDrag(!1)
                .onHover(function (e) {
                  var n = ht(e)
                  if (n !== t.hoverObj) {
                    var r = t.hoverObj ? t.hoverObj.__graphObjType : null,
                      i = t.hoverObj ? t.hoverObj.__data : null,
                      a = n ? n.__graphObjType : null,
                      s = n ? n.__data : null
                    if (r && r !== a) {
                      var u = t['on'.concat('node' === r ? 'Node' : 'Link', 'Hover')]
                      u && u(null, i)
                    }
                    if (a) {
                      var l = t['on'.concat('node' === a ? 'Node' : 'Link', 'Hover')]
                      l && l(s, r === a ? i : null)
                    }
                    o.domElement.classList[
                      (n && t['on'.concat('node' === a ? 'Node' : 'Link', 'Click')]) ||
                      (!n && t.onBackgroundClick)
                        ? 'add'
                        : 'remove'
                    ]('clickable'),
                      (t.hoverObj = n)
                  }
                })
                .clickAfterDrag(!1)
                .onClick(function (e, n) {
                  var r = ht(e)
                  if (r) {
                    var i = t['on'.concat('node' === r.__graphObjType ? 'Node' : 'Link', 'Click')]
                    i && i(r.__data, n)
                  } else t.onBackgroundClick && t.onBackgroundClick(n)
                })
                .onRightClick(function (e, n) {
                  var r = ht(e)
                  if (r) {
                    var i =
                      t['on'.concat('node' === r.__graphObjType ? 'Node' : 'Link', 'RightClick')]
                    i && i(r.__data, n)
                  } else t.onBackgroundRightClick && t.onBackgroundRightClick(n)
                }),
              this._animationCycle()
          },
        }),
        vt = r(6156)
      function mt() {}
      function gt(e) {
        return null == e
          ? mt
          : function () {
              return this.querySelector(e)
            }
      }
      function yt(e) {
        return null == e ? [] : Array.isArray(e) ? e : Array.from(e)
      }
      function bt() {
        return []
      }
      function wt(e) {
        return null == e
          ? bt
          : function () {
              return this.querySelectorAll(e)
            }
      }
      function xt(e) {
        return function () {
          return this.matches(e)
        }
      }
      function Et(e) {
        return function (t) {
          return t.matches(e)
        }
      }
      var kt = Array.prototype.find
      function _t() {
        return this.firstElementChild
      }
      var Tt = Array.prototype.filter
      function Ot() {
        return Array.from(this.children)
      }
      function Ct(e) {
        return new Array(e.length)
      }
      function St(e, t) {
        ;(this.ownerDocument = e.ownerDocument),
          (this.namespaceURI = e.namespaceURI),
          (this._next = null),
          (this._parent = e),
          (this.__data__ = t)
      }
      function At(e) {
        return function () {
          return e
        }
      }
      function Pt(e, t, n, r, i, o) {
        for (var a, s = 0, u = t.length, l = o.length; s < l; ++s)
          (a = t[s]) ? ((a.__data__ = o[s]), (r[s] = a)) : (n[s] = new St(e, o[s]))
        for (; s < u; ++s) (a = t[s]) && (i[s] = a)
      }
      function Mt(e, t, n, r, i, o, a) {
        var s,
          u,
          l,
          c = new Map(),
          d = t.length,
          f = o.length,
          h = new Array(d)
        for (s = 0; s < d; ++s)
          (u = t[s]) &&
            ((h[s] = l = a.call(u, u.__data__, s, t) + ''), c.has(l) ? (i[s] = u) : c.set(l, u))
        for (s = 0; s < f; ++s)
          (l = a.call(e, o[s], s, o) + ''),
            (u = c.get(l))
              ? ((r[s] = u), (u.__data__ = o[s]), c.delete(l))
              : (n[s] = new St(e, o[s]))
        for (s = 0; s < d; ++s) (u = t[s]) && c.get(h[s]) === u && (i[s] = u)
      }
      function Rt(e) {
        return e.__data__
      }
      function jt(e) {
        return 'object' === typeof e && 'length' in e ? e : Array.from(e)
      }
      function Dt(e, t) {
        return e < t ? -1 : e > t ? 1 : e >= t ? 0 : NaN
      }
      function Lt(e, t) {
        var n
        if ('undefined' === typeof Symbol || null == e[Symbol.iterator]) {
          if (
            Array.isArray(e) ||
            (n = (function (e, t) {
              if (!e) return
              if ('string' === typeof e) return Nt(e, t)
              var n = Object.prototype.toString.call(e).slice(8, -1)
              'Object' === n && e.constructor && (n = e.constructor.name)
              if ('Map' === n || 'Set' === n) return Array.from(e)
              if ('Arguments' === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
                return Nt(e, t)
            })(e)) ||
            (t && e && 'number' === typeof e.length)
          ) {
            n && (e = n)
            var r = 0,
              i = function () {}
            return {
              s: i,
              n: function () {
                return r >= e.length ? { done: !0 } : { done: !1, value: e[r++] }
              },
              e: function (e) {
                throw e
              },
              f: i,
            }
          }
          throw new TypeError(
            'Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.',
          )
        }
        var o,
          a = !0,
          s = !1
        return {
          s: function () {
            n = e[Symbol.iterator]()
          },
          n: function () {
            var e = n.next()
            return (a = e.done), e
          },
          e: function (e) {
            ;(s = !0), (o = e)
          },
          f: function () {
            try {
              a || null == n.return || n.return()
            } finally {
              if (s) throw o
            }
          },
        }
      }
      function Nt(e, t) {
        ;(null == t || t > e.length) && (t = e.length)
        for (var n = 0, r = new Array(t); n < t; n++) r[n] = e[n]
        return r
      }
      St.prototype = {
        constructor: St,
        appendChild: function (e) {
          return this._parent.insertBefore(e, this._next)
        },
        insertBefore: function (e, t) {
          return this._parent.insertBefore(e, t)
        },
        querySelector: function (e) {
          return this._parent.querySelector(e)
        },
        querySelectorAll: function (e) {
          return this._parent.querySelectorAll(e)
        },
      }
      var It = 'http://www.w3.org/1999/xhtml',
        zt = {
          svg: 'http://www.w3.org/2000/svg',
          xhtml: It,
          xlink: 'http://www.w3.org/1999/xlink',
          xml: 'http://www.w3.org/XML/1998/namespace',
          xmlns: 'http://www.w3.org/2000/xmlns/',
        }
      function Ht(e) {
        var t = (e += ''),
          n = t.indexOf(':')
        return (
          n >= 0 && 'xmlns' !== (t = e.slice(0, n)) && (e = e.slice(n + 1)),
          zt.hasOwnProperty(t) ? { space: zt[t], local: e } : e
        )
      }
      function Bt(e) {
        return function () {
          this.removeAttribute(e)
        }
      }
      function Ft(e) {
        return function () {
          this.removeAttributeNS(e.space, e.local)
        }
      }
      function Vt(e, t) {
        return function () {
          this.setAttribute(e, t)
        }
      }
      function Ut(e, t) {
        return function () {
          this.setAttributeNS(e.space, e.local, t)
        }
      }
      function Gt(e, t) {
        return function () {
          var n = t.apply(this, arguments)
          null == n ? this.removeAttribute(e) : this.setAttribute(e, n)
        }
      }
      function qt(e, t) {
        return function () {
          var n = t.apply(this, arguments)
          null == n
            ? this.removeAttributeNS(e.space, e.local)
            : this.setAttributeNS(e.space, e.local, n)
        }
      }
      function Wt(e) {
        return (
          (e.ownerDocument && e.ownerDocument.defaultView) || (e.document && e) || e.defaultView
        )
      }
      function Kt(e) {
        return function () {
          this.style.removeProperty(e)
        }
      }
      function Zt(e, t, n) {
        return function () {
          this.style.setProperty(e, t, n)
        }
      }
      function $t(e, t, n) {
        return function () {
          var r = t.apply(this, arguments)
          null == r ? this.style.removeProperty(e) : this.style.setProperty(e, r, n)
        }
      }
      function Xt(e, t) {
        return e.style.getPropertyValue(t) || Wt(e).getComputedStyle(e, null).getPropertyValue(t)
      }
      function Yt(e) {
        return function () {
          delete this[e]
        }
      }
      function Qt(e, t) {
        return function () {
          this[e] = t
        }
      }
      function Jt(e, t) {
        return function () {
          var n = t.apply(this, arguments)
          null == n ? delete this[e] : (this[e] = n)
        }
      }
      function en(e) {
        return e.trim().split(/^|\s+/)
      }
      function tn(e) {
        return e.classList || new nn(e)
      }
      function nn(e) {
        ;(this._node = e), (this._names = en(e.getAttribute('class') || ''))
      }
      function rn(e, t) {
        for (var n = tn(e), r = -1, i = t.length; ++r < i; ) n.add(t[r])
      }
      function on(e, t) {
        for (var n = tn(e), r = -1, i = t.length; ++r < i; ) n.remove(t[r])
      }
      function an(e) {
        return function () {
          rn(this, e)
        }
      }
      function sn(e) {
        return function () {
          on(this, e)
        }
      }
      function un(e, t) {
        return function () {
          ;(t.apply(this, arguments) ? rn : on)(this, e)
        }
      }
      function ln() {
        this.textContent = ''
      }
      function cn(e) {
        return function () {
          this.textContent = e
        }
      }
      function dn(e) {
        return function () {
          var t = e.apply(this, arguments)
          this.textContent = null == t ? '' : t
        }
      }
      function fn() {
        this.innerHTML = ''
      }
      function hn(e) {
        return function () {
          this.innerHTML = e
        }
      }
      function pn(e) {
        return function () {
          var t = e.apply(this, arguments)
          this.innerHTML = null == t ? '' : t
        }
      }
      function vn() {
        this.nextSibling && this.parentNode.appendChild(this)
      }
      function mn() {
        this.previousSibling && this.parentNode.insertBefore(this, this.parentNode.firstChild)
      }
      function gn(e) {
        return function () {
          var t = this.ownerDocument,
            n = this.namespaceURI
          return n === It && t.documentElement.namespaceURI === It
            ? t.createElement(e)
            : t.createElementNS(n, e)
        }
      }
      function yn(e) {
        return function () {
          return this.ownerDocument.createElementNS(e.space, e.local)
        }
      }
      function bn(e) {
        var t = Ht(e)
        return (t.local ? yn : gn)(t)
      }
      function wn() {
        return null
      }
      function xn() {
        var e = this.parentNode
        e && e.removeChild(this)
      }
      function En() {
        var e = this.cloneNode(!1),
          t = this.parentNode
        return t ? t.insertBefore(e, this.nextSibling) : e
      }
      function kn() {
        var e = this.cloneNode(!0),
          t = this.parentNode
        return t ? t.insertBefore(e, this.nextSibling) : e
      }
      function _n(e) {
        return e
          .trim()
          .split(/^|\s+/)
          .map(function (e) {
            var t = '',
              n = e.indexOf('.')
            return n >= 0 && ((t = e.slice(n + 1)), (e = e.slice(0, n))), { type: e, name: t }
          })
      }
      function Tn(e) {
        return function () {
          var t = this.__on
          if (t) {
            for (var n, r = 0, i = -1, o = t.length; r < o; ++r)
              (n = t[r]),
                (e.type && n.type !== e.type) || n.name !== e.name
                  ? (t[++i] = n)
                  : this.removeEventListener(n.type, n.listener, n.options)
            ++i ? (t.length = i) : delete this.__on
          }
        }
      }
      function On(e, t, n) {
        return function () {
          var r,
            i = this.__on,
            o = (function (e) {
              return function (t) {
                e.call(this, t, this.__data__)
              }
            })(t)
          if (i)
            for (var a = 0, s = i.length; a < s; ++a)
              if ((r = i[a]).type === e.type && r.name === e.name)
                return (
                  this.removeEventListener(r.type, r.listener, r.options),
                  this.addEventListener(r.type, (r.listener = o), (r.options = n)),
                  void (r.value = t)
                )
          this.addEventListener(e.type, o, n),
            (r = { type: e.type, name: e.name, value: t, listener: o, options: n }),
            i ? i.push(r) : (this.__on = [r])
        }
      }
      function Cn(e, t, n) {
        var r = Wt(e),
          i = r.CustomEvent
        'function' === typeof i
          ? (i = new i(t, n))
          : ((i = r.document.createEvent('Event')),
            n
              ? (i.initEvent(t, n.bubbles, n.cancelable), (i.detail = n.detail))
              : i.initEvent(t, !1, !1)),
          e.dispatchEvent(i)
      }
      function Sn(e, t) {
        return function () {
          return Cn(this, e, t)
        }
      }
      function An(e, t) {
        return function () {
          return Cn(this, e, t.apply(this, arguments))
        }
      }
      nn.prototype = {
        add: function (e) {
          this._names.indexOf(e) < 0 &&
            (this._names.push(e), this._node.setAttribute('class', this._names.join(' ')))
        },
        remove: function (e) {
          var t = this._names.indexOf(e)
          t >= 0 &&
            (this._names.splice(t, 1), this._node.setAttribute('class', this._names.join(' ')))
        },
        contains: function (e) {
          return this._names.indexOf(e) >= 0
        },
      }
      var Pn = r(7757),
        Mn = r.n(Pn),
        Rn = Mn().mark(jn)
      function jn() {
        var e, t, n, r, i, o, a
        return Mn().wrap(
          function (s) {
            for (;;)
              switch ((s.prev = s.next)) {
                case 0:
                  ;(e = this._groups), (t = 0), (n = e.length)
                case 1:
                  if (!(t < n)) {
                    s.next = 13
                    break
                  }
                  ;(r = e[t]), (i = 0), (o = r.length)
                case 3:
                  if (!(i < o)) {
                    s.next = 10
                    break
                  }
                  if (!(a = r[i])) {
                    s.next = 7
                    break
                  }
                  return (s.next = 7), a
                case 7:
                  ++i, (s.next = 3)
                  break
                case 10:
                  ++t, (s.next = 1)
                  break
                case 13:
                case 'end':
                  return s.stop()
              }
          },
          Rn,
          this,
        )
      }
      var Dn = [null]
      function Ln(e, t) {
        ;(this._groups = e), (this._parents = t)
      }
      function Nn() {
        return new Ln([[document.documentElement]], Dn)
      }
      Ln.prototype = Nn.prototype = (0, vt.Z)(
        {
          constructor: Ln,
          select: function (e) {
            'function' !== typeof e && (e = gt(e))
            for (var t = this._groups, n = t.length, r = new Array(n), i = 0; i < n; ++i)
              for (var o, a, s = t[i], u = s.length, l = (r[i] = new Array(u)), c = 0; c < u; ++c)
                (o = s[c]) &&
                  (a = e.call(o, o.__data__, c, s)) &&
                  ('__data__' in o && (a.__data__ = o.__data__), (l[c] = a))
            return new Ln(r, this._parents)
          },
          selectAll: function (e) {
            e =
              'function' === typeof e
                ? (function (e) {
                    return function () {
                      return yt(e.apply(this, arguments))
                    }
                  })(e)
                : wt(e)
            for (var t = this._groups, n = t.length, r = [], i = [], o = 0; o < n; ++o)
              for (var a, s = t[o], u = s.length, l = 0; l < u; ++l)
                (a = s[l]) && (r.push(e.call(a, a.__data__, l, s)), i.push(a))
            return new Ln(r, i)
          },
          selectChild: function (e) {
            return this.select(
              null == e
                ? _t
                : (function (e) {
                    return function () {
                      return kt.call(this.children, e)
                    }
                  })('function' === typeof e ? e : Et(e)),
            )
          },
          selectChildren: function (e) {
            return this.selectAll(
              null == e
                ? Ot
                : (function (e) {
                    return function () {
                      return Tt.call(this.children, e)
                    }
                  })('function' === typeof e ? e : Et(e)),
            )
          },
          filter: function (e) {
            'function' !== typeof e && (e = xt(e))
            for (var t = this._groups, n = t.length, r = new Array(n), i = 0; i < n; ++i)
              for (var o, a = t[i], s = a.length, u = (r[i] = []), l = 0; l < s; ++l)
                (o = a[l]) && e.call(o, o.__data__, l, a) && u.push(o)
            return new Ln(r, this._parents)
          },
          data: function (e, t) {
            if (!arguments.length) return Array.from(this, Rt)
            var n = t ? Mt : Pt,
              r = this._parents,
              i = this._groups
            'function' !== typeof e && (e = At(e))
            for (
              var o = i.length, a = new Array(o), s = new Array(o), u = new Array(o), l = 0;
              l < o;
              ++l
            ) {
              var c = r[l],
                d = i[l],
                f = d.length,
                h = jt(e.call(c, c && c.__data__, l, r)),
                p = h.length,
                v = (s[l] = new Array(p)),
                m = (a[l] = new Array(p)),
                g = (u[l] = new Array(f))
              n(c, d, v, m, g, h, t)
              for (var y, b, w = 0, x = 0; w < p; ++w)
                if ((y = v[w])) {
                  for (w >= x && (x = w + 1); !(b = m[x]) && ++x < p; );
                  y._next = b || null
                }
            }
            return ((a = new Ln(a, r))._enter = s), (a._exit = u), a
          },
          enter: function () {
            return new Ln(this._enter || this._groups.map(Ct), this._parents)
          },
          exit: function () {
            return new Ln(this._exit || this._groups.map(Ct), this._parents)
          },
          join: function (e, t, n) {
            var r = this.enter(),
              i = this,
              o = this.exit()
            return (
              'function' === typeof e ? (r = e(r)) && (r = r.selection()) : (r = r.append(e + '')),
              null != t && (i = t(i)) && (i = i.selection()),
              null == n ? o.remove() : n(o),
              r && i ? r.merge(i).order() : i
            )
          },
          merge: function (e) {
            for (
              var t = e.selection ? e.selection() : e,
                n = this._groups,
                r = t._groups,
                i = n.length,
                o = r.length,
                a = Math.min(i, o),
                s = new Array(i),
                u = 0;
              u < a;
              ++u
            )
              for (
                var l, c = n[u], d = r[u], f = c.length, h = (s[u] = new Array(f)), p = 0;
                p < f;
                ++p
              )
                (l = c[p] || d[p]) && (h[p] = l)
            for (; u < i; ++u) s[u] = n[u]
            return new Ln(s, this._parents)
          },
          selection: function () {
            return this
          },
          order: function () {
            for (var e = this._groups, t = -1, n = e.length; ++t < n; )
              for (var r, i = e[t], o = i.length - 1, a = i[o]; --o >= 0; )
                (r = i[o]) &&
                  (a && 4 ^ r.compareDocumentPosition(a) && a.parentNode.insertBefore(r, a),
                  (a = r))
            return this
          },
          sort: function (e) {
            function t(t, n) {
              return t && n ? e(t.__data__, n.__data__) : !t - !n
            }
            e || (e = Dt)
            for (var n = this._groups, r = n.length, i = new Array(r), o = 0; o < r; ++o) {
              for (var a, s = n[o], u = s.length, l = (i[o] = new Array(u)), c = 0; c < u; ++c)
                (a = s[c]) && (l[c] = a)
              l.sort(t)
            }
            return new Ln(i, this._parents).order()
          },
          call: function () {
            var e = arguments[0]
            return (arguments[0] = this), e.apply(null, arguments), this
          },
          nodes: function () {
            return Array.from(this)
          },
          node: function () {
            for (var e = this._groups, t = 0, n = e.length; t < n; ++t)
              for (var r = e[t], i = 0, o = r.length; i < o; ++i) {
                var a = r[i]
                if (a) return a
              }
            return null
          },
          size: function () {
            var e,
              t = 0,
              n = Lt(this)
            try {
              for (n.s(); !(e = n.n()).done; ) {
                e.value
                ++t
              }
            } catch (r) {
              n.e(r)
            } finally {
              n.f()
            }
            return t
          },
          empty: function () {
            return !this.node()
          },
          each: function (e) {
            for (var t = this._groups, n = 0, r = t.length; n < r; ++n)
              for (var i, o = t[n], a = 0, s = o.length; a < s; ++a)
                (i = o[a]) && e.call(i, i.__data__, a, o)
            return this
          },
          attr: function (e, t) {
            var n = Ht(e)
            if (arguments.length < 2) {
              var r = this.node()
              return n.local ? r.getAttributeNS(n.space, n.local) : r.getAttribute(n)
            }
            return this.each(
              (null == t
                ? n.local
                  ? Ft
                  : Bt
                : 'function' === typeof t
                ? n.local
                  ? qt
                  : Gt
                : n.local
                ? Ut
                : Vt)(n, t),
            )
          },
          style: function (e, t, n) {
            return arguments.length > 1
              ? this.each(
                  (null == t ? Kt : 'function' === typeof t ? $t : Zt)(e, t, null == n ? '' : n),
                )
              : Xt(this.node(), e)
          },
          property: function (e, t) {
            return arguments.length > 1
              ? this.each((null == t ? Yt : 'function' === typeof t ? Jt : Qt)(e, t))
              : this.node()[e]
          },
          classed: function (e, t) {
            var n = en(e + '')
            if (arguments.length < 2) {
              for (var r = tn(this.node()), i = -1, o = n.length; ++i < o; )
                if (!r.contains(n[i])) return !1
              return !0
            }
            return this.each(('function' === typeof t ? un : t ? an : sn)(n, t))
          },
          text: function (e) {
            return arguments.length
              ? this.each(null == e ? ln : ('function' === typeof e ? dn : cn)(e))
              : this.node().textContent
          },
          html: function (e) {
            return arguments.length
              ? this.each(null == e ? fn : ('function' === typeof e ? pn : hn)(e))
              : this.node().innerHTML
          },
          raise: function () {
            return this.each(vn)
          },
          lower: function () {
            return this.each(mn)
          },
          append: function (e) {
            var t = 'function' === typeof e ? e : bn(e)
            return this.select(function () {
              return this.appendChild(t.apply(this, arguments))
            })
          },
          insert: function (e, t) {
            var n = 'function' === typeof e ? e : bn(e),
              r = null == t ? wn : 'function' === typeof t ? t : gt(t)
            return this.select(function () {
              return this.insertBefore(n.apply(this, arguments), r.apply(this, arguments) || null)
            })
          },
          remove: function () {
            return this.each(xn)
          },
          clone: function (e) {
            return this.select(e ? kn : En)
          },
          datum: function (e) {
            return arguments.length ? this.property('__data__', e) : this.node().__data__
          },
          on: function (e, t, n) {
            var r,
              i,
              o = _n(e + ''),
              a = o.length
            if (!(arguments.length < 2)) {
              for (s = t ? On : Tn, r = 0; r < a; ++r) this.each(s(o[r], t, n))
              return this
            }
            var s = this.node().__on
            if (s)
              for (var u, l = 0, c = s.length; l < c; ++l)
                for (r = 0, u = s[l]; r < a; ++r)
                  if ((i = o[r]).type === u.type && i.name === u.name) return u.value
          },
          dispatch: function (e, t) {
            return this.each(('function' === typeof t ? An : Sn)(e, t))
          },
        },
        Symbol.iterator,
        jn,
      )
      var In = Nn
      function zn(e) {
        return 'string' === typeof e
          ? new Ln([[document.querySelector(e)]], [document.documentElement])
          : new Ln([[e]], Dn)
      }
      var Hn = r(7137),
        Bn = { passive: !1 },
        Fn = { capture: !0, passive: !1 }
      function Vn(e) {
        e.stopImmediatePropagation()
      }
      function Un(e) {
        e.preventDefault(), e.stopImmediatePropagation()
      }
      function Gn(e) {
        var t = e.document.documentElement,
          n = zn(e).on('dragstart.drag', Un, Fn)
        'onselectstart' in t
          ? n.on('selectstart.drag', Un, Fn)
          : ((t.__noselect = t.style.MozUserSelect), (t.style.MozUserSelect = 'none'))
      }
      function qn(e, t) {
        var n = e.document.documentElement,
          r = zn(e).on('dragstart.drag', null)
        t &&
          (r.on('click.drag', Un, Fn),
          setTimeout(function () {
            r.on('click.drag', null)
          }, 0)),
          'onselectstart' in n
            ? r.on('selectstart.drag', null)
            : ((n.style.MozUserSelect = n.__noselect), delete n.__noselect)
      }
      function Wn(e) {
        return ((e = Math.exp(e)) + 1 / e) / 2
      }
      var Kn = (function e(t, n, r) {
        function i(e, i) {
          var o,
            a,
            s = e[0],
            u = e[1],
            l = e[2],
            c = i[0],
            d = i[1],
            f = i[2],
            h = c - s,
            p = d - u,
            v = h * h + p * p
          if (v < 1e-12)
            (a = Math.log(f / l) / t),
              (o = function (e) {
                return [s + e * h, u + e * p, l * Math.exp(t * e * a)]
              })
          else {
            var m = Math.sqrt(v),
              g = (f * f - l * l + r * v) / (2 * l * n * m),
              y = (f * f - l * l - r * v) / (2 * f * n * m),
              b = Math.log(Math.sqrt(g * g + 1) - g),
              w = Math.log(Math.sqrt(y * y + 1) - y)
            ;(a = (w - b) / t),
              (o = function (e) {
                var r,
                  i = e * a,
                  o = Wn(b),
                  c =
                    (l / (n * m)) *
                    (o * ((r = t * i + b), ((r = Math.exp(2 * r)) - 1) / (r + 1)) -
                      (function (e) {
                        return ((e = Math.exp(e)) - 1 / e) / 2
                      })(b))
                return [s + c * h, u + c * p, (l * o) / Wn(t * i + b)]
              })
          }
          return (o.duration = (1e3 * a * t) / Math.SQRT2), o
        }
        return (
          (i.rho = function (t) {
            var n = Math.max(0.001, +t),
              r = n * n
            return e(n, r, r * r)
          }),
          i
        )
      })(Math.SQRT2, 2, 4)
      function Zn(e, t) {
        if (
          ((e = (function (e) {
            for (var t; (t = e.sourceEvent); ) e = t
            return e
          })(e)),
          void 0 === t && (t = e.currentTarget),
          t)
        ) {
          var n = t.ownerSVGElement || t
          if (n.createSVGPoint) {
            var r = n.createSVGPoint()
            return (
              (r.x = e.clientX),
              (r.y = e.clientY),
              [(r = r.matrixTransform(t.getScreenCTM().inverse())).x, r.y]
            )
          }
          if (t.getBoundingClientRect) {
            var i = t.getBoundingClientRect()
            return [e.clientX - i.left - t.clientLeft, e.clientY - i.top - t.clientTop]
          }
        }
        return [e.pageX, e.pageY]
      }
      var $n = r(513)
      function Xn(e, t, n) {
        var r = new $n.B7()
        return (
          (t = null == t ? 0 : +t),
          r.restart(
            function (n) {
              r.stop(), e(n + t)
            },
            t,
            n,
          ),
          r
        )
      }
      var Yn = (0, Hn.Z)('start', 'end', 'cancel', 'interrupt'),
        Qn = []
      function Jn(e, t, n, r, i, o) {
        var a = e.__transition
        if (a) {
          if (n in a) return
        } else e.__transition = {}
        !(function (e, t, n) {
          var r,
            i = e.__transition
          function o(e) {
            ;(n.state = 1), n.timer.restart(a, n.delay, n.time), n.delay <= e && a(e - n.delay)
          }
          function a(o) {
            var l, c, d, f
            if (1 !== n.state) return u()
            for (l in i)
              if ((f = i[l]).name === n.name) {
                if (3 === f.state) return Xn(a)
                4 === f.state
                  ? ((f.state = 6),
                    f.timer.stop(),
                    f.on.call('interrupt', e, e.__data__, f.index, f.group),
                    delete i[l])
                  : +l < t &&
                    ((f.state = 6),
                    f.timer.stop(),
                    f.on.call('cancel', e, e.__data__, f.index, f.group),
                    delete i[l])
              }
            if (
              (Xn(function () {
                3 === n.state && ((n.state = 4), n.timer.restart(s, n.delay, n.time), s(o))
              }),
              (n.state = 2),
              n.on.call('start', e, e.__data__, n.index, n.group),
              2 === n.state)
            ) {
              for (n.state = 3, r = new Array((d = n.tween.length)), l = 0, c = -1; l < d; ++l)
                (f = n.tween[l].value.call(e, e.__data__, n.index, n.group)) && (r[++c] = f)
              r.length = c + 1
            }
          }
          function s(t) {
            for (
              var i =
                  t < n.duration
                    ? n.ease.call(null, t / n.duration)
                    : (n.timer.restart(u), (n.state = 5), 1),
                o = -1,
                a = r.length;
              ++o < a;

            )
              r[o].call(e, i)
            5 === n.state && (n.on.call('end', e, e.__data__, n.index, n.group), u())
          }
          function u() {
            for (var r in ((n.state = 6), n.timer.stop(), delete i[t], i)) return
            delete e.__transition
          }
          ;(i[t] = n), (n.timer = (0, $n.HT)(o, 0, n.time))
        })(e, n, {
          name: t,
          index: r,
          group: i,
          on: Yn,
          tween: Qn,
          time: o.time,
          delay: o.delay,
          duration: o.duration,
          ease: o.ease,
          timer: null,
          state: 0,
        })
      }
      function er(e, t) {
        var n = nr(e, t)
        if (n.state > 0) throw new Error('too late; already scheduled')
        return n
      }
      function tr(e, t) {
        var n = nr(e, t)
        if (n.state > 3) throw new Error('too late; already running')
        return n
      }
      function nr(e, t) {
        var n = e.__transition
        if (!n || !(n = n[t])) throw new Error('transition not found')
        return n
      }
      function rr(e, t) {
        var n,
          r,
          i,
          o = e.__transition,
          a = !0
        if (o) {
          for (i in ((t = null == t ? null : t + ''), o))
            (n = o[i]).name === t
              ? ((r = n.state > 2 && n.state < 5),
                (n.state = 6),
                n.timer.stop(),
                n.on.call(r ? 'interrupt' : 'cancel', e, e.__data__, n.index, n.group),
                delete o[i])
              : (a = !1)
          a && delete e.__transition
        }
      }
      var ir,
        or = r(6033),
        ar = 180 / Math.PI,
        sr = { translateX: 0, translateY: 0, rotate: 0, skewX: 0, scaleX: 1, scaleY: 1 }
      function ur(e, t, n, r, i, o) {
        var a, s, u
        return (
          (a = Math.sqrt(e * e + t * t)) && ((e /= a), (t /= a)),
          (u = e * n + t * r) && ((n -= e * u), (r -= t * u)),
          (s = Math.sqrt(n * n + r * r)) && ((n /= s), (r /= s), (u /= s)),
          e * r < t * n && ((e = -e), (t = -t), (u = -u), (a = -a)),
          {
            translateX: i,
            translateY: o,
            rotate: Math.atan2(t, e) * ar,
            skewX: Math.atan(u) * ar,
            scaleX: a,
            scaleY: s,
          }
        )
      }
      function lr(e, t, n, r) {
        function i(e) {
          return e.length ? e.pop() + ' ' : ''
        }
        return function (o, a) {
          var s = [],
            u = []
          return (
            (o = e(o)),
            (a = e(a)),
            (function (e, r, i, o, a, s) {
              if (e !== i || r !== o) {
                var u = a.push('translate(', null, t, null, n)
                s.push({ i: u - 4, x: (0, or.Z)(e, i) }, { i: u - 2, x: (0, or.Z)(r, o) })
              } else (i || o) && a.push('translate(' + i + t + o + n)
            })(o.translateX, o.translateY, a.translateX, a.translateY, s, u),
            (function (e, t, n, o) {
              e !== t
                ? (e - t > 180 ? (t += 360) : t - e > 180 && (e += 360),
                  o.push({ i: n.push(i(n) + 'rotate(', null, r) - 2, x: (0, or.Z)(e, t) }))
                : t && n.push(i(n) + 'rotate(' + t + r)
            })(o.rotate, a.rotate, s, u),
            (function (e, t, n, o) {
              e !== t
                ? o.push({ i: n.push(i(n) + 'skewX(', null, r) - 2, x: (0, or.Z)(e, t) })
                : t && n.push(i(n) + 'skewX(' + t + r)
            })(o.skewX, a.skewX, s, u),
            (function (e, t, n, r, o, a) {
              if (e !== n || t !== r) {
                var s = o.push(i(o) + 'scale(', null, ',', null, ')')
                a.push({ i: s - 4, x: (0, or.Z)(e, n) }, { i: s - 2, x: (0, or.Z)(t, r) })
              } else (1 === n && 1 === r) || o.push(i(o) + 'scale(' + n + ',' + r + ')')
            })(o.scaleX, o.scaleY, a.scaleX, a.scaleY, s, u),
            (o = a = null),
            function (e) {
              for (var t, n = -1, r = u.length; ++n < r; ) s[(t = u[n]).i] = t.x(e)
              return s.join('')
            }
          )
        }
      }
      var cr = lr(
          function (e) {
            var t = new ('function' === typeof DOMMatrix ? DOMMatrix : WebKitCSSMatrix)(e + '')
            return t.isIdentity ? sr : ur(t.a, t.b, t.c, t.d, t.e, t.f)
          },
          'px, ',
          'px)',
          'deg)',
        ),
        dr = lr(
          function (e) {
            return null == e
              ? sr
              : (ir || (ir = document.createElementNS('http://www.w3.org/2000/svg', 'g')),
                ir.setAttribute('transform', e),
                (e = ir.transform.baseVal.consolidate())
                  ? ur((e = e.matrix).a, e.b, e.c, e.d, e.e, e.f)
                  : sr)
          },
          ', ',
          ')',
          ')',
        )
      function fr(e, t) {
        var n, r
        return function () {
          var i = tr(this, e),
            o = i.tween
          if (o !== n)
            for (var a = 0, s = (r = n = o).length; a < s; ++a)
              if (r[a].name === t) {
                ;(r = r.slice()).splice(a, 1)
                break
              }
          i.tween = r
        }
      }
      function hr(e, t, n) {
        var r, i
        if ('function' !== typeof n) throw new Error()
        return function () {
          var o = tr(this, e),
            a = o.tween
          if (a !== r) {
            i = (r = a).slice()
            for (var s = { name: t, value: n }, u = 0, l = i.length; u < l; ++u)
              if (i[u].name === t) {
                i[u] = s
                break
              }
            u === l && i.push(s)
          }
          o.tween = i
        }
      }
      function pr(e, t, n) {
        var r = e._id
        return (
          e.each(function () {
            var e = tr(this, r)
            ;(e.value || (e.value = {}))[t] = n.apply(this, arguments)
          }),
          function (e) {
            return nr(e, r).value[t]
          }
        )
      }
      var vr = r(6374),
        mr = r(3028),
        gr = r(370)
      function yr(e, t) {
        var n
        return (
          'number' === typeof t
            ? or.Z
            : t instanceof vr.ZP
            ? mr.ZP
            : (n = (0, vr.ZP)(t))
            ? ((t = n), mr.ZP)
            : gr.Z
        )(e, t)
      }
      function br(e) {
        return function () {
          this.removeAttribute(e)
        }
      }
      function wr(e) {
        return function () {
          this.removeAttributeNS(e.space, e.local)
        }
      }
      function xr(e, t, n) {
        var r,
          i,
          o = n + ''
        return function () {
          var a = this.getAttribute(e)
          return a === o ? null : a === r ? i : (i = t((r = a), n))
        }
      }
      function Er(e, t, n) {
        var r,
          i,
          o = n + ''
        return function () {
          var a = this.getAttributeNS(e.space, e.local)
          return a === o ? null : a === r ? i : (i = t((r = a), n))
        }
      }
      function kr(e, t, n) {
        var r, i, o
        return function () {
          var a,
            s,
            u = n(this)
          if (null != u)
            return (a = this.getAttribute(e)) === (s = u + '')
              ? null
              : a === r && s === i
              ? o
              : ((i = s), (o = t((r = a), u)))
          this.removeAttribute(e)
        }
      }
      function _r(e, t, n) {
        var r, i, o
        return function () {
          var a,
            s,
            u = n(this)
          if (null != u)
            return (a = this.getAttributeNS(e.space, e.local)) === (s = u + '')
              ? null
              : a === r && s === i
              ? o
              : ((i = s), (o = t((r = a), u)))
          this.removeAttributeNS(e.space, e.local)
        }
      }
      function Tr(e, t) {
        return function (n) {
          this.setAttribute(e, t.call(this, n))
        }
      }
      function Or(e, t) {
        return function (n) {
          this.setAttributeNS(e.space, e.local, t.call(this, n))
        }
      }
      function Cr(e, t) {
        var n, r
        function i() {
          var i = t.apply(this, arguments)
          return i !== r && (n = (r = i) && Or(e, i)), n
        }
        return (i._value = t), i
      }
      function Sr(e, t) {
        var n, r
        function i() {
          var i = t.apply(this, arguments)
          return i !== r && (n = (r = i) && Tr(e, i)), n
        }
        return (i._value = t), i
      }
      function Ar(e, t) {
        return function () {
          er(this, e).delay = +t.apply(this, arguments)
        }
      }
      function Pr(e, t) {
        return (
          (t = +t),
          function () {
            er(this, e).delay = t
          }
        )
      }
      function Mr(e, t) {
        return function () {
          tr(this, e).duration = +t.apply(this, arguments)
        }
      }
      function Rr(e, t) {
        return (
          (t = +t),
          function () {
            tr(this, e).duration = t
          }
        )
      }
      function jr(e, t) {
        if ('function' !== typeof t) throw new Error()
        return function () {
          tr(this, e).ease = t
        }
      }
      function Dr(e, t, n) {
        var r,
          i,
          o = (function (e) {
            return (e + '')
              .trim()
              .split(/^|\s+/)
              .every(function (e) {
                var t = e.indexOf('.')
                return t >= 0 && (e = e.slice(0, t)), !e || 'start' === e
              })
          })(t)
            ? er
            : tr
        return function () {
          var a = o(this, e),
            s = a.on
          s !== r && (i = (r = s).copy()).on(t, n), (a.on = i)
        }
      }
      var Lr = In.prototype.constructor
      function Nr(e) {
        return function () {
          this.style.removeProperty(e)
        }
      }
      function Ir(e, t, n) {
        return function (r) {
          this.style.setProperty(e, t.call(this, r), n)
        }
      }
      function zr(e, t, n) {
        var r, i
        function o() {
          var o = t.apply(this, arguments)
          return o !== i && (r = (i = o) && Ir(e, o, n)), r
        }
        return (o._value = t), o
      }
      function Hr(e) {
        return function (t) {
          this.textContent = e.call(this, t)
        }
      }
      function Br(e) {
        var t, n
        function r() {
          var r = e.apply(this, arguments)
          return r !== n && (t = (n = r) && Hr(r)), t
        }
        return (r._value = e), r
      }
      var Fr = 0
      function Vr(e, t, n, r) {
        ;(this._groups = e), (this._parents = t), (this._name = n), (this._id = r)
      }
      function Ur() {
        return ++Fr
      }
      var Gr = In.prototype
      Vr.prototype = function (e) {
        return In().transition(e)
      }.prototype = (0, vt.Z)(
        {
          constructor: Vr,
          select: function (e) {
            var t = this._name,
              n = this._id
            'function' !== typeof e && (e = gt(e))
            for (var r = this._groups, i = r.length, o = new Array(i), a = 0; a < i; ++a)
              for (var s, u, l = r[a], c = l.length, d = (o[a] = new Array(c)), f = 0; f < c; ++f)
                (s = l[f]) &&
                  (u = e.call(s, s.__data__, f, l)) &&
                  ('__data__' in s && (u.__data__ = s.__data__),
                  (d[f] = u),
                  Jn(d[f], t, n, f, d, nr(s, n)))
            return new Vr(o, this._parents, t, n)
          },
          selectAll: function (e) {
            var t = this._name,
              n = this._id
            'function' !== typeof e && (e = wt(e))
            for (var r = this._groups, i = r.length, o = [], a = [], s = 0; s < i; ++s)
              for (var u, l = r[s], c = l.length, d = 0; d < c; ++d)
                if ((u = l[d])) {
                  for (
                    var f, h = e.call(u, u.__data__, d, l), p = nr(u, n), v = 0, m = h.length;
                    v < m;
                    ++v
                  )
                    (f = h[v]) && Jn(f, t, n, v, h, p)
                  o.push(h), a.push(u)
                }
            return new Vr(o, a, t, n)
          },
          selectChild: Gr.selectChild,
          selectChildren: Gr.selectChildren,
          filter: function (e) {
            'function' !== typeof e && (e = xt(e))
            for (var t = this._groups, n = t.length, r = new Array(n), i = 0; i < n; ++i)
              for (var o, a = t[i], s = a.length, u = (r[i] = []), l = 0; l < s; ++l)
                (o = a[l]) && e.call(o, o.__data__, l, a) && u.push(o)
            return new Vr(r, this._parents, this._name, this._id)
          },
          merge: function (e) {
            if (e._id !== this._id) throw new Error()
            for (
              var t = this._groups,
                n = e._groups,
                r = t.length,
                i = n.length,
                o = Math.min(r, i),
                a = new Array(r),
                s = 0;
              s < o;
              ++s
            )
              for (
                var u, l = t[s], c = n[s], d = l.length, f = (a[s] = new Array(d)), h = 0;
                h < d;
                ++h
              )
                (u = l[h] || c[h]) && (f[h] = u)
            for (; s < r; ++s) a[s] = t[s]
            return new Vr(a, this._parents, this._name, this._id)
          },
          selection: function () {
            return new Lr(this._groups, this._parents)
          },
          transition: function () {
            for (
              var e = this._name, t = this._id, n = Ur(), r = this._groups, i = r.length, o = 0;
              o < i;
              ++o
            )
              for (var a, s = r[o], u = s.length, l = 0; l < u; ++l)
                if ((a = s[l])) {
                  var c = nr(a, t)
                  Jn(a, e, n, l, s, {
                    time: c.time + c.delay + c.duration,
                    delay: 0,
                    duration: c.duration,
                    ease: c.ease,
                  })
                }
            return new Vr(r, this._parents, e, n)
          },
          call: Gr.call,
          nodes: Gr.nodes,
          node: Gr.node,
          size: Gr.size,
          empty: Gr.empty,
          each: Gr.each,
          on: function (e, t) {
            var n = this._id
            return arguments.length < 2 ? nr(this.node(), n).on.on(e) : this.each(Dr(n, e, t))
          },
          attr: function (e, t) {
            var n = Ht(e),
              r = 'transform' === n ? dr : yr
            return this.attrTween(
              e,
              'function' === typeof t
                ? (n.local ? _r : kr)(n, r, pr(this, 'attr.' + e, t))
                : null == t
                ? (n.local ? wr : br)(n)
                : (n.local ? Er : xr)(n, r, t),
            )
          },
          attrTween: function (e, t) {
            var n = 'attr.' + e
            if (arguments.length < 2) return (n = this.tween(n)) && n._value
            if (null == t) return this.tween(n, null)
            if ('function' !== typeof t) throw new Error()
            var r = Ht(e)
            return this.tween(n, (r.local ? Cr : Sr)(r, t))
          },
          style: function (e, t, n) {
            var r = 'transform' === (e += '') ? cr : yr
            return null == t
              ? this.styleTween(
                  e,
                  (function (e, t) {
                    var n, r, i
                    return function () {
                      var o = Xt(this, e),
                        a = (this.style.removeProperty(e), Xt(this, e))
                      return o === a ? null : o === n && a === r ? i : (i = t((n = o), (r = a)))
                    }
                  })(e, r),
                ).on('end.style.' + e, Nr(e))
              : 'function' === typeof t
              ? this.styleTween(
                  e,
                  (function (e, t, n) {
                    var r, i, o
                    return function () {
                      var a = Xt(this, e),
                        s = n(this),
                        u = s + ''
                      return (
                        null == s && (this.style.removeProperty(e), (u = s = Xt(this, e))),
                        a === u ? null : a === r && u === i ? o : ((i = u), (o = t((r = a), s)))
                      )
                    }
                  })(e, r, pr(this, 'style.' + e, t)),
                ).each(
                  (function (e, t) {
                    var n,
                      r,
                      i,
                      o,
                      a = 'style.' + t,
                      s = 'end.' + a
                    return function () {
                      var u = tr(this, e),
                        l = u.on,
                        c = null == u.value[a] ? o || (o = Nr(t)) : void 0
                      ;(l === n && i === c) || (r = (n = l).copy()).on(s, (i = c)), (u.on = r)
                    }
                  })(this._id, e),
                )
              : this.styleTween(
                  e,
                  (function (e, t, n) {
                    var r,
                      i,
                      o = n + ''
                    return function () {
                      var a = Xt(this, e)
                      return a === o ? null : a === r ? i : (i = t((r = a), n))
                    }
                  })(e, r, t),
                  n,
                ).on('end.style.' + e, null)
          },
          styleTween: function (e, t, n) {
            var r = 'style.' + (e += '')
            if (arguments.length < 2) return (r = this.tween(r)) && r._value
            if (null == t) return this.tween(r, null)
            if ('function' !== typeof t) throw new Error()
            return this.tween(r, zr(e, t, null == n ? '' : n))
          },
          text: function (e) {
            return this.tween(
              'text',
              'function' === typeof e
                ? (function (e) {
                    return function () {
                      var t = e(this)
                      this.textContent = null == t ? '' : t
                    }
                  })(pr(this, 'text', e))
                : (function (e) {
                    return function () {
                      this.textContent = e
                    }
                  })(null == e ? '' : e + ''),
            )
          },
          textTween: function (e) {
            var t = 'text'
            if (arguments.length < 1) return (t = this.tween(t)) && t._value
            if (null == e) return this.tween(t, null)
            if ('function' !== typeof e) throw new Error()
            return this.tween(t, Br(e))
          },
          remove: function () {
            return this.on(
              'end.remove',
              (function (e) {
                return function () {
                  var t = this.parentNode
                  for (var n in this.__transition) if (+n !== e) return
                  t && t.removeChild(this)
                }
              })(this._id),
            )
          },
          tween: function (e, t) {
            var n = this._id
            if (((e += ''), arguments.length < 2)) {
              for (var r, i = nr(this.node(), n).tween, o = 0, a = i.length; o < a; ++o)
                if ((r = i[o]).name === e) return r.value
              return null
            }
            return this.each((null == t ? fr : hr)(n, e, t))
          },
          delay: function (e) {
            var t = this._id
            return arguments.length
              ? this.each(('function' === typeof e ? Ar : Pr)(t, e))
              : nr(this.node(), t).delay
          },
          duration: function (e) {
            var t = this._id
            return arguments.length
              ? this.each(('function' === typeof e ? Mr : Rr)(t, e))
              : nr(this.node(), t).duration
          },
          ease: function (e) {
            var t = this._id
            return arguments.length ? this.each(jr(t, e)) : nr(this.node(), t).ease
          },
          easeVarying: function (e) {
            if ('function' !== typeof e) throw new Error()
            return this.each(
              (function (e, t) {
                return function () {
                  var n = t.apply(this, arguments)
                  if ('function' !== typeof n) throw new Error()
                  tr(this, e).ease = n
                }
              })(this._id, e),
            )
          },
          end: function () {
            var e,
              t,
              n = this,
              r = n._id,
              i = n.size()
            return new Promise(function (o, a) {
              var s = { value: a },
                u = {
                  value: function () {
                    0 === --i && o()
                  },
                }
              n.each(function () {
                var n = tr(this, r),
                  i = n.on
                i !== e &&
                  ((t = (e = i).copy())._.cancel.push(s), t._.interrupt.push(s), t._.end.push(u)),
                  (n.on = t)
              }),
                0 === i && o()
            })
          },
        },
        Symbol.iterator,
        Gr[Symbol.iterator],
      )
      var qr = {
        time: null,
        delay: 0,
        duration: 250,
        ease: function (e) {
          return ((e *= 2) <= 1 ? e * e * e : (e -= 2) * e * e + 2) / 2
        },
      }
      function Wr(e, t) {
        for (var n; !(n = e.__transition) || !(n = n[t]); )
          if (!(e = e.parentNode)) throw new Error('transition '.concat(t, ' not found'))
        return n
      }
      ;(In.prototype.interrupt = function (e) {
        return this.each(function () {
          rr(this, e)
        })
      }),
        (In.prototype.transition = function (e) {
          var t, n
          e instanceof Vr
            ? ((t = e._id), (e = e._name))
            : ((t = Ur()), ((n = qr).time = (0, $n.zO)()), (e = null == e ? null : e + ''))
          for (var r = this._groups, i = r.length, o = 0; o < i; ++o)
            for (var a, s = r[o], u = s.length, l = 0; l < u; ++l)
              (a = s[l]) && Jn(a, e, t, l, s, n || Wr(a, t))
          return new Vr(r, this._parents, e, t)
        })
      var Kr = function (e) {
        return function () {
          return e
        }
      }
      function Zr(e, t) {
        var n = t.sourceEvent,
          r = t.target,
          i = t.transform,
          o = t.dispatch
        Object.defineProperties(this, {
          type: { value: e, enumerable: !0, configurable: !0 },
          sourceEvent: { value: n, enumerable: !0, configurable: !0 },
          target: { value: r, enumerable: !0, configurable: !0 },
          transform: { value: i, enumerable: !0, configurable: !0 },
          _: { value: o },
        })
      }
      function $r(e, t, n) {
        ;(this.k = e), (this.x = t), (this.y = n)
      }
      $r.prototype = {
        constructor: $r,
        scale: function (e) {
          return 1 === e ? this : new $r(this.k * e, this.x, this.y)
        },
        translate: function (e, t) {
          return (0 === e) & (0 === t)
            ? this
            : new $r(this.k, this.x + this.k * e, this.y + this.k * t)
        },
        apply: function (e) {
          return [e[0] * this.k + this.x, e[1] * this.k + this.y]
        },
        applyX: function (e) {
          return e * this.k + this.x
        },
        applyY: function (e) {
          return e * this.k + this.y
        },
        invert: function (e) {
          return [(e[0] - this.x) / this.k, (e[1] - this.y) / this.k]
        },
        invertX: function (e) {
          return (e - this.x) / this.k
        },
        invertY: function (e) {
          return (e - this.y) / this.k
        },
        rescaleX: function (e) {
          return e.copy().domain(e.range().map(this.invertX, this).map(e.invert, e))
        },
        rescaleY: function (e) {
          return e.copy().domain(e.range().map(this.invertY, this).map(e.invert, e))
        },
        toString: function () {
          return 'translate(' + this.x + ',' + this.y + ') scale(' + this.k + ')'
        },
      }
      var Xr = new $r(1, 0, 0)
      function Yr(e) {
        for (; !e.__zoom; ) if (!(e = e.parentNode)) return Xr
        return e.__zoom
      }
      function Qr(e) {
        e.stopImmediatePropagation()
      }
      function Jr(e) {
        e.preventDefault(), e.stopImmediatePropagation()
      }
      function ei(e) {
        return (!e.ctrlKey || 'wheel' === e.type) && !e.button
      }
      function ti() {
        var e = this
        return e instanceof SVGElement
          ? (e = e.ownerSVGElement || e).hasAttribute('viewBox')
            ? [
                [(e = e.viewBox.baseVal).x, e.y],
                [e.x + e.width, e.y + e.height],
              ]
            : [
                [0, 0],
                [e.width.baseVal.value, e.height.baseVal.value],
              ]
          : [
              [0, 0],
              [e.clientWidth, e.clientHeight],
            ]
      }
      function ni() {
        return this.__zoom || Xr
      }
      function ri(e) {
        return (
          -e.deltaY * (1 === e.deltaMode ? 0.05 : e.deltaMode ? 1 : 0.002) * (e.ctrlKey ? 10 : 1)
        )
      }
      function ii() {
        return navigator.maxTouchPoints || 'ontouchstart' in this
      }
      function oi(e, t, n) {
        var r = e.invertX(t[0][0]) - n[0][0],
          i = e.invertX(t[1][0]) - n[1][0],
          o = e.invertY(t[0][1]) - n[0][1],
          a = e.invertY(t[1][1]) - n[1][1]
        return e.translate(
          i > r ? (r + i) / 2 : Math.min(0, r) || Math.max(0, i),
          a > o ? (o + a) / 2 : Math.min(0, o) || Math.max(0, a),
        )
      }
      function ai() {
        var e,
          t,
          n,
          r = ei,
          i = ti,
          o = oi,
          a = ri,
          s = ii,
          u = [0, 1 / 0],
          l = [
            [-1 / 0, -1 / 0],
            [1 / 0, 1 / 0],
          ],
          c = 250,
          d = Kn,
          f = (0, Hn.Z)('start', 'zoom', 'end'),
          h = 500,
          p = 0,
          v = 10
        function m(e) {
          e.property('__zoom', ni)
            .on('wheel.zoom', k, { passive: !1 })
            .on('mousedown.zoom', _)
            .on('dblclick.zoom', T)
            .filter(s)
            .on('touchstart.zoom', O)
            .on('touchmove.zoom', C)
            .on('touchend.zoom touchcancel.zoom', S)
            .style('-webkit-tap-highlight-color', 'rgba(0,0,0,0)')
        }
        function g(e, t) {
          return (t = Math.max(u[0], Math.min(u[1], t))) === e.k ? e : new $r(t, e.x, e.y)
        }
        function y(e, t, n) {
          var r = t[0] - n[0] * e.k,
            i = t[1] - n[1] * e.k
          return r === e.x && i === e.y ? e : new $r(e.k, r, i)
        }
        function b(e) {
          return [(+e[0][0] + +e[1][0]) / 2, (+e[0][1] + +e[1][1]) / 2]
        }
        function w(e, t, n, r) {
          e.on('start.zoom', function () {
            x(this, arguments).event(r).start()
          })
            .on('interrupt.zoom end.zoom', function () {
              x(this, arguments).event(r).end()
            })
            .tween('zoom', function () {
              var e = this,
                o = arguments,
                a = x(e, o).event(r),
                s = i.apply(e, o),
                u = null == n ? b(s) : 'function' === typeof n ? n.apply(e, o) : n,
                l = Math.max(s[1][0] - s[0][0], s[1][1] - s[0][1]),
                c = e.__zoom,
                f = 'function' === typeof t ? t.apply(e, o) : t,
                h = d(c.invert(u).concat(l / c.k), f.invert(u).concat(l / f.k))
              return function (e) {
                if (1 === e) e = f
                else {
                  var t = h(e),
                    n = l / t[2]
                  e = new $r(n, u[0] - t[0] * n, u[1] - t[1] * n)
                }
                a.zoom(null, e)
              }
            })
        }
        function x(e, t, n) {
          return (!n && e.__zooming) || new E(e, t)
        }
        function E(e, t) {
          ;(this.that = e),
            (this.args = t),
            (this.active = 0),
            (this.sourceEvent = null),
            (this.extent = i.apply(e, t)),
            (this.taps = 0)
        }
        function k(e) {
          for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), i = 1; i < t; i++)
            n[i - 1] = arguments[i]
          if (r.apply(this, arguments)) {
            var s = x(this, n).event(e),
              c = this.__zoom,
              d = Math.max(u[0], Math.min(u[1], c.k * Math.pow(2, a.apply(this, arguments)))),
              f = Zn(e)
            if (s.wheel)
              (s.mouse[0][0] === f[0] && s.mouse[0][1] === f[1]) ||
                (s.mouse[1] = c.invert((s.mouse[0] = f))),
                clearTimeout(s.wheel)
            else {
              if (c.k === d) return
              ;(s.mouse = [f, c.invert(f)]), rr(this), s.start()
            }
            Jr(e),
              (s.wheel = setTimeout(h, 150)),
              s.zoom('mouse', o(y(g(c, d), s.mouse[0], s.mouse[1]), s.extent, l))
          }
          function h() {
            ;(s.wheel = null), s.end()
          }
        }
        function _(e) {
          for (var t = arguments.length, i = new Array(t > 1 ? t - 1 : 0), a = 1; a < t; a++)
            i[a - 1] = arguments[a]
          if (!n && r.apply(this, arguments)) {
            var s = e.currentTarget,
              u = x(this, i, !0).event(e),
              c = zn(e.view).on('mousemove.zoom', v, !0).on('mouseup.zoom', m, !0),
              d = Zn(e, s),
              f = e.clientX,
              h = e.clientY
            Gn(e.view), Qr(e), (u.mouse = [d, this.__zoom.invert(d)]), rr(this), u.start()
          }
          function v(e) {
            if ((Jr(e), !u.moved)) {
              var t = e.clientX - f,
                n = e.clientY - h
              u.moved = t * t + n * n > p
            }
            u.event(e).zoom(
              'mouse',
              o(y(u.that.__zoom, (u.mouse[0] = Zn(e, s)), u.mouse[1]), u.extent, l),
            )
          }
          function m(e) {
            c.on('mousemove.zoom mouseup.zoom', null), qn(e.view, u.moved), Jr(e), u.event(e).end()
          }
        }
        function T(e) {
          for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), a = 1; a < t; a++)
            n[a - 1] = arguments[a]
          if (r.apply(this, arguments)) {
            var s = this.__zoom,
              u = Zn(e.changedTouches ? e.changedTouches[0] : e, this),
              d = s.invert(u),
              f = s.k * (e.shiftKey ? 0.5 : 2),
              h = o(y(g(s, f), u, d), i.apply(this, n), l)
            Jr(e),
              c > 0
                ? zn(this).transition().duration(c).call(w, h, u, e)
                : zn(this).call(m.transform, h, u, e)
          }
        }
        function O(n) {
          for (var i = arguments.length, o = new Array(i > 1 ? i - 1 : 0), a = 1; a < i; a++)
            o[a - 1] = arguments[a]
          if (r.apply(this, arguments)) {
            var s,
              u,
              l,
              c,
              d = n.touches,
              f = d.length,
              p = x(this, o, n.changedTouches.length === f).event(n)
            for (Qr(n), u = 0; u < f; ++u)
              (c = [(c = Zn((l = d[u]), this)), this.__zoom.invert(c), l.identifier]),
                p.touch0
                  ? p.touch1 || p.touch0[2] === c[2] || ((p.touch1 = c), (p.taps = 0))
                  : ((p.touch0 = c), (s = !0), (p.taps = 1 + !!e))
            e && (e = clearTimeout(e)),
              s &&
                (p.taps < 2 &&
                  ((t = c[0]),
                  (e = setTimeout(function () {
                    e = null
                  }, h))),
                rr(this),
                p.start())
          }
        }
        function C(e) {
          if (this.__zooming) {
            for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), r = 1; r < t; r++)
              n[r - 1] = arguments[r]
            var i,
              a,
              s,
              u,
              c = x(this, n).event(e),
              d = e.changedTouches,
              f = d.length
            for (Jr(e), i = 0; i < f; ++i)
              (s = Zn((a = d[i]), this)),
                c.touch0 && c.touch0[2] === a.identifier
                  ? (c.touch0[0] = s)
                  : c.touch1 && c.touch1[2] === a.identifier && (c.touch1[0] = s)
            if (((a = c.that.__zoom), c.touch1)) {
              var h = c.touch0[0],
                p = c.touch0[1],
                v = c.touch1[0],
                m = c.touch1[1],
                b = (b = v[0] - h[0]) * b + (b = v[1] - h[1]) * b,
                w = (w = m[0] - p[0]) * w + (w = m[1] - p[1]) * w
              ;(a = g(a, Math.sqrt(b / w))),
                (s = [(h[0] + v[0]) / 2, (h[1] + v[1]) / 2]),
                (u = [(p[0] + m[0]) / 2, (p[1] + m[1]) / 2])
            } else {
              if (!c.touch0) return
              ;(s = c.touch0[0]), (u = c.touch0[1])
            }
            c.zoom('touch', o(y(a, s, u), c.extent, l))
          }
        }
        function S(e) {
          for (var r = arguments.length, i = new Array(r > 1 ? r - 1 : 0), o = 1; o < r; o++)
            i[o - 1] = arguments[o]
          if (this.__zooming) {
            var a,
              s,
              u = x(this, i).event(e),
              l = e.changedTouches,
              c = l.length
            for (
              Qr(e),
                n && clearTimeout(n),
                n = setTimeout(function () {
                  n = null
                }, h),
                a = 0;
              a < c;
              ++a
            )
              (s = l[a]),
                u.touch0 && u.touch0[2] === s.identifier
                  ? delete u.touch0
                  : u.touch1 && u.touch1[2] === s.identifier && delete u.touch1
            if ((u.touch1 && !u.touch0 && ((u.touch0 = u.touch1), delete u.touch1), u.touch0))
              u.touch0[1] = this.__zoom.invert(u.touch0[0])
            else if (
              (u.end(),
              2 === u.taps && ((s = Zn(s, this)), Math.hypot(t[0] - s[0], t[1] - s[1]) < v))
            ) {
              var d = zn(this).on('dblclick.zoom')
              d && d.apply(this, arguments)
            }
          }
        }
        return (
          (m.transform = function (e, t, n, r) {
            var i = e.selection ? e.selection() : e
            i.property('__zoom', ni),
              e !== i
                ? w(e, t, n, r)
                : i.interrupt().each(function () {
                    x(this, arguments)
                      .event(r)
                      .start()
                      .zoom(null, 'function' === typeof t ? t.apply(this, arguments) : t)
                      .end()
                  })
          }),
          (m.scaleBy = function (e, t, n, r) {
            m.scaleTo(
              e,
              function () {
                var e = this.__zoom.k,
                  n = 'function' === typeof t ? t.apply(this, arguments) : t
                return e * n
              },
              n,
              r,
            )
          }),
          (m.scaleTo = function (e, t, n, r) {
            m.transform(
              e,
              function () {
                var e = i.apply(this, arguments),
                  r = this.__zoom,
                  a = null == n ? b(e) : 'function' === typeof n ? n.apply(this, arguments) : n,
                  s = r.invert(a),
                  u = 'function' === typeof t ? t.apply(this, arguments) : t
                return o(y(g(r, u), a, s), e, l)
              },
              n,
              r,
            )
          }),
          (m.translateBy = function (e, t, n, r) {
            m.transform(
              e,
              function () {
                return o(
                  this.__zoom.translate(
                    'function' === typeof t ? t.apply(this, arguments) : t,
                    'function' === typeof n ? n.apply(this, arguments) : n,
                  ),
                  i.apply(this, arguments),
                  l,
                )
              },
              null,
              r,
            )
          }),
          (m.translateTo = function (e, t, n, r, a) {
            m.transform(
              e,
              function () {
                var e = i.apply(this, arguments),
                  a = this.__zoom,
                  s = null == r ? b(e) : 'function' === typeof r ? r.apply(this, arguments) : r
                return o(
                  Xr.translate(s[0], s[1])
                    .scale(a.k)
                    .translate(
                      'function' === typeof t ? -t.apply(this, arguments) : -t,
                      'function' === typeof n ? -n.apply(this, arguments) : -n,
                    ),
                  e,
                  l,
                )
              },
              r,
              a,
            )
          }),
          (E.prototype = {
            event: function (e) {
              return e && (this.sourceEvent = e), this
            },
            start: function () {
              return 1 === ++this.active && ((this.that.__zooming = this), this.emit('start')), this
            },
            zoom: function (e, t) {
              return (
                this.mouse && 'mouse' !== e && (this.mouse[1] = t.invert(this.mouse[0])),
                this.touch0 && 'touch' !== e && (this.touch0[1] = t.invert(this.touch0[0])),
                this.touch1 && 'touch' !== e && (this.touch1[1] = t.invert(this.touch1[0])),
                (this.that.__zoom = t),
                this.emit('zoom'),
                this
              )
            },
            end: function () {
              return 0 === --this.active && (delete this.that.__zooming, this.emit('end')), this
            },
            emit: function (e) {
              var t = zn(this.that).datum()
              f.call(
                e,
                this.that,
                new Zr(e, {
                  sourceEvent: this.sourceEvent,
                  target: m,
                  type: e,
                  transform: this.that.__zoom,
                  dispatch: f,
                }),
                t,
              )
            },
          }),
          (m.wheelDelta = function (e) {
            return arguments.length ? ((a = 'function' === typeof e ? e : Kr(+e)), m) : a
          }),
          (m.filter = function (e) {
            return arguments.length ? ((r = 'function' === typeof e ? e : Kr(!!e)), m) : r
          }),
          (m.touchable = function (e) {
            return arguments.length ? ((s = 'function' === typeof e ? e : Kr(!!e)), m) : s
          }),
          (m.extent = function (e) {
            return arguments.length
              ? ((i =
                  'function' === typeof e
                    ? e
                    : Kr([
                        [+e[0][0], +e[0][1]],
                        [+e[1][0], +e[1][1]],
                      ])),
                m)
              : i
          }),
          (m.scaleExtent = function (e) {
            return arguments.length ? ((u[0] = +e[0]), (u[1] = +e[1]), m) : [u[0], u[1]]
          }),
          (m.translateExtent = function (e) {
            return arguments.length
              ? ((l[0][0] = +e[0][0]),
                (l[1][0] = +e[1][0]),
                (l[0][1] = +e[0][1]),
                (l[1][1] = +e[1][1]),
                m)
              : [
                  [l[0][0], l[0][1]],
                  [l[1][0], l[1][1]],
                ]
          }),
          (m.constrain = function (e) {
            return arguments.length ? ((o = e), m) : o
          }),
          (m.duration = function (e) {
            return arguments.length ? ((c = +e), m) : c
          }),
          (m.interpolate = function (e) {
            return arguments.length ? ((d = e), m) : d
          }),
          (m.on = function () {
            var e = f.on.apply(f, arguments)
            return e === f ? m : e
          }),
          (m.clickDistance = function (e) {
            return arguments.length ? ((p = (e = +e) * e), m) : Math.sqrt(p)
          }),
          (m.tapDistance = function (e) {
            return arguments.length ? ((v = +e), m) : v
          }),
          m
        )
      }
      Yr.prototype = $r.prototype
      var si = function (e) {
        return function () {
          return e
        }
      }
      function ui(e, t) {
        var n = t.sourceEvent,
          r = t.subject,
          i = t.target,
          o = t.identifier,
          a = t.active,
          s = t.x,
          u = t.y,
          l = t.dx,
          c = t.dy,
          d = t.dispatch
        Object.defineProperties(this, {
          type: { value: e, enumerable: !0, configurable: !0 },
          sourceEvent: { value: n, enumerable: !0, configurable: !0 },
          subject: { value: r, enumerable: !0, configurable: !0 },
          target: { value: i, enumerable: !0, configurable: !0 },
          identifier: { value: o, enumerable: !0, configurable: !0 },
          active: { value: a, enumerable: !0, configurable: !0 },
          x: { value: s, enumerable: !0, configurable: !0 },
          y: { value: u, enumerable: !0, configurable: !0 },
          dx: { value: l, enumerable: !0, configurable: !0 },
          dy: { value: c, enumerable: !0, configurable: !0 },
          _: { value: d },
        })
      }
      function li(e) {
        return !e.ctrlKey && !e.button
      }
      function ci() {
        return this.parentNode
      }
      function di(e, t) {
        return null == t ? { x: e.x, y: e.y } : t
      }
      function fi() {
        return navigator.maxTouchPoints || 'ontouchstart' in this
      }
      ui.prototype.on = function () {
        var e = this._.on.apply(this._, arguments)
        return e === this._ ? this : e
      }
      var hi = r(6701),
        pi = r(3752),
        vi = r(3096),
        mi = r.n(vi),
        gi = r(7621),
        yi = r.n(gi)
      function bi(e, t) {
        if (!(e instanceof t)) throw new TypeError('Cannot call a class as a function')
      }
      function wi(e, t) {
        for (var n = 0; n < t.length; n++) {
          var r = t[n]
          ;(r.enumerable = r.enumerable || !1),
            (r.configurable = !0),
            'value' in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
      }
      function xi(e) {
        return (
          (function (e) {
            if (Array.isArray(e)) return Ei(e)
          })(e) ||
          (function (e) {
            if ('undefined' !== typeof Symbol && Symbol.iterator in Object(e)) return Array.from(e)
          })(e) ||
          (function (e, t) {
            if (!e) return
            if ('string' === typeof e) return Ei(e, t)
            var n = Object.prototype.toString.call(e).slice(8, -1)
            'Object' === n && e.constructor && (n = e.constructor.name)
            if ('Map' === n || 'Set' === n) return Array.from(e)
            if ('Arguments' === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
              return Ei(e, t)
          })(e) ||
          (function () {
            throw new TypeError(
              'Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.',
            )
          })()
        )
      }
      function Ei(e, t) {
        ;(null == t || t > e.length) && (t = e.length)
        for (var n = 0, r = new Array(t); n < t; n++) r[n] = e[n]
        return r
      }
      var ki = function (e, t, n) {
          return (e << 16) + (t << 8) + n
        },
        _i = function (e, t) {
          return (123 * e) % Math.pow(2, t)
        },
        Ti = (function () {
          function e() {
            var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 6
            bi(this, e), (this.csBits = t), (this.registry = ['__reserved for background__'])
          }
          var t, n, r
          return (
            (t = e),
            (n = [
              {
                key: 'register',
                value: function (e) {
                  if (this.registry.length >= Math.pow(2, 24 - this.csBits)) return null
                  var t,
                    n = this.registry.length,
                    r = _i(n, this.csBits),
                    i =
                      ((t = n + (r << (24 - this.csBits))),
                      '#'.concat(Math.min(t, Math.pow(2, 24)).toString(16).padStart(6, '0')))
                  return this.registry.push(e), i
                },
              },
              {
                key: 'lookup',
                value: function (e) {
                  var t =
                    'string' === typeof e
                      ? (function (e) {
                          var t = yi()(e).toRgb(),
                            n = t.r,
                            r = t.g,
                            i = t.b
                          return ki(n, r, i)
                        })(e)
                      : ki.apply(void 0, xi(e))
                  if (!t) return null
                  var n = t & (Math.pow(2, 24 - this.csBits) - 1),
                    r = (t >> (24 - this.csBits)) & (Math.pow(2, this.csBits) - 1)
                  return _i(n, this.csBits) !== r || n >= this.registry.length
                    ? null
                    : this.registry[n]
                },
              },
            ]) && wi(t.prototype, n),
            r && wi(t, r),
            e
          )
        })(),
        Oi = r(4505),
        Ci = r(5560),
        Si = r(2405),
        Ai = r(216),
        Pi = r(6917)
      const { abs: Mi, cos: Ri, sin: ji, acos: Di, atan2: Li, sqrt: Ni, pow: Ii } = Math
      function zi(e) {
        return e < 0 ? -Ii(-e, 1 / 3) : Ii(e, 1 / 3)
      }
      const Hi = Math.PI,
        Bi = 2 * Hi,
        Fi = Hi / 2,
        Vi = Number.MAX_SAFE_INTEGER || 9007199254740991,
        Ui = Number.MIN_SAFE_INTEGER || -9007199254740991,
        Gi = { x: 0, y: 0, z: 0 },
        qi = {
          Tvalues: [
            -0.06405689286260563, 0.06405689286260563, -0.1911188674736163, 0.1911188674736163,
            -0.3150426796961634, 0.3150426796961634, -0.4337935076260451, 0.4337935076260451,
            -0.5454214713888396, 0.5454214713888396, -0.6480936519369755, 0.6480936519369755,
            -0.7401241915785544, 0.7401241915785544, -0.820001985973903, 0.820001985973903,
            -0.8864155270044011, 0.8864155270044011, -0.9382745520027328, 0.9382745520027328,
            -0.9747285559713095, 0.9747285559713095, -0.9951872199970213, 0.9951872199970213,
          ],
          Cvalues: [
            0.12793819534675216, 0.12793819534675216, 0.1258374563468283, 0.1258374563468283,
            0.12167047292780339, 0.12167047292780339, 0.1155056680537256, 0.1155056680537256,
            0.10744427011596563, 0.10744427011596563, 0.09761865210411388, 0.09761865210411388,
            0.08619016153195327, 0.08619016153195327, 0.0733464814110803, 0.0733464814110803,
            0.05929858491543678, 0.05929858491543678, 0.04427743881741981, 0.04427743881741981,
            0.028531388628933663, 0.028531388628933663, 0.0123412297999872, 0.0123412297999872,
          ],
          arcfn: function (e, t) {
            const n = t(e)
            let r = n.x * n.x + n.y * n.y
            return 'undefined' !== typeof n.z && (r += n.z * n.z), Ni(r)
          },
          compute: function (e, t, n) {
            if (0 === e) return (t[0].t = 0), t[0]
            const r = t.length - 1
            if (1 === e) return (t[r].t = 1), t[r]
            const i = 1 - e
            let o = t
            if (0 === r) return (t[0].t = e), t[0]
            if (1 === r) {
              const t = { x: i * o[0].x + e * o[1].x, y: i * o[0].y + e * o[1].y, t: e }
              return n && (t.z = i * o[0].z + e * o[1].z), t
            }
            if (r < 4) {
              let t,
                a,
                s,
                u = i * i,
                l = e * e,
                c = 0
              2 === r
                ? ((o = [o[0], o[1], o[2], Gi]), (t = u), (a = i * e * 2), (s = l))
                : 3 === r && ((t = u * i), (a = u * e * 3), (s = i * l * 3), (c = e * l))
              const d = {
                x: t * o[0].x + a * o[1].x + s * o[2].x + c * o[3].x,
                y: t * o[0].y + a * o[1].y + s * o[2].y + c * o[3].y,
                t: e,
              }
              return n && (d.z = t * o[0].z + a * o[1].z + s * o[2].z + c * o[3].z), d
            }
            const a = JSON.parse(JSON.stringify(t))
            for (; a.length > 1; ) {
              for (let t = 0; t < a.length - 1; t++)
                (a[t] = {
                  x: a[t].x + (a[t + 1].x - a[t].x) * e,
                  y: a[t].y + (a[t + 1].y - a[t].y) * e,
                }),
                  'undefined' !== typeof a[t].z && (a[t] = a[t].z + (a[t + 1].z - a[t].z) * e)
              a.splice(a.length - 1, 1)
            }
            return (a[0].t = e), a[0]
          },
          computeWithRatios: function (e, t, n, r) {
            const i = 1 - e,
              o = n,
              a = t
            let s,
              u = o[0],
              l = o[1],
              c = o[2],
              d = o[3]
            return (
              (u *= i),
              (l *= e),
              2 === a.length
                ? ((s = u + l),
                  {
                    x: (u * a[0].x + l * a[1].x) / s,
                    y: (u * a[0].y + l * a[1].y) / s,
                    z: !!r && (u * a[0].z + l * a[1].z) / s,
                    t: e,
                  })
                : ((u *= i),
                  (l *= 2 * i),
                  (c *= e * e),
                  3 === a.length
                    ? ((s = u + l + c),
                      {
                        x: (u * a[0].x + l * a[1].x + c * a[2].x) / s,
                        y: (u * a[0].y + l * a[1].y + c * a[2].y) / s,
                        z: !!r && (u * a[0].z + l * a[1].z + c * a[2].z) / s,
                        t: e,
                      })
                    : ((u *= i),
                      (l *= 1.5 * i),
                      (c *= 3 * i),
                      (d *= e * e * e),
                      4 === a.length
                        ? ((s = u + l + c + d),
                          {
                            x: (u * a[0].x + l * a[1].x + c * a[2].x + d * a[3].x) / s,
                            y: (u * a[0].y + l * a[1].y + c * a[2].y + d * a[3].y) / s,
                            z: !!r && (u * a[0].z + l * a[1].z + c * a[2].z + d * a[3].z) / s,
                            t: e,
                          })
                        : void 0))
            )
          },
          derive: function (e, t) {
            const n = []
            for (let r = e, i = r.length, o = i - 1; i > 1; i--, o--) {
              const e = []
              for (let n, i = 0; i < o; i++)
                (n = { x: o * (r[i + 1].x - r[i].x), y: o * (r[i + 1].y - r[i].y) }),
                  t && (n.z = o * (r[i + 1].z - r[i].z)),
                  e.push(n)
              n.push(e), (r = e)
            }
            return n
          },
          between: function (e, t, n) {
            return (t <= e && e <= n) || qi.approximately(e, t) || qi.approximately(e, n)
          },
          approximately: function (e, t, n) {
            return Mi(e - t) <= (n || 1e-6)
          },
          length: function (e) {
            const t = qi.Tvalues.length
            let n = 0
            for (let r, i = 0; i < t; i++)
              (r = 0.5 * qi.Tvalues[i] + 0.5), (n += qi.Cvalues[i] * qi.arcfn(r, e))
            return 0.5 * n
          },
          map: function (e, t, n, r, i) {
            return r + (i - r) * ((e - t) / (n - t))
          },
          lerp: function (e, t, n) {
            const r = { x: t.x + e * (n.x - t.x), y: t.y + e * (n.y - t.y) }
            return void 0 !== t.z && void 0 !== n.z && (r.z = t.z + e * (n.z - t.z)), r
          },
          pointToString: function (e) {
            let t = e.x + '/' + e.y
            return 'undefined' !== typeof e.z && (t += '/' + e.z), t
          },
          pointsToString: function (e) {
            return '[' + e.map(qi.pointToString).join(', ') + ']'
          },
          copy: function (e) {
            return JSON.parse(JSON.stringify(e))
          },
          angle: function (e, t, n) {
            const r = t.x - e.x,
              i = t.y - e.y,
              o = n.x - e.x,
              a = n.y - e.y
            return Li(r * a - i * o, r * o + i * a)
          },
          round: function (e, t) {
            const n = '' + e,
              r = n.indexOf('.')
            return parseFloat(n.substring(0, r + 1 + t))
          },
          dist: function (e, t) {
            const n = e.x - t.x,
              r = e.y - t.y
            return Ni(n * n + r * r)
          },
          closest: function (e, t) {
            let n,
              r,
              i = Ii(2, 63)
            return (
              e.forEach(function (e, o) {
                ;(r = qi.dist(t, e)), r < i && ((i = r), (n = o))
              }),
              { mdist: i, mpos: n }
            )
          },
          abcratio: function (e, t) {
            if (2 !== t && 3 !== t) return !1
            if ('undefined' === typeof e) e = 0.5
            else if (0 === e || 1 === e) return e
            const n = Ii(e, t) + Ii(1 - e, t)
            return Mi((n - 1) / n)
          },
          projectionratio: function (e, t) {
            if (2 !== t && 3 !== t) return !1
            if ('undefined' === typeof e) e = 0.5
            else if (0 === e || 1 === e) return e
            const n = Ii(1 - e, t)
            return n / (Ii(e, t) + n)
          },
          lli8: function (e, t, n, r, i, o, a, s) {
            const u = (e - n) * (o - s) - (t - r) * (i - a)
            return (
              0 != u && {
                x: ((e * r - t * n) * (i - a) - (e - n) * (i * s - o * a)) / u,
                y: ((e * r - t * n) * (o - s) - (t - r) * (i * s - o * a)) / u,
              }
            )
          },
          lli4: function (e, t, n, r) {
            const i = e.x,
              o = e.y,
              a = t.x,
              s = t.y,
              u = n.x,
              l = n.y,
              c = r.x,
              d = r.y
            return qi.lli8(i, o, a, s, u, l, c, d)
          },
          lli: function (e, t) {
            return qi.lli4(e, e.c, t, t.c)
          },
          makeline: function (e, t) {
            const n = e.x,
              r = e.y,
              i = t.x,
              o = t.y,
              a = (i - n) / 3,
              s = (o - r) / 3
            return new to(n, r, n + a, r + s, n + 2 * a, r + 2 * s, i, o)
          },
          findbbox: function (e) {
            let t = Vi,
              n = Vi,
              r = Ui,
              i = Ui
            return (
              e.forEach(function (e) {
                const o = e.bbox()
                t > o.x.min && (t = o.x.min),
                  n > o.y.min && (n = o.y.min),
                  r < o.x.max && (r = o.x.max),
                  i < o.y.max && (i = o.y.max)
              }),
              {
                x: { min: t, mid: (t + r) / 2, max: r, size: r - t },
                y: { min: n, mid: (n + i) / 2, max: i, size: i - n },
              }
            )
          },
          shapeintersections: function (e, t, n, r, i) {
            if (!qi.bboxoverlap(t, r)) return []
            const o = [],
              a = [e.startcap, e.forward, e.back, e.endcap],
              s = [n.startcap, n.forward, n.back, n.endcap]
            return (
              a.forEach(function (t) {
                t.virtual ||
                  s.forEach(function (r) {
                    if (r.virtual) return
                    const a = t.intersects(r, i)
                    a.length > 0 && ((a.c1 = t), (a.c2 = r), (a.s1 = e), (a.s2 = n), o.push(a))
                  })
              }),
              o
            )
          },
          makeshape: function (e, t, n) {
            const r = t.points.length,
              i = e.points.length,
              o = qi.makeline(t.points[r - 1], e.points[0]),
              a = qi.makeline(e.points[i - 1], t.points[0]),
              s = {
                startcap: o,
                forward: e,
                back: t,
                endcap: a,
                bbox: qi.findbbox([o, e, t, a]),
                intersections: function (e) {
                  return qi.shapeintersections(s, s.bbox, e, e.bbox, n)
                },
              }
            return s
          },
          getminmax: function (e, t, n) {
            if (!n) return { min: 0, max: 0 }
            let r,
              i,
              o = Vi,
              a = Ui
            ;-1 === n.indexOf(0) && (n = [0].concat(n)), -1 === n.indexOf(1) && n.push(1)
            for (let s = 0, u = n.length; s < u; s++)
              (r = n[s]), (i = e.get(r)), i[t] < o && (o = i[t]), i[t] > a && (a = i[t])
            return { min: o, mid: (o + a) / 2, max: a, size: a - o }
          },
          align: function (e, t) {
            const n = t.p1.x,
              r = t.p1.y,
              i = -Li(t.p2.y - r, t.p2.x - n)
            return e.map(function (e) {
              return {
                x: (e.x - n) * Ri(i) - (e.y - r) * ji(i),
                y: (e.x - n) * ji(i) + (e.y - r) * Ri(i),
              }
            })
          },
          roots: function (e, t) {
            t = t || { p1: { x: 0, y: 0 }, p2: { x: 1, y: 0 } }
            const n = e.length - 1,
              r = qi.align(e, t),
              i = function (e) {
                return 0 <= e && e <= 1
              }
            if (2 === n) {
              const e = r[0].y,
                t = r[1].y,
                n = r[2].y,
                o = e - 2 * t + n
              if (0 !== o) {
                const r = -Ni(t * t - e * n),
                  a = -e + t
                return [-(r + a) / o, -(-r + a) / o].filter(i)
              }
              return t !== n && 0 === o ? [(2 * t - n) / (2 * t - 2 * n)].filter(i) : []
            }
            const o = r[0].y,
              a = r[1].y,
              s = r[2].y
            let u = 3 * a - o - 3 * s + r[3].y,
              l = 3 * o - 6 * a + 3 * s,
              c = -3 * o + 3 * a,
              d = o
            if (qi.approximately(u, 0)) {
              if (qi.approximately(l, 0)) return qi.approximately(c, 0) ? [] : [-d / c].filter(i)
              const e = Ni(c * c - 4 * l * d),
                t = 2 * l
              return [(e - c) / t, (-c - e) / t].filter(i)
            }
            ;(l /= u), (c /= u), (d /= u)
            const f = (3 * c - l * l) / 3,
              h = f / 3,
              p = (2 * l * l * l - 9 * l * c + 27 * d) / 27,
              v = p / 2,
              m = v * v + h * h * h
            let g, y, b, w, x
            if (m < 0) {
              const e = -f / 3,
                t = Ni(e * e * e),
                n = -p / (2 * t),
                r = Di(n < -1 ? -1 : n > 1 ? 1 : n),
                o = 2 * zi(t)
              return (
                (b = o * Ri(r / 3) - l / 3),
                (w = o * Ri((r + Bi) / 3) - l / 3),
                (x = o * Ri((r + 2 * Bi) / 3) - l / 3),
                [b, w, x].filter(i)
              )
            }
            if (0 === m)
              return (
                (g = v < 0 ? zi(-v) : -zi(v)),
                (b = 2 * g - l / 3),
                (w = -g - l / 3),
                [b, w].filter(i)
              )
            {
              const e = Ni(m)
              return (g = zi(-v + e)), (y = zi(v + e)), [g - y - l / 3].filter(i)
            }
          },
          droots: function (e) {
            if (3 === e.length) {
              const t = e[0],
                n = e[1],
                r = e[2],
                i = t - 2 * n + r
              if (0 !== i) {
                const e = -Ni(n * n - t * r),
                  o = -t + n
                return [-(e + o) / i, -(-e + o) / i]
              }
              return n !== r && 0 === i ? [(2 * n - r) / (2 * (n - r))] : []
            }
            if (2 === e.length) {
              const t = e[0],
                n = e[1]
              return t !== n ? [t / (t - n)] : []
            }
            return []
          },
          curvature: function (e, t, n, r, i) {
            let o,
              a,
              s,
              u,
              l = 0,
              c = 0
            const d = qi.compute(e, t),
              f = qi.compute(e, n),
              h = d.x * d.x + d.y * d.y
            if (
              (r
                ? ((o = Ni(
                    Ii(d.y * f.z - f.y * d.z, 2) +
                      Ii(d.z * f.x - f.z * d.x, 2) +
                      Ii(d.x * f.y - f.x * d.y, 2),
                  )),
                  (a = Ii(h + d.z * d.z, 1.5)))
                : ((o = d.x * f.y - d.y * f.x), (a = Ii(h, 1.5))),
              0 === o || 0 === a)
            )
              return { k: 0, r: 0 }
            if (((l = o / a), (c = a / o), !i)) {
              const i = qi.curvature(e - 0.001, t, n, r, !0).k,
                o = qi.curvature(e + 0.001, t, n, r, !0).k
              ;(u = (o - l + (l - i)) / 2), (s = (Mi(o - l) + Mi(l - i)) / 2)
            }
            return { k: l, r: c, dk: u, adk: s }
          },
          inflections: function (e) {
            if (e.length < 4) return []
            const t = qi.align(e, { p1: e[0], p2: e.slice(-1)[0] }),
              n = t[2].x * t[1].y,
              r = t[3].x * t[1].y,
              i = t[1].x * t[2].y,
              o = 18 * (-3 * n + 2 * r + 3 * i - t[3].x * t[2].y),
              a = 18 * (3 * n - r - 3 * i),
              s = 18 * (i - n)
            if (qi.approximately(o, 0)) {
              if (!qi.approximately(a, 0)) {
                let e = -s / a
                if (0 <= e && e <= 1) return [e]
              }
              return []
            }
            const u = a * a - 4 * o * s,
              l = Math.sqrt(u),
              c = 2 * o
            return qi.approximately(c, 0)
              ? []
              : [(l - a) / c, -(a + l) / c].filter(function (e) {
                  return 0 <= e && e <= 1
                })
          },
          bboxoverlap: function (e, t) {
            const n = ['x', 'y'],
              r = n.length
            for (let i, o, a, s, u = 0; u < r; u++)
              if (
                ((i = n[u]),
                (o = e[i].mid),
                (a = t[i].mid),
                (s = (e[i].size + t[i].size) / 2),
                Mi(o - a) >= s)
              )
                return !1
            return !0
          },
          expandbox: function (e, t) {
            t.x.min < e.x.min && (e.x.min = t.x.min),
              t.y.min < e.y.min && (e.y.min = t.y.min),
              t.z && t.z.min < e.z.min && (e.z.min = t.z.min),
              t.x.max > e.x.max && (e.x.max = t.x.max),
              t.y.max > e.y.max && (e.y.max = t.y.max),
              t.z && t.z.max > e.z.max && (e.z.max = t.z.max),
              (e.x.mid = (e.x.min + e.x.max) / 2),
              (e.y.mid = (e.y.min + e.y.max) / 2),
              e.z && (e.z.mid = (e.z.min + e.z.max) / 2),
              (e.x.size = e.x.max - e.x.min),
              (e.y.size = e.y.max - e.y.min),
              e.z && (e.z.size = e.z.max - e.z.min)
          },
          pairiteration: function (e, t, n) {
            const r = e.bbox(),
              i = t.bbox(),
              o = 1e5,
              a = n || 0.5
            if (r.x.size + r.y.size < a && i.x.size + i.y.size < a)
              return [
                (((o * (e._t1 + e._t2)) / 2) | 0) / o + '/' + (((o * (t._t1 + t._t2)) / 2) | 0) / o,
              ]
            let s = e.split(0.5),
              u = t.split(0.5),
              l = [
                { left: s.left, right: u.left },
                { left: s.left, right: u.right },
                { left: s.right, right: u.right },
                { left: s.right, right: u.left },
              ]
            l = l.filter(function (e) {
              return qi.bboxoverlap(e.left.bbox(), e.right.bbox())
            })
            let c = []
            return (
              0 === l.length ||
                (l.forEach(function (e) {
                  c = c.concat(qi.pairiteration(e.left, e.right, a))
                }),
                (c = c.filter(function (e, t) {
                  return c.indexOf(e) === t
                }))),
              c
            )
          },
          getccenter: function (e, t, n) {
            const r = t.x - e.x,
              i = t.y - e.y,
              o = n.x - t.x,
              a = n.y - t.y,
              s = r * Ri(Fi) - i * ji(Fi),
              u = r * ji(Fi) + i * Ri(Fi),
              l = o * Ri(Fi) - a * ji(Fi),
              c = o * ji(Fi) + a * Ri(Fi),
              d = (e.x + t.x) / 2,
              f = (e.y + t.y) / 2,
              h = (t.x + n.x) / 2,
              p = (t.y + n.y) / 2,
              v = d + s,
              m = f + u,
              g = h + l,
              y = p + c,
              b = qi.lli8(d, f, v, m, h, p, g, y),
              w = qi.dist(b, e)
            let x,
              E = Li(e.y - b.y, e.x - b.x),
              k = Li(t.y - b.y, t.x - b.x),
              _ = Li(n.y - b.y, n.x - b.x)
            return (
              E < _
                ? ((E > k || k > _) && (E += Bi), E > _ && ((x = _), (_ = E), (E = x)))
                : _ < k && k < E
                ? ((x = _), (_ = E), (E = x))
                : (_ += Bi),
              (b.s = E),
              (b.e = _),
              (b.r = w),
              b
            )
          },
          numberSort: function (e, t) {
            return e - t
          },
        }
      class Wi {
        constructor(e) {
          ;(this.curves = []),
            (this._3d = !1),
            e && ((this.curves = e), (this._3d = this.curves[0]._3d))
        }
        valueOf() {
          return this.toString()
        }
        toString() {
          return (
            '[' +
            this.curves
              .map(function (e) {
                return qi.pointsToString(e.points)
              })
              .join(', ') +
            ']'
          )
        }
        addCurve(e) {
          this.curves.push(e), (this._3d = this._3d || e._3d)
        }
        length() {
          return this.curves
            .map(function (e) {
              return e.length()
            })
            .reduce(function (e, t) {
              return e + t
            })
        }
        curve(e) {
          return this.curves[e]
        }
        bbox() {
          const e = this.curves
          for (var t = e[0].bbox(), n = 1; n < e.length; n++) qi.expandbox(t, e[n].bbox())
          return t
        }
        offset(e) {
          const t = []
          return (
            this.curves.forEach(function (n) {
              t.push(...n.offset(e))
            }),
            new Wi(t)
          )
        }
      }
      const { abs: Ki, min: Zi, max: $i, cos: Xi, sin: Yi, acos: Qi, sqrt: Ji } = Math,
        eo = Math.PI
      class to {
        constructor(e) {
          let t = e && e.forEach ? e : Array.from(arguments).slice(),
            n = !1
          if ('object' === typeof t[0]) {
            n = t.length
            const e = []
            t.forEach(function (t) {
              ;['x', 'y', 'z'].forEach(function (n) {
                'undefined' !== typeof t[n] && e.push(t[n])
              })
            }),
              (t = e)
          }
          let r = !1
          const i = t.length
          if (n) {
            if (n > 4) {
              if (1 !== arguments.length)
                throw new Error(
                  'Only new Bezier(point[]) is accepted for 4th and higher order curves',
                )
              r = !0
            }
          } else if (6 !== i && 8 !== i && 9 !== i && 12 !== i && 1 !== arguments.length)
            throw new Error('Only new Bezier(point[]) is accepted for 4th and higher order curves')
          const o = (this._3d =
              (!r && (9 === i || 12 === i)) || (e && e[0] && 'undefined' !== typeof e[0].z)),
            a = (this.points = [])
          for (let d = 0, f = o ? 3 : 2; d < i; d += f) {
            var s = { x: t[d], y: t[d + 1] }
            o && (s.z = t[d + 2]), a.push(s)
          }
          const u = (this.order = a.length - 1),
            l = (this.dims = ['x', 'y'])
          o && l.push('z'), (this.dimlen = l.length)
          const c = qi.align(a, { p1: a[0], p2: a[u] })
          ;(this._linear = !c.some((e) => Ki(e.y) > 1e-4)),
            (this._lut = []),
            (this._t1 = 0),
            (this._t2 = 1),
            this.update()
        }
        static quadraticFromPoints(e, t, n, r) {
          if (('undefined' === typeof r && (r = 0.5), 0 === r)) return new to(t, t, n)
          if (1 === r) return new to(e, t, t)
          const i = to.getABC(2, e, t, n, r)
          return new to(e, i.A, n)
        }
        static cubicFromPoints(e, t, n, r, i) {
          'undefined' === typeof r && (r = 0.5)
          const o = to.getABC(3, e, t, n, r)
          'undefined' === typeof i && (i = qi.dist(t, o.C))
          const a = (i * (1 - r)) / r,
            s = qi.dist(e, n),
            u = (n.x - e.x) / s,
            l = (n.y - e.y) / s,
            c = i * u,
            d = i * l,
            f = a * u,
            h = a * l,
            p = t.x - c,
            v = t.y - d,
            m = t.x + f,
            g = t.y + h,
            y = o.A,
            b = y.x + (p - y.x) / (1 - r),
            w = y.y + (v - y.y) / (1 - r),
            x = y.x + (m - y.x) / r,
            E = y.y + (g - y.y) / r,
            k = { x: e.x + (b - e.x) / r, y: e.y + (w - e.y) / r },
            _ = { x: n.x + (x - n.x) / (1 - r), y: n.y + (E - n.y) / (1 - r) }
          return new to(e, k, _, n)
        }
        static getUtils() {
          return qi
        }
        getUtils() {
          return to.getUtils()
        }
        static get PolyBezier() {
          return Wi
        }
        valueOf() {
          return this.toString()
        }
        toString() {
          return qi.pointsToString(this.points)
        }
        toSVG() {
          if (this._3d) return !1
          const e = this.points,
            t = ['M', e[0].x, e[0].y, 2 === this.order ? 'Q' : 'C']
          for (let n = 1, r = e.length; n < r; n++) t.push(e[n].x), t.push(e[n].y)
          return t.join(' ')
        }
        setRatios(e) {
          if (e.length !== this.points.length) throw new Error('incorrect number of ratio values')
          ;(this.ratios = e), (this._lut = [])
        }
        verify() {
          const e = this.coordDigest()
          e !== this._print && ((this._print = e), this.update())
        }
        coordDigest() {
          return this.points
            .map(function (e, t) {
              return '' + t + e.x + e.y + (e.z ? e.z : 0)
            })
            .join('')
        }
        update() {
          ;(this._lut = []),
            (this.dpoints = qi.derive(this.points, this._3d)),
            this.computedirection()
        }
        computedirection() {
          const e = this.points,
            t = qi.angle(e[0], e[this.order], e[1])
          this.clockwise = t > 0
        }
        length() {
          return qi.length(this.derivative.bind(this))
        }
        static getABC(e = 2, t, n, r, i = 0.5) {
          const o = qi.projectionratio(i, e),
            a = 1 - o,
            s = { x: o * t.x + a * r.x, y: o * t.y + a * r.y },
            u = qi.abcratio(i, e)
          return {
            A: { x: n.x + (n.x - s.x) / u, y: n.y + (n.y - s.y) / u },
            B: n,
            C: s,
            S: t,
            E: r,
          }
        }
        getABC(e, t) {
          t = t || this.get(e)
          let n = this.points[0],
            r = this.points[this.order]
          return to.getABC(this.order, n, t, r, e)
        }
        getLUT(e) {
          if ((this.verify(), (e = e || 100), this._lut.length === e)) return this._lut
          ;(this._lut = []), e--
          for (let t, n, r = 0; r < e; r++)
            (n = r / (e - 1)), (t = this.compute(n)), (t.t = n), this._lut.push(t)
          return this._lut
        }
        on(e, n) {
          n = n || 5
          const r = this.getLUT(),
            i = []
          for (let t, o = 0, a = 0; o < r.length; o++)
            (t = r[o]), qi.dist(t, e) < n && (i.push(t), (a += o / r.length))
          return !!i.length && (t /= i.length)
        }
        project(e) {
          const t = this.getLUT(),
            n = t.length - 1,
            r = qi.closest(t, e),
            i = r.mpos,
            o = (i - 1) / n,
            a = (i + 1) / n,
            s = 0.1 / n
          let u,
            l,
            c = r.mdist,
            d = o,
            f = d
          for (c += 1; d < a + s; d += s)
            (u = this.compute(d)), (l = qi.dist(e, u)), l < c && ((c = l), (f = d))
          return (f = f < 0 ? 0 : f > 1 ? 1 : f), (u = this.compute(f)), (u.t = f), (u.d = c), u
        }
        get(e) {
          return this.compute(e)
        }
        point(e) {
          return this.points[e]
        }
        compute(e) {
          return this.ratios
            ? qi.computeWithRatios(e, this.points, this.ratios, this._3d)
            : qi.compute(e, this.points, this._3d, this.ratios)
        }
        raise() {
          const e = this.points,
            t = [e[0]],
            n = e.length
          for (let r, i, o = 1; o < n; o++)
            (r = e[o]),
              (i = e[o - 1]),
              (t[o] = {
                x: ((n - o) / n) * r.x + (o / n) * i.x,
                y: ((n - o) / n) * r.y + (o / n) * i.y,
              })
          return (t[n] = e[n - 1]), new to(t)
        }
        derivative(e) {
          return qi.compute(e, this.dpoints[0], this._3d)
        }
        dderivative(e) {
          return qi.compute(e, this.dpoints[1], this._3d)
        }
        align() {
          let e = this.points
          return new to(qi.align(e, { p1: e[0], p2: e[e.length - 1] }))
        }
        curvature(e) {
          return qi.curvature(e, this.dpoints[0], this.dpoints[1], this._3d)
        }
        inflections() {
          return qi.inflections(this.points)
        }
        normal(e) {
          return this._3d ? this.__normal3(e) : this.__normal2(e)
        }
        __normal2(e) {
          const t = this.derivative(e),
            n = Ji(t.x * t.x + t.y * t.y)
          return { x: -t.y / n, y: t.x / n }
        }
        __normal3(e) {
          const t = this.derivative(e),
            n = this.derivative(e + 0.01),
            r = Ji(t.x * t.x + t.y * t.y + t.z * t.z),
            i = Ji(n.x * n.x + n.y * n.y + n.z * n.z)
          ;(t.x /= r), (t.y /= r), (t.z /= r), (n.x /= i), (n.y /= i), (n.z /= i)
          const o = {
              x: n.y * t.z - n.z * t.y,
              y: n.z * t.x - n.x * t.z,
              z: n.x * t.y - n.y * t.x,
            },
            a = Ji(o.x * o.x + o.y * o.y + o.z * o.z)
          ;(o.x /= a), (o.y /= a), (o.z /= a)
          const s = [
            o.x * o.x,
            o.x * o.y - o.z,
            o.x * o.z + o.y,
            o.x * o.y + o.z,
            o.y * o.y,
            o.y * o.z - o.x,
            o.x * o.z - o.y,
            o.y * o.z + o.x,
            o.z * o.z,
          ]
          return {
            x: s[0] * t.x + s[1] * t.y + s[2] * t.z,
            y: s[3] * t.x + s[4] * t.y + s[5] * t.z,
            z: s[6] * t.x + s[7] * t.y + s[8] * t.z,
          }
        }
        hull(e) {
          let t = this.points,
            n = [],
            r = [],
            i = 0
          for (
            r[i++] = t[0], r[i++] = t[1], r[i++] = t[2], 3 === this.order && (r[i++] = t[3]);
            t.length > 1;

          ) {
            n = []
            for (let o, a = 0, s = t.length - 1; a < s; a++)
              (o = qi.lerp(e, t[a], t[a + 1])), (r[i++] = o), n.push(o)
            t = n
          }
          return r
        }
        split(e, t) {
          if (0 === e && t) return this.split(t).left
          if (1 === t) return this.split(e).right
          const n = this.hull(e),
            r = {
              left:
                2 === this.order ? new to([n[0], n[3], n[5]]) : new to([n[0], n[4], n[7], n[9]]),
              right:
                2 === this.order ? new to([n[5], n[4], n[2]]) : new to([n[9], n[8], n[6], n[3]]),
              span: n,
            }
          return (
            (r.left._t1 = qi.map(0, 0, 1, this._t1, this._t2)),
            (r.left._t2 = qi.map(e, 0, 1, this._t1, this._t2)),
            (r.right._t1 = qi.map(e, 0, 1, this._t1, this._t2)),
            (r.right._t2 = qi.map(1, 0, 1, this._t1, this._t2)),
            t ? ((t = qi.map(t, e, 1, 0, 1)), r.right.split(t).left) : r
          )
        }
        extrema() {
          const e = {}
          let t = []
          return (
            this.dims.forEach(
              function (n) {
                let r = function (e) {
                    return e[n]
                  },
                  i = this.dpoints[0].map(r)
                ;(e[n] = qi.droots(i)),
                  3 === this.order &&
                    ((i = this.dpoints[1].map(r)), (e[n] = e[n].concat(qi.droots(i)))),
                  (e[n] = e[n].filter(function (e) {
                    return e >= 0 && e <= 1
                  })),
                  (t = t.concat(e[n].sort(qi.numberSort)))
              }.bind(this),
            ),
            (e.values = t.sort(qi.numberSort).filter(function (e, n) {
              return t.indexOf(e) === n
            })),
            e
          )
        }
        bbox() {
          const e = this.extrema(),
            t = {}
          return (
            this.dims.forEach(
              function (n) {
                t[n] = qi.getminmax(this, n, e[n])
              }.bind(this),
            ),
            t
          )
        }
        overlaps(e) {
          const t = this.bbox(),
            n = e.bbox()
          return qi.bboxoverlap(t, n)
        }
        offset(e, t) {
          if ('undefined' !== typeof t) {
            const n = this.get(e),
              r = this.normal(e),
              i = { c: n, n: r, x: n.x + r.x * t, y: n.y + r.y * t }
            return this._3d && (i.z = n.z + r.z * t), i
          }
          if (this._linear) {
            const t = this.normal(0),
              n = this.points.map(function (n) {
                const r = { x: n.x + e * t.x, y: n.y + e * t.y }
                return n.z && t.z && (r.z = n.z + e * t.z), r
              })
            return [new to(n)]
          }
          return this.reduce().map(function (t) {
            return t._linear ? t.offset(e)[0] : t.scale(e)
          })
        }
        simple() {
          if (3 === this.order) {
            const e = qi.angle(this.points[0], this.points[3], this.points[1]),
              t = qi.angle(this.points[0], this.points[3], this.points[2])
            if ((e > 0 && t < 0) || (e < 0 && t > 0)) return !1
          }
          const e = this.normal(0),
            t = this.normal(1)
          let n = e.x * t.x + e.y * t.y
          return this._3d && (n += e.z * t.z), Ki(Qi(n)) < eo / 3
        }
        reduce() {
          let e,
            t,
            n = 0,
            r = 0,
            i = 0.01,
            o = [],
            a = [],
            s = this.extrema().values
          for (
            -1 === s.indexOf(0) && (s = [0].concat(s)),
              -1 === s.indexOf(1) && s.push(1),
              n = s[0],
              e = 1;
            e < s.length;
            e++
          )
            (r = s[e]), (t = this.split(n, r)), (t._t1 = n), (t._t2 = r), o.push(t), (n = r)
          return (
            o.forEach(function (e) {
              for (n = 0, r = 0; r <= 1; )
                for (r = n + i; r <= 1.01; r += i)
                  if (((t = e.split(n, r)), !t.simple())) {
                    if (((r -= i), Ki(n - r) < i)) return []
                    ;(t = e.split(n, r)),
                      (t._t1 = qi.map(n, 0, 1, e._t1, e._t2)),
                      (t._t2 = qi.map(r, 0, 1, e._t1, e._t2)),
                      a.push(t),
                      (n = r)
                    break
                  }
              n < 1 &&
                ((t = e.split(n, 1)),
                (t._t1 = qi.map(n, 0, 1, e._t1, e._t2)),
                (t._t2 = e._t2),
                a.push(t))
            }),
            a
          )
        }
        scale(e) {
          const t = this.order
          let n = !1
          if (('function' === typeof e && (n = e), n && 2 === t)) return this.raise().scale(n)
          const r = this.clockwise,
            i = n ? n(0) : e,
            o = n ? n(1) : e,
            a = [this.offset(0, 10), this.offset(1, 10)],
            s = this.points,
            u = [],
            l = qi.lli4(a[0], a[0].c, a[1], a[1].c)
          if (!l) throw new Error('cannot scale this curve. Try reducing it first.')
          return (
            [0, 1].forEach(function (e) {
              const n = (u[e * t] = qi.copy(s[e * t]))
              ;(n.x += (e ? o : i) * a[e].n.x), (n.y += (e ? o : i) * a[e].n.y)
            }),
            n
              ? ([0, 1].forEach(function (i) {
                  if (2 !== t || !i) {
                    var o = s[i + 1],
                      a = { x: o.x - l.x, y: o.y - l.y },
                      c = n ? n((i + 1) / t) : e
                    n && !r && (c = -c)
                    var d = Ji(a.x * a.x + a.y * a.y)
                    ;(a.x /= d), (a.y /= d), (u[i + 1] = { x: o.x + c * a.x, y: o.y + c * a.y })
                  }
                }),
                new to(u))
              : ([0, 1].forEach((e) => {
                  if (2 === t && e) return
                  const n = u[e * t],
                    r = this.derivative(e),
                    i = { x: n.x + r.x, y: n.y + r.y }
                  u[e + 1] = qi.lli4(n, i, l, s[e + 1])
                }),
                new to(u))
          )
        }
        outline(e, t, n, r) {
          t = 'undefined' === typeof t ? e : t
          const i = this.reduce(),
            o = i.length,
            a = []
          let s,
            u = [],
            l = 0,
            c = this.length()
          const d = 'undefined' !== typeof n && 'undefined' !== typeof r
          function f(e, t, n, r, i) {
            return function (o) {
              const a = r / n,
                s = (r + i) / n,
                u = t - e
              return qi.map(o, 0, 1, e + a * u, e + s * u)
            }
          }
          i.forEach(function (i) {
            const o = i.length()
            d
              ? (a.push(i.scale(f(e, n, c, l, o))), u.push(i.scale(f(-t, -r, c, l, o))))
              : (a.push(i.scale(e)), u.push(i.scale(-t))),
              (l += o)
          }),
            (u = u
              .map(function (e) {
                return (
                  (s = e.points),
                  s[3] ? (e.points = [s[3], s[2], s[1], s[0]]) : (e.points = [s[2], s[1], s[0]]),
                  e
                )
              })
              .reverse())
          const h = a[0].points[0],
            p = a[o - 1].points[a[o - 1].points.length - 1],
            v = u[o - 1].points[u[o - 1].points.length - 1],
            m = u[0].points[0],
            g = qi.makeline(v, h),
            y = qi.makeline(p, m),
            b = [g].concat(a).concat([y]).concat(u)
          b.length
          return new Wi(b)
        }
        outlineshapes(e, t, n) {
          t = t || e
          const r = this.outline(e, t).curves,
            i = []
          for (let o = 1, a = r.length; o < a / 2; o++) {
            const e = qi.makeshape(r[o], r[a - o], n)
            ;(e.startcap.virtual = o > 1), (e.endcap.virtual = o < a / 2 - 1), i.push(e)
          }
          return i
        }
        intersects(e, t) {
          return e
            ? e.p1 && e.p2
              ? this.lineIntersects(e)
              : (e instanceof to && (e = e.reduce()), this.curveintersects(this.reduce(), e, t))
            : this.selfintersects(t)
        }
        lineIntersects(e) {
          const t = Zi(e.p1.x, e.p2.x),
            n = Zi(e.p1.y, e.p2.y),
            r = $i(e.p1.x, e.p2.x),
            i = $i(e.p1.y, e.p2.y)
          return qi.roots(this.points, e).filter((e) => {
            var o = this.get(e)
            return qi.between(o.x, t, r) && qi.between(o.y, n, i)
          })
        }
        selfintersects(e) {
          const t = this.reduce(),
            n = t.length - 2,
            r = []
          for (let i, o, a, s = 0; s < n; s++)
            (o = t.slice(s, s + 1)),
              (a = t.slice(s + 2)),
              (i = this.curveintersects(o, a, e)),
              r.push(...i)
          return r
        }
        curveintersects(e, t, n) {
          const r = []
          e.forEach(function (e) {
            t.forEach(function (t) {
              e.overlaps(t) && r.push({ left: e, right: t })
            })
          })
          let i = []
          return (
            r.forEach(function (e) {
              const t = qi.pairiteration(e.left, e.right, n)
              t.length > 0 && (i = i.concat(t))
            }),
            i
          )
        }
        arcs(e) {
          return (e = e || 0.5), this._iterate(e, [])
        }
        _error(e, t, n, r) {
          const i = (r - n) / 4,
            o = this.get(n + i),
            a = this.get(r - i),
            s = qi.dist(e, t),
            u = qi.dist(e, o),
            l = qi.dist(e, a)
          return Ki(u - s) + Ki(l - s)
        }
        _iterate(e, t) {
          let n,
            r = 0,
            i = 1
          do {
            ;(n = 0), (i = 1)
            let o,
              a,
              s,
              u,
              l,
              c = this.get(r),
              d = !1,
              f = !1,
              h = i,
              p = 1,
              v = 0
            do {
              if (
                ((f = d),
                (u = s),
                (h = (r + i) / 2),
                v++,
                (o = this.get(h)),
                (a = this.get(i)),
                (s = qi.getccenter(c, o, a)),
                (s.interval = { start: r, end: i }),
                (d = this._error(s, c, r, i) <= e),
                (l = f && !d),
                l || (p = i),
                d)
              ) {
                if (i >= 1) {
                  if (((s.interval.end = p = 1), (u = s), i > 1)) {
                    let e = { x: s.x + s.r * Xi(s.e), y: s.y + s.r * Yi(s.e) }
                    s.e += qi.angle({ x: s.x, y: s.y }, e, this.get(1))
                  }
                  break
                }
                i += (i - r) / 2
              } else i = h
            } while (!l && n++ < 100)
            if (n >= 100) break
            ;(u = u || s), t.push(u), (r = p)
          } while (i < 1)
          return t
        }
      }
      var no = r(1527),
        ro = r(2462),
        io = r(2816)
      function oo(e, t) {
        var n = Object.keys(e)
        if (Object.getOwnPropertySymbols) {
          var r = Object.getOwnPropertySymbols(e)
          t &&
            (r = r.filter(function (t) {
              return Object.getOwnPropertyDescriptor(e, t).enumerable
            })),
            n.push.apply(n, r)
        }
        return n
      }
      function ao(e) {
        for (var t = 1; t < arguments.length; t++) {
          var n = null != arguments[t] ? arguments[t] : {}
          t % 2
            ? oo(Object(n), !0).forEach(function (t) {
                uo(e, t, n[t])
              })
            : Object.getOwnPropertyDescriptors
            ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n))
            : oo(Object(n)).forEach(function (t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t))
              })
        }
        return e
      }
      function so(e) {
        return (so =
          'function' === typeof Symbol && 'symbol' === typeof Symbol.iterator
            ? function (e) {
                return typeof e
              }
            : function (e) {
                return e &&
                  'function' === typeof Symbol &&
                  e.constructor === Symbol &&
                  e !== Symbol.prototype
                  ? 'symbol'
                  : typeof e
              })(e)
      }
      function uo(e, t, n) {
        return (
          t in e
            ? Object.defineProperty(e, t, {
                value: n,
                enumerable: !0,
                configurable: !0,
                writable: !0,
              })
            : (e[t] = n),
          e
        )
      }
      function lo(e, t) {
        return (lo =
          Object.setPrototypeOf ||
          function (e, t) {
            return (e.__proto__ = t), e
          })(e, t)
      }
      function co() {
        if ('undefined' === typeof Reflect || !Reflect.construct) return !1
        if (Reflect.construct.sham) return !1
        if ('function' === typeof Proxy) return !0
        try {
          return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})), !0
        } catch (e) {
          return !1
        }
      }
      function fo(e, t, n) {
        return (fo = co()
          ? Reflect.construct
          : function (e, t, n) {
              var r = [null]
              r.push.apply(r, t)
              var i = new (Function.bind.apply(e, r))()
              return n && lo(i, n.prototype), i
            }).apply(null, arguments)
      }
      function ho(e, t) {
        return (
          (function (e) {
            if (Array.isArray(e)) return e
          })(e) ||
          (function (e, t) {
            var n =
              null == e
                ? null
                : ('undefined' !== typeof Symbol && e[Symbol.iterator]) || e['@@iterator']
            if (null == n) return
            var r,
              i,
              o = [],
              a = !0,
              s = !1
            try {
              for (
                n = n.call(e);
                !(a = (r = n.next()).done) && (o.push(r.value), !t || o.length !== t);
                a = !0
              );
            } catch (u) {
              ;(s = !0), (i = u)
            } finally {
              try {
                a || null == n.return || n.return()
              } finally {
                if (s) throw i
              }
            }
            return o
          })(e, t) ||
          vo(e, t) ||
          (function () {
            throw new TypeError(
              'Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.',
            )
          })()
        )
      }
      function po(e) {
        return (
          (function (e) {
            if (Array.isArray(e)) return mo(e)
          })(e) ||
          (function (e) {
            if (
              ('undefined' !== typeof Symbol && null != e[Symbol.iterator]) ||
              null != e['@@iterator']
            )
              return Array.from(e)
          })(e) ||
          vo(e) ||
          (function () {
            throw new TypeError(
              'Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.',
            )
          })()
        )
      }
      function vo(e, t) {
        if (e) {
          if ('string' === typeof e) return mo(e, t)
          var n = Object.prototype.toString.call(e).slice(8, -1)
          return (
            'Object' === n && e.constructor && (n = e.constructor.name),
            'Map' === n || 'Set' === n
              ? Array.from(e)
              : 'Arguments' === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)
              ? mo(e, t)
              : void 0
          )
        }
      }
      function mo(e, t) {
        ;(null == t || t > e.length) && (t = e.length)
        for (var n = 0, r = new Array(t); n < t; n++) r[n] = e[n]
        return r
      }
      !(function (e, t) {
        void 0 === t && (t = {})
        var n = t.insertAt
        if (e && 'undefined' !== typeof document) {
          var r = document.head || document.getElementsByTagName('head')[0],
            i = document.createElement('style')
          ;(i.type = 'text/css'),
            'top' === n && r.firstChild ? r.insertBefore(i, r.firstChild) : r.appendChild(i),
            i.styleSheet ? (i.styleSheet.cssText = e) : i.appendChild(document.createTextNode(e))
        }
      })(
        '.force-graph-container canvas {\n  display: block;\n  user-select: none;\n  outline: none;\n  -webkit-tap-highlight-color: transparent;\n}\n\n.force-graph-container .graph-tooltip {\n  position: absolute;\n  transform: translate(-50%, 25px);\n  font-family: sans-serif;\n  font-size: 16px;\n  padding: 4px;\n  border-radius: 3px;\n  color: #eee;\n  background: rgba(0,0,0,0.65);\n  visibility: hidden; /* by default */\n}\n\n.force-graph-container .clickable {\n  cursor: pointer;\n}\n\n.force-graph-container .grabbable {\n  cursor: move;\n  cursor: grab;\n  cursor: -moz-grab;\n  cursor: -webkit-grab;\n}\n\n.force-graph-container .grabbable:active {\n  cursor: grabbing;\n  cursor: -moz-grabbing;\n  cursor: -webkit-grabbing;\n}\n',
      )
      var go = (0, ro.Z)(io.Z)
      function yo(e, t, n) {
        t &&
          'string' === typeof n &&
          e
            .filter(function (e) {
              return !e[n]
            })
            .forEach(function (e) {
              e[n] = go(t(e))
            })
      }
      var bo = function (e, t) {
          return t.onNeedsRedraw && t.onNeedsRedraw()
        },
        wo = (0, b.Z)({
          props: {
            graphData: {
              default: { nodes: [], links: [] },
              onChange: function (e, t) {
                t.engineRunning = !1
              },
            },
            dagMode: {
              onChange: function (e, t) {
                !e &&
                  (t.graphData.nodes || []).forEach(function (e) {
                    return (e.fx = e.fy = void 0)
                  })
              },
            },
            dagLevelDistance: {},
            dagNodeFilter: {
              default: function (e) {
                return !0
              },
            },
            onDagError: { triggerUpdate: !1 },
            nodeRelSize: { default: 4, triggerUpdate: !1, onChange: bo },
            nodeId: { default: 'id' },
            nodeVal: { default: 'val', triggerUpdate: !1, onChange: bo },
            nodeColor: { default: 'color', triggerUpdate: !1, onChange: bo },
            nodeAutoColorBy: {},
            nodeCanvasObject: { triggerUpdate: !1, onChange: bo },
            nodeCanvasObjectMode: {
              default: function () {
                return 'replace'
              },
              triggerUpdate: !1,
              onChange: bo,
            },
            nodeVisibility: { default: !0, triggerUpdate: !1, onChange: bo },
            linkSource: { default: 'source' },
            linkTarget: { default: 'target' },
            linkVisibility: { default: !0, triggerUpdate: !1, onChange: bo },
            linkColor: { default: 'color', triggerUpdate: !1, onChange: bo },
            linkAutoColorBy: {},
            linkLineDash: { triggerUpdate: !1, onChange: bo },
            linkWidth: { default: 1, triggerUpdate: !1, onChange: bo },
            linkCurvature: { default: 0, triggerUpdate: !1, onChange: bo },
            linkCanvasObject: { triggerUpdate: !1, onChange: bo },
            linkCanvasObjectMode: {
              default: function () {
                return 'replace'
              },
              triggerUpdate: !1,
              onChange: bo,
            },
            linkDirectionalArrowLength: { default: 0, triggerUpdate: !1, onChange: bo },
            linkDirectionalArrowColor: { triggerUpdate: !1, onChange: bo },
            linkDirectionalArrowRelPos: { default: 0.5, triggerUpdate: !1, onChange: bo },
            linkDirectionalParticles: { default: 0 },
            linkDirectionalParticleSpeed: { default: 0.01, triggerUpdate: !1 },
            linkDirectionalParticleWidth: { default: 4, triggerUpdate: !1 },
            linkDirectionalParticleColor: { triggerUpdate: !1 },
            globalScale: { default: 1, triggerUpdate: !1 },
            d3AlphaMin: { default: 0, triggerUpdate: !1 },
            d3AlphaDecay: {
              default: 0.0228,
              triggerUpdate: !1,
              onChange: function (e, t) {
                t.forceLayout.alphaDecay(e)
              },
            },
            d3AlphaTarget: {
              default: 0,
              triggerUpdate: !1,
              onChange: function (e, t) {
                t.forceLayout.alphaTarget(e)
              },
            },
            d3VelocityDecay: {
              default: 0.4,
              triggerUpdate: !1,
              onChange: function (e, t) {
                t.forceLayout.velocityDecay(e)
              },
            },
            warmupTicks: { default: 0, triggerUpdate: !1 },
            cooldownTicks: { default: 1 / 0, triggerUpdate: !1 },
            cooldownTime: { default: 15e3, triggerUpdate: !1 },
            onUpdate: { default: function () {}, triggerUpdate: !1 },
            onFinishUpdate: { default: function () {}, triggerUpdate: !1 },
            onEngineTick: { default: function () {}, triggerUpdate: !1 },
            onEngineStop: { default: function () {}, triggerUpdate: !1 },
            onNeedsRedraw: { triggerUpdate: !1 },
            isShadow: { default: !1, triggerUpdate: !1 },
          },
          methods: {
            d3Force: function (e, t, n) {
              return void 0 === n ? e.forceLayout.force(t) : (e.forceLayout.force(t, n), this)
            },
            d3ReheatSimulation: function (e) {
              return e.forceLayout.alpha(1), this.resetCountdown(), this
            },
            resetCountdown: function (e) {
              return (e.cntTicks = 0), (e.startTickTime = new Date()), (e.engineRunning = !0), this
            },
            isEngineRunning: function (e) {
              return !!e.engineRunning
            },
            tickFrame: function (e) {
              return (
                !e.isShadow &&
                  e.engineRunning &&
                  (++e.cntTicks > e.cooldownTicks ||
                  new Date() - e.startTickTime > e.cooldownTime ||
                  (e.d3AlphaMin > 0 && e.forceLayout.alpha() < e.d3AlphaMin)
                    ? ((e.engineRunning = !1), e.onEngineStop())
                    : (e.forceLayout.tick(), e.onEngineTick())),
                (function () {
                  var t = (0, w.default)(e.linkVisibility),
                    n = (0, w.default)(e.linkColor),
                    r = (0, w.default)(e.linkWidth),
                    i = (0, w.default)(e.linkLineDash),
                    o = (0, w.default)(e.linkCurvature),
                    a = (0, w.default)(e.linkCanvasObjectMode),
                    s = e.ctx,
                    u = 2 * e.isShadow,
                    l = e.graphData.links.filter(t)
                  l.forEach(function (e) {
                    var t = o(e)
                    if (!t) return void (e.__controlPoints = null)
                    var n = e.source,
                      r = e.target
                    if (!n || !r || !n.hasOwnProperty('x') || !r.hasOwnProperty('x')) return
                    var i = Math.sqrt(Math.pow(r.x - n.x, 2) + Math.pow(r.y - n.y, 2))
                    if (i > 0) {
                      var a = Math.atan2(r.y - n.y, r.x - n.x),
                        s = i * t,
                        u = {
                          x: (n.x + r.x) / 2 + s * Math.cos(a - Math.PI / 2),
                          y: (n.y + r.y) / 2 + s * Math.sin(a - Math.PI / 2),
                        }
                      e.__controlPoints = [u.x, u.y]
                    } else {
                      var l = 70 * t
                      e.__controlPoints = [r.x, r.y - l, r.x + l, r.y]
                    }
                  })
                  var c = [],
                    d = [],
                    f = l
                  if (e.linkCanvasObject) {
                    var h = [],
                      p = []
                    l.forEach(function (e) {
                      return ({ before: c, after: d, replace: h }[a(e)] || p).push(e)
                    }),
                      (f = [].concat(po(c), d, p)),
                      (c = c.concat(h))
                  }
                  s.save(),
                    c.forEach(function (t) {
                      return e.linkCanvasObject(t, s, e.globalScale)
                    }),
                    s.restore()
                  var v = (0, no.Z)(f, [n, r, i])
                  s.save(),
                    Object.entries(v).forEach(function (t) {
                      var n = ho(t, 2),
                        r = n[0],
                        o = n[1],
                        a = r && 'undefined' !== r ? r : 'rgba(0,0,0,0.15)'
                      Object.entries(o).forEach(function (t) {
                        var n = ho(t, 2),
                          r = n[0],
                          o = n[1],
                          l = (r || 1) / e.globalScale + u
                        Object.entries(o).forEach(function (e) {
                          var t = ho(e, 2)
                          t[0]
                          var n = t[1],
                            r = i(n[0])
                          s.beginPath(),
                            n.forEach(function (e) {
                              var t = e.source,
                                n = e.target
                              if (t && n && t.hasOwnProperty('x') && n.hasOwnProperty('x')) {
                                s.moveTo(t.x, t.y)
                                var r = e.__controlPoints
                                r
                                  ? s[2 === r.length ? 'quadraticCurveTo' : 'bezierCurveTo'].apply(
                                      s,
                                      po(r).concat([n.x, n.y]),
                                    )
                                  : s.lineTo(n.x, n.y)
                              }
                            }),
                            (s.strokeStyle = a),
                            (s.lineWidth = l),
                            s.setLineDash(r || []),
                            s.stroke()
                        })
                      })
                    }),
                    s.restore(),
                    s.save(),
                    d.forEach(function (t) {
                      return e.linkCanvasObject(t, s, e.globalScale)
                    }),
                    s.restore()
                })(),
                !e.isShadow &&
                  (function () {
                    var t = (0, w.default)(e.linkDirectionalArrowLength),
                      n = (0, w.default)(e.linkDirectionalArrowRelPos),
                      r = (0, w.default)(e.linkVisibility),
                      i = (0, w.default)(e.linkDirectionalArrowColor || e.linkColor),
                      o = (0, w.default)(e.nodeVal),
                      a = e.ctx
                    a.save(),
                      e.graphData.links.filter(r).forEach(function (r) {
                        var s = t(r)
                        if (s && !(s < 0)) {
                          var u = r.source,
                            l = r.target
                          if (u && l && u.hasOwnProperty('x') && l.hasOwnProperty('x')) {
                            var c = Math.sqrt(Math.max(0, o(u) || 1)) * e.nodeRelSize,
                              d = Math.sqrt(Math.max(0, o(l) || 1)) * e.nodeRelSize,
                              f = Math.min(1, Math.max(0, n(r))),
                              h = i(r) || 'rgba(0,0,0,0.28)',
                              p = s / 1.6 / 2,
                              v =
                                r.__controlPoints &&
                                fo(to, [u.x, u.y].concat(po(r.__controlPoints), [l.x, l.y])),
                              m = v
                                ? function (e) {
                                    return v.get(e)
                                  }
                                : function (e) {
                                    return {
                                      x: u.x + (l.x - u.x) * e || 0,
                                      y: u.y + (l.y - u.y) * e || 0,
                                    }
                                  },
                              g = v
                                ? v.length()
                                : Math.sqrt(Math.pow(l.x - u.x, 2) + Math.pow(l.y - u.y, 2)),
                              y = c + s + (g - c - d - s) * f,
                              b = m(y / g),
                              w = m((y - s) / g),
                              x = m((y - 0.8 * s) / g),
                              E = Math.atan2(b.y - w.y, b.x - w.x) - Math.PI / 2
                            a.beginPath(),
                              a.moveTo(b.x, b.y),
                              a.lineTo(w.x + p * Math.cos(E), w.y + p * Math.sin(E)),
                              a.lineTo(x.x, x.y),
                              a.lineTo(w.x - p * Math.cos(E), w.y - p * Math.sin(E)),
                              (a.fillStyle = h),
                              a.fill()
                          }
                        }
                      }),
                      a.restore()
                  })(),
                !e.isShadow &&
                  (function () {
                    var t = (0, w.default)(e.linkDirectionalParticles),
                      n = (0, w.default)(e.linkDirectionalParticleSpeed),
                      r = (0, w.default)(e.linkDirectionalParticleWidth),
                      i = (0, w.default)(e.linkVisibility),
                      o = (0, w.default)(e.linkDirectionalParticleColor || e.linkColor),
                      a = e.ctx
                    a.save(),
                      e.graphData.links.filter(i).forEach(function (i) {
                        var s = t(i)
                        if (i.hasOwnProperty('__photons') && i.__photons.length) {
                          var u = i.source,
                            l = i.target
                          if (u && l && u.hasOwnProperty('x') && l.hasOwnProperty('x')) {
                            var c = n(i),
                              d = i.__photons || [],
                              f = Math.max(0, r(i) / 2) / Math.sqrt(e.globalScale),
                              h = o(i) || 'rgba(0,0,0,0.28)'
                            a.fillStyle = h
                            var p = i.__controlPoints
                                ? fo(to, [u.x, u.y].concat(po(i.__controlPoints), [l.x, l.y]))
                                : null,
                              v = 0,
                              m = !1
                            d.forEach(function (e) {
                              var t = !!e.__singleHop
                              if (
                                (e.hasOwnProperty('__progressRatio') ||
                                  (e.__progressRatio = t ? 0 : v / s),
                                !t && v++,
                                (e.__progressRatio += c),
                                e.__progressRatio >= 1)
                              ) {
                                if (t) return void (m = !0)
                                e.__progressRatio = e.__progressRatio % 1
                              }
                              var n = e.__progressRatio,
                                r = p
                                  ? p.get(n)
                                  : { x: u.x + (l.x - u.x) * n || 0, y: u.y + (l.y - u.y) * n || 0 }
                              a.beginPath(), a.arc(r.x, r.y, f, 0, 2 * Math.PI, !1), a.fill()
                            }),
                              m &&
                                (i.__photons = i.__photons.filter(function (e) {
                                  return !e.__singleHop || e.__progressRatio <= 1
                                }))
                          }
                        }
                      }),
                      a.restore()
                  })(),
                (function () {
                  var t = (0, w.default)(e.nodeVisibility),
                    n = (0, w.default)(e.nodeVal),
                    r = (0, w.default)(e.nodeColor),
                    i = (0, w.default)(e.nodeCanvasObjectMode),
                    o = e.ctx,
                    a = e.isShadow / e.globalScale,
                    s = e.graphData.nodes.filter(t)
                  o.save(),
                    s.forEach(function (t) {
                      var s = i(t)
                      if (
                        !e.nodeCanvasObject ||
                        ('before' !== s && 'replace' !== s) ||
                        (e.nodeCanvasObject(t, o, e.globalScale), 'replace' !== s)
                      ) {
                        var u = Math.sqrt(Math.max(0, n(t) || 1)) * e.nodeRelSize + a
                        o.beginPath(),
                          o.arc(t.x, t.y, u, 0, 2 * Math.PI, !1),
                          (o.fillStyle = r(t) || 'rgba(31, 120, 180, 0.92)'),
                          o.fill(),
                          e.nodeCanvasObject &&
                            'after' === s &&
                            e.nodeCanvasObject(t, e.ctx, e.globalScale)
                      } else o.restore()
                    }),
                    o.restore()
                })(),
                this
              )
            },
            emitParticle: function (e, t) {
              return (
                t && (!t.__photons && (t.__photons = []), t.__photons.push({ __singleHop: !0 })),
                this
              )
            },
          },
          stateInit: function () {
            return {
              forceLayout: (0, Oi.Z)()
                .force('link', (0, Ci.Z)())
                .force('charge', (0, Si.Z)())
                .force('center', (0, Ai.Z)())
                .force('dagRadial', null)
                .stop(),
              engineRunning: !1,
            }
          },
          init: function (e, t) {
            t.ctx = e
          },
          update: function (e) {
            if (
              ((e.engineRunning = !1),
              e.onUpdate(),
              null !== e.nodeAutoColorBy &&
                yo(e.graphData.nodes, (0, w.default)(e.nodeAutoColorBy), e.nodeColor),
              null !== e.linkAutoColorBy &&
                yo(e.graphData.links, (0, w.default)(e.linkAutoColorBy), e.linkColor),
              e.graphData.links.forEach(function (t) {
                ;(t.source = t[e.linkSource]), (t.target = t[e.linkTarget])
              }),
              !e.isShadow)
            ) {
              var t = (0, w.default)(e.linkDirectionalParticles)
              e.graphData.links.forEach(function (e) {
                var n = Math.round(Math.abs(t(e)))
                n
                  ? (e.__photons = po(Array(n)).map(function () {
                      return {}
                    }))
                  : delete e.__photons
              })
            }
            e.forceLayout.stop().alpha(1).nodes(e.graphData.nodes)
            var n = e.forceLayout.force('link')
            n &&
              n
                .id(function (t) {
                  return t[e.nodeId]
                })
                .links(e.graphData.links)
            var r =
                e.dagMode &&
                (function (e, t) {
                  var n = e.nodes,
                    r = e.links,
                    i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
                    o = i.nodeFilter,
                    a =
                      void 0 === o
                        ? function () {
                            return !0
                          }
                        : o,
                    s = i.onLoopError,
                    u =
                      void 0 === s
                        ? function (e) {
                            throw 'Invalid DAG structure! Found cycle in node path: '.concat(
                              e.join(' -> '),
                              '.',
                            )
                          }
                        : s,
                    l = {}
                  n.forEach(function (e) {
                    return (l[t(e)] = { data: e, out: [], depth: -1, skip: !a(e) })
                  }),
                    r.forEach(function (e) {
                      var n = e.source,
                        r = e.target,
                        i = u(n),
                        o = u(r)
                      if (!l.hasOwnProperty(i)) throw 'Missing source node with id: '.concat(i)
                      if (!l.hasOwnProperty(o)) throw 'Missing target node with id: '.concat(o)
                      var a = l[i],
                        s = l[o]
                      function u(e) {
                        return 'object' === so(e) ? t(e) : e
                      }
                      a.out.push(s)
                    })
                  var c = []
                  return (
                    d(Object.values(l)),
                    Object.assign.apply(
                      Object,
                      [{}].concat(
                        po(
                          Object.entries(l)
                            .filter(function (e) {
                              return !ho(e, 2)[1].skip
                            })
                            .map(function (e) {
                              var t = ho(e, 2)
                              return uo({}, t[0], t[1].depth)
                            }),
                        ),
                      ),
                    )
                  )
                  function d(e) {
                    for (
                      var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [],
                        r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0,
                        i = 0,
                        o = e.length;
                      i < o;
                      i++
                    ) {
                      var a = e[i]
                      if (-1 !== n.indexOf(a))
                        if (
                          'continue' ===
                          (function () {
                            var e = [].concat(po(n.slice(n.indexOf(a))), [a]).map(function (e) {
                              return t(e.data)
                            })
                            return (
                              c.some(function (t) {
                                return (
                                  t.length === e.length &&
                                  t.every(function (t, n) {
                                    return t === e[n]
                                  })
                                )
                              }) || (c.push(e), u(e)),
                              'continue'
                            )
                          })()
                        )
                          continue
                      r > a.depth &&
                        ((a.depth = r), d(a.out, [].concat(po(n), [a]), r + (a.skip ? 0 : 1)))
                    }
                  }
                })(
                  e.graphData,
                  function (t) {
                    return t[e.nodeId]
                  },
                  { nodeFilter: e.dagNodeFilter, onLoopError: e.onDagError || void 0 },
                ),
              i = Math.max.apply(Math, po(Object.values(r || []))),
              o =
                e.dagLevelDistance ||
                (e.graphData.nodes.length / (i || 1)) *
                  2 *
                  (-1 !== ['radialin', 'radialout'].indexOf(e.dagMode) ? 0.7 : 1)
            if (e.dagMode) {
              var a = function (t, n) {
                  return function (a) {
                    return t ? (r[a[e.nodeId]] - i / 2) * o * (n ? -1 : 1) : void 0
                  }
                },
                s = a(-1 !== ['lr', 'rl'].indexOf(e.dagMode), 'rl' === e.dagMode),
                u = a(-1 !== ['td', 'bu'].indexOf(e.dagMode), 'bu' === e.dagMode)
              e.graphData.nodes.filter(e.dagNodeFilter).forEach(function (e) {
                ;(e.fx = s(e)), (e.fy = u(e))
              })
            }
            e.forceLayout.force(
              'dagRadial',
              -1 !== ['radialin', 'radialout'].indexOf(e.dagMode)
                ? (0, Pi.Z)(function (t) {
                    var n = r[t[e.nodeId]] || -1
                    return ('radialin' === e.dagMode ? i - n : n) * o
                  }).strength(function (t) {
                    return e.dagNodeFilter(t) ? 1 : 0
                  })
                : null,
            )
            for (
              var l = 0;
              l < e.warmupTicks && !(e.d3AlphaMin > 0 && e.forceLayout.alpha() < e.d3AlphaMin);
              l++
            )
              e.forceLayout.tick()
            this.resetCountdown(), e.onFinishUpdate()
          },
        })
      function xo(e, t) {
        var n = e instanceof Array ? e : [e],
          r = new t()
        return {
          linkProp: function (e) {
            return {
              default: r[e](),
              onChange: function (t, r) {
                n.forEach(function (n) {
                  return r[n][e](t)
                })
              },
              triggerUpdate: !1,
            }
          },
          linkMethod: function (e) {
            return function (t) {
              for (var r = arguments.length, i = new Array(r > 1 ? r - 1 : 0), o = 1; o < r; o++)
                i[o - 1] = arguments[o]
              var a = []
              return (
                n.forEach(function (n) {
                  var r = t[n],
                    o = r[e].apply(r, i)
                  o !== r && a.push(o)
                }),
                a.length ? a[0] : this
              )
            }
          },
        }
      }
      var Eo = xo('forceGraph', wo),
        ko = xo(['forceGraph', 'shadowGraph'], wo),
        _o = Object.assign.apply(
          Object,
          po(
            [
              'nodeColor',
              'nodeAutoColorBy',
              'nodeCanvasObject',
              'nodeCanvasObjectMode',
              'linkColor',
              'linkAutoColorBy',
              'linkLineDash',
              'linkWidth',
              'linkCanvasObject',
              'linkCanvasObjectMode',
              'linkDirectionalArrowLength',
              'linkDirectionalArrowColor',
              'linkDirectionalArrowRelPos',
              'linkDirectionalParticles',
              'linkDirectionalParticleSpeed',
              'linkDirectionalParticleWidth',
              'linkDirectionalParticleColor',
              'dagMode',
              'dagLevelDistance',
              'dagNodeFilter',
              'onDagError',
              'd3AlphaMin',
              'd3AlphaDecay',
              'd3VelocityDecay',
              'warmupTicks',
              'cooldownTicks',
              'cooldownTime',
              'onEngineTick',
              'onEngineStop',
            ].map(function (e) {
              return uo({}, e, Eo.linkProp(e))
            }),
          ).concat(
            po(
              [
                'nodeRelSize',
                'nodeId',
                'nodeVal',
                'nodeVisibility',
                'linkSource',
                'linkTarget',
                'linkVisibility',
                'linkCurvature',
              ].map(function (e) {
                return uo({}, e, ko.linkProp(e))
              }),
            ),
          ),
        ),
        To = Object.assign.apply(
          Object,
          po(
            ['d3Force', 'd3ReheatSimulation', 'emitParticle'].map(function (e) {
              return uo({}, e, Eo.linkMethod(e))
            }),
          ),
        )
      function Oo(e) {
        if (e.canvas) {
          var t = e.canvas.width,
            n = e.canvas.height
          300 === t && 150 === n && (t = n = 0)
          var r = window.devicePixelRatio
          ;(t /= r),
            (n /= r),
            [e.canvas, e.shadowCanvas].forEach(function (i) {
              ;(i.style.width = ''.concat(e.width, 'px')),
                (i.style.height = ''.concat(e.height, 'px')),
                (i.width = e.width * r),
                (i.height = e.height * r),
                t || n || i.getContext('2d').scale(r, r)
            })
          var i = Yr(e.canvas).k
          e.zoom.translateBy(e.zoom.__baseElem, (e.width - t) / 2 / i, (e.height - n) / 2 / i),
            (e.needsRedraw = !0)
        }
      }
      function Co(e) {
        var t = window.devicePixelRatio
        e.setTransform(t, 0, 0, t, 0, 0)
      }
      function So(e, t, n) {
        e.save(), Co(e), e.clearRect(0, 0, t, n), e.restore()
      }
      var Ao = (0, b.Z)({
          props: ao(
            {
              width: {
                default: window.innerWidth,
                onChange: function (e, t) {
                  return Oo(t)
                },
                triggerUpdate: !1,
              },
              height: {
                default: window.innerHeight,
                onChange: function (e, t) {
                  return Oo(t)
                },
                triggerUpdate: !1,
              },
              graphData: {
                default: { nodes: [], links: [] },
                onChange: function (e, t) {
                  ;[
                    { type: 'Node', objs: e.nodes },
                    { type: 'Link', objs: e.links },
                  ].forEach(function (e) {
                    var n = e.type
                    e.objs
                      .filter(function (e) {
                        if (!e.hasOwnProperty('__indexColor')) return !0
                        var n = t.colorTracker.lookup(e.__indexColor)
                        return !n || !n.hasOwnProperty('d') || n.d !== e
                      })
                      .forEach(function (e) {
                        e.__indexColor = t.colorTracker.register({ type: n, d: e })
                      })
                  }),
                    t.forceGraph.graphData(e),
                    t.shadowGraph.graphData(e)
                },
                triggerUpdate: !1,
              },
              backgroundColor: {
                onChange: function (e, t) {
                  t.canvas && e && (t.canvas.style.background = e)
                },
                triggerUpdate: !1,
              },
              nodeLabel: { default: 'name', triggerUpdate: !1 },
              nodePointerAreaPaint: {
                onChange: function (e, t) {
                  t.shadowGraph.nodeCanvasObject(
                    e
                      ? function (t, n, r) {
                          return e(t, t.__indexColor, n, r)
                        }
                      : null,
                  )
                },
                triggerUpdate: !1,
              },
              linkPointerAreaPaint: {
                onChange: function (e, t) {
                  t.shadowGraph.linkCanvasObject(
                    e
                      ? function (t, n, r) {
                          return e(t, t.__indexColor, n, r)
                        }
                      : null,
                  )
                },
                triggerUpdate: !1,
              },
              linkLabel: { default: 'name', triggerUpdate: !1 },
              linkHoverPrecision: { default: 4, triggerUpdate: !1 },
              minZoom: {
                default: 0.01,
                onChange: function (e, t) {
                  t.zoom.scaleExtent([e, t.zoom.scaleExtent()[1]])
                },
                triggerUpdate: !1,
              },
              maxZoom: {
                default: 1e3,
                onChange: function (e, t) {
                  t.zoom.scaleExtent([t.zoom.scaleExtent()[0], e])
                },
                triggerUpdate: !1,
              },
              enableNodeDrag: { default: !0, triggerUpdate: !1 },
              enableZoomInteraction: { default: !0, triggerUpdate: !1 },
              enablePanInteraction: { default: !0, triggerUpdate: !1 },
              enableZoomPanInteraction: { default: !0, triggerUpdate: !1 },
              enablePointerInteraction: {
                default: !0,
                onChange: function (e, t) {
                  t.hoverObj = null
                },
                triggerUpdate: !1,
              },
              autoPauseRedraw: { default: !0, triggerUpdate: !1 },
              onNodeDrag: { default: function () {}, triggerUpdate: !1 },
              onNodeDragEnd: { default: function () {}, triggerUpdate: !1 },
              onNodeClick: { triggerUpdate: !1 },
              onNodeRightClick: { triggerUpdate: !1 },
              onNodeHover: { triggerUpdate: !1 },
              onLinkClick: { triggerUpdate: !1 },
              onLinkRightClick: { triggerUpdate: !1 },
              onLinkHover: { triggerUpdate: !1 },
              onBackgroundClick: { triggerUpdate: !1 },
              onBackgroundRightClick: { triggerUpdate: !1 },
              onZoom: { default: function () {}, triggerUpdate: !1 },
              onZoomEnd: { default: function () {}, triggerUpdate: !1 },
              onRenderFramePre: { triggerUpdate: !1 },
              onRenderFramePost: { triggerUpdate: !1 },
            },
            _o,
          ),
          aliases: { stopAnimation: 'pauseAnimation' },
          methods: ao(
            {
              graph2ScreenCoords: function (e, t, n) {
                var r = Yr(e.canvas)
                return { x: t * r.k + r.x, y: n * r.k + r.y }
              },
              screen2GraphCoords: function (e, t, n) {
                var r = Yr(e.canvas)
                return { x: (t - r.x) / r.k, y: (n - r.y) / r.k }
              },
              centerAt: function (e, t, n, r) {
                if (!e.canvas) return null
                if (void 0 !== t || void 0 !== n) {
                  var i = Object.assign(
                    {},
                    void 0 !== t ? { x: t } : {},
                    void 0 !== n ? { y: n } : {},
                  )
                  return (
                    r
                      ? new We.ZP.Tween(o())
                          .to(i, r)
                          .easing(We.ZP.Easing.Quadratic.Out)
                          .onUpdate(a)
                          .start()
                      : a(i),
                    this
                  )
                }
                return o()
                function o() {
                  var t = Yr(e.canvas)
                  return { x: (e.width / 2 - t.x) / t.k, y: (e.height / 2 - t.y) / t.k }
                }
                function a(t) {
                  var n = t.x,
                    r = t.y
                  e.zoom.translateTo(
                    e.zoom.__baseElem,
                    void 0 === n ? o().x : n,
                    void 0 === r ? o().y : r,
                  ),
                    (e.needsRedraw = !0)
                }
              },
              zoom: function (e, t, n) {
                return e.canvas
                  ? void 0 !== t
                    ? (n
                        ? new We.ZP.Tween({ k: r() })
                            .to({ k: t }, n)
                            .easing(We.ZP.Easing.Quadratic.Out)
                            .onUpdate(function (e) {
                              return i(e.k)
                            })
                            .start()
                        : i(t),
                      this)
                    : r()
                  : null
                function r() {
                  return Yr(e.canvas).k
                }
                function i(t) {
                  e.zoom.scaleTo(e.zoom.__baseElem, t), (e.needsRedraw = !0)
                }
              },
              zoomToFit: function (e) {
                for (
                  var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0,
                    n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 10,
                    r = arguments.length,
                    i = new Array(r > 3 ? r - 3 : 0),
                    o = 3;
                  o < r;
                  o++
                )
                  i[o - 3] = arguments[o]
                var a = this.getGraphBbox.apply(this, i)
                if (a) {
                  var s = { x: (a.x[0] + a.x[1]) / 2, y: (a.y[0] + a.y[1]) / 2 },
                    u = Math.max(
                      1e-12,
                      Math.min(
                        1e12,
                        (e.width - 2 * n) / (a.x[1] - a.x[0]),
                        (e.height - 2 * n) / (a.y[1] - a.y[0]),
                      ),
                    )
                  this.centerAt(s.x, s.y, t), this.zoom(u, t)
                }
                return this
              },
              getGraphBbox: function (e) {
                var t =
                    arguments.length > 1 && void 0 !== arguments[1]
                      ? arguments[1]
                      : function () {
                          return !0
                        },
                  n = (0, w.default)(e.nodeVal),
                  r = function (t) {
                    return Math.sqrt(Math.max(0, n(t) || 1)) * e.nodeRelSize
                  },
                  i = e.graphData.nodes.filter(t).map(function (e) {
                    return { x: e.x, y: e.y, r: r(e) }
                  })
                return i.length
                  ? {
                      x: [
                        (0, hi.Z)(i, function (e) {
                          return e.x - e.r
                        }),
                        (0, pi.Z)(i, function (e) {
                          return e.x + e.r
                        }),
                      ],
                      y: [
                        (0, hi.Z)(i, function (e) {
                          return e.y - e.r
                        }),
                        (0, pi.Z)(i, function (e) {
                          return e.y + e.r
                        }),
                      ],
                    }
                  : null
              },
              pauseAnimation: function (e) {
                return (
                  e.animationFrameRequestId &&
                    (cancelAnimationFrame(e.animationFrameRequestId),
                    (e.animationFrameRequestId = null)),
                  this
                )
              },
              resumeAnimation: function (e) {
                return e.animationFrameRequestId || this._animationCycle(), this
              },
              _destructor: function () {
                this.pauseAnimation(), this.graphData({ nodes: [], links: [] })
              },
            },
            To,
          ),
          stateInit: function () {
            return {
              lastSetZoom: 1,
              zoom: ai(),
              forceGraph: new wo(),
              shadowGraph: new wo()
                .cooldownTicks(0)
                .nodeColor('__indexColor')
                .linkColor('__indexColor')
                .isShadow(!0),
              colorTracker: new Ti(),
            }
          },
          init: function (e, t) {
            e.innerHTML = ''
            var n = document.createElement('div')
            n.classList.add('force-graph-container'),
              (n.style.position = 'relative'),
              e.appendChild(n),
              (t.canvas = document.createElement('canvas')),
              t.backgroundColor && (t.canvas.style.background = t.backgroundColor),
              n.appendChild(t.canvas),
              (t.shadowCanvas = document.createElement('canvas'))
            var r = t.canvas.getContext('2d'),
              i = t.shadowCanvas.getContext('2d'),
              o = { x: -1e12, y: -1e12 },
              a = function () {
                var e = null,
                  n = window.devicePixelRatio,
                  r = o.x > 0 && o.y > 0 ? i.getImageData(o.x * n, o.y * n, 1, 1) : null
                return r && (e = t.colorTracker.lookup(r.data)), e
              }
            zn(t.canvas).call(
              (function () {
                var e,
                  t,
                  n,
                  r,
                  i = li,
                  o = ci,
                  a = di,
                  s = fi,
                  u = {},
                  l = (0, Hn.Z)('start', 'drag', 'end'),
                  c = 0,
                  d = 0
                function f(e) {
                  e.on('mousedown.drag', h)
                    .filter(s)
                    .on('touchstart.drag', m)
                    .on('touchmove.drag', g, Bn)
                    .on('touchend.drag touchcancel.drag', y)
                    .style('touch-action', 'none')
                    .style('-webkit-tap-highlight-color', 'rgba(0,0,0,0)')
                }
                function h(a, s) {
                  if (!r && i.call(this, a, s)) {
                    var u = b(this, o.call(this, a, s), a, s, 'mouse')
                    u &&
                      (zn(a.view).on('mousemove.drag', p, Fn).on('mouseup.drag', v, Fn),
                      Gn(a.view),
                      Vn(a),
                      (n = !1),
                      (e = a.clientX),
                      (t = a.clientY),
                      u('start', a))
                  }
                }
                function p(r) {
                  if ((Un(r), !n)) {
                    var i = r.clientX - e,
                      o = r.clientY - t
                    n = i * i + o * o > d
                  }
                  u.mouse('drag', r)
                }
                function v(e) {
                  zn(e.view).on('mousemove.drag mouseup.drag', null),
                    qn(e.view, n),
                    Un(e),
                    u.mouse('end', e)
                }
                function m(e, t) {
                  if (i.call(this, e, t)) {
                    var n,
                      r,
                      a = e.changedTouches,
                      s = o.call(this, e, t),
                      u = a.length
                    for (n = 0; n < u; ++n)
                      (r = b(this, s, e, t, a[n].identifier, a[n])) && (Vn(e), r('start', e, a[n]))
                  }
                }
                function g(e) {
                  var t,
                    n,
                    r = e.changedTouches,
                    i = r.length
                  for (t = 0; t < i; ++t) (n = u[r[t].identifier]) && (Un(e), n('drag', e, r[t]))
                }
                function y(e) {
                  var t,
                    n,
                    i = e.changedTouches,
                    o = i.length
                  for (
                    r && clearTimeout(r),
                      r = setTimeout(function () {
                        r = null
                      }, 500),
                      t = 0;
                    t < o;
                    ++t
                  )
                    (n = u[i[t].identifier]) && (Vn(e), n('end', e, i[t]))
                }
                function b(e, t, n, r, i, o) {
                  var s,
                    d,
                    h,
                    p = l.copy(),
                    v = Zn(o || n, t)
                  if (
                    null !=
                    (h = a.call(
                      e,
                      new ui('beforestart', {
                        sourceEvent: n,
                        target: f,
                        identifier: i,
                        active: c,
                        x: v[0],
                        y: v[1],
                        dx: 0,
                        dy: 0,
                        dispatch: p,
                      }),
                      r,
                    ))
                  )
                    return (
                      (s = h.x - v[0] || 0),
                      (d = h.y - v[1] || 0),
                      function n(o, a, l) {
                        var m,
                          g = v
                        switch (o) {
                          case 'start':
                            ;(u[i] = n), (m = c++)
                            break
                          case 'end':
                            delete u[i], --c
                          case 'drag':
                            ;(v = Zn(l || a, t)), (m = c)
                        }
                        p.call(
                          o,
                          e,
                          new ui(o, {
                            sourceEvent: a,
                            subject: h,
                            target: f,
                            identifier: i,
                            active: m,
                            x: v[0] + s,
                            y: v[1] + d,
                            dx: v[0] - g[0],
                            dy: v[1] - g[1],
                            dispatch: p,
                          }),
                          r,
                        )
                      }
                    )
                }
                return (
                  (f.filter = function (e) {
                    return arguments.length ? ((i = 'function' === typeof e ? e : si(!!e)), f) : i
                  }),
                  (f.container = function (e) {
                    return arguments.length ? ((o = 'function' === typeof e ? e : si(e)), f) : o
                  }),
                  (f.subject = function (e) {
                    return arguments.length ? ((a = 'function' === typeof e ? e : si(e)), f) : a
                  }),
                  (f.touchable = function (e) {
                    return arguments.length ? ((s = 'function' === typeof e ? e : si(!!e)), f) : s
                  }),
                  (f.on = function () {
                    var e = l.on.apply(l, arguments)
                    return e === l ? f : e
                  }),
                  (f.clickDistance = function (e) {
                    return arguments.length ? ((d = (e = +e) * e), f) : Math.sqrt(d)
                  }),
                  f
                )
              })()
                .subject(function () {
                  if (!t.enableNodeDrag) return null
                  var e = a()
                  return e && 'Node' === e.type ? e.d : null
                })
                .on('start', function (e) {
                  var n = e.subject
                  ;(n.__initialDragPos = { x: n.x, y: n.y, fx: n.fx, fy: n.fy }),
                    e.active || ((n.fx = n.x), (n.fy = n.y)),
                    t.canvas.classList.add('grabbable')
                })
                .on('drag', function (e) {
                  var n = e.subject,
                    r = n.__initialDragPos,
                    i = e,
                    o = Yr(t.canvas).k,
                    a = { x: r.x + (i.x - r.x) / o - n.x, y: r.y + (i.y - r.y) / o - n.y }
                  ;['x', 'y'].forEach(function (e) {
                    return (n['f'.concat(e)] = n[e] = r[e] + (i[e] - r[e]) / o)
                  }),
                    t.forceGraph.d3AlphaTarget(0.3).resetCountdown(),
                    (t.isPointerDragging = !0),
                    (n.__dragged = !0),
                    t.onNodeDrag(n, a)
                })
                .on('end', function (e) {
                  var n = e.subject,
                    r = n.__initialDragPos,
                    i = { x: n.x - r.x, y: n.y - r.y }
                  void 0 === r.fx && (n.fx = void 0),
                    void 0 === r.fy && (n.fy = void 0),
                    delete n.__initialDragPos,
                    t.forceGraph.d3AlphaTarget(0).resetCountdown(),
                    t.canvas.classList.remove('grabbable'),
                    (t.isPointerDragging = !1),
                    n.__dragged && (delete n.__dragged, t.onNodeDragEnd(n, i))
                }),
            ),
              t.zoom((t.zoom.__baseElem = zn(t.canvas))),
              t.zoom.__baseElem.on('dblclick.zoom', null),
              t.zoom
                .filter(function (e) {
                  return (
                    !e.button &&
                    t.enableZoomPanInteraction &&
                    (t.enableZoomInteraction || 'wheel' !== e.type) &&
                    (t.enablePanInteraction || 'wheel' === e.type)
                  )
                })
                .on('zoom', function (e) {
                  var n = e.transform
                  ;[r, i].forEach(function (e) {
                    Co(e), e.translate(n.x, n.y), e.scale(n.k, n.k)
                  }),
                    t.onZoom(ao({}, n)),
                    (t.needsRedraw = !0)
                })
                .on('end', function (e) {
                  return t.onZoomEnd(ao({}, e.transform))
                }),
              Oo(t),
              t.forceGraph
                .onNeedsRedraw(function () {
                  return (t.needsRedraw = !0)
                })
                .onFinishUpdate(function () {
                  Yr(t.canvas).k === t.lastSetZoom &&
                    t.graphData.nodes.length &&
                    (t.zoom.scaleTo(
                      t.zoom.__baseElem,
                      (t.lastSetZoom = 4 / Math.cbrt(t.graphData.nodes.length)),
                    ),
                    (t.needsRedraw = !0))
                })
            var s = document.createElement('div')
            s.classList.add('graph-tooltip'),
              n.appendChild(s),
              ['pointermove', 'pointerdown'].forEach(function (e) {
                return n.addEventListener(
                  e,
                  function (r) {
                    'pointerdown' === e && ((t.isPointerPressed = !0), (t.pointerDownEvent = r)),
                      !t.isPointerDragging &&
                        'pointermove' === r.type &&
                        t.onBackgroundClick &&
                        (r.pressure > 0 || t.isPointerPressed) &&
                        ('touch' !== r.pointerType ||
                          void 0 === r.movementX ||
                          [r.movementX, r.movementY].some(function (e) {
                            return Math.abs(e) > 1
                          })) &&
                        (t.isPointerDragging = !0)
                    var i = (function (e) {
                      var t = e.getBoundingClientRect(),
                        n = window.pageXOffset || document.documentElement.scrollLeft,
                        r = window.pageYOffset || document.documentElement.scrollTop
                      return { top: t.top + r, left: t.left + n }
                    })(n)
                    ;(o.x = r.pageX - i.left),
                      (o.y = r.pageY - i.top),
                      (s.style.top = ''.concat(o.y, 'px')),
                      (s.style.left = ''.concat(o.x, 'px'))
                  },
                  { passive: !0 },
                )
              }),
              n.addEventListener(
                'pointerup',
                function (e) {
                  if (((t.isPointerPressed = !1), t.isPointerDragging)) t.isPointerDragging = !1
                  else {
                    var n = [e, t.pointerDownEvent]
                    requestAnimationFrame(function () {
                      if (0 === e.button)
                        if (t.hoverObj) {
                          var r = t['on'.concat(t.hoverObj.type, 'Click')]
                          r && r.apply(void 0, [t.hoverObj.d].concat(n))
                        } else t.onBackgroundClick && t.onBackgroundClick.apply(t, n)
                      if (2 === e.button)
                        if (t.hoverObj) {
                          var i = t['on'.concat(t.hoverObj.type, 'RightClick')]
                          i && i.apply(void 0, [t.hoverObj.d].concat(n))
                        } else t.onBackgroundRightClick && t.onBackgroundRightClick.apply(t, n)
                    })
                  }
                },
                { passive: !0 },
              ),
              n.addEventListener('contextmenu', function (e) {
                return (
                  !(t.onBackgroundRightClick || t.onNodeRightClick || t.onLinkRightClick) ||
                  (e.preventDefault(), !1)
                )
              }),
              t.forceGraph(r),
              t.shadowGraph(i)
            var u = mi()(function () {
              So(i, t.width, t.height),
                t.shadowGraph.linkWidth(function (e) {
                  return (0, w.default)(t.linkWidth)(e) + t.linkHoverPrecision
                })
              var e = Yr(t.canvas)
              t.shadowGraph.globalScale(e.k).tickFrame()
            }, 800)
            ;(this._animationCycle = function e() {
              var n =
                !t.autoPauseRedraw ||
                !!t.needsRedraw ||
                t.forceGraph.isEngineRunning() ||
                t.graphData.links.some(function (e) {
                  return e.__photons && e.__photons.length
                })
              if (((t.needsRedraw = !1), t.enablePointerInteraction)) {
                var i = t.isPointerDragging ? null : a()
                if (i !== t.hoverObj) {
                  var o = t.hoverObj,
                    l = o ? o.type : null,
                    c = i ? i.type : null
                  if (l && l !== c) {
                    var d = t['on'.concat(l, 'Hover')]
                    d && d(null, o.d)
                  }
                  if (c) {
                    var f = t['on'.concat(c, 'Hover')]
                    f && f(i.d, l === c ? o.d : null)
                  }
                  var h =
                    (i && (0, w.default)(t[''.concat(i.type.toLowerCase(), 'Label')])(i.d)) || ''
                  ;(s.style.visibility = h ? 'visible' : 'hidden'),
                    (s.innerHTML = h),
                    t.canvas.classList[
                      (i && t['on'.concat(c, 'Click')]) || (!i && t.onBackgroundClick)
                        ? 'add'
                        : 'remove'
                    ]('clickable'),
                    (t.hoverObj = i)
                }
                n && u()
              }
              if (n) {
                So(r, t.width, t.height)
                var p = Yr(t.canvas).k
                t.onRenderFramePre && t.onRenderFramePre(r, p),
                  t.forceGraph.globalScale(p).tickFrame(),
                  t.onRenderFramePost && t.onRenderFramePost(r, p)
              }
              We.ZP.update(), (t.animationFrameRequestId = requestAnimationFrame(e))
            })()
          },
          update: function (e) {},
        }),
        Po = {
          width: P().number,
          height: P().number,
          graphData: P().shape({
            nodes: P().arrayOf(P().object).isRequired,
            links: P().arrayOf(P().object).isRequired,
          }),
          backgroundColor: P().string,
          nodeRelSize: P().number,
          nodeId: P().string,
          nodeLabel: P().oneOfType([P().string, P().func]),
          nodeVal: P().oneOfType([P().number, P().string, P().func]),
          nodeVisibility: P().oneOfType([P().bool, P().string, P().func]),
          nodeColor: P().oneOfType([P().string, P().func]),
          nodeAutoColorBy: P().oneOfType([P().string, P().func]),
          onNodeHover: P().func,
          onNodeClick: P().func,
          linkSource: P().string,
          linkTarget: P().string,
          linkLabel: P().oneOfType([P().string, P().func]),
          linkVisibility: P().oneOfType([P().bool, P().string, P().func]),
          linkColor: P().oneOfType([P().string, P().func]),
          linkAutoColorBy: P().oneOfType([P().string, P().func]),
          linkWidth: P().oneOfType([P().number, P().string, P().func]),
          linkCurvature: P().oneOfType([P().number, P().string, P().func]),
          linkDirectionalArrowLength: P().oneOfType([P().number, P().string, P().func]),
          linkDirectionalArrowColor: P().oneOfType([P().string, P().func]),
          linkDirectionalArrowRelPos: P().oneOfType([P().number, P().string, P().func]),
          linkDirectionalParticles: P().oneOfType([P().number, P().string, P().func]),
          linkDirectionalParticleSpeed: P().oneOfType([P().number, P().string, P().func]),
          linkDirectionalParticleWidth: P().oneOfType([P().number, P().string, P().func]),
          linkDirectionalParticleColor: P().oneOfType([P().string, P().func]),
          onLinkHover: P().func,
          onLinkClick: P().func,
          dagMode: P().oneOf(['td', 'bu', 'lr', 'rl', 'zin', 'zout', 'radialin', 'radialout']),
          dagLevelDistance: P().number,
          dagNodeFilter: P().func,
          onDagError: P().func,
          d3AlphaMin: P().number,
          d3AlphaDecay: P().number,
          d3VelocityDecay: P().number,
          warmupTicks: P().number,
          cooldownTicks: P().number,
          cooldownTime: P().number,
          onEngineTick: P().func,
          onEngineStop: P().func,
          getGraphBbox: P().func,
        },
        Mo = {
          zoomToFit: P().func,
          onNodeRightClick: P().func,
          onNodeDrag: P().func,
          onNodeDragEnd: P().func,
          onLinkRightClick: P().func,
          linkHoverPrecision: P().number,
          onBackgroundClick: P().func,
          onBackgroundRightClick: P().func,
          enablePointerInteraction: P().bool,
          enableNodeDrag: P().bool,
        },
        Ro = {
          showNavInfo: P().bool,
          nodeOpacity: P().number,
          nodeResolution: P().number,
          nodeThreeObject: P().oneOfType([P().object, P().string, P().func]),
          nodeThreeObjectExtend: P().oneOfType([P().bool, P().string, P().func]),
          linkOpacity: P().number,
          linkResolution: P().number,
          linkCurveRotation: P().oneOfType([P().number, P().string, P().func]),
          linkMaterial: P().oneOfType([P().object, P().string, P().func]),
          linkThreeObject: P().oneOfType([P().object, P().string, P().func]),
          linkThreeObjectExtend: P().oneOfType([P().bool, P().string, P().func]),
          linkPositionUpdate: P().func,
          linkDirectionalArrowResolution: P().number,
          linkDirectionalParticleResolution: P().number,
          forceEngine: P().oneOf(['d3', 'ngraph']),
          ngraphPhysics: P().object,
          numDimensions: P().oneOf([1, 2, 3]),
        },
        jo = Object.assign({}, Po, Mo, {
          linkLineDash: P().oneOfType([P().arrayOf(P().number), P().string, P().func]),
          nodeCanvasObjectMode: P().oneOfType([P().string, P().func]),
          nodeCanvasObject: P().func,
          nodePointerAreaPaint: P().func,
          linkCanvasObjectMode: P().oneOfType([P().string, P().func]),
          linkCanvasObject: P().func,
          linkPointerAreaPaint: P().func,
          autoPauseRedraw: P().bool,
          minZoom: P().number,
          maxZoom: P().number,
          enableZoomInteraction: P().bool,
          enablePanInteraction: P().bool,
          onZoom: P().func,
          onZoomEnd: P().func,
          onRenderFramePre: P().func,
          onRenderFramePost: P().func,
        }),
        Do = Object.assign({}, Po, Mo, Ro, {
          enableNavigationControls: P().bool,
          controlType: P().oneOf(['trackball', 'orbit', 'fly']),
          rendererConfig: P().object,
          extraRenderers: P().arrayOf(P().shape({ render: P().func.isRequired })),
        }),
        Lo = Object.assign({}, Po, Ro, {
          nodeDesc: P().oneOfType([P().string, P().func]),
          linkDesc: P().oneOfType([P().string, P().func]),
        }),
        No = Object.assign({}, Po, Ro, {
          markerAttrs: P().object,
          yOffset: P().number,
          glScale: P().number,
        })
      const Io = y(S, {
        methodNames: ['getGraphBbox', 'emitParticle', 'd3Force', 'd3ReheatSimulation', 'refresh'],
      })
      ;(Io.displayName = 'ForceGraphVR'), (Io.propTypes = Lo)
      const zo = y(z, {
        methodNames: ['getGraphBbox', 'emitParticle', 'd3Force', 'd3ReheatSimulation', 'refresh'],
        initPropNames: ['markerAttrs'],
      })
      ;(zo.displayName = 'ForceGraphAR'), (zo.propTypes = No)
      const Ho = y(pt, {
        methodNames: [
          'emitParticle',
          'd3Force',
          'd3ReheatSimulation',
          'stopAnimation',
          'pauseAnimation',
          'resumeAnimation',
          'cameraPosition',
          'zoomToFit',
          'getGraphBbox',
          'screen2GraphCoords',
          'graph2ScreenCoords',
          'postProcessingComposer',
          'scene',
          'camera',
          'renderer',
          'controls',
          'refresh',
        ],
        initPropNames: ['controlType', 'rendererConfig', 'extraRenderers'],
      })
      ;(Ho.displayName = 'ForceGraph3D'), (Ho.propTypes = Do)
      const Bo = y(Ao, {
        methodNames: [
          'emitParticle',
          'd3Force',
          'd3ReheatSimulation',
          'stopAnimation',
          'pauseAnimation',
          'resumeAnimation',
          'centerAt',
          'zoom',
          'zoomToFit',
          'getGraphBbox',
          'screen2GraphCoords',
          'graph2ScreenCoords',
        ],
      })
      ;(Bo.displayName = 'ForceGraph2D'), (Bo.propTypes = jo)
    },
    2003: function (e, t) {
      'use strict'
      var n = function (e, t) {
        return (n =
          Object.setPrototypeOf ||
          ({ __proto__: [] } instanceof Array &&
            function (e, t) {
              e.__proto__ = t
            }) ||
          function (e, t) {
            for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n])
          })(e, t)
      }
      function r(e, t) {
        function r() {
          this.constructor = e
        }
        n(e, t),
          (e.prototype = null === t ? Object.create(t) : ((r.prototype = t.prototype), new r()))
      }
      function i(e, t) {
        var n = 'function' === typeof Symbol && e[Symbol.iterator]
        if (!n) return e
        var r,
          i,
          o = n.call(e),
          a = []
        try {
          for (; (void 0 === t || t-- > 0) && !(r = o.next()).done; ) a.push(r.value)
        } catch (s) {
          i = { error: s }
        } finally {
          try {
            r && !r.done && (n = o.return) && n.call(o)
          } finally {
            if (i) throw i.error
          }
        }
        return a
      }
      function o() {
        for (var e = [], t = 0; t < arguments.length; t++) e = e.concat(i(arguments[t]))
        return e
      }
      var a = function (e, t) {
          ;(this.target = t), (this.type = e)
        },
        s = (function (e) {
          function t(t, n) {
            var r = e.call(this, 'error', n) || this
            return (r.message = t.message), (r.error = t), r
          }
          return r(t, e), t
        })(a),
        u = (function (e) {
          function t(t, n, r) {
            void 0 === t && (t = 1e3), void 0 === n && (n = '')
            var i = e.call(this, 'close', r) || this
            return (i.wasClean = !0), (i.code = t), (i.reason = n), i
          }
          return r(t, e), t
        })(a),
        l = function () {
          if ('undefined' !== typeof WebSocket) return WebSocket
        },
        c = {
          maxReconnectionDelay: 1e4,
          minReconnectionDelay: 1e3 + 4e3 * Math.random(),
          minUptime: 5e3,
          reconnectionDelayGrowFactor: 1.3,
          connectionTimeout: 4e3,
          maxRetries: 1 / 0,
          maxEnqueuedMessages: 1 / 0,
          startClosed: !1,
          debug: !1,
        },
        d = (function () {
          function e(e, t, n) {
            var r = this
            void 0 === n && (n = {}),
              (this._listeners = { error: [], message: [], open: [], close: [] }),
              (this._retryCount = -1),
              (this._shouldReconnect = !0),
              (this._connectLock = !1),
              (this._binaryType = 'blob'),
              (this._closeCalled = !1),
              (this._messageQueue = []),
              (this.onclose = null),
              (this.onerror = null),
              (this.onmessage = null),
              (this.onopen = null),
              (this._handleOpen = function (e) {
                r._debug('open event')
                var t = r._options.minUptime,
                  n = void 0 === t ? c.minUptime : t
                clearTimeout(r._connectTimeout),
                  (r._uptimeTimeout = setTimeout(function () {
                    return r._acceptOpen()
                  }, n)),
                  (r._ws.binaryType = r._binaryType),
                  r._messageQueue.forEach(function (e) {
                    return r._ws.send(e)
                  }),
                  (r._messageQueue = []),
                  r.onopen && r.onopen(e),
                  r._listeners.open.forEach(function (t) {
                    return r._callEventListener(e, t)
                  })
              }),
              (this._handleMessage = function (e) {
                r._debug('message event'),
                  r.onmessage && r.onmessage(e),
                  r._listeners.message.forEach(function (t) {
                    return r._callEventListener(e, t)
                  })
              }),
              (this._handleError = function (e) {
                r._debug('error event', e.message),
                  r._disconnect(void 0, 'TIMEOUT' === e.message ? 'timeout' : void 0),
                  r.onerror && r.onerror(e),
                  r._debug('exec error listeners'),
                  r._listeners.error.forEach(function (t) {
                    return r._callEventListener(e, t)
                  }),
                  r._connect()
              }),
              (this._handleClose = function (e) {
                r._debug('close event'),
                  r._clearTimeouts(),
                  r._shouldReconnect && r._connect(),
                  r.onclose && r.onclose(e),
                  r._listeners.close.forEach(function (t) {
                    return r._callEventListener(e, t)
                  })
              }),
              (this._url = e),
              (this._protocols = t),
              (this._options = n),
              this._options.startClosed && (this._shouldReconnect = !1),
              this._connect()
          }
          return (
            Object.defineProperty(e, 'CONNECTING', {
              get: function () {
                return 0
              },
              enumerable: !0,
              configurable: !0,
            }),
            Object.defineProperty(e, 'OPEN', {
              get: function () {
                return 1
              },
              enumerable: !0,
              configurable: !0,
            }),
            Object.defineProperty(e, 'CLOSING', {
              get: function () {
                return 2
              },
              enumerable: !0,
              configurable: !0,
            }),
            Object.defineProperty(e, 'CLOSED', {
              get: function () {
                return 3
              },
              enumerable: !0,
              configurable: !0,
            }),
            Object.defineProperty(e.prototype, 'CONNECTING', {
              get: function () {
                return e.CONNECTING
              },
              enumerable: !0,
              configurable: !0,
            }),
            Object.defineProperty(e.prototype, 'OPEN', {
              get: function () {
                return e.OPEN
              },
              enumerable: !0,
              configurable: !0,
            }),
            Object.defineProperty(e.prototype, 'CLOSING', {
              get: function () {
                return e.CLOSING
              },
              enumerable: !0,
              configurable: !0,
            }),
            Object.defineProperty(e.prototype, 'CLOSED', {
              get: function () {
                return e.CLOSED
              },
              enumerable: !0,
              configurable: !0,
            }),
            Object.defineProperty(e.prototype, 'binaryType', {
              get: function () {
                return this._ws ? this._ws.binaryType : this._binaryType
              },
              set: function (e) {
                ;(this._binaryType = e), this._ws && (this._ws.binaryType = e)
              },
              enumerable: !0,
              configurable: !0,
            }),
            Object.defineProperty(e.prototype, 'retryCount', {
              get: function () {
                return Math.max(this._retryCount, 0)
              },
              enumerable: !0,
              configurable: !0,
            }),
            Object.defineProperty(e.prototype, 'bufferedAmount', {
              get: function () {
                return (
                  this._messageQueue.reduce(function (e, t) {
                    return (
                      'string' === typeof t
                        ? (e += t.length)
                        : t instanceof Blob
                        ? (e += t.size)
                        : (e += t.byteLength),
                      e
                    )
                  }, 0) + (this._ws ? this._ws.bufferedAmount : 0)
                )
              },
              enumerable: !0,
              configurable: !0,
            }),
            Object.defineProperty(e.prototype, 'extensions', {
              get: function () {
                return this._ws ? this._ws.extensions : ''
              },
              enumerable: !0,
              configurable: !0,
            }),
            Object.defineProperty(e.prototype, 'protocol', {
              get: function () {
                return this._ws ? this._ws.protocol : ''
              },
              enumerable: !0,
              configurable: !0,
            }),
            Object.defineProperty(e.prototype, 'readyState', {
              get: function () {
                return this._ws
                  ? this._ws.readyState
                  : this._options.startClosed
                  ? e.CLOSED
                  : e.CONNECTING
              },
              enumerable: !0,
              configurable: !0,
            }),
            Object.defineProperty(e.prototype, 'url', {
              get: function () {
                return this._ws ? this._ws.url : ''
              },
              enumerable: !0,
              configurable: !0,
            }),
            (e.prototype.close = function (e, t) {
              void 0 === e && (e = 1e3),
                (this._closeCalled = !0),
                (this._shouldReconnect = !1),
                this._clearTimeouts(),
                this._ws
                  ? this._ws.readyState !== this.CLOSED
                    ? this._ws.close(e, t)
                    : this._debug('close: already closed')
                  : this._debug('close enqueued: no ws instance')
            }),
            (e.prototype.reconnect = function (e, t) {
              ;(this._shouldReconnect = !0),
                (this._closeCalled = !1),
                (this._retryCount = -1),
                this._ws && this._ws.readyState !== this.CLOSED
                  ? (this._disconnect(e, t), this._connect())
                  : this._connect()
            }),
            (e.prototype.send = function (e) {
              if (this._ws && this._ws.readyState === this.OPEN)
                this._debug('send', e), this._ws.send(e)
              else {
                var t = this._options.maxEnqueuedMessages,
                  n = void 0 === t ? c.maxEnqueuedMessages : t
                this._messageQueue.length < n &&
                  (this._debug('enqueue', e), this._messageQueue.push(e))
              }
            }),
            (e.prototype.addEventListener = function (e, t) {
              this._listeners[e] && this._listeners[e].push(t)
            }),
            (e.prototype.dispatchEvent = function (e) {
              var t,
                n,
                r = this._listeners[e.type]
              if (r)
                try {
                  for (
                    var i = (function (e) {
                        var t = 'function' === typeof Symbol && e[Symbol.iterator],
                          n = 0
                        return t
                          ? t.call(e)
                          : {
                              next: function () {
                                return (
                                  e && n >= e.length && (e = void 0),
                                  { value: e && e[n++], done: !e }
                                )
                              },
                            }
                      })(r),
                      o = i.next();
                    !o.done;
                    o = i.next()
                  ) {
                    var a = o.value
                    this._callEventListener(e, a)
                  }
                } catch (s) {
                  t = { error: s }
                } finally {
                  try {
                    o && !o.done && (n = i.return) && n.call(i)
                  } finally {
                    if (t) throw t.error
                  }
                }
              return !0
            }),
            (e.prototype.removeEventListener = function (e, t) {
              this._listeners[e] &&
                (this._listeners[e] = this._listeners[e].filter(function (e) {
                  return e !== t
                }))
            }),
            (e.prototype._debug = function () {
              for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t]
              this._options.debug && console.log.apply(console, o(['RWS>'], e))
            }),
            (e.prototype._getNextDelay = function () {
              var e = this._options,
                t = e.reconnectionDelayGrowFactor,
                n = void 0 === t ? c.reconnectionDelayGrowFactor : t,
                r = e.minReconnectionDelay,
                i = void 0 === r ? c.minReconnectionDelay : r,
                o = e.maxReconnectionDelay,
                a = void 0 === o ? c.maxReconnectionDelay : o,
                s = 0
              return (
                this._retryCount > 0 && (s = i * Math.pow(n, this._retryCount - 1)) > a && (s = a),
                this._debug('next delay', s),
                s
              )
            }),
            (e.prototype._wait = function () {
              var e = this
              return new Promise(function (t) {
                setTimeout(t, e._getNextDelay())
              })
            }),
            (e.prototype._getNextUrl = function (e) {
              if ('string' === typeof e) return Promise.resolve(e)
              if ('function' === typeof e) {
                var t = e()
                if ('string' === typeof t) return Promise.resolve(t)
                if (t.then) return t
              }
              throw Error('Invalid URL')
            }),
            (e.prototype._connect = function () {
              var e = this
              if (!this._connectLock && this._shouldReconnect) {
                this._connectLock = !0
                var t = this._options,
                  n = t.maxRetries,
                  r = void 0 === n ? c.maxRetries : n,
                  i = t.connectionTimeout,
                  o = void 0 === i ? c.connectionTimeout : i,
                  a = t.WebSocket,
                  s = void 0 === a ? l() : a
                if (this._retryCount >= r)
                  this._debug('max retries reached', this._retryCount, '>=', r)
                else {
                  if (
                    (this._retryCount++,
                    this._debug('connect', this._retryCount),
                    this._removeListeners(),
                    'undefined' === typeof (u = s) || !u || 2 !== u.CLOSING)
                  )
                    throw Error('No valid WebSocket class provided')
                  var u
                  this._wait()
                    .then(function () {
                      return e._getNextUrl(e._url)
                    })
                    .then(function (t) {
                      e._closeCalled ||
                        (e._debug('connect', { url: t, protocols: e._protocols }),
                        (e._ws = e._protocols ? new s(t, e._protocols) : new s(t)),
                        (e._ws.binaryType = e._binaryType),
                        (e._connectLock = !1),
                        e._addListeners(),
                        (e._connectTimeout = setTimeout(function () {
                          return e._handleTimeout()
                        }, o)))
                    })
                }
              }
            }),
            (e.prototype._handleTimeout = function () {
              this._debug('timeout event'), this._handleError(new s(Error('TIMEOUT'), this))
            }),
            (e.prototype._disconnect = function (e, t) {
              if ((void 0 === e && (e = 1e3), this._clearTimeouts(), this._ws)) {
                this._removeListeners()
                try {
                  this._ws.close(e, t), this._handleClose(new u(e, t, this))
                } catch (n) {}
              }
            }),
            (e.prototype._acceptOpen = function () {
              this._debug('accept open'), (this._retryCount = 0)
            }),
            (e.prototype._callEventListener = function (e, t) {
              'handleEvent' in t ? t.handleEvent(e) : t(e)
            }),
            (e.prototype._removeListeners = function () {
              this._ws &&
                (this._debug('removeListeners'),
                this._ws.removeEventListener('open', this._handleOpen),
                this._ws.removeEventListener('close', this._handleClose),
                this._ws.removeEventListener('message', this._handleMessage),
                this._ws.removeEventListener('error', this._handleError))
            }),
            (e.prototype._addListeners = function () {
              this._ws &&
                (this._debug('addListeners'),
                this._ws.addEventListener('open', this._handleOpen),
                this._ws.addEventListener('close', this._handleClose),
                this._ws.addEventListener('message', this._handleMessage),
                this._ws.addEventListener('error', this._handleError))
            }),
            (e.prototype._clearTimeouts = function () {
              clearTimeout(this._connectTimeout), clearTimeout(this._uptimeTimeout)
            }),
            e
          )
        })()
      t.Z = d
    },
    1398: function (e, t, n) {
      'use strict'
      n.r(t),
        n.d(t, {
          default: function () {
            return ue
          },
        })
      var r = n(2212),
        i = n(4505),
        o = n(5560),
        a = n(2405),
        s = n(216),
        u = n(6917),
        l = n(4736),
        c = n.n(l),
        d = n(6505),
        f = n.n(d),
        h = n(4858),
        p = n(2539),
        v = n(6701),
        m = n(3752),
        g = n(1527)
      function y(e, t) {
        var n = Object.keys(e)
        if (Object.getOwnPropertySymbols) {
          var r = Object.getOwnPropertySymbols(e)
          t &&
            (r = r.filter(function (t) {
              return Object.getOwnPropertyDescriptor(e, t).enumerable
            })),
            n.push.apply(n, r)
        }
        return n
      }
      function b(e, t, n) {
        return (
          t in e
            ? Object.defineProperty(e, t, {
                value: n,
                enumerable: !0,
                configurable: !0,
                writable: !0,
              })
            : (e[t] = n),
          e
        )
      }
      function w(e, t) {
        if (null == e) return {}
        var n,
          r,
          i = (function (e, t) {
            if (null == e) return {}
            var n,
              r,
              i = {},
              o = Object.keys(e)
            for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n])
            return i
          })(e, t)
        if (Object.getOwnPropertySymbols) {
          var o = Object.getOwnPropertySymbols(e)
          for (r = 0; r < o.length; r++)
            (n = o[r]),
              t.indexOf(n) >= 0 ||
                (Object.prototype.propertyIsEnumerable.call(e, n) && (i[n] = e[n]))
        }
        return i
      }
      function x(e, t) {
        return (
          (function (e) {
            if (Array.isArray(e)) return e
          })(e) ||
          (function (e, t) {
            var n = e && (('undefined' !== typeof Symbol && e[Symbol.iterator]) || e['@@iterator'])
            if (null == n) return
            var r,
              i,
              o = [],
              a = !0,
              s = !1
            try {
              for (
                n = n.call(e);
                !(a = (r = n.next()).done) && (o.push(r.value), !t || o.length !== t);
                a = !0
              );
            } catch (u) {
              ;(s = !0), (i = u)
            } finally {
              try {
                a || null == n.return || n.return()
              } finally {
                if (s) throw i
              }
            }
            return o
          })(e, t) ||
          k(e, t) ||
          (function () {
            throw new TypeError(
              'Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.',
            )
          })()
        )
      }
      function E(e) {
        return (
          (function (e) {
            if (Array.isArray(e)) return _(e)
          })(e) ||
          (function (e) {
            if (
              ('undefined' !== typeof Symbol && null != e[Symbol.iterator]) ||
              null != e['@@iterator']
            )
              return Array.from(e)
          })(e) ||
          k(e) ||
          (function () {
            throw new TypeError(
              'Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.',
            )
          })()
        )
      }
      function k(e, t) {
        if (e) {
          if ('string' === typeof e) return _(e, t)
          var n = Object.prototype.toString.call(e).slice(8, -1)
          return (
            'Object' === n && e.constructor && (n = e.constructor.name),
            'Map' === n || 'Set' === n
              ? Array.from(e)
              : 'Arguments' === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)
              ? _(e, t)
              : void 0
          )
        }
      }
      function _(e, t) {
        ;(null == t || t > e.length) && (t = e.length)
        for (var n = 0, r = new Array(t); n < t; n++) r[n] = e[n]
        return r
      }
      function T(e, t, n) {
        var r = n.objBindAttr,
          i = void 0 === r ? '__obj' : r,
          o = n.dataBindAttr,
          a = void 0 === o ? '__data' : o,
          s = n.idAccessor,
          u = n.purge,
          l = void 0 !== u && u,
          c = function (e) {
            return e.hasOwnProperty(a)
          },
          d = t.filter(function (e) {
            return !c(e)
          }),
          f = t.filter(c).map(function (e) {
            return e[a]
          }),
          h = l
            ? { enter: e, exit: f, update: [] }
            : (function (e, t, n) {
                var r = { enter: [], update: [], exit: [] }
                if (n) {
                  var i = (0, g.Z)(e, n, !1),
                    o = (0, g.Z)(t, n, !1),
                    a = Object.assign({}, i, o)
                  Object.entries(a).forEach(function (e) {
                    var t = x(e, 2),
                      n = t[0],
                      a = t[1],
                      s = i.hasOwnProperty(n) ? (o.hasOwnProperty(n) ? 'update' : 'exit') : 'enter'
                    r[s].push('update' === s ? [i[n], o[n]] : a)
                  })
                } else {
                  var s = new Set(e),
                    u = new Set(t)
                  new Set([].concat(E(s), E(u))).forEach(function (e) {
                    var t = s.has(e) ? (u.has(e) ? 'update' : 'exit') : 'enter'
                    r[t].push('update' === t ? [e, e] : e)
                  })
                }
                return r
              })(f, e, s)
        return (
          (h.update = h.update.map(function (e) {
            var t = x(e, 2),
              n = t[0],
              r = t[1]
            return n !== r && ((r[i] = n[i]), (r[i][a] = r)), r
          })),
          (h.exit = h.exit.concat(
            d.map(function (e) {
              return b({}, i, e)
            }),
          )),
          h
        )
      }
      var O = function (e, t, n, r, i) {
          var o = i.createObj,
            a =
              void 0 === o
                ? function (e) {
                    return {}
                  }
                : o,
            s = i.updateObj,
            u = void 0 === s ? function (e, t) {} : s,
            l = i.exitObj,
            c = void 0 === l ? function (e) {} : l,
            d = i.objBindAttr,
            f = void 0 === d ? '__obj' : d,
            h = i.dataBindAttr,
            p = void 0 === h ? '__data' : h,
            v = w(i, ['createObj', 'updateObj', 'exitObj', 'objBindAttr', 'dataBindAttr']),
            m = T(
              e,
              t,
              (function (e) {
                for (var t = 1; t < arguments.length; t++) {
                  var n = null != arguments[t] ? arguments[t] : {}
                  t % 2
                    ? y(Object(n), !0).forEach(function (t) {
                        b(e, t, n[t])
                      })
                    : Object.getOwnPropertyDescriptors
                    ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n))
                    : y(Object(n)).forEach(function (t) {
                        Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t))
                      })
                }
                return e
              })({ objBindAttr: f, dataBindAttr: p }, v),
            ),
            g = m.enter,
            x = m.update
          m.exit.forEach(function (e) {
            var t = e[f]
            delete e[f], c(t), r(t)
          })
          var k = (function (e) {
            var t = []
            return (
              e.forEach(function (e) {
                var n = a(e)
                n && ((n[p] = e), (e[f] = n), t.push(n))
              }),
              t
            )
          })(g)
          !(function (e) {
            e.forEach(function (e) {
              var t = e[f]
              t && ((t[p] = e), u(t, e))
            })
          })([].concat(E(g), E(x))),
            k.forEach(n)
        },
        C = n(2462),
        S = n(2816),
        A = n(7621),
        P = n.n(A)
      function M(e, t) {
        var n = Object.keys(e)
        if (Object.getOwnPropertySymbols) {
          var r = Object.getOwnPropertySymbols(e)
          t &&
            (r = r.filter(function (t) {
              return Object.getOwnPropertyDescriptor(e, t).enumerable
            })),
            n.push.apply(n, r)
        }
        return n
      }
      function R(e) {
        for (var t = 1; t < arguments.length; t++) {
          var n = null != arguments[t] ? arguments[t] : {}
          t % 2
            ? M(Object(n), !0).forEach(function (t) {
                L(e, t, n[t])
              })
            : Object.getOwnPropertyDescriptors
            ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n))
            : M(Object(n)).forEach(function (t) {
                Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t))
              })
        }
        return e
      }
      function j(e) {
        return (j =
          'function' === typeof Symbol && 'symbol' === typeof Symbol.iterator
            ? function (e) {
                return typeof e
              }
            : function (e) {
                return e &&
                  'function' === typeof Symbol &&
                  e.constructor === Symbol &&
                  e !== Symbol.prototype
                  ? 'symbol'
                  : typeof e
              })(e)
      }
      function D(e, t) {
        if (!(e instanceof t)) throw new TypeError('Cannot call a class as a function')
      }
      function L(e, t, n) {
        return (
          t in e
            ? Object.defineProperty(e, t, {
                value: n,
                enumerable: !0,
                configurable: !0,
                writable: !0,
              })
            : (e[t] = n),
          e
        )
      }
      function N(e, t) {
        if ('function' !== typeof t && null !== t)
          throw new TypeError('Super expression must either be null or a function')
        ;(e.prototype = Object.create(t && t.prototype, {
          constructor: { value: e, writable: !0, configurable: !0 },
        })),
          t && z(e, t)
      }
      function I(e) {
        return (I = Object.setPrototypeOf
          ? Object.getPrototypeOf
          : function (e) {
              return e.__proto__ || Object.getPrototypeOf(e)
            })(e)
      }
      function z(e, t) {
        return (z =
          Object.setPrototypeOf ||
          function (e, t) {
            return (e.__proto__ = t), e
          })(e, t)
      }
      function H() {
        if ('undefined' === typeof Reflect || !Reflect.construct) return !1
        if (Reflect.construct.sham) return !1
        if ('function' === typeof Proxy) return !0
        try {
          return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})), !0
        } catch (e) {
          return !1
        }
      }
      function B(e, t, n) {
        return (B = H()
          ? Reflect.construct
          : function (e, t, n) {
              var r = [null]
              r.push.apply(r, t)
              var i = new (Function.bind.apply(e, r))()
              return n && z(i, n.prototype), i
            }).apply(null, arguments)
      }
      function F(e, t) {
        if (null == e) return {}
        var n,
          r,
          i = (function (e, t) {
            if (null == e) return {}
            var n,
              r,
              i = {},
              o = Object.keys(e)
            for (r = 0; r < o.length; r++) (n = o[r]), t.indexOf(n) >= 0 || (i[n] = e[n])
            return i
          })(e, t)
        if (Object.getOwnPropertySymbols) {
          var o = Object.getOwnPropertySymbols(e)
          for (r = 0; r < o.length; r++)
            (n = o[r]),
              t.indexOf(n) >= 0 ||
                (Object.prototype.propertyIsEnumerable.call(e, n) && (i[n] = e[n]))
        }
        return i
      }
      function V(e) {
        if (void 0 === e)
          throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
        return e
      }
      function U(e, t) {
        return !t || ('object' !== typeof t && 'function' !== typeof t) ? V(e) : t
      }
      function G(e) {
        var t = H()
        return function () {
          var n,
            r = I(e)
          if (t) {
            var i = I(this).constructor
            n = Reflect.construct(r, arguments, i)
          } else n = r.apply(this, arguments)
          return U(this, n)
        }
      }
      function q(e, t) {
        return (
          (function (e) {
            if (Array.isArray(e)) return e
          })(e) ||
          (function (e, t) {
            var n =
              null == e
                ? null
                : ('undefined' !== typeof Symbol && e[Symbol.iterator]) || e['@@iterator']
            if (null == n) return
            var r,
              i,
              o = [],
              a = !0,
              s = !1
            try {
              for (
                n = n.call(e);
                !(a = (r = n.next()).done) && (o.push(r.value), !t || o.length !== t);
                a = !0
              );
            } catch (u) {
              ;(s = !0), (i = u)
            } finally {
              try {
                a || null == n.return || n.return()
              } finally {
                if (s) throw i
              }
            }
            return o
          })(e, t) ||
          K(e, t) ||
          (function () {
            throw new TypeError(
              'Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.',
            )
          })()
        )
      }
      function W(e) {
        return (
          (function (e) {
            if (Array.isArray(e)) return Z(e)
          })(e) ||
          (function (e) {
            if (
              ('undefined' !== typeof Symbol && null != e[Symbol.iterator]) ||
              null != e['@@iterator']
            )
              return Array.from(e)
          })(e) ||
          K(e) ||
          (function () {
            throw new TypeError(
              'Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.',
            )
          })()
        )
      }
      function K(e, t) {
        if (e) {
          if ('string' === typeof e) return Z(e, t)
          var n = Object.prototype.toString.call(e).slice(8, -1)
          return (
            'Object' === n && e.constructor && (n = e.constructor.name),
            'Map' === n || 'Set' === n
              ? Array.from(e)
              : 'Arguments' === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)
              ? Z(e, t)
              : void 0
          )
        }
      }
      function Z(e, t) {
        ;(null == t || t > e.length) && (t = e.length)
        for (var n = 0, r = new Array(t); n < t; n++) r[n] = e[n]
        return r
      }
      var $ = function e(t) {
          t instanceof Array ? t.forEach(e) : (t.map && t.map.dispose(), t.dispose())
        },
        X = function e(t) {
          t.geometry && t.geometry.dispose(),
            t.material && $(t.material),
            t.texture && t.texture.dispose(),
            t.children && t.children.forEach(e)
        },
        Y = function (e) {
          for (; e.children.length; ) {
            var t = e.children[0]
            e.remove(t), X(t)
          }
        },
        Q = ['objFilter']
      function J(e, t) {
        var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
          r = n.objFilter,
          i =
            void 0 === r
              ? function () {
                  return !0
                }
              : r,
          o = F(n, Q)
        return O(
          e,
          t.children.filter(i),
          function (e) {
            return t.add(e)
          },
          function (e) {
            t.remove(e), Y(e)
          },
          R({ objBindAttr: '__threeObj' }, o),
        )
      }
      var ee = function (e) {
          return isNaN(e) ? parseInt(P()(e).toHex(), 16) : e
        },
        te = function (e) {
          return isNaN(e) ? P()(e).getAlpha() : 1
        },
        ne = (0, C.Z)(S.Z)
      function re(e, t, n) {
        t &&
          'string' === typeof n &&
          e
            .filter(function (e) {
              return !e[n]
            })
            .forEach(function (e) {
              e[n] = ne(t(e))
            })
      }
      var ie = window.THREE
          ? window.THREE
          : {
              Group: r.ZAu,
              Mesh: r.Kj0,
              MeshLambertMaterial: r.YBo,
              Color: r.Ilk,
              BufferGeometry: r.u9r,
              BufferAttribute: r.TlE,
              Matrix4: r.yGw,
              Vector3: r.Pa4,
              SphereBufferGeometry: r.Aip,
              CylinderBufferGeometry: r.m_w,
              TubeBufferGeometry: r.Lcc,
              ConeBufferGeometry: r._3,
              Line: r.x12,
              LineBasicMaterial: r.nls,
              QuadraticBezierCurve3: r.mXe,
              CubicBezierCurve3: r.yj7,
              Box3: r.ZzF,
            },
        oe = { graph: c(), forcelayout: f() },
        ae = new ie.BufferGeometry().setAttribute ? 'setAttribute' : 'addAttribute',
        se = new ie.BufferGeometry().applyMatrix4 ? 'applyMatrix4' : 'applyMatrix'
      var ue = (function (e) {
        var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : Object,
          n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],
          r = (function (t) {
            N(i, t)
            var r = G(i)
            function i() {
              var t
              D(this, i)
              for (var o = arguments.length, a = new Array(o), s = 0; s < o; s++)
                a[s] = arguments[s]
              return (
                ((t = r.call.apply(r, [this].concat(a))).__kapsuleInstance = e().apply(
                  void 0,
                  [].concat(W(n ? [V(t)] : []), a),
                )),
                t
              )
            }
            return i
          })(t)
        return (
          Object.keys(e()).forEach(function (e) {
            return (r.prototype[e] = function () {
              var t,
                n = (t = this.__kapsuleInstance)[e].apply(t, arguments)
              return n === this.__kapsuleInstance ? this : n
            })
          }),
          r
        )
      })(
        (0, h.Z)({
          props: {
            jsonUrl: {
              onChange: function (e, t) {
                var n = this
                e &&
                  !t.fetchingJson &&
                  ((t.fetchingJson = !0),
                  t.onLoading(),
                  fetch(e)
                    .then(function (e) {
                      return e.json()
                    })
                    .then(function (e) {
                      ;(t.fetchingJson = !1), t.onFinishLoading(e), n.graphData(e)
                    }))
              },
              triggerUpdate: !1,
            },
            graphData: {
              default: { nodes: [], links: [] },
              onChange: function (e, t) {
                t.engineRunning = !1
              },
            },
            numDimensions: {
              default: 3,
              onChange: function (e, t) {
                var n = t.d3ForceLayout.force('charge')
                function r(e, t) {
                  e.forEach(function (e) {
                    delete e[t], delete e['v'.concat(t)]
                  })
                }
                n && n.strength(e > 2 ? -60 : -30),
                  e < 3 && r(t.graphData.nodes, 'z'),
                  e < 2 && r(t.graphData.nodes, 'y')
              },
            },
            dagMode: {
              onChange: function (e, t) {
                !e &&
                  'd3' === t.forceEngine &&
                  (t.graphData.nodes || []).forEach(function (e) {
                    return (e.fx = e.fy = e.fz = void 0)
                  })
              },
            },
            dagLevelDistance: {},
            dagNodeFilter: {
              default: function (e) {
                return !0
              },
            },
            onDagError: { triggerUpdate: !1 },
            nodeRelSize: { default: 4 },
            nodeId: { default: 'id' },
            nodeVal: { default: 'val' },
            nodeResolution: { default: 8 },
            nodeColor: { default: 'color' },
            nodeAutoColorBy: {},
            nodeOpacity: { default: 0.75 },
            nodeVisibility: { default: !0 },
            nodeThreeObject: {},
            nodeThreeObjectExtend: { default: !1 },
            linkSource: { default: 'source' },
            linkTarget: { default: 'target' },
            linkVisibility: { default: !0 },
            linkColor: { default: 'color' },
            linkAutoColorBy: {},
            linkOpacity: { default: 0.2 },
            linkWidth: {},
            linkResolution: { default: 6 },
            linkCurvature: { default: 0, triggerUpdate: !1 },
            linkCurveRotation: { default: 0, triggerUpdate: !1 },
            linkMaterial: {},
            linkThreeObject: {},
            linkThreeObjectExtend: { default: !1 },
            linkPositionUpdate: { triggerUpdate: !1 },
            linkDirectionalArrowLength: { default: 0 },
            linkDirectionalArrowColor: {},
            linkDirectionalArrowRelPos: { default: 0.5, triggerUpdate: !1 },
            linkDirectionalArrowResolution: { default: 8 },
            linkDirectionalParticles: { default: 0 },
            linkDirectionalParticleSpeed: { default: 0.01, triggerUpdate: !1 },
            linkDirectionalParticleWidth: { default: 0.5 },
            linkDirectionalParticleColor: {},
            linkDirectionalParticleResolution: { default: 4 },
            forceEngine: { default: 'd3' },
            d3AlphaMin: { default: 0 },
            d3AlphaDecay: {
              default: 0.0228,
              triggerUpdate: !1,
              onChange: function (e, t) {
                t.d3ForceLayout.alphaDecay(e)
              },
            },
            d3AlphaTarget: {
              default: 0,
              triggerUpdate: !1,
              onChange: function (e, t) {
                t.d3ForceLayout.alphaTarget(e)
              },
            },
            d3VelocityDecay: {
              default: 0.4,
              triggerUpdate: !1,
              onChange: function (e, t) {
                t.d3ForceLayout.velocityDecay(e)
              },
            },
            ngraphPhysics: {
              default: {
                timeStep: 20,
                gravity: -1.2,
                theta: 0.8,
                springLength: 30,
                springCoefficient: 8e-4,
                dragCoefficient: 0.02,
              },
            },
            warmupTicks: { default: 0, triggerUpdate: !1 },
            cooldownTicks: { default: 1 / 0, triggerUpdate: !1 },
            cooldownTime: { default: 15e3, triggerUpdate: !1 },
            onLoading: { default: function () {}, triggerUpdate: !1 },
            onFinishLoading: { default: function () {}, triggerUpdate: !1 },
            onUpdate: { default: function () {}, triggerUpdate: !1 },
            onFinishUpdate: { default: function () {}, triggerUpdate: !1 },
            onEngineTick: { default: function () {}, triggerUpdate: !1 },
            onEngineStop: { default: function () {}, triggerUpdate: !1 },
          },
          methods: {
            refresh: function (e) {
              return (e._flushObjects = !0), e._rerender(), this
            },
            d3Force: function (e, t, n) {
              return void 0 === n ? e.d3ForceLayout.force(t) : (e.d3ForceLayout.force(t, n), this)
            },
            d3ReheatSimulation: function (e) {
              return e.d3ForceLayout.alpha(1), this.resetCountdown(), this
            },
            resetCountdown: function (e) {
              return (e.cntTicks = 0), (e.startTickTime = new Date()), (e.engineRunning = !0), this
            },
            tickFrame: function (e) {
              var t = 'ngraph' !== e.forceEngine
              return (
                e.engineRunning &&
                  (function () {
                    ++e.cntTicks > e.cooldownTicks ||
                    new Date() - e.startTickTime > e.cooldownTime ||
                    (t && e.d3AlphaMin > 0 && e.d3ForceLayout.alpha() < e.d3AlphaMin)
                      ? ((e.engineRunning = !1), e.onEngineStop())
                      : (e.layout[t ? 'tick' : 'step'](), e.onEngineTick())
                    e.graphData.nodes.forEach(function (n) {
                      var r = n.__threeObj
                      if (r) {
                        var i = t ? n : e.layout.getNodePosition(n[e.nodeId])
                        ;(r.position.x = i.x), (r.position.y = i.y || 0), (r.position.z = i.z || 0)
                      }
                    })
                    var n = (0, p.default)(e.linkWidth),
                      r = (0, p.default)(e.linkCurvature),
                      i = (0, p.default)(e.linkCurveRotation),
                      o = (0, p.default)(e.linkThreeObjectExtend)
                    function a(n) {
                      var o = t
                          ? n
                          : e.layout.getLinkPosition(e.layout.graph.getLink(n.source, n.target).id),
                        a = o[t ? 'source' : 'from'],
                        s = o[t ? 'target' : 'to']
                      if (a && s && a.hasOwnProperty('x') && s.hasOwnProperty('x')) {
                        var u = r(n)
                        if (u) {
                          var l,
                            c = new ie.Vector3(a.x, a.y || 0, a.z || 0),
                            d = new ie.Vector3(s.x, s.y || 0, s.z || 0),
                            f = c.distanceTo(d),
                            h = i(n)
                          if (f > 0) {
                            var p = s.x - a.x,
                              v = s.y - a.y || 0,
                              m = new ie.Vector3().subVectors(d, c),
                              g = m
                                .clone()
                                .multiplyScalar(u)
                                .cross(
                                  0 !== p || 0 !== v
                                    ? new ie.Vector3(0, 0, 1)
                                    : new ie.Vector3(0, 1, 0),
                                )
                                .applyAxisAngle(m.normalize(), h)
                                .add(new ie.Vector3().addVectors(c, d).divideScalar(2))
                            l = new ie.QuadraticBezierCurve3(c, g, d)
                          } else {
                            var y = 70 * u,
                              b = -h,
                              w = b + Math.PI / 2
                            l = new ie.CubicBezierCurve3(
                              c,
                              new ie.Vector3(y * Math.cos(w), y * Math.sin(w), 0).add(c),
                              new ie.Vector3(y * Math.cos(b), y * Math.sin(b), 0).add(c),
                              d,
                            )
                          }
                          n.__curve = l
                        } else n.__curve = null
                      }
                    }
                    e.graphData.links.forEach(function (r) {
                      var i = r.__lineObj
                      if (i) {
                        var s = t
                            ? r
                            : e.layout.getLinkPosition(
                                e.layout.graph.getLink(r.source, r.target).id,
                              ),
                          u = s[t ? 'source' : 'from'],
                          l = s[t ? 'target' : 'to']
                        if (u && l && u.hasOwnProperty('x') && l.hasOwnProperty('x')) {
                          a(r)
                          var c = o(r)
                          if (
                            !e.linkPositionUpdate ||
                            !e.linkPositionUpdate(
                              c ? i.children[1] : i,
                              {
                                start: { x: u.x, y: u.y, z: u.z },
                                end: { x: l.x, y: l.y, z: l.z },
                              },
                              r,
                            ) ||
                            c
                          ) {
                            var d = 30,
                              f = r.__curve,
                              h = i.children.length ? i.children[0] : i
                            if ('Line' === h.type) {
                              if (f) h.geometry.setFromPoints(f.getPoints(d))
                              else {
                                var p = h.geometry.getAttribute('position')
                                ;(p && p.array && 6 === p.array.length) ||
                                  h.geometry[ae](
                                    'position',
                                    (p = new ie.BufferAttribute(new Float32Array(6), 3)),
                                  ),
                                  (p.array[0] = u.x),
                                  (p.array[1] = u.y || 0),
                                  (p.array[2] = u.z || 0),
                                  (p.array[3] = l.x),
                                  (p.array[4] = l.y || 0),
                                  (p.array[5] = l.z || 0),
                                  (p.needsUpdate = !0)
                              }
                              h.geometry.computeBoundingSphere()
                            } else if ('Mesh' === h.type)
                              if (f) {
                                h.geometry.type.match(/^Tube(Buffer)?Geometry$/) ||
                                  (h.position.set(0, 0, 0),
                                  h.rotation.set(0, 0, 0),
                                  h.scale.set(1, 1, 1))
                                var v = Math.ceil(10 * n(r)) / 10 / 2,
                                  m = new ie.TubeBufferGeometry(f, d, v, e.linkResolution, !1)
                                h.geometry.dispose(), (h.geometry = m)
                              } else {
                                if (!h.geometry.type.match(/^Cylinder(Buffer)?Geometry$/)) {
                                  var g = Math.ceil(10 * n(r)) / 10 / 2,
                                    y = new ie.CylinderBufferGeometry(
                                      g,
                                      g,
                                      1,
                                      e.linkResolution,
                                      1,
                                      !1,
                                    )
                                  y[se](new ie.Matrix4().makeTranslation(0, 0.5, 0)),
                                    y[se](new ie.Matrix4().makeRotationX(Math.PI / 2)),
                                    h.geometry.dispose(),
                                    (h.geometry = y)
                                }
                                var b = new ie.Vector3(u.x, u.y || 0, u.z || 0),
                                  w = new ie.Vector3(l.x, l.y || 0, l.z || 0),
                                  x = b.distanceTo(w)
                                ;(h.position.x = b.x),
                                  (h.position.y = b.y),
                                  (h.position.z = b.z),
                                  (h.scale.z = x),
                                  h.parent.localToWorld(w),
                                  h.lookAt(w)
                              }
                          }
                        }
                      }
                    })
                  })(),
                (function () {
                  var n = (0, p.default)(e.linkDirectionalArrowRelPos),
                    r = (0, p.default)(e.linkDirectionalArrowLength),
                    i = (0, p.default)(e.nodeVal)
                  e.graphData.links.forEach(function (o) {
                    var a = o.__arrowObj
                    if (a) {
                      var s = t
                          ? o
                          : e.layout.getLinkPosition(e.layout.graph.getLink(o.source, o.target).id),
                        u = s[t ? 'source' : 'from'],
                        l = s[t ? 'target' : 'to']
                      if (u && l && u.hasOwnProperty('x') && l.hasOwnProperty('x')) {
                        var c = Math.sqrt(Math.max(0, i(u) || 1)) * e.nodeRelSize,
                          d = Math.sqrt(Math.max(0, i(l) || 1)) * e.nodeRelSize,
                          f = r(o),
                          h = n(o),
                          p = o.__curve
                            ? function (e) {
                                return o.__curve.getPoint(e)
                              }
                            : function (e) {
                                var t = function (e, t, n, r) {
                                  return t[e] + (n[e] - t[e]) * r || 0
                                }
                                return {
                                  x: t('x', u, l, e),
                                  y: t('y', u, l, e),
                                  z: t('z', u, l, e),
                                }
                              },
                          v = o.__curve
                            ? o.__curve.getLength()
                            : Math.sqrt(
                                ['x', 'y', 'z']
                                  .map(function (e) {
                                    return Math.pow((l[e] || 0) - (u[e] || 0), 2)
                                  })
                                  .reduce(function (e, t) {
                                    return e + t
                                  }, 0),
                              ),
                          m = c + f + (v - c - d - f) * h,
                          g = p(m / v),
                          y = p((m - f) / v)
                        ;['x', 'y', 'z'].forEach(function (e) {
                          return (a.position[e] = y[e])
                        })
                        var b = B(
                          ie.Vector3,
                          W(
                            ['x', 'y', 'z'].map(function (e) {
                              return g[e]
                            }),
                          ),
                        )
                        a.parent.localToWorld(b), a.lookAt(b)
                      }
                    }
                  })
                })(),
                (function () {
                  var n = (0, p.default)(e.linkDirectionalParticleSpeed)
                  e.graphData.links.forEach(function (r) {
                    var i = r.__photonsObj && r.__photonsObj.children,
                      o = r.__singleHopPhotonsObj && r.__singleHopPhotonsObj.children
                    if ((o && o.length) || (i && i.length)) {
                      var a = t
                          ? r
                          : e.layout.getLinkPosition(e.layout.graph.getLink(r.source, r.target).id),
                        s = a[t ? 'source' : 'from'],
                        u = a[t ? 'target' : 'to']
                      if (s && u && s.hasOwnProperty('x') && u.hasOwnProperty('x')) {
                        var l = n(r),
                          c = r.__curve
                            ? function (e) {
                                return r.__curve.getPoint(e)
                              }
                            : function (e) {
                                var t = function (e, t, n, r) {
                                  return t[e] + (n[e] - t[e]) * r || 0
                                }
                                return {
                                  x: t('x', s, u, e),
                                  y: t('y', s, u, e),
                                  z: t('z', s, u, e),
                                }
                              }
                        ;[].concat(W(i || []), W(o || [])).forEach(function (e, t) {
                          var n = 'singleHopPhotons' === e.parent.__linkThreeObjType
                          if (
                            (e.hasOwnProperty('__progressRatio') ||
                              (e.__progressRatio = n ? 0 : t / i.length),
                            (e.__progressRatio += l),
                            e.__progressRatio >= 1)
                          ) {
                            if (n) return e.parent.remove(e), void Y(e)
                            e.__progressRatio = e.__progressRatio % 1
                          }
                          var r = e.__progressRatio,
                            o = c(r)
                          ;['x', 'y', 'z'].forEach(function (t) {
                            return (e.position[t] = o[t])
                          })
                        })
                      }
                    }
                  })
                })(),
                this
              )
            },
            emitParticle: function (e, t) {
              if (t) {
                if (!t.__singleHopPhotonsObj) {
                  var n = new ie.Group()
                  ;(n.__linkThreeObjType = 'singleHopPhotons'),
                    (t.__singleHopPhotonsObj = n),
                    e.graphScene.add(n)
                }
                var r = (0, p.default)(e.linkDirectionalParticleWidth),
                  i = Math.ceil(10 * r(t)) / 10 / 2,
                  o = e.linkDirectionalParticleResolution,
                  a = new ie.SphereBufferGeometry(i, o, o),
                  s = (0, p.default)(e.linkColor),
                  u = (0, p.default)(e.linkDirectionalParticleColor)(t) || s(t) || '#f0f0f0',
                  l = new ie.Color(ee(u)),
                  c = 3 * e.linkOpacity,
                  d = new ie.MeshLambertMaterial({ color: l, transparent: !0, opacity: c })
                t.__singleHopPhotonsObj.add(new ie.Mesh(a, d))
              }
              return this
            },
            getGraphBbox: function (e) {
              var t =
                arguments.length > 1 && void 0 !== arguments[1]
                  ? arguments[1]
                  : function () {
                      return !0
                    }
              if (!e.initialised) return null
              var n = (function e(n) {
                var r = []
                if (n.geometry) {
                  n.geometry.computeBoundingBox()
                  var i = new ie.Box3()
                  i.copy(n.geometry.boundingBox).applyMatrix4(n.matrixWorld), r.push(i)
                }
                return r.concat.apply(
                  r,
                  W(
                    (n.children || [])
                      .filter(function (e) {
                        return (
                          !e.hasOwnProperty('__graphObjType') ||
                          ('node' === e.__graphObjType && t(e.__data))
                        )
                      })
                      .map(e),
                  ),
                )
              })(e.graphScene)
              return n.length
                ? Object.assign.apply(
                    Object,
                    W(
                      ['x', 'y', 'z'].map(function (e) {
                        return L({}, e, [
                          (0, v.Z)(n, function (t) {
                            return t.min[e]
                          }),
                          (0, m.Z)(n, function (t) {
                            return t.max[e]
                          }),
                        ])
                      }),
                    ),
                  )
                : null
            },
          },
          stateInit: function () {
            return {
              d3ForceLayout: (0, i.Z)()
                .force('link', (0, o.Z)())
                .force('charge', (0, a.Z)())
                .force('center', (0, s.Z)())
                .force('dagRadial', null)
                .stop(),
              engineRunning: !1,
            }
          },
          init: function (e, t) {
            t.graphScene = e
          },
          update: function (e, t) {
            var n = function (e) {
              return e.some(function (e) {
                return t.hasOwnProperty(e)
              })
            }
            if (
              ((e.engineRunning = !1),
              e.onUpdate(),
              null !== e.nodeAutoColorBy &&
                n(['nodeAutoColorBy', 'graphData', 'nodeColor']) &&
                re(e.graphData.nodes, (0, p.default)(e.nodeAutoColorBy), e.nodeColor),
              null !== e.linkAutoColorBy &&
                n(['linkAutoColorBy', 'graphData', 'linkColor']) &&
                re(e.graphData.links, (0, p.default)(e.linkAutoColorBy), e.linkColor),
              e._flushObjects ||
                n([
                  'graphData',
                  'nodeThreeObject',
                  'nodeThreeObjectExtend',
                  'nodeVal',
                  'nodeColor',
                  'nodeVisibility',
                  'nodeRelSize',
                  'nodeResolution',
                  'nodeOpacity',
                ]))
            ) {
              var r = (0, p.default)(e.nodeThreeObject),
                i = (0, p.default)(e.nodeThreeObjectExtend),
                o = (0, p.default)(e.nodeVal),
                a = (0, p.default)(e.nodeColor),
                s = (0, p.default)(e.nodeVisibility),
                l = {},
                c = {}
              J(e.graphData.nodes.filter(s), e.graphScene, {
                purge: e._flushObjects || n(['nodeThreeObject', 'nodeThreeObjectExtend']),
                objFilter: function (e) {
                  return 'node' === e.__graphObjType
                },
                createObj: function (t) {
                  var n,
                    o = r(t),
                    a = i(t)
                  return (
                    o && e.nodeThreeObject === o && (o = o.clone()),
                    o && !a
                      ? (n = o)
                      : (((n = new ie.Mesh()).__graphDefaultObj = !0), o && a && n.add(o)),
                    (n.__graphObjType = 'node'),
                    n
                  )
                },
                updateObj: function (t, n) {
                  if (t.__graphDefaultObj) {
                    var r = o(n) || 1,
                      i = Math.cbrt(r) * e.nodeRelSize,
                      s = e.nodeResolution
                    ;(t.geometry.type.match(/^Sphere(Buffer)?Geometry$/) &&
                      t.geometry.parameters.radius === i &&
                      t.geometry.parameters.widthSegments === s) ||
                      (l.hasOwnProperty(r) || (l[r] = new ie.SphereBufferGeometry(i, s, s)),
                      t.geometry.dispose(),
                      (t.geometry = l[r]))
                    var u = a(n),
                      d = new ie.Color(ee(u || '#ffffaa')),
                      f = e.nodeOpacity * te(u)
                    ;('MeshLambertMaterial' === t.material.type &&
                      t.material.color.equals(d) &&
                      t.material.opacity === f) ||
                      (c.hasOwnProperty(u) ||
                        (c[u] = new ie.MeshLambertMaterial({
                          color: d,
                          transparent: !0,
                          opacity: f,
                        })),
                      t.material.dispose(),
                      (t.material = c[u]))
                  }
                },
              })
            }
            if (
              e._flushObjects ||
              n([
                'graphData',
                'linkThreeObject',
                'linkThreeObjectExtend',
                'linkMaterial',
                'linkColor',
                'linkWidth',
                'linkVisibility',
                'linkResolution',
                'linkOpacity',
                'linkDirectionalArrowLength',
                'linkDirectionalArrowColor',
                'linkDirectionalArrowResolution',
                'linkDirectionalParticles',
                'linkDirectionalParticleWidth',
                'linkDirectionalParticleColor',
                'linkDirectionalParticleResolution',
              ])
            ) {
              var d = (0, p.default)(e.linkThreeObject),
                f = (0, p.default)(e.linkThreeObjectExtend),
                h = (0, p.default)(e.linkMaterial),
                v = (0, p.default)(e.linkVisibility),
                m = (0, p.default)(e.linkColor),
                g = (0, p.default)(e.linkWidth),
                y = {},
                b = {},
                w = {},
                x = e.graphData.links.filter(v)
              if (
                (J(x, e.graphScene, {
                  objBindAttr: '__lineObj',
                  purge:
                    e._flushObjects || n(['linkThreeObject', 'linkThreeObjectExtend', 'linkWidth']),
                  objFilter: function (e) {
                    return 'link' === e.__graphObjType
                  },
                  createObj: function (t) {
                    var n,
                      r,
                      i = d(t),
                      o = f(t)
                    if ((i && e.linkThreeObject === i && (i = i.clone()), !i || o))
                      if (!!g(t)) n = new ie.Mesh()
                      else {
                        var a = new ie.BufferGeometry()
                        a[ae]('position', new ie.BufferAttribute(new Float32Array(6), 3)),
                          (n = new ie.Line(a))
                      }
                    return (
                      i
                        ? o
                          ? (((r = new ie.Group()).__graphDefaultObj = !0), r.add(n), r.add(i))
                          : (r = i)
                        : ((r = n).__graphDefaultObj = !0),
                      (r.renderOrder = 10),
                      (r.__graphObjType = 'link'),
                      r
                    )
                  },
                  updateObj: function (t, n) {
                    if (t.__graphDefaultObj) {
                      var r = t.children.length ? t.children[0] : t,
                        i = Math.ceil(10 * g(n)) / 10,
                        o = !!i
                      if (o) {
                        var a = i / 2,
                          s = e.linkResolution
                        if (
                          !r.geometry.type.match(/^Cylinder(Buffer)?Geometry$/) ||
                          r.geometry.parameters.radiusTop !== a ||
                          r.geometry.parameters.radialSegments !== s
                        ) {
                          if (!y.hasOwnProperty(i)) {
                            var u = new ie.CylinderBufferGeometry(a, a, 1, s, 1, !1)
                            u[se](new ie.Matrix4().makeTranslation(0, 0.5, 0)),
                              u[se](new ie.Matrix4().makeRotationX(Math.PI / 2)),
                              (y[i] = u)
                          }
                          r.geometry.dispose(), (r.geometry = y[i])
                        }
                      }
                      var l = h(n)
                      if (l) r.material = l
                      else {
                        var c = m(n),
                          d = new ie.Color(ee(c || '#f0f0f0')),
                          f = e.linkOpacity * te(c),
                          p = o ? 'MeshLambertMaterial' : 'LineBasicMaterial'
                        if (
                          r.material.type !== p ||
                          !r.material.color.equals(d) ||
                          r.material.opacity !== f
                        ) {
                          var v = o ? b : w
                          v.hasOwnProperty(c) ||
                            (v[c] = new ie[p]({
                              color: d,
                              transparent: f < 1,
                              opacity: f,
                              depthWrite: f >= 1,
                            })),
                            r.material.dispose(),
                            (r.material = v[c])
                        }
                      }
                    }
                  },
                }),
                e.linkDirectionalArrowLength || t.hasOwnProperty('linkDirectionalArrowLength'))
              ) {
                var E = (0, p.default)(e.linkDirectionalArrowLength),
                  k = (0, p.default)(e.linkDirectionalArrowColor)
                J(x.filter(E), e.graphScene, {
                  objBindAttr: '__arrowObj',
                  objFilter: function (e) {
                    return 'arrow' === e.__linkThreeObjType
                  },
                  createObj: function () {
                    var e = new ie.Mesh(void 0, new ie.MeshLambertMaterial({ transparent: !0 }))
                    return (e.__linkThreeObjType = 'arrow'), e
                  },
                  updateObj: function (t, n) {
                    var r = E(n),
                      i = e.linkDirectionalArrowResolution
                    if (
                      !t.geometry.type.match(/^Cone(Buffer)?Geometry$/) ||
                      t.geometry.parameters.height !== r ||
                      t.geometry.parameters.radialSegments !== i
                    ) {
                      var o = new ie.ConeBufferGeometry(0.25 * r, r, i)
                      o.translate(0, r / 2, 0),
                        o.rotateX(Math.PI / 2),
                        t.geometry.dispose(),
                        (t.geometry = o)
                    }
                    ;(t.material.color = new ie.Color(k(n) || m(n) || '#f0f0f0')),
                      (t.material.opacity = 3 * e.linkOpacity)
                  },
                })
              }
              if (e.linkDirectionalParticles || t.hasOwnProperty('linkDirectionalParticles')) {
                var _ = (0, p.default)(e.linkDirectionalParticles),
                  T = (0, p.default)(e.linkDirectionalParticleWidth),
                  O = (0, p.default)(e.linkDirectionalParticleColor),
                  C = {},
                  S = {}
                J(x.filter(_), e.graphScene, {
                  objBindAttr: '__photonsObj',
                  objFilter: function (e) {
                    return 'photons' === e.__linkThreeObjType
                  },
                  createObj: function () {
                    var e = new ie.Group()
                    return (e.__linkThreeObjType = 'photons'), e
                  },
                  updateObj: function (t, n) {
                    var r,
                      i = Math.round(Math.abs(_(n))),
                      o = !!t.children.length && t.children[0],
                      a = Math.ceil(10 * T(n)) / 10 / 2,
                      s = e.linkDirectionalParticleResolution
                    o &&
                    o.geometry.parameters.radius === a &&
                    o.geometry.parameters.widthSegments === s
                      ? (r = o.geometry)
                      : (S.hasOwnProperty(a) || (S[a] = new ie.SphereBufferGeometry(a, s, s)),
                        (r = S[a]),
                        o && o.geometry.dispose())
                    var u,
                      l = O(n) || m(n) || '#f0f0f0',
                      c = new ie.Color(ee(l)),
                      d = 3 * e.linkOpacity
                    o && o.material.color.equals(c) && o.material.opacity === d
                      ? (u = o.material)
                      : (C.hasOwnProperty(l) ||
                          (C[l] = new ie.MeshLambertMaterial({
                            color: c,
                            transparent: !0,
                            opacity: d,
                          })),
                        (u = C[l]),
                        o && o.material.dispose()),
                      J(
                        W(new Array(i)).map(function (e, t) {
                          return { idx: t }
                        }),
                        t,
                        {
                          idAccessor: function (e) {
                            return e.idx
                          },
                          createObj: function () {
                            return new ie.Mesh(r, u)
                          },
                          updateObj: function (e) {
                            ;(e.geometry = r), (e.material = u)
                          },
                        },
                      )
                  },
                })
              }
            }
            if (
              ((e._flushObjects = !1),
              n([
                'graphData',
                'nodeId',
                'linkSource',
                'linkTarget',
                'numDimensions',
                'forceEngine',
                'dagMode',
                'dagNodeFilter',
                'dagLevelDistance',
              ]))
            ) {
              ;(e.engineRunning = !1),
                e.graphData.links.forEach(function (t) {
                  ;(t.source = t[e.linkSource]), (t.target = t[e.linkTarget])
                })
              var A,
                P = 'ngraph' !== e.forceEngine
              if (P) {
                ;(A = e.d3ForceLayout)
                  .stop()
                  .alpha(1)
                  .numDimensions(e.numDimensions)
                  .nodes(e.graphData.nodes)
                var M = e.d3ForceLayout.force('link')
                M &&
                  M.id(function (t) {
                    return t[e.nodeId]
                  }).links(e.graphData.links)
                var D =
                    e.dagMode &&
                    (function (e, t) {
                      var n = e.nodes,
                        r = e.links,
                        i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
                        o = i.nodeFilter,
                        a =
                          void 0 === o
                            ? function () {
                                return !0
                              }
                            : o,
                        s = i.onLoopError,
                        u =
                          void 0 === s
                            ? function (e) {
                                throw 'Invalid DAG structure! Found cycle in node path: '.concat(
                                  e.join(' -> '),
                                  '.',
                                )
                              }
                            : s,
                        l = {}
                      n.forEach(function (e) {
                        return (l[t(e)] = { data: e, out: [], depth: -1, skip: !a(e) })
                      }),
                        r.forEach(function (e) {
                          var n = e.source,
                            r = e.target,
                            i = u(n),
                            o = u(r)
                          if (!l.hasOwnProperty(i)) throw 'Missing source node with id: '.concat(i)
                          if (!l.hasOwnProperty(o)) throw 'Missing target node with id: '.concat(o)
                          var a = l[i],
                            s = l[o]
                          function u(e) {
                            return 'object' === j(e) ? t(e) : e
                          }
                          a.out.push(s)
                        })
                      var c = []
                      return (
                        d(Object.values(l)),
                        Object.assign.apply(
                          Object,
                          [{}].concat(
                            W(
                              Object.entries(l)
                                .filter(function (e) {
                                  return !q(e, 2)[1].skip
                                })
                                .map(function (e) {
                                  var t = q(e, 2)
                                  return L({}, t[0], t[1].depth)
                                }),
                            ),
                          ),
                        )
                      )
                      function d(e) {
                        for (
                          var n =
                              arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [],
                            r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0,
                            i = 0,
                            o = e.length;
                          i < o;
                          i++
                        ) {
                          var a = e[i]
                          if (-1 !== n.indexOf(a))
                            if (
                              'continue' ===
                              (function () {
                                var e = [].concat(W(n.slice(n.indexOf(a))), [a]).map(function (e) {
                                  return t(e.data)
                                })
                                return (
                                  c.some(function (t) {
                                    return (
                                      t.length === e.length &&
                                      t.every(function (t, n) {
                                        return t === e[n]
                                      })
                                    )
                                  }) || (c.push(e), u(e)),
                                  'continue'
                                )
                              })()
                            )
                              continue
                          r > a.depth &&
                            ((a.depth = r), d(a.out, [].concat(W(n), [a]), r + (a.skip ? 0 : 1)))
                        }
                      }
                    })(
                      e.graphData,
                      function (t) {
                        return t[e.nodeId]
                      },
                      { nodeFilter: e.dagNodeFilter, onLoopError: e.onDagError || void 0 },
                    ),
                  N = Math.max.apply(Math, W(Object.values(D || []))),
                  I =
                    e.dagLevelDistance ||
                    (e.graphData.nodes.length / (N || 1)) *
                      2 *
                      (-1 !== ['radialin', 'radialout'].indexOf(e.dagMode) ? 0.7 : 1)
                if (e.dagMode) {
                  var z = function (t, n) {
                      return function (r) {
                        return t ? (D[r[e.nodeId]] - N / 2) * I * (n ? -1 : 1) : void 0
                      }
                    },
                    H = z(-1 !== ['lr', 'rl'].indexOf(e.dagMode), 'rl' === e.dagMode),
                    B = z(-1 !== ['td', 'bu'].indexOf(e.dagMode), 'td' === e.dagMode),
                    F = z(-1 !== ['zin', 'zout'].indexOf(e.dagMode), 'zout' === e.dagMode)
                  e.graphData.nodes.filter(e.dagNodeFilter).forEach(function (e) {
                    ;(e.fx = H(e)), (e.fy = B(e)), (e.fz = F(e))
                  })
                }
                e.d3ForceLayout.force(
                  'dagRadial',
                  -1 !== ['radialin', 'radialout'].indexOf(e.dagMode)
                    ? (0, u.Z)(function (t) {
                        var n = D[t[e.nodeId]] || -1
                        return ('radialin' === e.dagMode ? N - n : n) * I
                      }).strength(function (t) {
                        return e.dagNodeFilter(t) ? 1 : 0
                      })
                    : null,
                )
              } else {
                var V = oe.graph()
                e.graphData.nodes.forEach(function (t) {
                  V.addNode(t[e.nodeId])
                }),
                  e.graphData.links.forEach(function (e) {
                    V.addLink(e.source, e.target)
                  }),
                  ((A = oe.forcelayout(
                    V,
                    R({ dimensions: e.numDimensions }, e.ngraphPhysics),
                  )).graph = V)
              }
              for (
                var U = 0;
                U < e.warmupTicks &&
                !(P && e.d3AlphaMin > 0 && e.d3ForceLayout.alpha() < e.d3AlphaMin);
                U++
              )
                A[P ? 'tick' : 'step']()
              ;(e.layout = A), this.resetCountdown()
            }
            ;(e.engineRunning = !0), e.onFinishUpdate()
          },
        }),
        (window.THREE ? window.THREE : { Group: r.ZAu }).Group,
        !0,
      )
    },
    6594: function (e, t, n) {
      'use strict'
      n.r(t),
        n.d(t, {
          Pathfinding: function () {
            return v
          },
        })
      var r = function () {}
      ;(r.computeCentroids = function (e) {
        var t, n, r
        for (t = 0, n = e.faces.length; t < n; t++)
          ((r = e.faces[t]).centroid = new THREE.Vector3(0, 0, 0)),
            r.centroid.add(e.vertices[r.a]),
            r.centroid.add(e.vertices[r.b]),
            r.centroid.add(e.vertices[r.c]),
            r.centroid.divideScalar(3)
      }),
        (r.roundNumber = function (e, t) {
          return Number(e.toFixed(t))
        }),
        (r.sample = function (e) {
          return e[Math.floor(Math.random() * e.length)]
        }),
        (r.mergeVertexIds = function (e, t) {
          var n = []
          if (
            (e.forEach(function (e) {
              t.indexOf(e) >= 0 && n.push(e)
            }),
            n.length < 2)
          )
            return []
          n.includes(e[0]) && n.includes(e[e.length - 1]) && e.push(e.shift()),
            n.includes(t[0]) && n.includes(t[t.length - 1]) && t.push(t.shift()),
            (n = []),
            e.forEach(function (e) {
              t.includes(e) && n.push(e)
            })
          for (var r = n[1], i = n[0], o = e.slice(); o[0] !== r; ) o.push(o.shift())
          for (var a = 0, s = t.slice(); s[0] !== i; )
            if ((s.push(s.shift()), a++ > 10)) throw new Error('Unexpected state')
          return s.shift(), s.pop(), o.concat(s)
        }),
        (r.setPolygonCentroid = function (e, t) {
          var n = new THREE.Vector3(),
            r = t.vertices
          e.vertexIds.forEach(function (e) {
            n.add(r[e])
          }),
            n.divideScalar(e.vertexIds.length),
            e.centroid.copy(n)
        }),
        (r.cleanPolygon = function (e, t) {
          for (var n = [], r = t.vertices, i = 0; i < e.vertexIds.length; i++) {
            var o,
              a,
              s,
              u = r[e.vertexIds[i]]
            0 === i
              ? ((o = e.vertexIds[1]), (a = e.vertexIds[e.vertexIds.length - 1]))
              : i === e.vertexIds.length - 1
              ? ((o = e.vertexIds[0]), (a = e.vertexIds[e.vertexIds.length - 2]))
              : ((o = e.vertexIds[i + 1]), (a = e.vertexIds[i - 1])),
              (s = r[a])
            var l = r[o].clone().sub(u),
              c = s.clone().sub(u),
              d = l.angleTo(c)
            if (d > Math.PI - 0.01 && d < Math.PI + 0.01) {
              var f = []
              e.neighbours.forEach(function (t) {
                t.vertexIds.includes(e.vertexIds[i]) || f.push(t)
              }),
                (e.neighbours = f)
            } else n.push(e.vertexIds[i])
          }
          ;(e.vertexIds = n), this.setPolygonCentroid(e, t)
        }),
        (r.isConvex = function (e, t) {
          var n = t.vertices
          if (e.vertexIds.length < 3) return !1
          for (var r = !0, i = [], o = 0; o < e.vertexIds.length; o++) {
            var a,
              s,
              u = n[e.vertexIds[o]]
            0 === o
              ? ((a = n[e.vertexIds[1]]), (s = n[e.vertexIds[e.vertexIds.length - 1]]))
              : o === e.vertexIds.length - 1
              ? ((a = n[e.vertexIds[0]]), (s = n[e.vertexIds[e.vertexIds.length - 2]]))
              : ((a = n[e.vertexIds[o + 1]]), (s = n[e.vertexIds[o - 1]]))
            var l = a.clone().sub(u),
              c = s.clone().sub(u),
              d = l.angleTo(c)
            if (d === Math.PI || 0 === d) return !1
            var f = l.cross(c).y
            i.push(f)
          }
          return (
            i.forEach(function (e) {
              0 === e && (r = !1)
            }),
            i.forEach(
              i[0] > 0
                ? function (e) {
                    e < 0 && (r = !1)
                  }
                : function (e) {
                    e > 0 && (r = !1)
                  },
            ),
            r
          )
        }),
        (r.distanceToSquared = function (e, t) {
          var n = e.x - t.x,
            r = e.y - t.y,
            i = e.z - t.z
          return n * n + r * r + i * i
        }),
        (r.isPointInPoly = function (e, t) {
          for (var n = !1, r = -1, i = e.length, o = i - 1; ++r < i; o = r)
            ((e[r].z <= t.z && t.z < e[o].z) || (e[o].z <= t.z && t.z < e[r].z)) &&
              t.x < ((e[o].x - e[r].x) * (t.z - e[r].z)) / (e[o].z - e[r].z) + e[r].x &&
              (n = !n)
          return n
        }),
        (r.isVectorInPolygon = function (e, t, n) {
          var r = 1e5,
            i = -1e5,
            o = []
          return (
            t.vertexIds.forEach(function (e) {
              ;(r = Math.min(n[e].y, r)), (i = Math.max(n[e].y, i)), o.push(n[e])
            }),
            !!(e.y < i + 0.5 && e.y > r - 0.5 && this.isPointInPoly(o, e))
          )
        }),
        (r.triarea2 = function (e, t, n) {
          return (n.x - e.x) * (t.z - e.z) - (t.x - e.x) * (n.z - e.z)
        }),
        (r.vequal = function (e, t) {
          return this.distanceToSquared(e, t) < 1e-5
        })
      var i = function (e) {
        ;(this.content = []), (this.scoreFunction = e)
      }
      ;(i.prototype.push = function (e) {
        this.content.push(e), this.sinkDown(this.content.length - 1)
      }),
        (i.prototype.pop = function () {
          var e = this.content[0],
            t = this.content.pop()
          return this.content.length > 0 && ((this.content[0] = t), this.bubbleUp(0)), e
        }),
        (i.prototype.remove = function (e) {
          var t = this.content.indexOf(e),
            n = this.content.pop()
          t !== this.content.length - 1 &&
            ((this.content[t] = n),
            this.scoreFunction(n) < this.scoreFunction(e) ? this.sinkDown(t) : this.bubbleUp(t))
        }),
        (i.prototype.size = function () {
          return this.content.length
        }),
        (i.prototype.rescoreElement = function (e) {
          this.sinkDown(this.content.indexOf(e))
        }),
        (i.prototype.sinkDown = function (e) {
          for (var t = this.content[e]; e > 0; ) {
            var n = ((e + 1) >> 1) - 1,
              r = this.content[n]
            if (!(this.scoreFunction(t) < this.scoreFunction(r))) break
            ;(this.content[n] = t), (this.content[e] = r), (e = n)
          }
        }),
        (i.prototype.bubbleUp = function (e) {
          for (var t = this.content.length, n = this.content[e], r = this.scoreFunction(n); ; ) {
            var i = (e + 1) << 1,
              o = i - 1,
              a = null,
              s = void 0
            if (
              (o < t && (s = this.scoreFunction(this.content[o])) < r && (a = o),
              i < t && this.scoreFunction(this.content[i]) < (null === a ? r : s) && (a = i),
              null === a)
            )
              break
            ;(this.content[e] = this.content[a]), (this.content[a] = n), (e = a)
          }
        })
      var o = function () {}
      ;(o.init = function (e) {
        for (var t = 0; t < e.length; t++) {
          var n = e[t]
          ;(n.f = 0),
            (n.g = 0),
            (n.h = 0),
            (n.cost = 1),
            (n.visited = !1),
            (n.closed = !1),
            (n.parent = null)
        }
      }),
        (o.cleanUp = function (e) {
          for (var t = 0; t < e.length; t++) {
            var n = e[t]
            delete n.f,
              delete n.g,
              delete n.h,
              delete n.cost,
              delete n.visited,
              delete n.closed,
              delete n.parent
          }
        }),
        (o.heap = function () {
          return new i(function (e) {
            return e.f
          })
        }),
        (o.search = function (e, t, n) {
          this.init(e)
          var r = this.heap()
          for (r.push(t); r.size() > 0; ) {
            var i = r.pop()
            if (i === n) {
              for (var o = i, a = []; o.parent; ) a.push(o), (o = o.parent)
              return this.cleanUp(a), a.reverse()
            }
            i.closed = !0
            for (var s = this.neighbours(e, i), u = 0, l = s.length; u < l; u++) {
              var c = s[u]
              if (!c.closed) {
                var d = i.g + c.cost,
                  f = c.visited
                if (!f || d < c.g) {
                  if (((c.visited = !0), (c.parent = i), !c.centroid || !n.centroid))
                    throw new Error('Unexpected state')
                  ;(c.h = c.h || this.heuristic(c.centroid, n.centroid)),
                    (c.g = d),
                    (c.f = c.g + c.h),
                    f ? r.rescoreElement(c) : r.push(c)
                }
              }
            }
          }
          return []
        }),
        (o.heuristic = function (e, t) {
          return r.distanceToSquared(e, t)
        }),
        (o.neighbours = function (e, t) {
          for (var n = [], r = 0; r < t.neighbours.length; r++) n.push(e[t.neighbours[r]])
          return n
        })
      var a = 1,
        s = function () {}
      ;(s.buildZone = function (e) {
        var t = this,
          n = this._buildNavigationMesh(e),
          i = {}
        n.vertices.forEach(function (e) {
          ;(e.x = r.roundNumber(e.x, 2)),
            (e.y = r.roundNumber(e.y, 2)),
            (e.z = r.roundNumber(e.z, 2))
        }),
          (i.vertices = n.vertices)
        var o = this._buildPolygonGroups(n)
        i.groups = []
        var a = function (e, t) {
          for (var n = 0; n < e.length; n++) if (t === e[n]) return n
        }
        return (
          o.forEach(function (e) {
            var n = []
            e.forEach(function (i) {
              var o = i.neighbours.map(function (t) {
                  return a(e, t)
                }),
                s = i.neighbours.map(function (e) {
                  return t._getSharedVerticesInOrder(i, e)
                })
              ;(i.centroid.x = r.roundNumber(i.centroid.x, 2)),
                (i.centroid.y = r.roundNumber(i.centroid.y, 2)),
                (i.centroid.z = r.roundNumber(i.centroid.z, 2)),
                n.push({
                  id: a(e, i),
                  neighbours: o,
                  vertexIds: i.vertexIds,
                  centroid: i.centroid,
                  portals: s,
                })
            }),
              i.groups.push(n)
          }),
          i
        )
      }),
        (s._buildNavigationMesh = function (e) {
          return r.computeCentroids(e), e.mergeVertices(), this._buildPolygonsFromGeometry(e)
        }),
        (s._buildPolygonGroups = function (e) {
          var t = [],
            n = 0,
            r = function (e) {
              e.neighbours.forEach(function (t) {
                void 0 === t.group && ((t.group = e.group), r(t))
              })
            }
          return (
            e.polygons.forEach(function (e) {
              void 0 === e.group && ((e.group = n++), r(e)),
                t[e.group] || (t[e.group] = []),
                t[e.group].push(e)
            }),
            t
          )
        }),
        (s._buildPolygonNeighbours = function (e, t, n) {
          var r = new Set(),
            i = n.get(e.vertexIds[0]),
            o = n.get(e.vertexIds[1]),
            a = n.get(e.vertexIds[2])
          i.forEach(function (e) {
            ;(o.has(e) || a.has(e)) && r.add(t.polygons[e])
          }),
            o.forEach(function (e) {
              a.has(e) && r.add(t.polygons[e])
            }),
            (e.neighbours = Array.from(r))
        }),
        (s._buildPolygonsFromGeometry = function (e) {
          for (
            var t = this, n = [], r = e.vertices, i = e.faceVertexUvs, o = new Map(), s = 0;
            s < r.length;
            s++
          )
            o.set(s, new Set())
          e.faces.forEach(function (e) {
            n.push({
              id: a++,
              vertexIds: [e.a, e.b, e.c],
              centroid: e.centroid,
              normal: e.normal,
              neighbours: [],
            }),
              o.get(e.a).add(n.length - 1),
              o.get(e.b).add(n.length - 1),
              o.get(e.c).add(n.length - 1)
          })
          var u = { polygons: n, vertices: r, faceVertexUvs: i }
          return (
            n.forEach(function (e) {
              t._buildPolygonNeighbours(e, u, o)
            }),
            u
          )
        }),
        (s._getSharedVerticesInOrder = function (e, t) {
          var n = e.vertexIds,
            r = t.vertexIds,
            i = new Set()
          if (
            (n.forEach(function (e) {
              r.includes(e) && i.add(e)
            }),
            i.size < 2)
          )
            return []
          i.has(n[0]) && i.has(n[n.length - 1]) && n.push(n.shift()),
            i.has(r[0]) && i.has(r[r.length - 1]) && r.push(r.shift())
          var o = []
          return (
            n.forEach(function (e) {
              r.includes(e) && o.push(e)
            }),
            o
          )
        })
      var u = function () {
        this.portals = []
      }
      ;(u.prototype.push = function (e, t) {
        void 0 === t && (t = e), this.portals.push({ left: e, right: t })
      }),
        (u.prototype.stringPull = function () {
          var e,
            t,
            n,
            i = this.portals,
            o = [],
            a = 0,
            s = 0,
            u = 0
          ;(t = i[0].left), (n = i[0].right), o.push((e = i[0].left))
          for (var l = 1; l < i.length; l++) {
            var c = i[l].left,
              d = i[l].right
            if (r.triarea2(e, n, d) <= 0) {
              if (!(r.vequal(e, n) || r.triarea2(e, t, d) > 0)) {
                o.push(t), (t = e = t), (n = e), (s = a = s), (u = a), (l = a)
                continue
              }
              ;(n = d), (u = l)
            }
            if (r.triarea2(e, t, c) >= 0) {
              if (!(r.vequal(e, t) || r.triarea2(e, n, c) < 0)) {
                o.push(n), (t = e = n), (n = e), (s = a = u), (u = a), (l = a)
                continue
              }
              ;(t = c), (s = l)
            }
          }
          return (
            (0 !== o.length && r.vequal(o[o.length - 1], i[i.length - 1].left)) ||
              o.push(i[i.length - 1].left),
            (this.path = o),
            o
          )
        })
      var l,
        c,
        d,
        f,
        h,
        p,
        v = function () {
          this.zones = {}
        }
      ;(v.createZone = function (e) {
        return s.buildZone(e)
      }),
        (v.prototype.setZoneData = function (e, t) {
          this.zones[e] = t
        }),
        (v.prototype.getGroup = function (e, t) {
          if (!this.zones[e]) return null
          var n = null,
            i = Math.pow(50, 2)
          return (
            this.zones[e].groups.forEach(function (e, o) {
              e.forEach(function (e) {
                var a = r.distanceToSquared(e.centroid, t)
                a < i && ((n = o), (i = a))
              })
            }),
            n
          )
        }),
        (v.prototype.getRandomNode = function (e, t, n, i) {
          if (!this.zones[e]) return new THREE.Vector3()
          ;(n = n || null), (i = i || 0)
          var o = []
          return (
            this.zones[e].groups[t].forEach(function (e) {
              n && i
                ? r.distanceToSquared(n, e.centroid) < i * i && o.push(e.centroid)
                : o.push(e.centroid)
            }),
            r.sample(o) || new THREE.Vector3()
          )
        }),
        (v.prototype.getClosestNode = function (e, t, n, i) {
          void 0 === i && (i = !1)
          var o = this.zones[t].vertices,
            a = null,
            s = 1 / 0
          return (
            this.zones[t].groups[n].forEach(function (t) {
              var n = r.distanceToSquared(t.centroid, e)
              n < s && (!i || r.isVectorInPolygon(e, t, o)) && ((a = t), (s = n))
            }),
            a
          )
        }),
        (v.prototype.findPath = function (e, t, n, r) {
          var i = this.zones[n].groups[r],
            a = this.zones[n].vertices,
            s = this.getClosestNode(e, n, r),
            l = this.getClosestNode(t, n, r, !0)
          if (!s || !l) return null
          var c = o.search(i, s, l),
            d = function (e, t) {
              for (var n = 0; n < e.neighbours.length; n++)
                if (e.neighbours[n] === t.id) return e.portals[n]
            },
            f = new u()
          f.push(e)
          for (var h = 0; h < c.length; h++) {
            var p = c[h + 1]
            if (p) {
              var v = d(c[h], p)
              f.push(a[v[0]], a[v[1]])
            }
          }
          f.push(t), f.stringPull()
          var m = f.path.map(function (e) {
            return new THREE.Vector3(e.x, e.y, e.z)
          })
          return m.shift(), m
        }),
        (v.prototype.clampStep =
          ((d = new THREE.Vector3()),
          (f = new THREE.Plane()),
          (h = new THREE.Triangle()),
          (p = new THREE.Vector3()),
          function (e, t, n, r, i, o) {
            var a = this.zones[r].vertices,
              s = this.zones[r].groups[i],
              u = [n],
              v = {}
            ;(v[n.id] = 0),
              (l = void 0),
              p.set(0, 0, 0),
              (c = 1 / 0),
              f.setFromCoplanarPoints(a[n.vertexIds[0]], a[n.vertexIds[1]], a[n.vertexIds[2]]),
              f.projectPoint(t, d),
              t.copy(d)
            for (var m = u.pop(); m; m = u.pop()) {
              h.set(a[m.vertexIds[0]], a[m.vertexIds[1]], a[m.vertexIds[2]]),
                h.closestPointToPoint(t, d),
                d.distanceToSquared(t) < c && ((l = m), p.copy(d), (c = d.distanceToSquared(t)))
              var g = v[m]
              if (!(g > 2))
                for (var y = 0; y < m.neighbours.length; y++) {
                  var b = s[m.neighbours[y]]
                  b.id in v || (u.push(b), (v[b.id] = g + 1))
                }
            }
            return o.copy(p), l
          }))
    },
    1122: function (e, t, n) {
      'use strict'
      var r = n(2212)
      function i(e, t) {
        if (!(e instanceof t)) throw new TypeError('Cannot call a class as a function')
      }
      function o(e, t) {
        for (var n = 0; n < t.length; n++) {
          var r = t[n]
          ;(r.enumerable = r.enumerable || !1),
            (r.configurable = !0),
            'value' in r && (r.writable = !0),
            Object.defineProperty(e, r.key, r)
        }
      }
      function a(e) {
        return (a = Object.setPrototypeOf
          ? Object.getPrototypeOf
          : function (e) {
              return e.__proto__ || Object.getPrototypeOf(e)
            })(e)
      }
      function s(e, t) {
        return (s =
          Object.setPrototypeOf ||
          function (e, t) {
            return (e.__proto__ = t), e
          })(e, t)
      }
      function u(e, t) {
        return !t || ('object' !== typeof t && 'function' !== typeof t)
          ? (function (e) {
              if (void 0 === e)
                throw new ReferenceError(
                  "this hasn't been initialised - super() hasn't been called",
                )
              return e
            })(e)
          : t
      }
      function l(e) {
        var t = (function () {
          if ('undefined' === typeof Reflect || !Reflect.construct) return !1
          if (Reflect.construct.sham) return !1
          if ('function' === typeof Proxy) return !0
          try {
            return (
              Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})), !0
            )
          } catch (e) {
            return !1
          }
        })()
        return function () {
          var n,
            r = a(e)
          if (t) {
            var i = a(this).constructor
            n = Reflect.construct(r, arguments, i)
          } else n = r.apply(this, arguments)
          return u(this, n)
        }
      }
      function c(e, t) {
        return (
          (function (e) {
            if (Array.isArray(e)) return e
          })(e) ||
          (function (e, t) {
            var n = e && (('undefined' !== typeof Symbol && e[Symbol.iterator]) || e['@@iterator'])
            if (null == n) return
            var r,
              i,
              o = [],
              a = !0,
              s = !1
            try {
              for (
                n = n.call(e);
                !(a = (r = n.next()).done) && (o.push(r.value), !t || o.length !== t);
                a = !0
              );
            } catch (u) {
              ;(s = !0), (i = u)
            } finally {
              try {
                a || null == n.return || n.return()
              } finally {
                if (s) throw i
              }
            }
            return o
          })(e, t) ||
          f(e, t) ||
          (function () {
            throw new TypeError(
              'Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.',
            )
          })()
        )
      }
      function d(e) {
        return (
          (function (e) {
            if (Array.isArray(e)) return h(e)
          })(e) ||
          (function (e) {
            if (
              ('undefined' !== typeof Symbol && null != e[Symbol.iterator]) ||
              null != e['@@iterator']
            )
              return Array.from(e)
          })(e) ||
          f(e) ||
          (function () {
            throw new TypeError(
              'Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.',
            )
          })()
        )
      }
      function f(e, t) {
        if (e) {
          if ('string' === typeof e) return h(e, t)
          var n = Object.prototype.toString.call(e).slice(8, -1)
          return (
            'Object' === n && e.constructor && (n = e.constructor.name),
            'Map' === n || 'Set' === n
              ? Array.from(e)
              : 'Arguments' === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)
              ? h(e, t)
              : void 0
          )
        }
      }
      function h(e, t) {
        ;(null == t || t > e.length) && (t = e.length)
        for (var n = 0, r = new Array(t); n < t; n++) r[n] = e[n]
        return r
      }
      var p =
          'undefined' !== typeof window && window.THREE
            ? window.THREE
            : { LinearFilter: r.wem, Sprite: r.jyi, SpriteMaterial: r.xeV, Texture: r.xEZ },
        v = (function (e) {
          !(function (e, t) {
            if ('function' !== typeof t && null !== t)
              throw new TypeError('Super expression must either be null or a function')
            ;(e.prototype = Object.create(t && t.prototype, {
              constructor: { value: e, writable: !0, configurable: !0 },
            })),
              t && s(e, t)
          })(u, e)
          var t,
            n,
            r,
            a = l(u)
          function u() {
            var e,
              t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : '',
              n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 10,
              r =
                arguments.length > 2 && void 0 !== arguments[2]
                  ? arguments[2]
                  : 'rgba(255, 255, 255, 1)'
            return (
              i(this, u),
              ((e = a.call(this, new p.SpriteMaterial({ map: new p.Texture() })))._text = ''.concat(
                t,
              )),
              (e._textHeight = n),
              (e._color = r),
              (e._backgroundColor = !1),
              (e._padding = 0),
              (e._borderWidth = 0),
              (e._borderRadius = 0),
              (e._borderColor = 'white'),
              (e._strokeWidth = 0),
              (e._strokeColor = 'white'),
              (e._fontFace = 'Arial'),
              (e._fontSize = 90),
              (e._fontWeight = 'normal'),
              (e._canvas = document.createElement('canvas')),
              (e._texture = e.material.map),
              (e._texture.minFilter = p.LinearFilter),
              e._genCanvas(),
              e
            )
          }
          return (
            (t = u),
            (n = [
              {
                key: 'text',
                get: function () {
                  return this._text
                },
                set: function (e) {
                  ;(this._text = e), this._genCanvas()
                },
              },
              {
                key: 'textHeight',
                get: function () {
                  return this._textHeight
                },
                set: function (e) {
                  ;(this._textHeight = e), this._genCanvas()
                },
              },
              {
                key: 'color',
                get: function () {
                  return this._color
                },
                set: function (e) {
                  ;(this._color = e), this._genCanvas()
                },
              },
              {
                key: 'backgroundColor',
                get: function () {
                  return this._backgroundColor
                },
                set: function (e) {
                  ;(this._backgroundColor = e), this._genCanvas()
                },
              },
              {
                key: 'padding',
                get: function () {
                  return this._padding
                },
                set: function (e) {
                  ;(this._padding = e), this._genCanvas()
                },
              },
              {
                key: 'borderWidth',
                get: function () {
                  return this._borderWidth
                },
                set: function (e) {
                  ;(this._borderWidth = e), this._genCanvas()
                },
              },
              {
                key: 'borderRadius',
                get: function () {
                  return this._borderRadius
                },
                set: function (e) {
                  ;(this._borderRadius = e), this._genCanvas()
                },
              },
              {
                key: 'borderColor',
                get: function () {
                  return this._borderColor
                },
                set: function (e) {
                  ;(this._borderColor = e), this._genCanvas()
                },
              },
              {
                key: 'fontFace',
                get: function () {
                  return this._fontFace
                },
                set: function (e) {
                  ;(this._fontFace = e), this._genCanvas()
                },
              },
              {
                key: 'fontSize',
                get: function () {
                  return this._fontSize
                },
                set: function (e) {
                  ;(this._fontSize = e), this._genCanvas()
                },
              },
              {
                key: 'fontWeight',
                get: function () {
                  return this._fontWeight
                },
                set: function (e) {
                  ;(this._fontWeight = e), this._genCanvas()
                },
              },
              {
                key: 'strokeWidth',
                get: function () {
                  return this._strokeWidth
                },
                set: function (e) {
                  ;(this._strokeWidth = e), this._genCanvas()
                },
              },
              {
                key: 'strokeColor',
                get: function () {
                  return this._strokeColor
                },
                set: function (e) {
                  ;(this._strokeColor = e), this._genCanvas()
                },
              },
              {
                key: '_genCanvas',
                value: function () {
                  var e = this,
                    t = this._canvas,
                    n = t.getContext('2d'),
                    r = Array.isArray(this.borderWidth)
                      ? this.borderWidth
                      : [this.borderWidth, this.borderWidth],
                    i = r.map(function (t) {
                      return t * e.fontSize * 0.1
                    }),
                    o = (
                      Array.isArray(this.borderRadius)
                        ? this.borderRadius
                        : [
                            this.borderRadius,
                            this.borderRadius,
                            this.borderRadius,
                            this.borderRadius,
                          ]
                    ).map(function (t) {
                      return t * e.fontSize * 0.1
                    }),
                    a = Array.isArray(this.padding) ? this.padding : [this.padding, this.padding],
                    s = a.map(function (t) {
                      return t * e.fontSize * 0.1
                    }),
                    u = this.text.split('\n'),
                    l = ''
                      .concat(this.fontWeight, ' ')
                      .concat(this.fontSize, 'px ')
                      .concat(this.fontFace)
                  n.font = l
                  var f = Math.max.apply(
                      Math,
                      d(
                        u.map(function (e) {
                          return n.measureText(e).width
                        }),
                      ),
                    ),
                    h = this.fontSize * u.length
                  if (
                    ((t.width = f + 2 * i[0] + 2 * s[0]),
                    (t.height = h + 2 * i[1] + 2 * s[1]),
                    this.borderWidth)
                  ) {
                    if (((n.strokeStyle = this.borderColor), i[0])) {
                      var p = i[0] / 2
                      ;(n.lineWidth = i[0]),
                        n.beginPath(),
                        n.moveTo(p, o[0]),
                        n.lineTo(p, t.height - o[3]),
                        n.moveTo(t.width - p, o[1]),
                        n.lineTo(t.width - p, t.height - o[2]),
                        n.stroke()
                    }
                    if (i[1]) {
                      var v = i[1] / 2
                      ;(n.lineWidth = i[1]),
                        n.beginPath(),
                        n.moveTo(Math.max(i[0], o[0]), v),
                        n.lineTo(t.width - Math.max(i[0], o[1]), v),
                        n.moveTo(Math.max(i[0], o[3]), t.height - v),
                        n.lineTo(t.width - Math.max(i[0], o[2]), t.height - v),
                        n.stroke()
                    }
                    if (this.borderRadius) {
                      var m = Math.max.apply(Math, d(i)),
                        g = m / 2
                      ;(n.lineWidth = m),
                        n.beginPath(),
                        [
                          !!o[0] && [o[0], g, g, o[0]],
                          !!o[1] && [t.width - o[1], t.width - g, g, o[1]],
                          !!o[2] && [t.width - o[2], t.width - g, t.height - g, t.height - o[2]],
                          !!o[3] && [o[3], g, t.height - g, t.height - o[3]],
                        ]
                          .filter(function (e) {
                            return e
                          })
                          .forEach(function (e) {
                            var t = c(e, 4),
                              r = t[0],
                              i = t[1],
                              o = t[2],
                              a = t[3]
                            n.moveTo(r, o), n.quadraticCurveTo(i, o, i, a)
                          }),
                        n.stroke()
                    }
                  }
                  this.backgroundColor &&
                    ((n.fillStyle = this.backgroundColor),
                    this.borderRadius
                      ? (n.beginPath(),
                        n.moveTo(i[0], o[0]),
                        [
                          [i[0], o[0], t.width - o[1], i[1], i[1], i[1]],
                          [
                            t.width - i[0],
                            t.width - i[0],
                            t.width - i[0],
                            i[1],
                            o[1],
                            t.height - o[2],
                          ],
                          [
                            t.width - i[0],
                            t.width - o[2],
                            o[3],
                            t.height - i[1],
                            t.height - i[1],
                            t.height - i[1],
                          ],
                          [i[0], i[0], i[0], t.height - i[1], t.height - o[3], o[0]],
                        ].forEach(function (e) {
                          var t = c(e, 6),
                            r = t[0],
                            i = t[1],
                            o = t[2],
                            a = t[3],
                            s = t[4],
                            u = t[5]
                          n.quadraticCurveTo(r, a, i, s), n.lineTo(o, u)
                        }),
                        n.closePath(),
                        n.fill())
                      : n.fillRect(i[0], i[1], t.width - 2 * i[0], t.height - 2 * i[1])),
                    n.translate.apply(n, d(i)),
                    n.translate.apply(n, d(s)),
                    (n.font = l),
                    (n.fillStyle = this.color),
                    (n.textBaseline = 'bottom')
                  var y = this.strokeWidth > 0
                  y &&
                    ((n.lineWidth = (this.strokeWidth * this.fontSize) / 10),
                    (n.strokeStyle = this.strokeColor)),
                    u.forEach(function (t, r) {
                      var i = (f - n.measureText(t).width) / 2,
                        o = (r + 1) * e.fontSize
                      y && n.strokeText(t, i, o), n.fillText(t, i, o)
                    }),
                    (this._texture.image = t),
                    (this._texture.needsUpdate = !0)
                  var b = this.textHeight * u.length + 2 * r[1] + 2 * a[1]
                  this.scale.set((b * t.width) / t.height, b, 0)
                },
              },
              {
                key: 'clone',
                value: function () {
                  return new this.constructor(this.text, this.textHeight, this.color).copy(this)
                },
              },
              {
                key: 'copy',
                value: function (e) {
                  return (
                    p.Sprite.prototype.copy.call(this, e),
                    (this.color = e.color),
                    (this.backgroundColor = e.backgroundColor),
                    (this.padding = e.padding),
                    (this.borderWidth = e.borderWidth),
                    (this.borderColor = e.borderColor),
                    (this.fontFace = e.fontFace),
                    (this.fontSize = e.fontSize),
                    (this.fontWeight = e.fontWeight),
                    (this.strokeWidth = e.strokeWidth),
                    (this.strokeColor = e.strokeColor),
                    this
                  )
                },
              },
            ]) && o(t.prototype, n),
            r && o(t, r),
            u
          )
        })(p.Sprite)
      t.Z = v
    },
    6189: function (e, t, n) {
      var r = n(7966)
      e.exports = function (e) {
        return r(e).replace(/\s(\w)/g, function (e, t) {
          return t.toUpperCase()
        })
      }
    },
    1788: function (e) {
      e.exports = function (e) {
        return t.test(e)
          ? e.toLowerCase()
          : n.test(e)
          ? (
              (function (e) {
                return e.replace(i, function (e, t) {
                  return t ? ' ' + t : ''
                })
              })(e) || e
            ).toLowerCase()
          : r.test(e)
          ? (function (e) {
              return e.replace(o, function (e, t, n) {
                return t + ' ' + n.toLowerCase().split('').join(' ')
              })
            })(e).toLowerCase()
          : e.toLowerCase()
      }
      var t = /\s/,
        n = /(_|-|\.|:)/,
        r = /([a-z][A-Z]|[A-Z][a-z])/
      var i = /[\W_]+(.|$)/g
      var o = /(.)([A-Z]+)/g
    },
    7966: function (e, t, n) {
      var r = n(1788)
      e.exports = function (e) {
        return r(e)
          .replace(/[\W_]+(.|$)/g, function (e, t) {
            return t ? ' ' + t : ''
          })
          .trim()
      }
    },
  },
])