@thednp/color-picker 2.0.0-alpha7 → 2.0.0-alpha9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
 - package/compile.js +6 -3
 - package/cypress/e2e/color-picker.cy.ts +58 -69
 - package/cypress/fixtures/getMarkup.js +8 -1
 - package/dist/css/color-picker.css +7 -15
 - package/dist/css/color-picker.min.css +2 -2
 - package/dist/css/color-picker.rtl.css +7 -15
 - package/dist/css/color-picker.rtl.min.css +2 -2
 - package/dist/js/color-picker.cjs +2 -2
 - package/dist/js/color-picker.cjs.map +1 -1
 - package/dist/js/color-picker.d.ts +23 -7
 - package/dist/js/color-picker.js +2 -2
 - package/dist/js/color-picker.js.map +1 -1
 - package/dist/js/color-picker.mjs +202 -203
 - package/dist/js/color-picker.mjs.map +1 -1
 - package/package.json +115 -114
 - package/src/scss/color-picker.scss +6 -10
 - package/src/ts/index.ts +11 -11
 - package/src/ts/interface/ColorNames.ts +20 -0
 - package/cypress/fixtures/getCEMarkup.js +0 -29
 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"color-picker.mjs","sources":["../../node_modules/@thednp/event-listener/dist/event-listener.mjs","../../node_modules/@thednp/shorty/dist/shorty.mjs","../../node_modules/@thednp/color/dist/index.mjs","../../src/ts/colorPalette.ts","../../src/ts/util/colorPickerLabels.ts","../../src/ts/util/colorNames.ts","../../src/ts/util/isValidJSON.ts","../../src/ts/util/vHidden.ts","../../src/ts/util/getColorForm.ts","../../src/ts/util/getColorControls.ts","../../src/ts/util/getColorMenu.ts","../../src/ts/util/setMarkup.ts","../../src/ts/index.ts"],"sourcesContent":["const e = {}, f = (t) => {\n  const { type: c, currentTarget: i } = t;\n  [...e[c]].forEach(([n, s]) => {\n    i === n && [...s].forEach(([o, a]) => {\n      o.apply(n, [t]), typeof a == \"object\" && a.once && r(n, c, o, a);\n    });\n  });\n}, E = (t, c, i, n) => {\n  e[c] || (e[c] = /* @__PURE__ */ new Map());\n  const s = e[c];\n  s.has(t) || s.set(t, /* @__PURE__ */ new Map());\n  const o = s.get(t), { size: a } = o;\n  o.set(i, n), a || t.addEventListener(c, f, n);\n}, r = (t, c, i, n) => {\n  const s = e[c], o = s && s.get(t), a = o && o.get(i), d = a !== void 0 ? a : n;\n  o && o.has(i) && o.delete(i), s && (!o || !o.size) && s.delete(t), (!s || !s.size) && delete e[c], (!o || !o.size) && t.removeEventListener(c, f, d);\n}, g = E, M = r;\nexport {\n  E as addListener,\n  f as globalListener,\n  M as off,\n  g as on,\n  e as registry,\n  r as removeListener\n};\n//# sourceMappingURL=event-listener.mjs.map\n","const pe = \"aria-checked\", fe = \"aria-description\", me = \"aria-describedby\", ge = \"aria-expanded\", ve = \"aria-haspopup\", Ee = \"aria-hidden\", be = \"aria-label\", he = \"aria-labelledby\", ye = \"aria-modal\", we = \"aria-pressed\", Ae = \"aria-selected\", Se = \"aria-valuemin\", Me = \"aria-valuemax\", Ne = \"aria-valuenow\", ke = \"aria-valuetext\", G = \"abort\", j = \"beforeunload\", J = \"blur\", K = \"change\", X = \"contextmenu\", P = \"DOMContentLoaded\", Y = \"DOMMouseScroll\", Z = \"error\", $ = \"focus\", _ = \"focusin\", tt = \"focusout\", et = \"gesturechange\", nt = \"gestureend\", ot = \"gesturestart\", st = \"keydown\", ct = \"keypress\", rt = \"keyup\", at = \"load\", it = \"click\", ut = \"dblclick\", lt = \"mousedown\", dt = \"mouseup\", pt = \"hover\", ft = \"mouseenter\", mt = \"mouseleave\", gt = \"mousein\", vt = \"mouseout\", Et = \"mouseover\", bt = \"mousemove\", ht = \"mousewheel\", yt = \"move\", wt = \"orientationchange\", At = \"pointercancel\", St = \"pointerdown\", Mt = \"pointerleave\", Nt = \"pointermove\", kt = \"pointerup\", Tt = \"readystatechange\", Dt = \"reset\", Ct = \"resize\", Lt = \"select\", Ot = \"selectend\", It = \"selectstart\", zt = \"scroll\", xt = \"submit\", Vt = \"touchstart\", Bt = \"touchmove\", Ht = \"touchcancel\", Pt = \"touchend\", Ut = \"unload\", Te = {\n  DOMContentLoaded: P,\n  DOMMouseScroll: Y,\n  abort: G,\n  beforeunload: j,\n  blur: J,\n  change: K,\n  click: it,\n  contextmenu: X,\n  dblclick: ut,\n  error: Z,\n  focus: $,\n  focusin: _,\n  focusout: tt,\n  gesturechange: et,\n  gestureend: nt,\n  gesturestart: ot,\n  hover: pt,\n  keydown: st,\n  keypress: ct,\n  keyup: rt,\n  load: at,\n  mousedown: lt,\n  mousemove: bt,\n  mousein: gt,\n  mouseout: vt,\n  mouseenter: ft,\n  mouseleave: mt,\n  mouseover: Et,\n  mouseup: dt,\n  mousewheel: ht,\n  move: yt,\n  orientationchange: wt,\n  pointercancel: At,\n  pointerdown: St,\n  pointerleave: Mt,\n  pointermove: Nt,\n  pointerup: kt,\n  readystatechange: Tt,\n  reset: Dt,\n  resize: Ct,\n  scroll: zt,\n  select: Lt,\n  selectend: Ot,\n  selectstart: It,\n  submit: xt,\n  touchcancel: Ht,\n  touchend: Pt,\n  touchmove: Bt,\n  touchstart: Vt,\n  unload: Ut\n}, De = \"drag\", Ce = \"dragstart\", Le = \"dragenter\", Oe = \"dragleave\", Ie = \"dragover\", ze = \"dragend\", xe = \"loadstart\", Ve = {\n  start: \"mousedown\",\n  end: \"mouseup\",\n  move: \"mousemove\",\n  cancel: \"mouseleave\"\n}, Be = { down: \"mousedown\", up: \"mouseup\" }, He = \"onmouseleave\" in document ? [\"mouseenter\", \"mouseleave\"] : (\n  /* istanbul ignore next */\n  [\"mouseover\", \"mouseout\"]\n), Pe = {\n  start: \"touchstart\",\n  end: \"touchend\",\n  move: \"touchmove\",\n  cancel: \"touchcancel\"\n}, Ue = { in: \"focusin\", out: \"focusout\" }, Fe = {\n  Backspace: \"Backspace\",\n  //  8\n  Tab: \"Tab\",\n  //  9\n  Enter: \"Enter\",\n  // 13\n  Shift: \"Shift\",\n  // 16\n  Control: \"Control\",\n  // 17\n  Alt: \"Alt\",\n  // 18\n  Pause: \"Pause\",\n  // 19\n  CapsLock: \"CapsLock\",\n  // 20\n  Escape: \"Escape\",\n  // 27\n  Scape: \"Space\",\n  // 32\n  ArrowLeft: \"ArrowLeft\",\n  // 37\n  ArrowUp: \"ArrowUp\",\n  // 38\n  ArrowRight: \"ArrowRight\",\n  // 39\n  ArrowDown: \"ArrowDown\",\n  // 40\n  Insert: \"Insert\",\n  // 45\n  Delete: \"Delete\",\n  // 46\n  Meta: \"Meta\",\n  // 91 windows key\n  ContextMenu: \"ContextMenu\",\n  // 93\n  ScrollLock: \"ScrollLock\"\n  // 145\n}, We = \"Alt\", Re = \"ArrowDown\", Qe = \"ArrowUp\", qe = \"ArrowLeft\", Ge = \"ArrowRight\", je = \"Backspace\", Je = \"CapsLock\", Ke = \"Control\", Xe = \"Delete\", Ye = \"Enter\", Ze = \"Escape\", $e = \"Insert\", _e = \"Meta\", tn = \"Pause\", en = \"ScrollLock\", nn = \"Shift\", on = \"Space\", sn = \"Tab\", Ft = \"animationDuration\", Wt = \"animationDelay\", U = \"animationName\", D = \"animationend\", Rt = \"transitionDuration\", Qt = \"transitionDelay\", C = \"transitionend\", F = \"transitionProperty\", cn = \"addEventListener\", rn = \"removeEventListener\", an = {\n  linear: \"linear\",\n  easingSinusoidalIn: \"cubic-bezier(0.47,0,0.745,0.715)\",\n  easingSinusoidalOut: \"cubic-bezier(0.39,0.575,0.565,1)\",\n  easingSinusoidalInOut: \"cubic-bezier(0.445,0.05,0.55,0.95)\",\n  easingQuadraticIn: \"cubic-bezier(0.550,0.085,0.680,0.530)\",\n  easingQuadraticOut: \"cubic-bezier(0.250,0.460,0.450,0.940)\",\n  easingQuadraticInOut: \"cubic-bezier(0.455,0.030,0.515,0.955)\",\n  easingCubicIn: \"cubic-bezier(0.55,0.055,0.675,0.19)\",\n  easingCubicOut: \"cubic-bezier(0.215,0.61,0.355,1)\",\n  easingCubicInOut: \"cubic-bezier(0.645,0.045,0.355,1)\",\n  easingQuarticIn: \"cubic-bezier(0.895,0.03,0.685,0.22)\",\n  easingQuarticOut: \"cubic-bezier(0.165,0.84,0.44,1)\",\n  easingQuarticInOut: \"cubic-bezier(0.77,0,0.175,1)\",\n  easingQuinticIn: \"cubic-bezier(0.755,0.05,0.855,0.06)\",\n  easingQuinticOut: \"cubic-bezier(0.23,1,0.32,1)\",\n  easingQuinticInOut: \"cubic-bezier(0.86,0,0.07,1)\",\n  easingExponentialIn: \"cubic-bezier(0.95,0.05,0.795,0.035)\",\n  easingExponentialOut: \"cubic-bezier(0.19,1,0.22,1)\",\n  easingExponentialInOut: \"cubic-bezier(1,0,0,1)\",\n  easingCircularIn: \"cubic-bezier(0.6,0.04,0.98,0.335)\",\n  easingCircularOut: \"cubic-bezier(0.075,0.82,0.165,1)\",\n  easingCircularInOut: \"cubic-bezier(0.785,0.135,0.15,0.86)\",\n  easingBackIn: \"cubic-bezier(0.6,-0.28,0.735,0.045)\",\n  easingBackOut: \"cubic-bezier(0.175,0.885,0.32,1.275)\",\n  easingBackInOut: \"cubic-bezier(0.68,-0.55,0.265,1.55)\"\n}, un = \"offsetHeight\", ln = \"offsetWidth\", dn = \"scrollHeight\", pn = \"scrollWidth\", fn = \"tabindex\", qt = navigator.userAgentData, A = qt, { userAgent: Gt } = navigator, S = Gt, z = /iPhone|iPad|iPod|Android/i;\nlet L = !1;\nA ? L = A.brands.some((t) => z.test(t.brand)) : L = z.test(S);\nconst mn = L, x = /(iPhone|iPod|iPad)/, gn = A ? A.brands.some((t) => x.test(t.brand)) : (\n  /* istanbul ignore next */\n  x.test(S)\n), vn = S ? S.includes(\"Firefox\") : (\n  /* istanbul ignore next */\n  !1\n), { head: M } = document, En = [\"webkitPerspective\", \"perspective\"].some((t) => t in M.style), jt = (t, e, n, o) => {\n  const s = o || !1;\n  t.addEventListener(e, n, s);\n}, Jt = (t, e, n, o) => {\n  const s = o || !1;\n  t.removeEventListener(e, n, s);\n}, Kt = (t, e, n, o) => {\n  const s = (r) => {\n    (r.target === t || r.currentTarget === t) && (n.apply(t, [r]), Jt(t, e, s, o));\n  };\n  jt(t, e, s, o);\n}, Xt = () => {\n}, bn = (() => {\n  let t = !1;\n  try {\n    const e = Object.defineProperty({}, \"passive\", {\n      get: () => (t = !0, t)\n    });\n    Kt(document, P, Xt, e);\n  } catch {\n  }\n  return t;\n})(), hn = [\"webkitTransform\", \"transform\"].some((t) => t in M.style), yn = \"ontouchstart\" in window || /* istanbul ignore next */\n\"msMaxTouchPoints\" in navigator, wn = [\"webkitAnimation\", \"animation\"].some((t) => t in M.style), An = [\"webkitTransition\", \"transition\"].some((t) => t in M.style), Yt = (t, e) => t.getAttribute(e), Sn = (t, e, n) => e.getAttributeNS(t, n), Mn = (t, e) => t.hasAttribute(e), Nn = (t, e, n) => e.hasAttributeNS(t, n), kn = (t, e, n) => t.setAttribute(e, n), Tn = (t, e, n, o) => e.setAttributeNS(t, n, o), Dn = (t, e) => t.removeAttribute(e), Cn = (t, e, n) => e.removeAttributeNS(t, n), Ln = (t, ...e) => {\n  t.classList.add(...e);\n}, On = (t, ...e) => {\n  t.classList.remove(...e);\n}, In = (t, e) => t.classList.contains(e), { body: zn } = document, { documentElement: xn } = document, Vn = (t) => Array.from(t), v = (t) => t != null && typeof t == \"object\" || !1, i = (t) => v(t) && typeof t.nodeType == \"number\" && [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].some((e) => t.nodeType === e) || !1, u = (t) => i(t) && t.nodeType === 1 || !1, E = /* @__PURE__ */ new Map(), O = {\n  data: E,\n  /**\n   * Sets web components data.\n   *\n   * @param element target element\n   * @param component the component's name or a unique key\n   * @param instance the component instance\n   */\n  set: (t, e, n) => {\n    if (!u(t))\n      return;\n    E.has(e) || E.set(e, /* @__PURE__ */ new Map()), E.get(e).set(t, n);\n  },\n  /**\n   * Returns all instances for specified component.\n   *\n   * @param component the component's name or a unique key\n   * @returns all the component instances\n   */\n  getAllFor: (t) => E.get(t) || null,\n  /**\n   * Returns the instance associated with the target.\n   *\n   * @param element target element\n   * @param component the component's name or a unique key\n   * @returns the instance\n   */\n  get: (t, e) => {\n    if (!u(t) || !e)\n      return null;\n    const n = O.getAllFor(e);\n    return t && n && n.get(t) || null;\n  },\n  /**\n   * Removes web components data.\n   *\n   * @param element target element\n   * @param component the component's name or a unique key\n   */\n  remove: (t, e) => {\n    const n = O.getAllFor(e);\n    !n || !u(t) || (n.delete(t), n.size === 0 && E.delete(e));\n  }\n}, Bn = (t, e) => O.get(t, e), N = (t) => typeof t == \"string\" || !1, W = (t) => v(t) && t.constructor.name === \"Window\" || !1, R = (t) => i(t) && t.nodeType === 9 || !1, d = (t) => W(t) ? t.document : R(t) ? t : i(t) ? t.ownerDocument : window.document, k = (t, ...e) => Object.assign(t, ...e), Zt = (t) => {\n  if (!t)\n    return;\n  if (N(t))\n    return d().createElement(t);\n  const { tagName: e } = t, n = Zt(e);\n  if (!n)\n    return;\n  const o = { ...t };\n  return delete o.tagName, k(n, o);\n}, $t = (t, e) => {\n  if (!t || !e)\n    return;\n  if (N(e))\n    return d().createElementNS(t, e);\n  const { tagName: n } = e, o = $t(t, n);\n  if (!o)\n    return;\n  const s = { ...e };\n  return delete s.tagName, k(o, s);\n}, Q = (t, e) => t.dispatchEvent(e), Hn = (t, e, n) => n.indexOf(t) === e, g = (t, e) => {\n  const n = getComputedStyle(t), o = e.replace(\"webkit\", \"Webkit\").replace(/([A-Z])/g, \"-$1\").toLowerCase();\n  return n.getPropertyValue(o);\n}, _t = (t) => {\n  const e = g(t, U), n = g(t, Wt), o = n.includes(\"ms\") ? (\n    /* istanbul ignore next */\n    1\n  ) : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : 0;\n  return Number.isNaN(s) ? (\n    /* istanbul ignore next */\n    0\n  ) : s;\n}, te = (t) => {\n  const e = g(t, U), n = g(t, Ft), o = n.includes(\"ms\") ? (\n    /* istanbul ignore next */\n    1\n  ) : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : 0;\n  return Number.isNaN(s) ? (\n    /* istanbul ignore next */\n    0\n  ) : s;\n}, Pn = (t, e) => {\n  let n = 0;\n  const o = new Event(D), s = te(t), r = _t(t);\n  if (s) {\n    const a = (l) => {\n      l.target === t && (e.apply(t, [l]), t.removeEventListener(D, a), n = 1);\n    };\n    t.addEventListener(D, a), setTimeout(() => {\n      n || Q(t, o);\n    }, s + r + 17);\n  } else\n    e.apply(t, [o]);\n}, ee = (t) => {\n  const e = g(t, F), n = g(t, Qt), o = n.includes(\"ms\") ? (\n    /* istanbul ignore next */\n    1\n  ) : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : (\n    /* istanbul ignore next */\n    0\n  );\n  return Number.isNaN(s) ? (\n    /* istanbul ignore next */\n    0\n  ) : s;\n}, ne = (t) => {\n  const e = g(t, F), n = g(t, Rt), o = n.includes(\"ms\") ? (\n    /* istanbul ignore next */\n    1\n  ) : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : (\n    /* istanbul ignore next */\n    0\n  );\n  return Number.isNaN(s) ? (\n    /* istanbul ignore next */\n    0\n  ) : s;\n}, Un = (t, e) => {\n  let n = 0;\n  const o = new Event(C), s = ne(t), r = ee(t);\n  if (s) {\n    const a = (l) => {\n      l.target === t && (e.apply(t, [l]), t.removeEventListener(C, a), n = 1);\n    };\n    t.addEventListener(C, a), setTimeout(() => {\n      n || Q(t, o);\n    }, s + r + 17);\n  } else\n    e.apply(t, [o]);\n}, Fn = (t) => Float32Array.from(Array.from(t)), Wn = (t) => Float64Array.from(Array.from(t)), Rn = (t, e) => t.focus(e), V = (t) => [\"true\", !0].includes(t) ? !0 : [\"false\", !1].includes(t) ? !1 : [\"null\", \"\", null, void 0].includes(t) ? null : t !== \"\" && !Number.isNaN(+t) ? +t : t, w = (t) => Object.entries(t), oe = (t) => t.toLowerCase(), Qn = (t, e, n, o) => {\n  const s = { ...n }, r = { ...t.dataset }, a = { ...e }, l = {}, p = \"title\";\n  return w(r).forEach(([c, f]) => {\n    const y = o && typeof c == \"string\" && c.includes(o) ? c.replace(o, \"\").replace(/[A-Z]/g, (q) => oe(q)) : c;\n    l[y] = V(f);\n  }), w(s).forEach(([c, f]) => {\n    s[c] = V(f);\n  }), w(e).forEach(([c, f]) => {\n    c in s ? a[c] = s[c] : c in l ? a[c] = l[c] : a[c] = c === p ? Yt(t, p) : f;\n  }), a;\n}, qn = (t, e) => v(t) && (Object.hasOwn(t, e) || e in t), Gn = (t) => Object.keys(t), jn = (t) => Object.values(t), Jn = (t, e) => {\n  const n = new CustomEvent(t, {\n    cancelable: !0,\n    bubbles: !0\n  });\n  return v(e) && k(n, e), n;\n}, Kn = { passive: !0 }, Xn = (t) => t.offsetHeight, Yn = (t, e) => {\n  w(e).forEach(([n, o]) => {\n    if (o && N(n) && n.includes(\"--\"))\n      t.style.setProperty(n, o);\n    else {\n      const s = {};\n      s[n] = o, k(t.style, s);\n    }\n  });\n}, I = (t) => v(t) && t.constructor.name === \"Map\" || !1, se = (t) => typeof t == \"number\" || !1, m = /* @__PURE__ */ new Map(), Zn = {\n  /**\n   * Sets a new timeout timer for an element, or element -> key association.\n   *\n   * @param element target element\n   * @param callback the callback\n   * @param delay the execution delay\n   * @param key a unique key\n   */\n  set: (t, e, n, o) => {\n    u(t) && (o && o.length ? (m.has(t) || m.set(t, /* @__PURE__ */ new Map()), m.get(t).set(o, setTimeout(e, n))) : m.set(t, setTimeout(e, n)));\n  },\n  /**\n   * Returns the timer associated with the target.\n   *\n   * @param element target element\n   * @param key a unique\n   * @returns the timer\n   */\n  get: (t, e) => {\n    if (!u(t))\n      return null;\n    const n = m.get(t);\n    return e && n && I(n) ? n.get(e) || /* istanbul ignore next */\n    null : se(n) ? n : null;\n  },\n  /**\n   * Clears the element's timer.\n   *\n   * @param element target element\n   * @param key a unique key\n   */\n  clear: (t, e) => {\n    if (!u(t))\n      return;\n    const n = m.get(t);\n    e && e.length && I(n) ? (clearTimeout(n.get(e)), n.delete(e), n.size === 0 && m.delete(t)) : (clearTimeout(n), m.delete(t));\n  }\n}, $n = (t) => t.toUpperCase(), h = (t, e) => {\n  const { width: n, height: o, top: s, right: r, bottom: a, left: l } = t.getBoundingClientRect();\n  let p = 1, c = 1;\n  if (e && u(t)) {\n    const { offsetWidth: f, offsetHeight: y } = t;\n    p = f > 0 ? Math.round(n) / f : (\n      /* istanbul ignore next */\n      1\n    ), c = y > 0 ? Math.round(o) / y : (\n      /* istanbul ignore next */\n      1\n    );\n  }\n  return {\n    width: n / p,\n    height: o / c,\n    top: s / c,\n    right: r / p,\n    bottom: a / c,\n    left: l / p,\n    x: l / p,\n    y: s / c\n  };\n}, _n = (t) => d(t).body, T = (t) => d(t).documentElement, to = (t) => d(t).head, eo = (t) => {\n  const e = W(t), n = e ? t.scrollX : t.scrollLeft, o = e ? t.scrollY : t.scrollTop;\n  return { x: n, y: o };\n}, ce = (t) => i(t) && t.constructor.name === \"ShadowRoot\" || !1, no = (t) => t.nodeName === \"HTML\" ? t : u(t) && t.assignedSlot || // step into the shadow DOM of the parent of a slotted node\ni(t) && t.parentNode || // DOM Element detected\nce(t) && t.host || // ShadowRoot detected\nT(t), re = (t) => {\n  if (!u(t))\n    return !1;\n  const { width: e, height: n } = h(t), { offsetWidth: o, offsetHeight: s } = t;\n  return Math.round(e) !== o || Math.round(n) !== s;\n}, oo = (t, e, n) => {\n  const o = u(e), s = h(t, o && re(e)), r = { x: 0, y: 0 };\n  if (o) {\n    const a = h(e, !0);\n    r.x = a.x + e.clientLeft, r.y = a.y + e.clientTop;\n  }\n  return {\n    x: s.left + n.x - r.x,\n    y: s.top + n.y - r.y,\n    width: s.width,\n    height: s.height\n  };\n};\nlet B = 0, H = 0;\nconst b = /* @__PURE__ */ new Map(), ae = (t, e) => {\n  let n = e ? B : H;\n  if (e) {\n    const o = ae(t), s = b.get(o) || /* @__PURE__ */ new Map();\n    b.has(o) || b.set(o, s), I(s) && !s.has(e) ? (s.set(e, n), B += 1) : n = s.get(e);\n  } else {\n    const o = t.id || t;\n    b.has(o) ? n = b.get(o) : (b.set(o, n), H += 1);\n  }\n  return n;\n}, so = (t) => {\n  var e;\n  return t ? R(t) ? t.defaultView : i(t) ? (e = t == null ? void 0 : t.ownerDocument) == null ? void 0 : e.defaultView : t : window;\n}, ie = (t) => Array.isArray(t) || !1, co = (t) => i(t) && t.nodeName === \"CANVAS\" || !1, ue = (t) => u(t) && !!t.shadowRoot || !1, ro = (t) => i(t) && [1, 2, 3, 4, 5, 6, 7, 8].some((e) => t.nodeType === e) || !1, ao = (t) => {\n  if (!i(t))\n    return !1;\n  const { top: e, bottom: n } = h(t), { clientHeight: o } = T(t);\n  return e <= o && n >= 0;\n}, io = (t) => {\n  if (!i(t))\n    return !1;\n  const { clientWidth: e, clientHeight: n } = T(t), { top: o, left: s, bottom: r, right: a } = h(t, !0);\n  return o >= 0 && s >= 0 && r <= n && a <= e;\n}, uo = (t) => ie(t) && t.every(u) || !1, lo = (t) => typeof t == \"function\" || !1, po = (t) => v(t) && t.constructor.name === \"HTMLCollection\" || !1, fo = (t) => u(t) && t.tagName === \"IMG\" || !1, mo = (t) => {\n  if (!N(t))\n    return !1;\n  try {\n    JSON.parse(t);\n  } catch {\n    return !1;\n  }\n  return !0;\n}, go = (t) => v(t) && t.constructor.name === \"WeakMap\" || !1, vo = (t) => i(t) && [\"SVG\", \"Image\", \"Video\", \"Canvas\"].some((e) => t.constructor.name.includes(e)) || !1, Eo = (t) => v(t) && t.constructor.name === \"NodeList\" || !1, bo = (t) => T(t).dir === \"rtl\", ho = (t) => i(t) && t.constructor.name.includes(\"SVG\") || !1, yo = (t) => i(t) && [\"TABLE\", \"TD\", \"TH\"].includes(t.nodeName) || !1, le = (t, e) => t ? t.closest(e) || // break out of `ShadowRoot`\nle(t.getRootNode().host, e) : null, wo = (t, e) => u(t) ? t : (i(e) ? e : d()).querySelector(t), de = (t, e) => (i(e) ? e : d()).getElementsByTagName(t), Ao = (t) => [...de(\"*\", t)].filter(ue), So = (t, e) => d(e).getElementById(t) || null, Mo = (t, e) => (i(e) ? e : d()).querySelectorAll(t), No = (t, e) => (e && i(e) ? e : d()).getElementsByClassName(\n  t\n), ko = (t, e) => t.matches(e), To = \"2.0.0alpha16\";\nexport {\n  Vn as ArrayFrom,\n  P as DOMContentLoadedEvent,\n  Y as DOMMouseScrollEvent,\n  O as Data,\n  Fn as Float32ArrayFrom,\n  Wn as Float64ArrayFrom,\n  k as ObjectAssign,\n  w as ObjectEntries,\n  qn as ObjectHasOwn,\n  Gn as ObjectKeys,\n  jn as ObjectValues,\n  Zn as Timer,\n  G as abortEvent,\n  Ln as addClass,\n  cn as addEventListener,\n  Wt as animationDelay,\n  Ft as animationDuration,\n  D as animationEndEvent,\n  U as animationName,\n  pe as ariaChecked,\n  me as ariaDescribedBy,\n  fe as ariaDescription,\n  ge as ariaExpanded,\n  ve as ariaHasPopup,\n  Ee as ariaHidden,\n  be as ariaLabel,\n  he as ariaLabelledBy,\n  ye as ariaModal,\n  we as ariaPressed,\n  Ae as ariaSelected,\n  Me as ariaValueMax,\n  Se as ariaValueMin,\n  Ne as ariaValueNow,\n  ke as ariaValueText,\n  j as beforeunloadEvent,\n  an as bezierEasings,\n  J as blurEvent,\n  K as changeEvent,\n  le as closest,\n  X as contextmenuEvent,\n  Jn as createCustomEvent,\n  Zt as createElement,\n  $t as createElementNS,\n  Q as dispatchEvent,\n  Hn as distinct,\n  zn as documentBody,\n  xn as documentElement,\n  M as documentHead,\n  De as dragEvent,\n  ze as dragendEvent,\n  Le as dragenterEvent,\n  Oe as dragleaveEvent,\n  Ie as dragoverEvent,\n  Ce as dragstartEvent,\n  Pn as emulateAnimationEnd,\n  Un as emulateTransitionEnd,\n  Z as errorEvent,\n  Rn as focus,\n  $ as focusEvent,\n  Ue as focusEvents,\n  _ as focusinEvent,\n  tt as focusoutEvent,\n  et as gesturechangeEvent,\n  nt as gestureendEvent,\n  ot as gesturestartEvent,\n  Yt as getAttribute,\n  Sn as getAttributeNS,\n  h as getBoundingClientRect,\n  Ao as getCustomElements,\n  d as getDocument,\n  _n as getDocumentBody,\n  T as getDocumentElement,\n  to as getDocumentHead,\n  _t as getElementAnimationDelay,\n  te as getElementAnimationDuration,\n  So as getElementById,\n  g as getElementStyle,\n  ee as getElementTransitionDelay,\n  ne as getElementTransitionDuration,\n  No as getElementsByClassName,\n  de as getElementsByTagName,\n  Bn as getInstance,\n  eo as getNodeScroll,\n  no as getParentNode,\n  oo as getRectRelativeToOffsetParent,\n  ae as getUID,\n  so as getWindow,\n  Mn as hasAttribute,\n  Nn as hasAttributeNS,\n  In as hasClass,\n  gn as isApple,\n  ie as isArray,\n  co as isCanvas,\n  ue as isCustomElement,\n  R as isDocument,\n  ro as isElement,\n  ao as isElementInScrollRange,\n  io as isElementInViewport,\n  uo as isElementsArray,\n  vn as isFirefox,\n  lo as isFunction,\n  po as isHTMLCollection,\n  u as isHTMLElement,\n  fo as isHTMLImageElement,\n  mo as isJSON,\n  I as isMap,\n  vo as isMedia,\n  mn as isMobile,\n  i as isNode,\n  Eo as isNodeList,\n  se as isNumber,\n  v as isObject,\n  bo as isRTL,\n  ho as isSVGElement,\n  re as isScaledElement,\n  ce as isShadowRoot,\n  N as isString,\n  yo as isTableElement,\n  go as isWeakMap,\n  W as isWindow,\n  We as keyAlt,\n  Re as keyArrowDown,\n  qe as keyArrowLeft,\n  Ge as keyArrowRight,\n  Qe as keyArrowUp,\n  je as keyBackspace,\n  Je as keyCapsLock,\n  Ke as keyControl,\n  Xe as keyDelete,\n  Ye as keyEnter,\n  Ze as keyEscape,\n  $e as keyInsert,\n  _e as keyMeta,\n  tn as keyPause,\n  en as keyScrollLock,\n  nn as keyShift,\n  on as keySpace,\n  sn as keyTab,\n  Fe as keyboardEventKeys,\n  st as keydownEvent,\n  ct as keypressEvent,\n  rt as keyupEvent,\n  at as loadEvent,\n  xe as loadstartEvent,\n  ko as matches,\n  Be as mouseClickEvents,\n  He as mouseHoverEvents,\n  Ve as mouseSwipeEvents,\n  it as mouseclickEvent,\n  ut as mousedblclickEvent,\n  lt as mousedownEvent,\n  ft as mouseenterEvent,\n  pt as mousehoverEvent,\n  gt as mouseinEvent,\n  mt as mouseleaveEvent,\n  bt as mousemoveEvent,\n  vt as mouseoutEvent,\n  Et as mouseoverEvent,\n  dt as mouseupEvent,\n  ht as mousewheelEvent,\n  yt as moveEvent,\n  Te as nativeEvents,\n  Xt as noop,\n  Qn as normalizeOptions,\n  V as normalizeValue,\n  Jt as off,\n  un as offsetHeight,\n  ln as offsetWidth,\n  jt as on,\n  Kt as one,\n  wt as orientationchangeEvent,\n  Kn as passiveHandler,\n  At as pointercancelEvent,\n  St as pointerdownEvent,\n  Mt as pointerleaveEvent,\n  Nt as pointermoveEvent,\n  kt as pointerupEvent,\n  wo as querySelector,\n  Mo as querySelectorAll,\n  Tt as readystatechangeEvent,\n  Xn as reflow,\n  Dn as removeAttribute,\n  Cn as removeAttributeNS,\n  On as removeClass,\n  rn as removeEventListener,\n  Dt as resetEvent,\n  Ct as resizeEvent,\n  zt as scrollEvent,\n  dn as scrollHeight,\n  pn as scrollWidth,\n  Lt as selectEvent,\n  Ot as selectendEvent,\n  It as selectstartEvent,\n  kn as setAttribute,\n  Tn as setAttributeNS,\n  Yn as setElementStyle,\n  xt as submitEvent,\n  En as support3DTransform,\n  wn as supportAnimation,\n  bn as supportPassive,\n  yn as supportTouch,\n  hn as supportTransform,\n  An as supportTransition,\n  fn as tabindex,\n  oe as toLowerCase,\n  $n as toUpperCase,\n  Pe as touchEvents,\n  Ht as touchcancelEvent,\n  Pt as touchendEvent,\n  Bt as touchmoveEvent,\n  Vt as touchstartEvent,\n  Qt as transitionDelay,\n  Rt as transitionDuration,\n  C as transitionEndEvent,\n  F as transitionProperty,\n  Ut as unloadEvent,\n  S as userAgent,\n  A as userAgentData,\n  To as version\n};\n//# sourceMappingURL=shorty.mjs.map\n","const N = [\"transparent\", \"currentColor\", \"inherit\", \"revert\", \"initial\"], b = (o) => {\n  const t = Math.floor(o);\n  return o - t < 0.5 ? t : Math.round(o);\n}, T = [\n  [\n    \"aliceblue\",\n    {\n      r: 240,\n      g: 248,\n      b: 255\n    }\n  ],\n  [\n    \"antiquewhite\",\n    {\n      r: 250,\n      g: 235,\n      b: 215\n    }\n  ],\n  [\n    \"aqua\",\n    {\n      r: 0,\n      g: 255,\n      b: 255\n    }\n  ],\n  [\n    \"aquamarine\",\n    {\n      r: 127,\n      g: 255,\n      b: 212\n    }\n  ],\n  [\n    \"azure\",\n    {\n      r: 240,\n      g: 255,\n      b: 255\n    }\n  ],\n  [\n    \"beige\",\n    {\n      r: 245,\n      g: 245,\n      b: 220\n    }\n  ],\n  [\n    \"bisque\",\n    {\n      r: 255,\n      g: 228,\n      b: 196\n    }\n  ],\n  [\n    \"black\",\n    {\n      r: 0,\n      g: 0,\n      b: 0\n    }\n  ],\n  [\n    \"blanchedalmond\",\n    {\n      r: 255,\n      g: 235,\n      b: 205\n    }\n  ],\n  [\n    \"blue\",\n    {\n      r: 0,\n      g: 0,\n      b: 255\n    }\n  ],\n  [\n    \"blueviolet\",\n    {\n      r: 138,\n      g: 43,\n      b: 226\n    }\n  ],\n  [\n    \"brown\",\n    {\n      r: 165,\n      g: 42,\n      b: 42\n    }\n  ],\n  [\n    \"burlywood\",\n    {\n      r: 222,\n      g: 184,\n      b: 135\n    }\n  ],\n  [\n    \"cadetblue\",\n    {\n      r: 95,\n      g: 158,\n      b: 160\n    }\n  ],\n  [\n    \"chartreuse\",\n    {\n      r: 127,\n      g: 255,\n      b: 0\n    }\n  ],\n  [\n    \"chocolate\",\n    {\n      r: 210,\n      g: 105,\n      b: 30\n    }\n  ],\n  [\n    \"coral\",\n    {\n      r: 255,\n      g: 127,\n      b: 80\n    }\n  ],\n  [\n    \"cornflowerblue\",\n    {\n      r: 100,\n      g: 149,\n      b: 237\n    }\n  ],\n  [\n    \"cornsilk\",\n    {\n      r: 255,\n      g: 248,\n      b: 220\n    }\n  ],\n  [\n    \"crimson\",\n    {\n      r: 220,\n      g: 20,\n      b: 60\n    }\n  ],\n  [\n    \"cyan\",\n    {\n      r: 0,\n      g: 255,\n      b: 255\n    }\n  ],\n  [\n    \"darkblue\",\n    {\n      r: 0,\n      g: 0,\n      b: 139\n    }\n  ],\n  [\n    \"darkcyan\",\n    {\n      r: 0,\n      g: 139,\n      b: 139\n    }\n  ],\n  [\n    \"darkgoldenrod\",\n    {\n      r: 184,\n      g: 134,\n      b: 11\n    }\n  ],\n  [\n    \"darkgray\",\n    {\n      r: 169,\n      g: 169,\n      b: 169\n    }\n  ],\n  [\n    \"darkgreen\",\n    {\n      r: 0,\n      g: 100,\n      b: 0\n    }\n  ],\n  [\n    \"darkgrey\",\n    {\n      r: 169,\n      g: 169,\n      b: 169\n    }\n  ],\n  [\n    \"darkkhaki\",\n    {\n      r: 189,\n      g: 183,\n      b: 107\n    }\n  ],\n  [\n    \"darkmagenta\",\n    {\n      r: 139,\n      g: 0,\n      b: 139\n    }\n  ],\n  [\n    \"darkolivegreen\",\n    {\n      r: 85,\n      g: 107,\n      b: 47\n    }\n  ],\n  [\n    \"darkorange\",\n    {\n      r: 255,\n      g: 140,\n      b: 0\n    }\n  ],\n  [\n    \"darkorchid\",\n    {\n      r: 153,\n      g: 50,\n      b: 204\n    }\n  ],\n  [\n    \"darkred\",\n    {\n      r: 139,\n      g: 0,\n      b: 0\n    }\n  ],\n  [\n    \"darksalmon\",\n    {\n      r: 233,\n      g: 150,\n      b: 122\n    }\n  ],\n  [\n    \"darkseagreen\",\n    {\n      r: 143,\n      g: 188,\n      b: 143\n    }\n  ],\n  [\n    \"darkslateblue\",\n    {\n      r: 72,\n      g: 61,\n      b: 139\n    }\n  ],\n  [\n    \"darkslategray\",\n    {\n      r: 47,\n      g: 79,\n      b: 79\n    }\n  ],\n  [\n    \"darkslategrey\",\n    {\n      r: 47,\n      g: 79,\n      b: 79\n    }\n  ],\n  [\n    \"darkturquoise\",\n    {\n      r: 0,\n      g: 206,\n      b: 209\n    }\n  ],\n  [\n    \"darkviolet\",\n    {\n      r: 148,\n      g: 0,\n      b: 211\n    }\n  ],\n  [\n    \"deeppink\",\n    {\n      r: 255,\n      g: 20,\n      b: 147\n    }\n  ],\n  [\n    \"deepskyblue\",\n    {\n      r: 0,\n      g: 191,\n      b: 255\n    }\n  ],\n  [\n    \"dimgray\",\n    {\n      r: 105,\n      g: 105,\n      b: 105\n    }\n  ],\n  [\n    \"dimgrey\",\n    {\n      r: 105,\n      g: 105,\n      b: 105\n    }\n  ],\n  [\n    \"dodgerblue\",\n    {\n      r: 30,\n      g: 144,\n      b: 255\n    }\n  ],\n  [\n    \"firebrick\",\n    {\n      r: 178,\n      g: 34,\n      b: 34\n    }\n  ],\n  [\n    \"floralwhite\",\n    {\n      r: 255,\n      g: 250,\n      b: 240\n    }\n  ],\n  [\n    \"forestgreen\",\n    {\n      r: 34,\n      g: 139,\n      b: 34\n    }\n  ],\n  [\n    \"fuchsia\",\n    {\n      r: 255,\n      g: 0,\n      b: 255\n    }\n  ],\n  [\n    \"gainsboro\",\n    {\n      r: 220,\n      g: 220,\n      b: 220\n    }\n  ],\n  [\n    \"ghostwhite\",\n    {\n      r: 248,\n      g: 248,\n      b: 255\n    }\n  ],\n  [\n    \"goldenrod\",\n    {\n      r: 218,\n      g: 165,\n      b: 32\n    }\n  ],\n  [\n    \"gold\",\n    {\n      r: 255,\n      g: 215,\n      b: 0\n    }\n  ],\n  [\n    \"gray\",\n    {\n      r: 128,\n      g: 128,\n      b: 128\n    }\n  ],\n  [\n    \"green\",\n    {\n      r: 0,\n      g: 128,\n      b: 0\n    }\n  ],\n  [\n    \"greenyellow\",\n    {\n      r: 173,\n      g: 255,\n      b: 47\n    }\n  ],\n  [\n    \"grey\",\n    {\n      r: 128,\n      g: 128,\n      b: 128\n    }\n  ],\n  [\n    \"honeydew\",\n    {\n      r: 240,\n      g: 255,\n      b: 240\n    }\n  ],\n  [\n    \"hotpink\",\n    {\n      r: 255,\n      g: 105,\n      b: 180\n    }\n  ],\n  [\n    \"indianred\",\n    {\n      r: 205,\n      g: 92,\n      b: 92\n    }\n  ],\n  [\n    \"indigo\",\n    {\n      r: 75,\n      g: 0,\n      b: 130\n    }\n  ],\n  [\n    \"ivory\",\n    {\n      r: 255,\n      g: 255,\n      b: 240\n    }\n  ],\n  [\n    \"khaki\",\n    {\n      r: 240,\n      g: 230,\n      b: 140\n    }\n  ],\n  [\n    \"lavenderblush\",\n    {\n      r: 255,\n      g: 240,\n      b: 245\n    }\n  ],\n  [\n    \"lavender\",\n    {\n      r: 230,\n      g: 230,\n      b: 250\n    }\n  ],\n  [\n    \"lawngreen\",\n    {\n      r: 124,\n      g: 252,\n      b: 0\n    }\n  ],\n  [\n    \"lemonchiffon\",\n    {\n      r: 255,\n      g: 250,\n      b: 205\n    }\n  ],\n  [\n    \"lightblue\",\n    {\n      r: 173,\n      g: 216,\n      b: 230\n    }\n  ],\n  [\n    \"lightcoral\",\n    {\n      r: 240,\n      g: 128,\n      b: 128\n    }\n  ],\n  [\n    \"lightcyan\",\n    {\n      r: 224,\n      g: 255,\n      b: 255\n    }\n  ],\n  [\n    \"lightgoldenrodyellow\",\n    {\n      r: 250,\n      g: 250,\n      b: 210\n    }\n  ],\n  [\n    \"lightgray\",\n    {\n      r: 211,\n      g: 211,\n      b: 211\n    }\n  ],\n  [\n    \"lightgreen\",\n    {\n      r: 144,\n      g: 238,\n      b: 144\n    }\n  ],\n  [\n    \"lightgrey\",\n    {\n      r: 211,\n      g: 211,\n      b: 211\n    }\n  ],\n  [\n    \"lightpink\",\n    {\n      r: 255,\n      g: 182,\n      b: 193\n    }\n  ],\n  [\n    \"lightsalmon\",\n    {\n      r: 255,\n      g: 160,\n      b: 122\n    }\n  ],\n  [\n    \"lightseagreen\",\n    {\n      r: 32,\n      g: 178,\n      b: 170\n    }\n  ],\n  [\n    \"lightskyblue\",\n    {\n      r: 135,\n      g: 206,\n      b: 250\n    }\n  ],\n  [\n    \"lightslategray\",\n    {\n      r: 119,\n      g: 136,\n      b: 153\n    }\n  ],\n  [\n    \"lightslategrey\",\n    {\n      r: 119,\n      g: 136,\n      b: 153\n    }\n  ],\n  [\n    \"lightsteelblue\",\n    {\n      r: 176,\n      g: 196,\n      b: 222\n    }\n  ],\n  [\n    \"lightyellow\",\n    {\n      r: 255,\n      g: 255,\n      b: 224\n    }\n  ],\n  [\n    \"lime\",\n    {\n      r: 0,\n      g: 255,\n      b: 0\n    }\n  ],\n  [\n    \"limegreen\",\n    {\n      r: 50,\n      g: 205,\n      b: 50\n    }\n  ],\n  [\n    \"linen\",\n    {\n      r: 250,\n      g: 240,\n      b: 230\n    }\n  ],\n  [\n    \"magenta\",\n    {\n      r: 255,\n      g: 0,\n      b: 255\n    }\n  ],\n  [\n    \"maroon\",\n    {\n      r: 128,\n      g: 0,\n      b: 0\n    }\n  ],\n  [\n    \"mediumaquamarine\",\n    {\n      r: 102,\n      g: 205,\n      b: 170\n    }\n  ],\n  [\n    \"mediumblue\",\n    {\n      r: 0,\n      g: 0,\n      b: 205\n    }\n  ],\n  [\n    \"mediumorchid\",\n    {\n      r: 186,\n      g: 85,\n      b: 211\n    }\n  ],\n  [\n    \"mediumpurple\",\n    {\n      r: 147,\n      g: 112,\n      b: 219\n    }\n  ],\n  [\n    \"mediumseagreen\",\n    {\n      r: 60,\n      g: 179,\n      b: 113\n    }\n  ],\n  [\n    \"mediumslateblue\",\n    {\n      r: 123,\n      g: 104,\n      b: 238\n    }\n  ],\n  [\n    \"mediumspringgreen\",\n    {\n      r: 0,\n      g: 250,\n      b: 154\n    }\n  ],\n  [\n    \"mediumturquoise\",\n    {\n      r: 72,\n      g: 209,\n      b: 204\n    }\n  ],\n  [\n    \"mediumvioletred\",\n    {\n      r: 199,\n      g: 21,\n      b: 133\n    }\n  ],\n  [\n    \"midnightblue\",\n    {\n      r: 25,\n      g: 25,\n      b: 112\n    }\n  ],\n  [\n    \"mintcream\",\n    {\n      r: 245,\n      g: 255,\n      b: 250\n    }\n  ],\n  [\n    \"mistyrose\",\n    {\n      r: 255,\n      g: 228,\n      b: 225\n    }\n  ],\n  [\n    \"moccasin\",\n    {\n      r: 255,\n      g: 228,\n      b: 181\n    }\n  ],\n  [\n    \"navajowhite\",\n    {\n      r: 255,\n      g: 222,\n      b: 173\n    }\n  ],\n  [\n    \"navy\",\n    {\n      r: 0,\n      g: 0,\n      b: 128\n    }\n  ],\n  [\n    \"oldlace\",\n    {\n      r: 253,\n      g: 245,\n      b: 230\n    }\n  ],\n  [\n    \"olive\",\n    {\n      r: 128,\n      g: 128,\n      b: 0\n    }\n  ],\n  [\n    \"olivedrab\",\n    {\n      r: 107,\n      g: 142,\n      b: 35\n    }\n  ],\n  [\n    \"orange\",\n    {\n      r: 255,\n      g: 165,\n      b: 0\n    }\n  ],\n  [\n    \"orangered\",\n    {\n      r: 255,\n      g: 69,\n      b: 0\n    }\n  ],\n  [\n    \"orchid\",\n    {\n      r: 218,\n      g: 112,\n      b: 214\n    }\n  ],\n  [\n    \"palegoldenrod\",\n    {\n      r: 238,\n      g: 232,\n      b: 170\n    }\n  ],\n  [\n    \"palegreen\",\n    {\n      r: 152,\n      g: 251,\n      b: 152\n    }\n  ],\n  [\n    \"paleturquoise\",\n    {\n      r: 175,\n      g: 238,\n      b: 238\n    }\n  ],\n  [\n    \"palevioletred\",\n    {\n      r: 219,\n      g: 112,\n      b: 147\n    }\n  ],\n  [\n    \"papayawhip\",\n    {\n      r: 255,\n      g: 239,\n      b: 213\n    }\n  ],\n  [\n    \"peachpuff\",\n    {\n      r: 255,\n      g: 218,\n      b: 185\n    }\n  ],\n  [\n    \"peru\",\n    {\n      r: 205,\n      g: 133,\n      b: 63\n    }\n  ],\n  [\n    \"pink\",\n    {\n      r: 255,\n      g: 192,\n      b: 203\n    }\n  ],\n  [\n    \"plum\",\n    {\n      r: 221,\n      g: 160,\n      b: 221\n    }\n  ],\n  [\n    \"powderblue\",\n    {\n      r: 176,\n      g: 224,\n      b: 230\n    }\n  ],\n  [\n    \"purple\",\n    {\n      r: 128,\n      g: 0,\n      b: 128\n    }\n  ],\n  [\n    \"rebeccapurple\",\n    {\n      r: 102,\n      g: 51,\n      b: 153\n    }\n  ],\n  [\n    \"red\",\n    {\n      r: 255,\n      g: 0,\n      b: 0\n    }\n  ],\n  [\n    \"rosybrown\",\n    {\n      r: 188,\n      g: 143,\n      b: 143\n    }\n  ],\n  [\n    \"royalblue\",\n    {\n      r: 65,\n      g: 105,\n      b: 225\n    }\n  ],\n  [\n    \"saddlebrown\",\n    {\n      r: 139,\n      g: 69,\n      b: 19\n    }\n  ],\n  [\n    \"salmon\",\n    {\n      r: 250,\n      g: 128,\n      b: 114\n    }\n  ],\n  [\n    \"sandybrown\",\n    {\n      r: 244,\n      g: 164,\n      b: 96\n    }\n  ],\n  [\n    \"seagreen\",\n    {\n      r: 46,\n      g: 139,\n      b: 87\n    }\n  ],\n  [\n    \"seashell\",\n    {\n      r: 255,\n      g: 245,\n      b: 238\n    }\n  ],\n  [\n    \"sienna\",\n    {\n      r: 160,\n      g: 82,\n      b: 45\n    }\n  ],\n  [\n    \"silver\",\n    {\n      r: 192,\n      g: 192,\n      b: 192\n    }\n  ],\n  [\n    \"skyblue\",\n    {\n      r: 135,\n      g: 206,\n      b: 235\n    }\n  ],\n  [\n    \"slateblue\",\n    {\n      r: 106,\n      g: 90,\n      b: 205\n    }\n  ],\n  [\n    \"slategray\",\n    {\n      r: 112,\n      g: 128,\n      b: 144\n    }\n  ],\n  [\n    \"slategrey\",\n    {\n      r: 112,\n      g: 128,\n      b: 144\n    }\n  ],\n  [\n    \"snow\",\n    {\n      r: 255,\n      g: 250,\n      b: 250\n    }\n  ],\n  [\n    \"springgreen\",\n    {\n      r: 0,\n      g: 255,\n      b: 127\n    }\n  ],\n  [\n    \"steelblue\",\n    {\n      r: 70,\n      g: 130,\n      b: 180\n    }\n  ],\n  [\n    \"tan\",\n    {\n      r: 210,\n      g: 180,\n      b: 140\n    }\n  ],\n  [\n    \"teal\",\n    {\n      r: 0,\n      g: 128,\n      b: 128\n    }\n  ],\n  [\n    \"thistle\",\n    {\n      r: 216,\n      g: 191,\n      b: 216\n    }\n  ],\n  [\n    \"tomato\",\n    {\n      r: 255,\n      g: 99,\n      b: 71\n    }\n  ],\n  [\n    \"turquoise\",\n    {\n      r: 64,\n      g: 224,\n      b: 208\n    }\n  ],\n  [\n    \"violet\",\n    {\n      r: 238,\n      g: 130,\n      b: 238\n    }\n  ],\n  [\n    \"wheat\",\n    {\n      r: 245,\n      g: 222,\n      b: 179\n    }\n  ],\n  [\n    \"white\",\n    {\n      r: 255,\n      g: 255,\n      b: 255\n    }\n  ],\n  [\n    \"whitesmoke\",\n    {\n      r: 245,\n      g: 245,\n      b: 245\n    }\n  ],\n  [\n    \"yellow\",\n    {\n      r: 255,\n      g: 255,\n      b: 0\n    }\n  ],\n  [\n    \"yellowgreen\",\n    {\n      r: 154,\n      g: 205,\n      b: 50\n    }\n  ]\n], B = \"deg|rad|grad|turn\", U = \"[-\\\\+]?\\\\d+%?\", D = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\", L = `[-\\\\+]?\\\\d*\\\\.?\\\\d+(?:${B})?`, v = `(?:${D})|(?:${U})`, F = `(?:${v})|(?:${L}?)`, rr = \"(?:[\\\\s|\\\\(\\\\s|\\\\s\\\\(\\\\s]+)?\", tr = \"(?:[\\\\s|\\\\)\\\\s]+)?\", O = \"(?:[,|\\\\s]+)\", er = \"(?:[,|\\\\/\\\\s]*)?\", $ = `${rr}(${F})${O}(${v})${O}(${v})${er}(${v})?${tr}`, f = {\n  CSS_UNIT: new RegExp(F),\n  ANGLES: B,\n  CSS_ANGLE: L,\n  CSS_INTEGER: U,\n  CSS_NUMBER: D,\n  CSS_UNIT2: F,\n  PERMISSIVE_MATCH: $,\n  hwb: new RegExp(`hwb${$}`),\n  rgb: new RegExp(`rgb(?:a)?${$}`),\n  hsl: new RegExp(`hsl(?:a)?${$}`),\n  hsv: new RegExp(`hsv(?:a)?${$}`),\n  hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n  hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n  hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n  hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n}, V = (o) => N.includes(o), k = (o, t) => o !== null && typeof o == \"object\" && Object.keys(t).every((r) => r in o), Z = (o) => `${o}`.includes(\".\") && parseFloat(o) === 1, R = (o) => typeof o == \"string\" && o.includes(\"%\"), c = (o) => !!f.CSS_UNIT.exec(`${o}`), z = [\"rgb\", \"hex\", \"hsl\", \"hsv\", \"hwb\"], J = (o) => N.includes(o) || [\"#\", ...z].some((t) => o.includes(t)) ? !1 : T.some(([t]) => o === t), u = (o, t) => {\n  let r = o;\n  if (typeof o == \"number\" && Math.min(o, 0) === 0 && // round values to 6 decimals Math.round(N * (10 ** 6)) / 10 ** 6\n  Math.max(o, 1) === 1)\n    return o;\n  Z(o) && (r = \"100%\");\n  const e = R(r);\n  return r = t === 360 ? parseFloat(r) : Math.min(t, Math.max(0, parseFloat(r))), e && (r = r * t / 100), Math.abs(r - t) < 1e-6 ? 1 : (t === 360 ? r = (r < 0 ? r % t + t : r % t) / t : r = r % t / t, r);\n}, M = (o) => {\n  let t = parseFloat(o);\n  return (Number.isNaN(t) || t < 0 || t > 1) && (t = 1), t;\n}, x = (o) => Math.min(1, Math.max(0, o)), p = (o) => o.length === 1 ? `0${o}` : String(o), K = (o) => {\n  const [[, t]] = T.filter(([r]) => r === o.toLowerCase());\n  return t;\n}, h = (o) => parseInt(o, 16), E = (o) => h(o) / 255, Q = (o) => b(o * 255).toString(16), _ = (o, t, r) => {\n  const e = Math.max(o, t, r), s = Math.min(o, t, r);\n  let n = 0, g = 0;\n  const a = (e + s) / 2;\n  if (e === s)\n    g = 0, n = 0;\n  else {\n    const i = e - s;\n    g = a > 0.5 ? i / (2 - e - s) : i / (e + s), e === o && (n = (t - r) / i + (t < r ? 6 : 0)), e === t && (n = (r - o) / i + 2), e === r && (n = (o - t) / i + 4), n /= 6;\n  }\n  return { h: n, s: g, l: a };\n}, H = (o, t, r) => {\n  let e = r;\n  return e < 0 && (e += 1), e > 1 && (e -= 1), e < 1 / 6 ? o + (t - o) * (6 * e) : e < 1 / 2 ? t : e < 2 / 3 ? o + (t - o) * (2 / 3 - e) * 6 : o;\n}, y = (o, t, r) => {\n  let e = 0, s = 0, n = 0;\n  if (t === 0)\n    s = r, n = r, e = r;\n  else if (r) {\n    const g = r < 0.5 ? r * (1 + t) : r + t - r * t, a = 2 * r - g;\n    e = H(a, g, o + 1 / 3), s = H(a, g, o), n = H(a, g, o - 1 / 3);\n  }\n  return { r: e, g: s, b: n };\n}, G = (o, t, r) => {\n  let e = 0, s = 0;\n  const n = Math.min(o, t, r), g = Math.max(o, t, r), a = 1 - g;\n  if (g === n)\n    return { h: 0, w: n, b: a };\n  o === n ? (e = t - r, s = 3) : (e = t === n ? r - o : o - t, s = t === n ? 5 : 1);\n  const i = (s - e / (g - n)) / 6;\n  return {\n    h: i === 1 ? 0 : i,\n    w: n,\n    b: a\n  };\n}, X = (o, t, r) => {\n  if (t + r >= 1) {\n    const g = t / (t + r);\n    return { r: g, g, b: g };\n  }\n  let { r: e, g: s, b: n } = y(o, 1, 0.5);\n  return [e, s, n] = [e, s, n].map((g) => g * (1 - t - r) + t), { r: e, g: s, b: n };\n}, P = (o, t, r) => {\n  const e = Math.max(o, t, r), s = Math.min(o, t, r);\n  let n = 0;\n  const g = e, a = e - s, i = e === 0 ? 0 : a / e;\n  return e === s ? n = 0 : (o === e && (n = (t - r) / a + (t < r ? 6 : 0)), t === e && (n = (r - o) / a + 2), r === e && (n = (o - t) / a + 4), n /= 6), { h: n, s: i, v: g };\n}, I = (o, t, r) => {\n  const e = o * 6, s = t, n = r, g = Math.floor(e), a = e - g, i = n * (1 - s), l = n * (1 - a * s), d = n * (1 - (1 - a) * s), m = g % 6, w = [n, l, i, i, d, n][m], S = [d, n, n, l, i, i][m], A = [i, i, d, n, n, l][m];\n  return { r: w, g: S, b: A };\n}, j = (o, t, r, e) => {\n  const s = [\n    p(b(o).toString(16)),\n    p(b(t).toString(16)),\n    p(b(r).toString(16))\n  ];\n  return e && s[0].charAt(0) === s[0].charAt(1) && s[1].charAt(0) === s[1].charAt(1) && s[2].charAt(0) === s[2].charAt(1) ? s[0].charAt(0) + s[1].charAt(0) + s[2].charAt(0) : s.join(\"\");\n}, C = (o, t, r, e, s) => {\n  const n = [\n    p(b(o).toString(16)),\n    p(b(t).toString(16)),\n    p(b(r).toString(16)),\n    p(Q(e))\n  ];\n  return s && n[0].charAt(0) === n[0].charAt(1) && n[1].charAt(0) === n[1].charAt(1) && n[2].charAt(0) === n[2].charAt(1) && n[3].charAt(0) === n[3].charAt(1) ? n[0].charAt(0) + n[1].charAt(0) + n[2].charAt(0) + n[3].charAt(0) : n.join(\"\");\n}, Y = (o) => {\n  const t = String(o).trim().toLowerCase();\n  if (J(t))\n    return Object.assign(K(t), {\n      a: 1,\n      format: \"rgb\",\n      ok: !0\n    });\n  if (V(t))\n    return {\n      r: 0,\n      g: 0,\n      b: 0,\n      a: t === \"transparent\" ? 0 : 1,\n      format: \"rgb\",\n      ok: !0\n    };\n  let [, r, e, s, n] = f.rgb.exec(t) || [];\n  return r && e && s ? {\n    r,\n    g: e,\n    b: s,\n    a: n !== void 0 ? n : 1,\n    format: \"rgb\",\n    ok: !0\n  } : ([, r, e, s, n] = f.hsl.exec(t) || [], r && e && s ? {\n    h: r,\n    s: e,\n    l: s,\n    a: n !== void 0 ? n : 1,\n    format: \"hsl\",\n    ok: !0\n  } : ([, r, e, s, n] = f.hsv.exec(t) || [], r && e && s ? {\n    h: r,\n    s: e,\n    v: s,\n    a: n !== void 0 ? n : 1,\n    format: \"hsv\",\n    ok: !0\n  } : ([, r, e, s, n] = f.hwb.exec(t) || [], r && e && s ? {\n    h: r,\n    w: e,\n    b: s,\n    a: n !== void 0 ? n : 1,\n    format: \"hwb\",\n    ok: !0\n  } : ([, r, e, s, n] = f.hex8.exec(t) || [], r && e && s && n ? {\n    r: h(r),\n    g: h(e),\n    b: h(s),\n    a: E(n),\n    format: \"hex\",\n    ok: !0\n  } : ([, r, e, s] = f.hex6.exec(t) || [], r && e && s ? {\n    r: h(r),\n    g: h(e),\n    b: h(s),\n    a: 1,\n    format: \"hex\",\n    ok: !0\n  } : ([, r, e, s, n] = f.hex4.exec(t) || [], r && e && s && n ? {\n    r: h(r + r),\n    g: h(e + e),\n    b: h(s + s),\n    a: E(n + n),\n    format: \"hex\",\n    ok: !0\n  } : ([, r, e, s] = f.hex3.exec(t) || [], r && e && s ? {\n    r: h(r + r),\n    g: h(e + e),\n    b: h(s + s),\n    a: 1,\n    format: \"hex\",\n    ok: !0\n  } : {\n    r: 0,\n    g: 0,\n    b: 0,\n    a: 1,\n    format: \"rgb\",\n    ok: !o\n  })))))));\n}, q = (o) => {\n  let t = { r: 0, g: 0, b: 0 }, r = o, e = 1, s, n, g, a, i, l, d, m, w = \"rgb\", S = !1;\n  return (!r || typeof r == \"string\") && (r = Y(r), S = r.ok), k(r, t) && c(r.r) && c(r.g) && c(r.b) && ({ r: d, g: m, b: i } = r, [d, m, i] = [d, m, i].map((A) => u(A, R(A) ? 100 : 255)), t = { r: d, g: m, b: i }, w = \"format\" in r ? r.format : \"rgb\"), k(r, { h: 0, s: 0, v: 0 }) && c(r.h) && c(r.s) && c(r.v) && ({ h: l, s, v: n } = r, l = u(l, 360), s = u(s, 100), n = u(n, 100), t = I(l, s, n), w = \"hsv\"), k(r, { h: 0, s: 0, l: 0 }) && c(r.h) && c(r.s) && c(r.l) && ({ h: l, s, l: g } = r, l = u(l, 360), s = u(s, 100), g = u(g, 100), t = y(l, s, g), w = \"hsl\"), k(r, { h: 0, w: 0, b: 0 }) && c(r.h) && c(r.w) && c(r.b) && ({ h: l, w: a, b: i } = r, l = u(l, 360), a = u(a, 100), i = u(i, 100), t = X(l, a, i), w = \"hwb\"), c(r.a) && (e = r.a, e = R(e) || parseFloat(`${e}`) > 1 ? u(e, 100) : e), {\n    r: t.r,\n    g: t.g,\n    b: t.b,\n    a: M(e),\n    format: w,\n    ok: S\n  };\n}, sr = \"1.0.8\";\nclass W {\n  // bring main utilities to front\n  static matchers = f;\n  static isOnePointZero = Z;\n  static isPercentage = R;\n  static isValidCSSUnit = c;\n  static isNonColor = V;\n  static isColorName = J;\n  static isColorType = k;\n  static pad2 = p;\n  static clamp01 = x;\n  static bound01 = u;\n  static boundAlpha = M;\n  static getRGBFromName = K;\n  static convertHexToDecimal = E;\n  static convertDecimalToHex = Q;\n  static rgbToHsl = _;\n  static rgbToHex = j;\n  static rgbToHsv = P;\n  static rgbToHwb = G;\n  static rgbaToHex = C;\n  static hslToRgb = I;\n  static hsvToRgb = I;\n  static hueToRgb = H;\n  static hwbToRgb = X;\n  static parseIntFromHex = h;\n  static stringInputToObject = Y;\n  static inputToRGB = q;\n  static roundPart = b;\n  static webColors = T;\n  static nonColors = N;\n  static version = sr;\n  // main public properties\n  r;\n  g;\n  b;\n  a;\n  format;\n  ok;\n  originalInput;\n  // main public methods\n  constructor(t, r) {\n    const e = r && z.includes(r) ? r : \"\", { r: s, g: n, b: g, a, ok: i, format: l } = q(t);\n    this.originalInput = t, this.r = s, this.g = n, this.b = g, this.a = a, this.ok = i, this.format = e || l;\n  }\n  /**\n   * Checks if the current input value is a valid colour.\n   */\n  get isValid() {\n    return this.ok;\n  }\n  /**\n   * Checks if the current colour requires a light text colour.\n   */\n  get isDark() {\n    return this.brightness < 120;\n  }\n  /**\n   * Returns the perceived luminance of a colour.\n   *\n   * @see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n   */\n  get luminance() {\n    const { r: t, g: r, b: e } = this;\n    let s = 0, n = 0, g = 0;\n    return t <= 0.03928 ? s = t / 12.92 : s = ((t + 0.055) / 1.055) ** 2.4, r <= 0.03928 ? n = r / 12.92 : n = ((r + 0.055) / 1.055) ** 2.4, e <= 0.03928 ? g = e / 12.92 : g = ((e + 0.055) / 1.055) ** 2.4, 0.2126 * s + 0.7152 * n + 0.0722 * g;\n  }\n  /**\n   * Returns the perceived brightness of the colour.\n   */\n  get brightness() {\n    const { r: t, g: r, b: e } = this.toRgb();\n    return (t * 299 + r * 587 + e * 114) / 1e3;\n  }\n  /**\n   * Returns the web colour name closest to the current colour.\n   */\n  get name() {\n    const { r: t, g: r, b: e } = this.toRgb(), [s] = T.map(([n, g]) => {\n      const a = (\n        // ((rgb.r - r) ** 2 + (rgb.g - g) ** 2 + (rgb.b - b) ** 2) ** 0.5; // standard\n        (((g.r - t) * 0.3) ** 2 + ((g.g - r) * 0.6) ** 2 + ((g.b - e) * 0.1) ** 2) ** 0.5\n      );\n      return [n, a];\n    }).find(([, n], g, a) => n === Math.min(...a.map(([, i]) => i)));\n    return s;\n  }\n  /**\n   * Returns the colour as an RGBA object.\n   */\n  toRgb() {\n    let { r: t, g: r, b: e, a: s } = this;\n    return [t, r, e] = [t, r, e].map((n) => b(n * 255 * 100) / 100), s = b(s * 100) / 100, {\n      r: t,\n      g: r,\n      b: e,\n      a: s\n    };\n  }\n  /**\n   * Returns the RGBA values concatenated into a CSS3 Module string format.\n   * * rgb(255,255,255)\n   * * rgba(255,255,255,0.5)\n   */\n  toRgbString() {\n    const { r: t, g: r, b: e, a: s } = this.toRgb(), [n, g, a] = [t, r, e].map(b);\n    return s === 1 ? `rgb(${n}, ${g}, ${a})` : `rgba(${n}, ${g}, ${a}, ${s})`;\n  }\n  /**\n   * Returns the RGBA values concatenated into a CSS4 Module string format.\n   * * rgb(255 255 255)\n   * * rgb(255 255 255 / 50%)\n   */\n  toRgbCSS4String() {\n    const { r: t, g: r, b: e, a: s } = this.toRgb(), [n, g, a] = [t, r, e].map(b), i = s === 1 ? \"\" : ` / ${b(s * 100)}%`;\n    return `rgb(${n} ${g} ${a}${i})`;\n  }\n  /**\n   * Returns the hexadecimal value of the colour. When the parameter is *true*\n   * it will find a 3 characters shorthand of the decimal value.\n   */\n  toHex(t) {\n    const { r, g: e, b: s, a: n } = this.toRgb();\n    return n === 1 ? j(r, e, s, t) : C(r, e, s, n, t);\n  }\n  /**\n   * Returns the CSS valid hexadecimal vaue of the colour. When the parameter is *true*\n   * it will find a 3 characters shorthand of the value.\n   */\n  toHexString(t) {\n    return `#${this.toHex(t)}`;\n  }\n  /**\n   * Returns the HEX8 value of the colour.\n   */\n  toHex8(t) {\n    const { r, g: e, b: s, a: n } = this.toRgb();\n    return C(r, e, s, n, t);\n  }\n  /**\n   * Returns the HEX8 value of the colour.\n   */\n  toHex8String(t) {\n    return `#${this.toHex8(t)}`;\n  }\n  /**\n   * Returns the colour as a HSVA object.\n   */\n  toHsv() {\n    const { r: t, g: r, b: e, a: s } = this, { h: n, s: g, v: a } = P(t, r, e);\n    return {\n      h: n,\n      s: g,\n      v: a,\n      a: s\n    };\n  }\n  /**\n   * Returns the colour as an HSLA object.\n   */\n  toHsl() {\n    const { r: t, g: r, b: e, a: s } = this, { h: n, s: g, l: a } = _(t, r, e);\n    return {\n      h: n,\n      s: g,\n      l: a,\n      a: s\n    };\n  }\n  /**\n   * Returns the HSLA values concatenated into a CSS3 Module format string.\n   * * `hsl(150, 100%, 50%)`\n   * * `hsla(150, 100%, 50%, 0.5)`\n   */\n  toHslString() {\n    let { h: t, s: r, l: e, a: s } = this.toHsl();\n    return t = b(t * 360), r = b(r * 100), e = b(e * 100), s = b(s * 100) / 100, s === 1 ? `hsl(${t}, ${r}%, ${e}%)` : `hsla(${t}, ${r}%, ${e}%, ${s})`;\n  }\n  /**\n   * Returns the HSLA values concatenated into a CSS4 Module format string.\n   * * `hsl(150deg 100% 50%)`\n   * * `hsl(150deg 100% 50% / 50%)`\n   */\n  toHslCSS4String() {\n    let { h: t, s: r, l: e, a: s } = this.toHsl();\n    t = b(t * 360), r = b(r * 100), e = b(e * 100), s = b(s * 100);\n    const n = s < 100 ? ` / ${b(s)}%` : \"\";\n    return `hsl(${t}deg ${r}% ${e}%${n})`;\n  }\n  /**\n   * Returns the colour as an HWBA object.\n   */\n  toHwb() {\n    const { r: t, g: r, b: e, a: s } = this, { h: n, w: g, b: a } = G(t, r, e);\n    return {\n      h: n,\n      w: g,\n      b: a,\n      a: s\n    };\n  }\n  /**\n   * Returns the HWBA values concatenated into a string.\n   */\n  toHwbString() {\n    let { h: t, w: r, b: e, a: s } = this.toHwb();\n    t = b(t * 360), r = b(r * 100), e = b(e * 100), s = b(s * 100);\n    const n = s < 100 ? ` / ${b(s)}%` : \"\";\n    return `hwb(${t}deg ${r}% ${e}%${n})`;\n  }\n  /**\n   * Sets the alpha value of the current colour.\n   */\n  setAlpha(t) {\n    return typeof t != \"number\" ? this : (this.a = M(t), this);\n  }\n  /**\n   * Saturate the colour with a given amount.\n   */\n  saturate(t) {\n    if (typeof t != \"number\")\n      return this;\n    const { h: r, s: e, l: s } = this.toHsl(), { r: n, g, b: a } = y(r, x(e + t / 100), s);\n    return Object.assign(this, { r: n, g, b: a }), this;\n  }\n  /**\n   * Desaturate the colour with a given amount.\n   */\n  desaturate(t) {\n    return typeof t == \"number\" ? this.saturate(-t) : this;\n  }\n  /**\n   * Completely desaturates a colour into greyscale.\n   * Same as calling `desaturate(100)`\n   */\n  greyscale() {\n    return this.saturate(-100);\n  }\n  /**\n   * Increase the colour lightness with a given amount.\n   */\n  lighten(t) {\n    if (typeof t != \"number\")\n      return this;\n    const { h: r, s: e, l: s } = this.toHsl(), { r: n, g, b: a } = y(r, e, x(s + t / 100));\n    return Object.assign(this, { r: n, g, b: a }), this;\n  }\n  /**\n   * Decrease the colour lightness with a given amount.\n   */\n  darken(t) {\n    return typeof t == \"number\" ? this.lighten(-t) : this;\n  }\n  /**\n   * Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n   * Values outside of this range will be wrapped into this range.\n   */\n  spin(t) {\n    if (typeof t != \"number\")\n      return this;\n    const { h: r, s: e, l: s } = this.toHsl(), { r: n, g, b: a } = y(x((r * 360 + t) % 360 / 360), e, s);\n    return Object.assign(this, { r: n, g, b: a }), this;\n  }\n  /** Returns a clone of the current `Color` instance. */\n  clone() {\n    return new W(this);\n  }\n  /**\n   * Returns the colour value in CSS valid string format.\n   */\n  toString(t) {\n    const { format: r } = this;\n    return r === \"hex\" ? this.toHexString(t) : r === \"hsl\" ? this.toHslString() : r === \"hwb\" ? this.toHwbString() : this.toRgbString();\n  }\n}\nexport {\n  W as default\n};\n//# sourceMappingURL=index.mjs.map\n","import Color from '@thednp/color';\n// import { isNumber } from '@thednp/shorty';\n\n/**\n * Returns a color palette with a given set of parameters.\n *\n * @example\n * new ColorPalette(0, 12, 10, 80);\n * // => { hue: 0, hueSteps: 12, lightSteps: 10, saturation: 80, colors: Array<Color> }\n */\nexport default class ColorPalette {\n  public static Color = Color;\n  hue: number;\n  hueSteps: number;\n  lightSteps: number;\n  saturation: number;\n  colors: Color[];\n  /**\n   * The `hue` parameter is optional, which would be set to 0.\n   * * `args.hue` the starting Hue [0, 360]\n   * * `args.hueSteps` Hue Steps Count [5, 24]\n   * * `args.lightSteps` Lightness Steps Count [5, 12]\n   * * `args.saturation` Saturation [0, 100]\n   */\n  constructor(...args: [number?, number?, number?, number?]) {\n    let hue = 0;\n    let hueSteps = 12;\n    let lightSteps = 10;\n    let lightnessArray = [0.5];\n    let saturation = 100;\n    // if (!args.every(n => isNumber(n))) throw TypeError('ColorPalette only accepts numbers.');\n\n    if (args.length === 4) {\n      [hue, hueSteps, lightSteps, saturation] = args as [number, number, number, number];\n    } else if (args.length === 3) {\n      [hue, hueSteps, lightSteps] = args as [number, number, number];\n    } else if (args.length === 2) {\n      [hueSteps, lightSteps] = args as [number, number];\n      if ([hueSteps, lightSteps].some(n => n < 1)) {\n        throw TypeError('ColorPalette: the two minimum arguments must be numbers higher than 0.');\n      }\n    }\n\n    const colors: Color[] = [];\n    const hueStep = 360 / hueSteps;\n    const half = Color.roundPart((lightSteps - (lightSteps % 2 ? 1 : 0)) / 2);\n    const steps1To13 = [0.25, 0.2, 0.15, 0.11, 0.09, 0.075];\n    const lightSets = [\n      [1, 2, 3],\n      [4, 5],\n      [6, 7],\n      [8, 9],\n      [10, 11],\n      [12, 13],\n    ];\n    const closestSet = lightSets.find(set => set.includes(lightSteps));\n\n    // find a lightStep that won't go beyond black and white\n    // something within the [10-90] range of lightness\n    const lightStep = closestSet\n      ? steps1To13[lightSets.indexOf(closestSet)]\n      : 100 / (lightSteps + (lightSteps % 2 ? 0 : 1)) / 100;\n\n    // light tints\n    for (let i = 1; i < half + 1; i += 1) {\n      lightnessArray = [...lightnessArray, 0.5 + lightStep * i];\n    }\n\n    // dark tints\n    for (let i = 1; i < lightSteps - half; i += 1) {\n      lightnessArray = [0.5 - lightStep * i, ...lightnessArray];\n    }\n\n    // feed `colors` Array\n    for (let i = 0; i < hueSteps; i += 1) {\n      const currentHue = ((hue + i * hueStep) % 360) / 360;\n      lightnessArray.forEach(l => {\n        const newColor = new Color({ h: currentHue, s: 1, l });\n        colors.push(saturation < 100 ? newColor.saturate(saturation - 100) : newColor);\n      });\n    }\n\n    this.hue = hue;\n    this.hueSteps = hueSteps;\n    this.lightSteps = lightSteps;\n    this.saturation = saturation;\n    this.colors = colors;\n  }\n}\n","import ColorPickerLabels from '../interface/colorPickerLabels';\n\n/** The labels presented to the user. */\nconst colorPickerLabels: ColorPickerLabels = {\n  pickerLabel: 'Colour Picker',\n  appearanceLabel: 'Colour Appearance',\n  valueLabel: 'Colour Value',\n  toggleLabel: 'Select Colour',\n  presetsLabel: 'Colour Presets',\n  defaultsLabel: 'Colour Defaults',\n  formatLabel: 'Format',\n  alphaLabel: 'Alpha',\n  hexLabel: 'Hexadecimal',\n  hueLabel: 'Hue',\n  whitenessLabel: 'Whiteness',\n  blacknessLabel: 'Blackness',\n  saturationLabel: 'Saturation',\n  lightnessLabel: 'Lightness',\n  redLabel: 'Red',\n  greenLabel: 'Green',\n  blueLabel: 'Blue',\n};\n\nexport default colorPickerLabels;\n","/** A list of 17 color names used for WAI-ARIA compliance. */\nconst colorNames: string[] = [\n  'white',\n  'black',\n  'grey',\n  'red',\n  'orange',\n  'brown',\n  'gold',\n  'olive',\n  'yellow',\n  'lime',\n  'green',\n  'teal',\n  'cyan',\n  'blue',\n  'violet',\n  'magenta',\n  'pink',\n];\nexport default colorNames;\n","import { isString } from '@thednp/shorty';\n\n/**\n * Check if a string is valid JSON string.\n *\n * @param str the string input\n * @returns the query result\n */\nconst isValidJSON = (str: unknown): str is string => {\n  if (!isString(str)) return false;\n  try {\n    JSON.parse(str);\n  } catch (e) {\n    return false;\n  }\n  return true;\n};\n\nexport default isValidJSON;\n","const vHidden = 'v-hidden';\nexport default vHidden;\n","import { createElement, setAttribute, ObjectAssign, toUpperCase } from '@thednp/shorty';\n\nimport vHidden from './vHidden';\nimport ColorPicker from '../index';\n\n/**\n * Returns the color form for `ColorPicker`.\n *\n * @param self the `ColorPicker` instance\n * @returns a new `<div>` element with color component `<input>`\n */\nconst getColorForm = (self: ColorPicker): HTMLElement => {\n  const { format, id, componentLabels } = self;\n  const colorForm = createElement({\n    tagName: 'div',\n    className: `color-form ${format}`,\n  }) as HTMLElement;\n\n  let components = ['hex'];\n  if (format === 'rgb') components = ['red', 'green', 'blue', 'alpha'];\n  else if (format === 'hsl') components = ['hue', 'saturation', 'lightness', 'alpha'];\n  else if (format === 'hwb') components = ['hue', 'whiteness', 'blackness', 'alpha'];\n\n  components.forEach((c: string): void => {\n    const [C] = format === 'hex' ? ['#'] : toUpperCase(c).split('');\n    const cID = `color_${format}_${c}_${id}`;\n    const formatLabel = componentLabels[`${c}Label`];\n    const cInputLabel = createElement({ tagName: 'label' }) as HTMLElement;\n    setAttribute(cInputLabel, 'for', cID);\n    cInputLabel.append(\n      createElement({\n        tagName: 'span',\n        ariaHidden: 'true',\n        innerText: `${C}:`,\n      }) as HTMLElement,\n      createElement({\n        tagName: 'span',\n        className: vHidden,\n        innerText: formatLabel,\n      }) as HTMLElement,\n    );\n    const cInput = createElement({\n      tagName: 'input',\n      id: cID,\n      // name: cID, - prevent saving the value to a form\n      type: format === 'hex' ? 'text' : 'number',\n      value: c === 'alpha' ? '100' : '0',\n      className: `color-input ${c}`,\n      autocomplete: 'off',\n      spellcheck: false,\n    } as Partial<HTMLInputElement>) as HTMLInputElement;\n\n    // alpha\n    let max = '100';\n    let step = '1';\n    if (c !== 'alpha') {\n      if (format === 'rgb') {\n        max = '255';\n        step = '1';\n      } else if (c === 'hue') {\n        max = '360';\n        step = '1';\n      }\n    }\n    ObjectAssign(cInput, {\n      min: '0',\n      max,\n      step,\n    });\n    colorForm.append(cInputLabel, cInput);\n  });\n  return colorForm;\n};\n\nexport default getColorForm;\n","import { createElement } from '@thednp/shorty';\n\nimport ColorPicker from '..';\n\n/**\n * Returns all color controls for `ColorPicker`.\n *\n * @param self the `ColorPicker` instance\n * @returns color controls\n */\nconst getColorControls = (self: ColorPicker): HTMLElement => {\n  const { format, componentLabels } = self;\n  const { hueLabel, alphaLabel, lightnessLabel, saturationLabel, whitenessLabel, blacknessLabel } = componentLabels;\n\n  const max1 = format === 'hsl' ? 360 : 100;\n  const max2 = format === 'hsl' ? 100 : 360;\n  const max3 = 100;\n\n  let ctrl1Label = format === 'hsl' ? `${hueLabel} & ${lightnessLabel}` : `${lightnessLabel} & ${saturationLabel}`;\n\n  ctrl1Label = format === 'hwb' ? `${whitenessLabel} & ${blacknessLabel}` : ctrl1Label;\n\n  const ctrl2Label = format === 'hsl' ? `${saturationLabel}` : `${hueLabel}`;\n\n  const colorControls = createElement({\n    tagName: 'div',\n    className: `color-controls ${format}`,\n  }) as HTMLElement;\n\n  const colorPointer = 'color-pointer';\n  const colorSlider = 'color-slider';\n\n  const controls = [\n    {\n      i: 1,\n      c: colorPointer,\n      l: ctrl1Label,\n      min: 0,\n      max: max1,\n    },\n    {\n      i: 2,\n      c: colorSlider,\n      l: ctrl2Label,\n      min: 0,\n      max: max2,\n    },\n    {\n      i: 3,\n      c: colorSlider,\n      l: alphaLabel,\n      min: 0,\n      max: max3,\n    },\n  ];\n\n  controls.forEach(template => {\n    const { i, c, l, min, max } = template;\n    const control = createElement({\n      tagName: 'div',\n      className: 'color-control',\n      role: 'presentation',\n    }) as HTMLElement;\n\n    control.append(\n      createElement({\n        tagName: 'div',\n        className: `visual-control visual-control${i}`,\n      }) as HTMLElement,\n    );\n\n    const knob = createElement({\n      tagName: 'div',\n      className: `${c} knob`,\n      ariaLive: 'polite',\n      ariaLabel: l,\n      role: 'slider',\n      tabIndex: 0,\n      ariaValueMin: `${min}`,\n      ariaValueMax: `${max}`,\n    }) as HTMLElement;\n\n    control.append(knob);\n    colorControls.append(control);\n  });\n\n  return colorControls;\n};\n\nexport default getColorControls;\n","import { setAttribute, getAttribute, createElement, setElementStyle } from '@thednp/shorty';\n\nimport Color from '@thednp/color';\nimport ColorPalette from '../colorPalette';\nimport ColorPicker from '../index';\n\n/**\n * Returns a color-defaults with given values and class.\n */\nconst getColorMenu = (self: ColorPicker, colorsSource: ColorPalette | string[], menuClass: string): HTMLElement => {\n  const { input, format, componentLabels } = self;\n  const { defaultsLabel, presetsLabel } = componentLabels;\n  const isOptionsMenu = menuClass === 'color-options';\n  const isPalette = colorsSource instanceof ColorPalette;\n  const menuLabel = isOptionsMenu ? presetsLabel : defaultsLabel;\n  const colorsArray = isPalette ? colorsSource.colors : colorsSource;\n  const colorsCount = colorsArray.length;\n  const { lightSteps } = isPalette ? colorsSource : { lightSteps: null };\n  const fit = lightSteps || [9, 10].find(x => colorsCount >= x * 2 && !(colorsCount % x)) || 5;\n  const isMultiLine = isOptionsMenu && colorsCount > fit;\n  let rowCountHover = 2;\n  rowCountHover = isMultiLine && colorsCount > fit * 2 ? 3 : rowCountHover;\n  rowCountHover = isMultiLine && colorsCount > fit * 3 ? 4 : rowCountHover;\n  rowCountHover = isMultiLine && colorsCount > fit * 4 ? 5 : rowCountHover;\n  const rowCount = rowCountHover - (colorsCount <= fit * 3 ? 1 : 2);\n  const isScrollable = isMultiLine && colorsCount > rowCount * fit;\n  let finalClass = menuClass;\n  finalClass += isScrollable ? ' scrollable' : '';\n  finalClass += isMultiLine ? ' multiline' : '';\n  const gap = isMultiLine ? '1px' : '0.25rem';\n  let optionSize = isMultiLine ? 1.75 : 2;\n  optionSize = fit > 5 && isMultiLine ? 1.5 : optionSize;\n  const menuHeight = `${rowCount * optionSize}rem`;\n  const menuHeightHover = `calc(${rowCountHover} * ${optionSize}rem + ${rowCountHover - 1} * ${gap})`;\n\n  // <UL> is an `HTMLElement`\n  const menu = createElement({\n    tagName: 'ul',\n    className: finalClass,\n    role: 'listbox',\n    ariaLabel: menuLabel,\n  }) as HTMLElement;\n\n  if (isScrollable) {\n    setElementStyle(menu, {\n      '--grid-item-size': `${optionSize}rem`,\n      '--grid-fit': `${fit}`,\n      '--grid-gap': gap,\n      '--grid-height': menuHeight,\n      '--grid-hover-height': menuHeightHover,\n    });\n  }\n\n  colorsArray.forEach(x => {\n    let [value, label] = typeof x === 'string' ? x.trim().split(':') : [];\n    if (x instanceof Color) {\n      value = x.toHexString();\n      label = value;\n    }\n    const color = new Color(x instanceof Color ? x : value, format);\n    const isActive = color.toString() === getAttribute(input, 'value');\n    const active = isActive ? ' active' : '';\n\n    const option = createElement({\n      tagName: 'li',\n      className: `color-option${active}`,\n      innerText: `${label || value}`,\n      tabIndex: 0,\n      role: 'option',\n      ariaSelected: isActive ? 'true' : 'false',\n    }) as HTMLElement;\n    setAttribute(option, 'data-value', `${value}`);\n\n    if (isOptionsMenu) {\n      setElementStyle(option, { backgroundColor: value });\n    }\n\n    menu.append(option);\n  });\n  return menu;\n};\n\nexport default getColorMenu;\n","import {\n  getAttribute,\n  setAttribute,\n  toUpperCase,\n  ariaHidden,\n  tabindex,\n  createElement,\n  createElementNS,\n} from '@thednp/shorty';\n\nimport Color from '@thednp/color';\n\nimport getColorForm from './getColorForm';\nimport getColorControls from './getColorControls';\nimport getColorMenu from './getColorMenu';\nimport vHidden from './vHidden';\n\nimport ColorPicker from '../index';\n\n/**\n * Generate HTML markup and update instance properties.\n *\n * @param self\n */\nconst setMarkup = (self: ColorPicker) => {\n  const { input, parent, format, id, componentLabels, colorKeywords, colorPresets } = self;\n  const colorValue = getAttribute(input, 'value') || '#fff';\n  const { nonColors } = Color;\n\n  const { toggleLabel, pickerLabel, formatLabel, hexLabel } = componentLabels;\n\n  // update color\n  const color = nonColors.includes(colorValue) ? '#fff' : colorValue;\n  self.color = new Color(color, format);\n\n  // set initial controls dimensions\n  const formatString = format === 'hex' ? hexLabel : toUpperCase(format);\n\n  const pickerBtn = createElement({\n    id: `picker-btn-${id}`,\n    tagName: 'button',\n    className: 'picker-toggle btn-appearance',\n    ariaExpanded: 'false',\n    ariaHasPopup: 'true',\n  }) as HTMLElement;\n\n  pickerBtn.append(\n    createElement({\n      tagName: 'span',\n      className: vHidden,\n      innerText: `${pickerLabel}. ${formatLabel}: ${formatString}`,\n    }) as HTMLElement,\n  );\n\n  const pickerDropdown = createElement({\n    tagName: 'div',\n    className: 'color-dropdown picker',\n    role: 'group',\n    ariaLabelledBy: `picker-btn-${id}`,\n  } as Partial<HTMLElement> & { ariaLabelledBy: string }) as HTMLElement;\n\n  const colorControls = getColorControls(self);\n  const colorForm = getColorForm(self);\n\n  pickerDropdown.append(colorControls, colorForm);\n  input.before(pickerBtn);\n  parent.append(pickerDropdown);\n\n  // set colour key menu template\n  if (colorKeywords || colorPresets) {\n    const presetsDropdown = createElement({\n      tagName: 'div',\n      className: 'color-dropdown scrollable menu',\n    }) as HTMLElement;\n\n    // color presets\n    if (colorPresets) {\n      presetsDropdown.append(getColorMenu(self, colorPresets, 'color-options'));\n    }\n\n    // explicit defaults [reset, initial, inherit, transparent, currentColor]\n    // also custom defaults [default: #069, complementary: #930]\n    if (colorKeywords && colorKeywords.length) {\n      presetsDropdown.append(getColorMenu(self, colorKeywords, 'color-defaults'));\n    }\n\n    const presetsBtn = createElement({\n      tagName: 'button',\n      className: 'menu-toggle btn-appearance',\n      tabIndex: -1,\n      ariaExpanded: 'false',\n      ariaHasPopup: 'true',\n    }) as HTMLElement;\n\n    const xmlns = encodeURI('http://www.w3.org/2000/svg');\n    const presetsIcon = createElementNS(xmlns, {\n      tagName: 'svg',\n    }) as HTMLElement;\n    setAttribute(presetsIcon, 'xmlns', xmlns);\n    setAttribute(presetsIcon, 'viewBox', '0 0 512 512');\n    setAttribute(presetsIcon, ariaHidden, 'true');\n\n    const path = createElementNS(xmlns, {\n      tagName: 'path',\n    }) as HTMLElement;\n    setAttribute(path, 'd', 'M98,158l157,156L411,158l27,27L255,368L71,185L98,158z');\n    setAttribute(path, 'fill', '#fff');\n    presetsIcon.append(path);\n    presetsBtn.append(\n      createElement({\n        tagName: 'span',\n        className: vHidden,\n        innerText: `${toggleLabel}`,\n      }) as HTMLElement,\n      presetsIcon,\n    );\n\n    parent.append(presetsBtn, presetsDropdown);\n  }\n\n  // solve non-colors after settings save\n  if (colorKeywords && nonColors.includes(colorValue)) {\n    self.value = colorValue;\n  }\n  setAttribute(input, tabindex, '-1');\n};\n\nexport default setMarkup;\n","import { addListener, removeListener } from '@thednp/event-listener';\n\nimport {\n  ariaDescription,\n  ariaSelected,\n  ariaValueNow,\n  ariaValueText,\n  ariaExpanded,\n  keyArrowDown,\n  keyArrowUp,\n  keyArrowLeft,\n  keyArrowRight,\n  keyEnter,\n  keySpace,\n  keyEscape,\n  focusinEvent,\n  mouseclickEvent,\n  keydownEvent,\n  changeEvent,\n  touchmoveEvent,\n  pointerdownEvent,\n  pointermoveEvent,\n  pointerupEvent,\n  tabindex,\n  focusoutEvent,\n  resizeEvent,\n  keyupEvent,\n  scrollEvent,\n  dispatchEvent,\n  getElementsByClassName,\n  closest,\n  querySelector,\n  getElementTransitionDuration,\n  getBoundingClientRect,\n  getUID,\n  getElementStyle,\n  getDocumentElement,\n  getDocument,\n  ObjectAssign,\n  Data,\n  getInstance,\n  setElementStyle,\n  normalizeOptions,\n  reflow,\n  focus,\n  hasClass,\n  addClass,\n  removeClass,\n  setAttribute,\n  getAttribute,\n  removeAttribute,\n  isArray,\n  isString,\n  getWindow,\n} from '@thednp/shorty';\n\n// ColorPicker Util\n// ================\nimport Color from '@thednp/color';\nimport type { RGBA, HWBA, HSLA, HSVA } from '@thednp/color';\n\nimport ColorPalette from './colorPalette';\nimport colorPickerLabels from './util/colorPickerLabels';\nimport colorNames from './util/colorNames';\nimport isValidJSON from './util/isValidJSON';\nimport setMarkup from './util/setMarkup';\n\nimport ColorPickerOptions from './interface/colorPickerOptions';\nimport ColorPickerLabels from './interface/colorPickerLabels';\nimport { version } from '../../package.json';\n\n// ColorPicker GC\n// ==============\nconst colorPickerString = 'color-picker';\nconst colorPickerSelector = `[data-function=\"${colorPickerString}\"]`;\nconst colorPickerParentSelector = `.${colorPickerString}`;\nconst colorPickerDefaults: ColorPickerOptions = {\n  componentLabels: colorPickerLabels,\n  colorLabels: colorNames,\n  format: 'rgb',\n  colorPresets: false,\n  colorKeywords: false,\n};\nconst { roundPart, nonColors } = Color;\n\n// ColorPicker Static Methods\n// ==========================\nconst getColorPickerInstance = (element: HTMLInputElement) => getInstance<ColorPicker>(element, colorPickerString);\nconst initColorPicker = (element: HTMLInputElement) => new ColorPicker(element);\n\n// ColorPicker Private Methods\n// ===========================\n\n/**\n * Add / remove `ColorPicker` main event listeners.\n */\nconst toggleEvents = (self: ColorPicker, action?: boolean) => {\n  const fn = action ? addListener : removeListener;\n  const { input, pickerToggle, menuToggle } = self;\n\n  fn(input, focusinEvent, self.showPicker);\n  fn(pickerToggle, mouseclickEvent, self.togglePicker);\n\n  if (menuToggle) {\n    fn(menuToggle, mouseclickEvent, self.toggleMenu);\n  }\n};\n\n/**\n * Add / remove `ColorPicker` event listeners active only when open.\n */\nconst toggleEventsOnShown = (self: ColorPicker, action?: boolean) => {\n  const fn = action ? addListener : removeListener;\n  const { input, colorMenu, parent } = self;\n  const doc = getDocument(input);\n  const win = getWindow(doc);\n\n  fn(self.controls, pointerdownEvent, self.pointerDown as EventListener);\n  self.controlKnobs.forEach(x => fn(x, keydownEvent, self.handleKnobs as EventListener));\n\n  fn(win, scrollEvent, self.handleScroll);\n  fn(win, resizeEvent, self.update);\n\n  [input, ...self.inputs].forEach(x => fn(x, changeEvent, self.changeHandler));\n\n  if (colorMenu) {\n    fn(colorMenu, mouseclickEvent, self.menuClickHandler);\n    fn(colorMenu, keydownEvent, self.menuKeyHandler as EventListener);\n  }\n\n  fn(doc, pointermoveEvent, self.pointerMove as EventListener);\n  fn(doc, pointerupEvent, self.pointerUp as EventListener);\n  fn(parent, focusoutEvent, self.handleFocusOut as EventListener);\n  fn(doc, keyupEvent, self.handleDismiss as EventListener);\n};\n\n/**\n * Triggers the `ColorPicker` original event.\n */\nconst firePickerChange = (self: ColorPicker) => {\n  dispatchEvent(self.input, new CustomEvent('colorpicker.change'));\n};\n\n/**\n * Hides a visible dropdown.\n */\nconst removePosition = (element: HTMLElement) => {\n  /* istanbul ignore else */\n  if (element) {\n    ['bottom', 'top'].forEach(x => removeClass(element, x));\n  }\n};\n\n/**\n * Shows a `ColorPicker` dropdown and close the curent open dropdown.\n */\nconst showDropdown = (self: ColorPicker, dropdown: HTMLElement) => {\n  const { colorPicker, colorMenu, menuToggle, pickerToggle, parent } = self;\n  const isPicker = dropdown === colorPicker;\n  const openDropdown = isPicker ? colorMenu : colorPicker;\n  const activeBtn = isPicker ? menuToggle : pickerToggle;\n  const nextBtn = !isPicker ? menuToggle : pickerToggle;\n\n  if (!hasClass(parent, 'open')) {\n    addClass(parent, 'open');\n  }\n  if (openDropdown) {\n    removeClass(openDropdown, 'show');\n    removePosition(openDropdown);\n  }\n  addClass(dropdown, 'bottom');\n  reflow(dropdown);\n  addClass(dropdown, 'show');\n\n  if (isPicker) self.update();\n\n  if (!self.isOpen) {\n    toggleEventsOnShown(self, true);\n    self.updateDropdownPosition();\n    self.isOpen = true;\n    setAttribute(self.input, tabindex, '0');\n    if (menuToggle) {\n      setAttribute(menuToggle, tabindex, '0');\n    }\n  }\n\n  setAttribute(nextBtn, ariaExpanded, 'true');\n  if (activeBtn) {\n    setAttribute(activeBtn, ariaExpanded, 'false');\n  }\n};\n\n/**\n * Color Picker Web Component\n *\n * @see http://thednp.github.io/color-picker\n */\nexport default class ColorPicker {\n  // bring utils to staic\n  public static Color = Color;\n  public static ColorPalette = ColorPalette;\n  public static getInstance = getColorPickerInstance;\n  public static init = initColorPicker;\n  public static selector = colorPickerSelector;\n  // utils important for render\n  public static roundPart = roundPart;\n  public static setElementStyle = setElementStyle;\n  public static setAttribute = setAttribute;\n  public static getBoundingClientRect = getBoundingClientRect;\n  public static version = version;\n  public static colorNames = colorNames;\n  public static colorPickerLabels = colorPickerLabels;\n\n  id: number;\n  input: HTMLInputElement;\n  color: Color;\n  format = 'rgb';\n  parent: HTMLElement;\n  dragElement: HTMLElement | undefined;\n  isOpen = false;\n  controlPositions: {\n    c1x: number;\n    c1y: number;\n    c2y: number;\n    c3y: number;\n  };\n  colorLabels: Record<string, string> = {};\n  colorKeywords: string[] | false;\n  colorPresets: ColorPalette | string[] | false;\n  componentLabels: ColorPickerLabels;\n  pickerToggle: HTMLElement;\n  menuToggle: HTMLElement;\n  colorPicker: HTMLElement;\n  colorMenu: HTMLElement;\n  controls: HTMLElement;\n  inputs: HTMLInputElement[];\n  controlKnobs: HTMLElement[];\n  visuals: HTMLElement[];\n\n  /**\n   * Returns a new `ColorPicker` instance. The target of this constructor\n   * must be an `HTMLInputElement`.\n   *\n   * @param target the target `<input>` element\n   * @param config instance options\n   */\n  constructor(target: (HTMLElement & HTMLInputElement) | string, config?: Partial<ColorPickerOptions>) {\n    const input = querySelector(target) as HTMLInputElement;\n\n    // invalidate\n    if (typeof target === 'undefined') throw new TypeError(`ColorPicker target not specified.`);\n    if (isString(target) && !input) throw new TypeError(`ColorPicker target \"${target}\" cannot be found.`);\n    this.input = input;\n\n    const parent = closest(input, colorPickerParentSelector);\n    if (!parent) throw new TypeError('ColorPicker requires a specific markup to work.');\n\n    this.parent = parent;\n    this.id = getUID(input, colorPickerString);\n    this.dragElement = undefined;\n    this.isOpen = false;\n    this.controlPositions = {\n      c1x: 0,\n      c1y: 0,\n      c2y: 0,\n      c3y: 0,\n    };\n    this.colorLabels = {};\n    this.colorKeywords = false;\n    this.colorPresets = false;\n\n    // process options\n    const { format, componentLabels, colorLabels, colorKeywords, colorPresets } = normalizeOptions(\n      input,\n      colorPickerDefaults,\n      config || {},\n    );\n\n    let translatedColorLabels = colorNames;\n    /* istanbul ignore else */\n    if (isArray(colorLabels) && colorLabels.length === 17) {\n      translatedColorLabels = colorLabels;\n    } else if (isString(colorLabels) && colorLabels.split(',').length === 17) {\n      translatedColorLabels = colorLabels.split(',');\n    }\n\n    // expose colour labels to all methods\n    colorNames.forEach((c, i) => {\n      this.colorLabels[c] = translatedColorLabels[i].trim();\n    });\n\n    // update and expose component labels\n    const tempComponentLabels =\n      isString(componentLabels) && isValidJSON(componentLabels)\n        ? (JSON.parse(componentLabels) as ColorPickerLabels)\n        : componentLabels;\n    this.componentLabels = ObjectAssign({ ...colorPickerLabels }, tempComponentLabels);\n    this.color = new Color(input.value || '#fff', format);\n    this.format = format;\n\n    // set colour defaults\n    if (isArray(colorKeywords) && colorKeywords.length) {\n      this.colorKeywords = colorKeywords;\n    } else if (isString(colorKeywords) && colorKeywords.length) {\n      this.colorKeywords = colorKeywords.split(',').map(x => x.trim());\n    }\n\n    // set colour presets\n    if (isArray(colorPresets) && colorPresets.length) {\n      this.colorPresets = colorPresets;\n    } else if (colorPresets && isValidJSON(colorPresets)) {\n      const { hue, hueSteps, lightSteps, saturation } = JSON.parse(colorPresets) as {\n        hue: number;\n        hueSteps: number;\n        lightSteps: number;\n        saturation: number;\n      };\n      this.colorPresets = new ColorPalette(hue, hueSteps, lightSteps, saturation);\n    } else if (isString(colorPresets)) {\n      this.colorPresets = colorPresets.split(',').map((x: string) => x.trim());\n    }\n\n    // generate markup\n    setMarkup(this);\n\n    const [colorPicker, colorMenu] = getElementsByClassName('color-dropdown', parent);\n    // set main elements\n    this.pickerToggle = querySelector('.picker-toggle', parent) as HTMLElement;\n    this.menuToggle = querySelector('.menu-toggle', parent) as HTMLElement;\n    this.colorPicker = colorPicker;\n    this.colorMenu = colorMenu;\n    this.inputs = [...getElementsByClassName('color-input', parent)] as HTMLInputElement[];\n    const [controls] = getElementsByClassName('color-controls', parent);\n    this.controls = controls;\n    this.controlKnobs = [...getElementsByClassName('knob', controls)];\n    this.visuals = [...getElementsByClassName('visual-control', controls)];\n\n    // update colour picker controls, inputs and visuals\n    this.update();\n    // console.log(this)\n\n    // add main events listeners\n    toggleEvents(this, true);\n\n    // set component data\n    Data.set(input, colorPickerString, this);\n  }\n\n  /** Returns the current colour value */\n  get value(): string {\n    return this.input.value;\n  }\n\n  /**\n   * Sets a new colour value.\n   *\n   * @param {string} v new colour value\n   */\n  set value(v: string) {\n    this.input.value = v;\n  }\n\n  /** Check if the colour presets include any non-colour. */\n  get hasNonColor(): boolean {\n    return this.colorKeywords instanceof Array && this.colorKeywords.some(x => nonColors.includes(x));\n  }\n\n  /** Returns hexadecimal value of the current colour. */\n  get hex(): string {\n    return this.color.toHex(true);\n  }\n\n  /** Returns the current colour value in {h,s,v,a} object format. */\n  get hsv(): HSVA {\n    return this.color.toHsv();\n  }\n\n  /** Returns the current colour value in {h,s,l,a} object format. */\n  get hsl(): HSLA {\n    return this.color.toHsl();\n  }\n\n  /** Returns the current colour value in {h,w,b,a} object format. */\n  get hwb(): HWBA {\n    return this.color.toHwb();\n  }\n\n  /** Returns the current colour value in {r,g,b,a} object format. */\n  get rgb(): RGBA {\n    return this.color.toRgb();\n  }\n\n  /** Returns the current colour brightness. */\n  get brightness(): number {\n    return this.color.brightness;\n  }\n\n  /** Returns the current colour luminance. */\n  get luminance(): number {\n    return this.color.luminance;\n  }\n\n  /** Checks if the current colour requires a light text colour. */\n  get isDark(): boolean {\n    const { color, brightness } = this;\n    return brightness < 120 && color.a > 0.33;\n  }\n\n  /** Checks if the current input value is a valid colour. */\n  get isValid(): boolean {\n    const inputValue = this.input.value;\n    return inputValue !== '' && new Color(inputValue).isValid;\n  }\n\n  /** Returns the colour appearance, usually the closest colour name for the current value. */\n  get appearance(): string {\n    const { colorLabels, hsl, hsv, format } = this;\n\n    const hue = roundPart(hsl.h * 360);\n    const saturationSource = format === 'hsl' ? hsl.s : hsv.s;\n    const saturation = roundPart(saturationSource * 100);\n    const lightness = roundPart(hsl.l * 100);\n    const hsvl = hsv.v * 100;\n\n    let colorName = 'black';\n\n    // determine color appearance\n    /* istanbul ignore else */\n    if (lightness === 100 && saturation === 0) {\n      colorName = colorLabels.white;\n    } else if (lightness === 0) {\n      colorName = colorLabels.black;\n    } else if (saturation === 0) {\n      colorName = colorLabels.grey;\n    } else if (hue < 15 || hue >= 345) {\n      colorName = colorLabels.red;\n    } else if (hue >= 15 && hue < 45) {\n      colorName = hsvl > 80 && saturation > 80 ? colorLabels.orange : colorLabels.brown;\n    } else if (hue >= 45 && hue < 75) {\n      const isGold = hue > 46 && hue < 54 && hsvl < 80 && saturation > 90;\n      const isOlive = hue >= 54 && hue < 75 && hsvl < 80;\n      colorName = isGold ? colorLabels.gold : colorLabels.yellow;\n      colorName = isOlive ? colorLabels.olive : colorName;\n    } else if (hue >= 75 && hue < 155) {\n      colorName = hsvl < 68 ? colorLabels.green : colorLabels.lime;\n    } else if (hue >= 155 && hue < 175) {\n      colorName = colorLabels.teal;\n    } else if (hue >= 175 && hue < 195) {\n      colorName = colorLabels.cyan;\n    } else if (hue >= 195 && hue < 255) {\n      colorName = colorLabels.blue;\n    } else if (hue >= 255 && hue < 270) {\n      colorName = colorLabels.violet;\n    } else if (hue >= 270 && hue < 295) {\n      colorName = colorLabels.magenta;\n    } else if (hue >= 295 && hue < 345) {\n      colorName = colorLabels.pink;\n    }\n    return colorName;\n  }\n\n  /** Updates `ColorPicker` visuals. */\n  updateVisuals(): void {\n    const { controlPositions, visuals } = this;\n    const [v1, v2, v3] = visuals;\n    const { offsetHeight } = v1;\n    const hue = controlPositions.c2y / offsetHeight;\n    const { r, g, b } = new Color({ h: hue, s: 1, l: 0.5 }).toRgb();\n    const whiteGrad = 'linear-gradient(rgb(255,255,255) 0%, rgb(255,255,255) 100%)';\n    const alpha = 1 - controlPositions.c3y / offsetHeight;\n    const roundA = roundPart(alpha * 100) / 100;\n\n    const fill = new Color({\n      h: hue,\n      s: 1,\n      l: 0.5,\n      a: alpha,\n    }).toRgbString();\n    const hueGradient = `linear-gradient(\n      rgb(255,0,0) 0%, rgb(255,255,0) 16.67%,\n      rgb(0,255,0) 33.33%, rgb(0,255,255) 50%,\n      rgb(0,0,255) 66.67%, rgb(255,0,255) 83.33%,\n      rgb(255,0,0) 100%)`;\n    setElementStyle(v1, {\n      background: `linear-gradient(rgba(0,0,0,0) 0%, rgba(0,0,0,${roundA}) 100%),\n      linear-gradient(to right, rgba(255,255,255,${roundA}) 0%, ${fill} 100%),\n      ${whiteGrad}`,\n    });\n    setElementStyle(v2, { background: hueGradient });\n\n    setElementStyle(v3, {\n      background: `linear-gradient(rgba(${r},${g},${b},1) 0%,rgba(${r},${g},${b},0) 100%)`,\n    });\n  }\n\n  /**\n   * The `ColorPicker` *focusout* event listener when open.\n   *\n   * @param e\n   * @this {ColorPicker}\n   */\n  handleFocusOut = ({ relatedTarget }: FocusEvent & { relatedTarget: HTMLElement }): void => {\n    if (relatedTarget && !this.parent.contains(relatedTarget)) {\n      this.hide(true);\n    }\n  };\n\n  /**\n   * The `ColorPicker` *keyup* event listener when open.\n   *\n   * @param e\n   * @this {ColorPicker}\n   */\n  handleDismiss = ({ code }: KeyboardEvent): void => {\n    if (this.isOpen && code === keyEscape) {\n      this.hide();\n    }\n  };\n\n  /**\n   * The `ColorPicker` *scroll* event listener when open.\n   *\n   * @param e\n   * @this {ColorPicker}\n   */\n  handleScroll = (e: Event): void => {\n    const { activeElement } = getDocument(this.input);\n\n    this.updateDropdownPosition();\n\n    /* istanbul ignore next */\n    if (\n      ([pointermoveEvent, touchmoveEvent].includes(e.type) && this.dragElement) ||\n      (activeElement && this.controlKnobs.includes(activeElement as HTMLElement))\n    ) {\n      e.stopPropagation();\n      e.preventDefault();\n    }\n  };\n\n  /**\n   * The `ColorPicker` keyboard event listener for menu navigation.\n   *\n   * @param e\n   */\n  menuKeyHandler = (e: Event & { target: HTMLElement; code: string }) => {\n    const { target, code } = e;\n    const { previousElementSibling, nextElementSibling, parentElement } = target;\n    const isColorOptionsMenu = parentElement && hasClass(parentElement, 'color-options');\n    const allSiblings = parentElement ? [...parentElement.children] : [];\n    const columnsCount =\n      isColorOptionsMenu && getElementStyle(parentElement, 'grid-template-columns').split(' ').length;\n    const currentIndex = allSiblings.indexOf(target);\n    const previousElement = currentIndex > -1 && columnsCount && allSiblings[currentIndex - columnsCount];\n    const nextElement = currentIndex > -1 && columnsCount && allSiblings[currentIndex + columnsCount];\n\n    if ([keyArrowDown, keyArrowUp, keySpace].includes(code)) {\n      // prevent scroll when navigating the menu via arrow keys / Space\n      e.preventDefault();\n    }\n    if (isColorOptionsMenu) {\n      if (previousElement && code === keyArrowUp) {\n        focus(previousElement as HTMLElement);\n      } else if (nextElement && code === keyArrowDown) {\n        focus(nextElement as HTMLElement);\n      } else if (previousElementSibling && code === keyArrowLeft) {\n        focus(previousElementSibling as HTMLElement);\n      } else if (nextElementSibling && code === keyArrowRight) {\n        focus(nextElementSibling as HTMLElement);\n      }\n    } else if (previousElementSibling && [keyArrowLeft, keyArrowUp].includes(code)) {\n      focus(previousElementSibling as HTMLElement);\n    } else if (nextElementSibling && [keyArrowRight, keyArrowDown].includes(code)) {\n      focus(nextElementSibling as HTMLElement);\n    }\n\n    if ([keyEnter, keySpace].includes(code)) {\n      this.menuClickHandler(e);\n    }\n  };\n\n  /**\n   * The `ColorPicker` click event listener for the colour menu presets / defaults.\n   *\n   * @param e\n   * @this {ColorPicker}\n   */\n  menuClickHandler = (e: Event): void => {\n    const { target } = e;\n    const { colorMenu } = this;\n    const newOption = (getAttribute(target as HTMLElement, 'data-value') || '').trim();\n    // invalidate for targets other than color options\n    if (!newOption.length) return;\n    const currentActive = querySelector('li.active', colorMenu);\n    let newColor = newOption;\n    newColor = nonColors.includes(newColor) ? 'white' : newColor;\n    newColor = newColor === 'transparent' ? 'rgba(0,0,0,0)' : newColor;\n\n    const { r, g, b, a } = new Color(newColor);\n\n    ObjectAssign(this.color, {\n      r,\n      g,\n      b,\n      a,\n    });\n\n    this.update();\n\n    /* istanbul ignore else */\n    if (currentActive !== target) {\n      /* istanbul ignore else */\n      if (currentActive) {\n        removeClass(currentActive, 'active');\n        removeAttribute(currentActive, ariaSelected);\n      }\n\n      addClass(target as HTMLElement, 'active');\n      setAttribute(target as HTMLElement, ariaSelected, 'true');\n\n      if (nonColors.includes(newOption)) {\n        this.value = newOption;\n      }\n      firePickerChange(this);\n    }\n  };\n\n  /**\n   * The `ColorPicker` *touchstart* / *mousedown* events listener for control knobs.\n   *\n   * @param e\n   */\n  pointerDown = (e: Event & { target: HTMLElement; pageX: number; pageY: number }) => {\n    const { target, pageX, pageY } = e;\n    const { colorMenu, visuals, controlKnobs } = this;\n    const [v1, v2, v3] = visuals;\n    const [c1, c2, c3] = controlKnobs;\n    const visual = controlKnobs.includes(target) ? (target.previousElementSibling as HTMLElement) : target;\n    const visualRect = getBoundingClientRect(visual);\n    const html = getDocumentElement(v1);\n    const offsetX = pageX - html.scrollLeft - visualRect.left;\n    const offsetY = pageY - html.scrollTop - visualRect.top;\n\n    /* istanbul ignore else */\n    if (target === v1 || target === c1) {\n      this.dragElement = visual;\n      this.changeControl1(offsetX, offsetY);\n    } else if (target === v2 || target === c2) {\n      this.dragElement = visual;\n      this.changeControl2(offsetY);\n    } else if (target === v3 || target === c3) {\n      this.dragElement = visual;\n      this.changeAlpha(offsetY);\n    }\n\n    if (colorMenu) {\n      const currentActive = querySelector('li.active', colorMenu);\n      if (currentActive) {\n        removeClass(currentActive, 'active');\n        removeAttribute(currentActive, ariaSelected);\n      }\n    }\n    e.preventDefault();\n  };\n\n  /**\n   * The `ColorPicker` *touchend* / *mouseup* events listener for control knobs.\n   *\n   * @param e\n   * @this\n   */\n  pointerUp = ({ target }: PointerEvent & { target: HTMLElement }) => {\n    const { parent } = this;\n    const doc = getDocument(parent);\n    const currentOpen = querySelector(`${colorPickerParentSelector}.open`, doc) !== null;\n    const selection = doc.getSelection();\n\n    if (!this.dragElement && (!selection || !selection.toString().length) && !parent.contains(target)) {\n      this.hide(currentOpen);\n    }\n\n    this.dragElement = undefined;\n  };\n\n  /**\n   * The `ColorPicker` *touchmove* / *mousemove* events listener for control knobs.\n   *\n   * @param {PointerEvent} e\n   */\n  pointerMove = (e: PointerEvent): void => {\n    const { dragElement, visuals } = this;\n    const [v1, v2, v3] = visuals;\n    const { pageX, pageY } = e;\n\n    if (!dragElement) return;\n\n    const controlRect = getBoundingClientRect(dragElement);\n    const win = getDocumentElement(v1);\n    const offsetX = pageX - win.scrollLeft - controlRect.left;\n    const offsetY = pageY - win.scrollTop - controlRect.top;\n\n    if (dragElement === v1) {\n      this.changeControl1(offsetX, offsetY);\n    }\n\n    if (dragElement === v2) {\n      this.changeControl2(offsetY);\n    }\n\n    if (dragElement === v3) {\n      this.changeAlpha(offsetY);\n    }\n  };\n\n  /**\n   * The `ColorPicker` *keydown* event listener for control knobs.\n   *\n   * @param e\n   */\n  handleKnobs = (e: Event & { code: string }) => {\n    const { target, code } = e;\n\n    // only react to arrow buttons\n    if (![keyArrowUp, keyArrowDown, keyArrowLeft, keyArrowRight].includes(code)) return;\n    e.preventDefault();\n\n    const { controlKnobs, visuals } = this;\n    const { offsetWidth, offsetHeight } = visuals[0];\n    const [c1, c2, c3] = controlKnobs;\n    const { activeElement } = getDocument(c1);\n    const currentKnob = controlKnobs.find(x => x === activeElement);\n    const yRatio = offsetHeight / 360;\n\n    /* istanbul ignore else */\n    if (currentKnob) {\n      let offsetX = 0;\n      let offsetY = 0;\n\n      /* istanbul ignore else */\n      if (target === c1) {\n        const xRatio = offsetWidth / 100;\n\n        /* istanbul ignore else */\n        if ([keyArrowLeft, keyArrowRight].includes(code)) {\n          this.controlPositions.c1x += code === keyArrowRight ? xRatio : -xRatio;\n        } else if ([keyArrowUp, keyArrowDown].includes(code)) {\n          this.controlPositions.c1y += code === keyArrowDown ? yRatio : -yRatio;\n        }\n\n        offsetX = this.controlPositions.c1x;\n        offsetY = this.controlPositions.c1y;\n        this.changeControl1(offsetX, offsetY);\n      } else if (target === c2) {\n        this.controlPositions.c2y += [keyArrowDown, keyArrowRight].includes(code) ? yRatio : -yRatio;\n\n        offsetY = this.controlPositions.c2y;\n        this.changeControl2(offsetY);\n      } else if (target === c3) {\n        this.controlPositions.c3y += [keyArrowDown, keyArrowRight].includes(code) ? yRatio : -yRatio;\n\n        offsetY = this.controlPositions.c3y;\n        this.changeAlpha(offsetY);\n      }\n      this.handleScroll(e);\n    }\n  };\n\n  /** The event listener of the colour form inputs. */\n  changeHandler = (): void => {\n    let colorSource;\n    const { inputs, format, value: currentValue, input, controlPositions, visuals } = this;\n    const { activeElement } = getDocument(input);\n    const { offsetHeight } = visuals[0];\n    const [i1, , , i4] = inputs;\n    const [v1, v2, v3, v4] =\n      format === 'rgb'\n        ? inputs.map(i => parseFloat(i.value) / (i === i4 ? 100 : 1))\n        : inputs.map(i => parseFloat(i.value) / (i !== i1 ? 100 : 360));\n    const isNonColorValue = this.hasNonColor && nonColors.includes(currentValue);\n    const alpha = i4 ? v4 : 1 - controlPositions.c3y / offsetHeight;\n\n    /* istanbul ignore else */\n    if (activeElement === input || (activeElement && inputs.includes(activeElement as HTMLInputElement))) {\n      if (activeElement === input) {\n        if (isNonColorValue) {\n          colorSource = currentValue === 'transparent' ? 'rgba(0,0,0,0)' : 'rgb(0,0,0)';\n        } else {\n          colorSource = currentValue;\n        }\n      } else if (format === 'hex') {\n        colorSource = i1.value;\n      } else if (format === 'hsl') {\n        colorSource = {\n          h: v1,\n          s: v2,\n          l: v3,\n          a: alpha,\n        };\n      } else if (format === 'hwb') {\n        colorSource = {\n          h: v1,\n          w: v2,\n          b: v3,\n          a: alpha,\n        };\n      } else {\n        colorSource = {\n          r: v1,\n          g: v2,\n          b: v3,\n          a: alpha,\n        };\n      }\n\n      const { r, g, b, a } = new Color(colorSource);\n\n      ObjectAssign(this.color, {\n        r,\n        g,\n        b,\n        a,\n      });\n      this.setControlPositions();\n      this.updateAppearance();\n      this.updateInputs();\n      this.updateControls();\n      this.updateVisuals();\n\n      // set non-color keyword\n      if (activeElement === input && isNonColorValue) {\n        this.value = currentValue;\n      }\n    }\n  };\n\n  /**\n   * Updates `ColorPicker` first control:\n   * * `lightness` and `saturation` for HEX/RGB;\n   * * `lightness` and `hue` for HSL.\n   *\n   * @param X the X component of the offset\n   * @param Y the Y component of the offset\n   */\n  changeControl1(X: number, Y: number): void {\n    let [offsetX, offsetY] = [0, 0];\n    const { controlPositions, visuals } = this;\n    const { offsetHeight, offsetWidth } = visuals[0];\n\n    if (X > offsetWidth) offsetX = offsetWidth;\n    else if (X >= 0) offsetX = X;\n\n    if (Y > offsetHeight) offsetY = offsetHeight;\n    else if (Y >= 0) offsetY = Y;\n\n    const hue = controlPositions.c2y / offsetHeight;\n\n    const saturation = offsetX / offsetWidth;\n\n    const lightness = 1 - offsetY / offsetHeight;\n    const alpha = 1 - controlPositions.c3y / offsetHeight;\n\n    // new color\n    const { r, g, b, a } = new Color({\n      h: hue,\n      s: saturation,\n      v: lightness,\n      a: alpha,\n    });\n\n    ObjectAssign(this.color, {\n      r,\n      g,\n      b,\n      a,\n    });\n\n    // new positions\n    this.controlPositions.c1x = offsetX;\n    this.controlPositions.c1y = offsetY;\n\n    // update color picker\n    this.updateAppearance();\n    this.updateInputs();\n    this.updateControls();\n    this.updateVisuals();\n  }\n\n  /**\n   * Updates `ColorPicker` second control:\n   * * `hue` for HEX/RGB/HWB;\n   * * `saturation` for HSL.\n   *\n   * @param Y the Y offset\n   */\n  changeControl2(Y: number) {\n    const { controlPositions, visuals } = this;\n    const { offsetHeight, offsetWidth } = visuals[0];\n\n    let offsetY = 0;\n\n    if (Y > offsetHeight) offsetY = offsetHeight;\n    else if (Y >= 0) offsetY = Y;\n\n    const hue = offsetY / offsetHeight;\n    const saturation = controlPositions.c1x / offsetWidth;\n    const lightness = 1 - controlPositions.c1y / offsetHeight;\n    const alpha = 1 - controlPositions.c3y / offsetHeight;\n\n    // new color\n    const { r, g, b, a } = new Color({\n      h: hue,\n      s: saturation,\n      v: lightness,\n      a: alpha,\n    });\n\n    ObjectAssign(this.color, {\n      r,\n      g,\n      b,\n      a,\n    });\n\n    // new position\n    this.controlPositions.c2y = offsetY;\n    // update color picker\n    this.updateAppearance();\n    this.updateInputs();\n    this.updateControls();\n    this.updateVisuals();\n  }\n\n  /**\n   * Updates `ColorPicker` last control,\n   * the `alpha` channel.\n   *\n   * @param Y\n   */\n  changeAlpha(Y: number) {\n    const { visuals } = this;\n    const { offsetHeight } = visuals[0];\n    let offsetY = 0;\n\n    if (Y > offsetHeight) offsetY = offsetHeight;\n    else if (Y >= 0) offsetY = Y;\n\n    // update color alpha\n    const alpha = 1 - offsetY / offsetHeight;\n    this.color.setAlpha(alpha);\n    // update position\n    this.controlPositions.c3y = offsetY;\n    // update color picker\n    this.updateAppearance();\n    this.updateInputs();\n    this.updateControls();\n    this.updateVisuals();\n  }\n\n  /**\n   * Updates `ColorPicker` control positions on:\n   * * initialization\n   * * window resize\n   */\n  update = () => {\n    this.updateDropdownPosition();\n    this.updateAppearance();\n    this.setControlPositions();\n    this.updateInputs(true);\n    this.updateControls();\n    this.updateVisuals();\n  };\n\n  /** Updates the open dropdown position on *scroll* event. */\n  updateDropdownPosition() {\n    const { input, colorPicker, colorMenu } = this;\n    const elRect = getBoundingClientRect(input);\n    const { top, bottom } = elRect;\n    const { offsetHeight: elHeight } = input;\n    const windowHeight = getDocumentElement(input).clientHeight;\n    const isPicker = hasClass(colorPicker, 'show');\n    const dropdown = isPicker ? colorPicker : colorMenu;\n    if (!dropdown) return;\n    const { offsetHeight: dropHeight } = dropdown;\n    const distanceBottom = windowHeight - bottom;\n    const distanceTop = top;\n    const bottomExceed = top + dropHeight + elHeight > windowHeight; // show\n    const topExceed = top - dropHeight < 0; // show-top\n\n    if ((hasClass(dropdown, 'bottom') || !topExceed) && distanceBottom < distanceTop && bottomExceed) {\n      removeClass(dropdown, 'bottom');\n      addClass(dropdown, 'top');\n    } else {\n      removeClass(dropdown, 'top');\n      addClass(dropdown, 'bottom');\n    }\n  }\n\n  /** Updates control knobs' positions. */\n  setControlPositions() {\n    const { visuals, color, hsv } = this;\n    const { offsetHeight, offsetWidth } = visuals[0];\n    const alpha = color.a;\n    const hue = hsv.h;\n\n    const saturation = hsv.s;\n    const lightness = hsv.v;\n\n    this.controlPositions.c1x = saturation * offsetWidth;\n    this.controlPositions.c1y = (1 - lightness) * offsetHeight;\n    this.controlPositions.c2y = hue * offsetHeight;\n    this.controlPositions.c3y = (1 - alpha) * offsetHeight;\n  }\n\n  /** Update the visual appearance label and control knob labels. */\n  updateAppearance() {\n    const { componentLabels, color, parent, hsv, hex, format, controlKnobs } = this;\n    const { appearanceLabel, hexLabel, valueLabel } = componentLabels;\n    let { r, g, b } = color.toRgb();\n    const [knob1, knob2, knob3] = controlKnobs;\n    const hue = roundPart(hsv.h * 360);\n    const alpha = color.a;\n    const saturation = roundPart(hsv.s * 100);\n    const lightness = roundPart(hsv.v * 100);\n    const colorName = this.appearance;\n\n    let colorLabel = `${hexLabel} ${hex.split('').join(' ')}`;\n\n    if (format === 'hwb') {\n      const { hwb } = this;\n      const whiteness = roundPart(hwb.w * 100);\n      const blackness = roundPart(hwb.b * 100);\n      colorLabel = `HWB: ${hue}°, ${whiteness}%, ${blackness}%`;\n      setAttribute(knob1, ariaValueText, `${whiteness}% & ${blackness}%`);\n      setAttribute(knob1, ariaValueNow, `${whiteness}`);\n      setAttribute(knob2, ariaDescription, `${valueLabel}: ${colorLabel}. ${appearanceLabel}: ${colorName}.`);\n      setAttribute(knob2, ariaValueText, `${hue}%`);\n      setAttribute(knob2, ariaValueNow, `${hue}`);\n    } else {\n      [r, g, b] = [r, g, b].map(roundPart);\n      colorLabel = format === 'hsl' ? `HSL: ${hue}°, ${saturation}%, ${lightness}%` : colorLabel;\n      colorLabel = format === 'rgb' ? `RGB: ${r}, ${g}, ${b}` : colorLabel;\n\n      setAttribute(knob1, ariaValueText, `${lightness}% & ${saturation}%`);\n      setAttribute(knob1, ariaValueNow, `${lightness}`);\n      setAttribute(knob2, ariaDescription, `${valueLabel}: ${colorLabel}. ${appearanceLabel}: ${colorName}.`);\n      setAttribute(knob2, ariaValueText, `${hue}°`);\n      setAttribute(knob2, ariaValueNow, `${hue}`);\n    }\n\n    const alphaValue = roundPart(alpha * 100);\n    setAttribute(knob3, ariaValueText, `${alphaValue}%`);\n    setAttribute(knob3, ariaValueNow, `${alphaValue}`);\n\n    // update the input backgroundColor\n    const newColor = color.toString();\n    setElementStyle(this.input, { backgroundColor: newColor });\n\n    // toggle dark/light classes will also style the placeholder\n    // dark sets color white, light sets color black\n    // isDark ? '#000' : '#fff'\n    if (!this.isDark) {\n      if (hasClass(parent, 'txt-dark')) removeClass(parent, 'txt-dark');\n      if (!hasClass(parent, 'txt-light')) addClass(parent, 'txt-light');\n    } else {\n      if (hasClass(parent, 'txt-light')) removeClass(parent, 'txt-light');\n      if (!hasClass(parent, 'txt-dark')) addClass(parent, 'txt-dark');\n    }\n  }\n\n  /** Updates the control knobs actual positions. */\n  updateControls() {\n    const { controlKnobs, controlPositions } = this;\n    let { c1x, c1y, c2y, c3y } = controlPositions;\n    const [control1, control2, control3] = controlKnobs;\n    // round control positions\n    [c1x, c1y, c2y, c3y] = [c1x, c1y, c2y, c3y].map(roundPart);\n\n    setElementStyle(control1, {\n      transform: `translate3d(${c1x - 4}px,${c1y - 4}px,0)`,\n    });\n    setElementStyle(control2, { transform: `translate3d(0,${c2y - 4}px,0)` });\n    setElementStyle(control3, { transform: `translate3d(0,${c3y - 4}px,0)` });\n  }\n\n  /**\n   * Updates all color form inputs.\n   *\n   * @param isPrevented when `true`, the component original event is prevented\n   */\n  updateInputs(isPrevented?: boolean) {\n    const { value: oldColor, format, inputs, color, hsl } = this;\n    const [i1, i2, i3, i4] = inputs;\n    const alpha = roundPart(color.a * 100);\n    const hue = roundPart(hsl.h * 360);\n    let newColor = color.toString();\n\n    /* istanbul ignore else */\n    if (format === 'hex') {\n      newColor = this.color.toHexString(true);\n      i1.value = this.hex;\n    } else if (format === 'hsl') {\n      const lightness = roundPart(hsl.l * 100);\n      const saturation = roundPart(hsl.s * 100);\n      newColor = this.color.toHslString();\n      i1.value = `${hue}`;\n      i2.value = `${saturation}`;\n      i3.value = `${lightness}`;\n      i4.value = `${alpha}`;\n    } else if (format === 'hwb') {\n      const { w, b } = this.hwb;\n      const whiteness = roundPart(w * 100);\n      const blackness = roundPart(b * 100);\n\n      newColor = this.color.toHwbString();\n      i1.value = `${hue}`;\n      i2.value = `${whiteness}`;\n      i3.value = `${blackness}`;\n      i4.value = `${alpha}`;\n    } else if (format === 'rgb') {\n      let { r, g, b } = this.rgb;\n      [r, g, b] = [r, g, b].map(roundPart);\n\n      newColor = this.color.toRgbString();\n      i1.value = `${r}`;\n      i2.value = `${g}`;\n      i3.value = `${b}`;\n      i4.value = `${alpha}`;\n    }\n\n    // update the color value\n    this.value = newColor;\n\n    // don't trigger the custom event unless it's really changed\n    if (!isPrevented && newColor !== oldColor) {\n      firePickerChange(this);\n    }\n  }\n\n  /**\n   * Toggle the `ColorPicker` dropdown visibility.\n   *\n   * @param e\n   */\n  togglePicker = (e?: Event) => {\n    if (e) e.preventDefault();\n    const { colorPicker } = this;\n\n    if (this.isOpen && hasClass(colorPicker, 'show')) {\n      this.hide(true);\n    } else {\n      showDropdown(this, colorPicker);\n    }\n  };\n\n  /** Shows the `ColorPicker` dropdown. */\n  showPicker = () => {\n    const { colorPicker } = this;\n\n    if (!['top', 'bottom'].some(c => hasClass(colorPicker, c))) {\n      showDropdown(this, colorPicker);\n    }\n  };\n\n  /**\n   * Toggles the visibility of the `ColorPicker` presets menu.\n   *\n   * @param e\n   * @this {ColorPicker}\n   */\n  toggleMenu = (e?: Event) => {\n    if (e) e.preventDefault();\n    const { colorMenu } = this;\n\n    if (this.isOpen && hasClass(colorMenu, 'show')) {\n      this.hide(true);\n    } else {\n      showDropdown(this, colorMenu);\n    }\n  };\n\n  /**\n   * Hides the currently open `ColorPicker` dropdown.\n   *\n   * @param {boolean=} focusPrevented\n   */\n  hide(focusPrevented?: boolean) {\n    if (this.isOpen) {\n      const { pickerToggle, menuToggle, colorPicker, colorMenu, parent, input } = this;\n      const openPicker = hasClass(colorPicker, 'show');\n      const openDropdown = openPicker ? colorPicker : colorMenu;\n      const relatedBtn = openPicker ? pickerToggle : menuToggle;\n      const animationDuration = openDropdown && getElementTransitionDuration(openDropdown);\n\n      this.value = this.color.toString(true);\n\n      /* istanbul ignore else */\n      if (openDropdown) {\n        removeClass(openDropdown, 'show');\n        setAttribute(relatedBtn, ariaExpanded, 'false');\n        setTimeout(() => {\n          removePosition(openDropdown);\n          /* istanbul ignore else */\n          if (!querySelector('.show', parent)) {\n            removeClass(parent, 'open');\n            toggleEventsOnShown(this);\n            this.isOpen = false;\n          }\n        }, animationDuration);\n      }\n\n      if (!focusPrevented) {\n        focus(pickerToggle);\n      }\n      setAttribute(input, tabindex, '-1');\n      if (relatedBtn === menuToggle) {\n        setAttribute(menuToggle, tabindex, '-1');\n      }\n    }\n  }\n\n  /** Removes `ColorPicker` from target `<input>`. */\n  dispose() {\n    const { input, parent } = this;\n    this.hide(true);\n    toggleEvents(this);\n    [...parent.children].forEach(el => {\n      if (el !== input) el.remove();\n    });\n\n    removeAttribute(input, tabindex);\n    setElementStyle(input, { backgroundColor: '' });\n\n    ['txt-light', 'txt-dark'].forEach(c => removeClass(parent, c));\n    Data.remove(input, colorPickerString);\n  }\n}\n"],"names":["e","f","t","c","i","n","s","o","a","r","E","d","fe","ge","Ee","Ae","Ne","ke","K","P","_","tt","st","rt","it","St","Nt","kt","Ct","zt","Bt","Re","Qe","qe","Ge","Ye","Ze","on","Rt","F","fn","qt","A","Gt","S","z","x","M","jt","Jt","Kt","Xt","Yt","kn","Dn","Ln","On","In","v","u","O","Bn","N","W","R","k","Zt","$t","Q","g","ne","Rn","V","w","oe","Qn","l","p","y","q","Xn","Yn","I","$n","h","T","B","H","b","ae","so","ie","le","wo","No","U","D","L","rr","tr","er","$","Z","J","G","X","m","j","C","Y","sr","ColorPalette","Color","args","hue","hueSteps","lightSteps","lightnessArray","saturation","colors","hueStep","half","steps1To13","lightSets","closestSet","set","lightStep","currentHue","newColor","colorPickerLabels","colorNames","isValidJSON","str","isString","vHidden","getColorForm","self","format","id","componentLabels","colorForm","createElement","components","toUpperCase","cID","formatLabel","cInputLabel","setAttribute","cInput","max","step","ObjectAssign","getColorControls","hueLabel","alphaLabel","lightnessLabel","saturationLabel","whitenessLabel","blacknessLabel","max1","max2","max3","ctrl1Label","ctrl2Label","colorControls","colorPointer","colorSlider","template","min","control","knob","getColorMenu","colorsSource","menuClass","input","defaultsLabel","presetsLabel","isOptionsMenu","isPalette","menuLabel","colorsArray","colorsCount","fit","isMultiLine","rowCountHover","rowCount","isScrollable","finalClass","gap","optionSize","menuHeight","menuHeightHover","menu","setElementStyle","value","label","isActive","getAttribute","option","setMarkup","parent","colorKeywords","colorPresets","colorValue","nonColors","toggleLabel","pickerLabel","hexLabel","color","formatString","pickerBtn","pickerDropdown","presetsDropdown","presetsBtn","xmlns","presetsIcon","createElementNS","ariaHidden","path","tabindex","colorPickerString","colorPickerSelector","colorPickerParentSelector","colorPickerDefaults","roundPart","getColorPickerInstance","element","getInstance","initColorPicker","ColorPicker","toggleEvents","action","addListener","removeListener","pickerToggle","menuToggle","focusinEvent","mouseclickEvent","toggleEventsOnShown","colorMenu","doc","getDocument","win","getWindow","pointerdownEvent","keydownEvent","scrollEvent","resizeEvent","changeEvent","pointermoveEvent","pointerupEvent","focusoutEvent","keyupEvent","firePickerChange","dispatchEvent","removePosition","removeClass","showDropdown","dropdown","colorPicker","isPicker","openDropdown","activeBtn","nextBtn","hasClass","addClass","reflow","ariaExpanded","getBoundingClientRect","version","target","config","querySelector","closest","getUID","colorLabels","normalizeOptions","translatedColorLabels","isArray","tempComponentLabels","getElementsByClassName","controls","Data","brightness","inputValue","hsl","hsv","saturationSource","lightness","hsvl","colorName","isGold","isOlive","controlPositions","visuals","v1","v2","v3","offsetHeight","whiteGrad","alpha","roundA","fill","hueGradient","relatedTarget","code","keyEscape","activeElement","touchmoveEvent","previousElementSibling","nextElementSibling","parentElement","isColorOptionsMenu","allSiblings","columnsCount","getElementStyle","currentIndex","previousElement","nextElement","keyArrowDown","keyArrowUp","keySpace","focus","keyArrowLeft","keyArrowRight","keyEnter","newOption","currentActive","removeAttribute","ariaSelected","pageX","pageY","controlKnobs","c1","c2","c3","visual","visualRect","html","getDocumentElement","offsetX","offsetY","currentOpen","selection","dragElement","controlRect","offsetWidth","currentKnob","yRatio","xRatio","colorSource","inputs","currentValue","i1","i4","v4","isNonColorValue","elRect","top","bottom","elHeight","windowHeight","dropHeight","distanceBottom","distanceTop","bottomExceed","topExceed","hex","appearanceLabel","valueLabel","knob1","knob2","knob3","colorLabel","hwb","whiteness","blackness","ariaValueText","ariaValueNow","ariaDescription","alphaValue","c1x","c1y","c2y","c3y","control1","control2","control3","isPrevented","oldColor","i2","i3","focusPrevented","openPicker","relatedBtn","animationDuration","getElementTransitionDuration","el"],"mappings":"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IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AACH,GAAGC,KAAI,qBAAqBS,KAAI,iBAAiBC,KAAI,wBAAwBC,KAAI,yBAAyBX,EAAC,MAAM5B,KAAI,MAAMsC,EAAC,QAAQD,EAAC,KAAKxD,KAAI,MAAMmB,EAAC,QAAQuC,EAAC,MAAMC,KAAK,gCAAgCC,KAAK,sBAAsBvC,KAAI,gBAAgBwC,KAAK,oBAAoBC,KAAI,GAAGH,EAAE,IAAI3D,EAAC,IAAIqB,EAAC,IAAIF,EAAC,IAAIE,EAAC,IAAIF,EAAC,IAAI0C,EAAE,IAAI1C,EAAC,KAAKyC,EAAE,IAAIlG,IAAI;AAAA,EAC3U,UAAU,IAAI,OAAOsC,EAAC;AAAA,EACtB,QAAQ+C;AAAA,EACR,WAAWW;AAAA,EACX,aAAaF;AAAA,EACb,YAAYC;AAAA,EACZ,WAAWzD;AAAA,EACX,kBAAkB8D;AAAA,EAClB,KAAK,IAAI,OAAO,MAAMA,EAAC,EAAE;AAAA,EACzB,KAAK,IAAI,OAAO,YAAYA,EAAC,EAAE;AAAA,EAC/B,KAAK,IAAI,OAAO,YAAYA,EAAC,EAAE;AAAA,EAC/B,KAAK,IAAI,OAAO,YAAYA,EAAC,EAAE;AAAA,EAC/B,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AACR,GAAG7B,KAAI,CAAC,MAAMV,GAAE,SAAS,CAAC,GAAGG,KAAI,CAAC,GAAG,MAAM,MAAM,QAAQ,OAAO,KAAK,YAAY,OAAO,KAAK,CAAC,EAAE,MAAM,CAACxD,MAAMA,KAAK,CAAC,GAAG6F,KAAI,CAAC,MAAM,GAAG,CAAC,GAAG,SAAS,GAAG,KAAK,WAAW,CAAC,MAAM,GAAGtC,KAAI,CAAC,MAAM,OAAO,KAAK,YAAY,EAAE,SAAS,GAAG,GAAG7D,IAAI,CAAC,MAAM,CAAC,CAACF,EAAE,SAAS,KAAK,GAAG,CAAC,EAAE,GAAG4C,KAAI,CAAC,OAAO,OAAO,OAAO,OAAO,KAAK,GAAG0D,KAAI,CAAC,MAAMzC,GAAE,SAAS,CAAC,KAAK,CAAC,KAAK,GAAGjB,EAAC,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,IAAI,KAAKwC,GAAE,KAAK,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG1B,IAAI,CAAC,GAAG,MAAM;AACja,MAAIlD,IAAI;AACR,MAAI,OAAO,KAAK,YAAY,KAAK,IAAI,GAAG,CAAC,MAAM;AAAA,EAC/C,KAAK,IAAI,GAAG,CAAC,MAAM;AACjB,WAAO;AACT,EAAA6F,GAAE,CAAC,MAAM7F,IAAI;AACb,QAAMT,IAAIgE,GAAEvD,CAAC;AACb,SAAOA,IAAI,MAAM,MAAM,WAAWA,CAAC,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,WAAWA,CAAC,CAAC,CAAC,GAAGT,MAAMS,IAAIA,IAAI,IAAI,MAAM,KAAK,IAAIA,IAAI,CAAC,IAAI,OAAO,KAAK,MAAM,MAAMA,KAAKA,IAAI,IAAIA,IAAI,IAAI,IAAIA,IAAI,KAAK,IAAIA,IAAIA,IAAI,IAAI,GAAGA;AACzM,GAAGsC,KAAI,CAAC,MAAM;AACZ,MAAI,IAAI,WAAW,CAAC;AACpB,UAAQ,OAAO,MAAM,CAAC,KAAK,IAAI,KAAK,IAAI,OAAO,IAAI,IAAI;AACzD,GAAGD,KAAI,CAAC,MAAM,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC,GAAG+B,IAAI,CAAC,MAAM,EAAE,WAAW,IAAI,IAAI,CAAC,KAAK,OAAO,CAAC,GAAG3D,KAAI,CAAC,MAAM;AACrG,QAAM,CAAC,CAAG,EAAA,CAAC,CAAC,IAAImE,GAAE,OAAO,CAAC,CAAC5E,CAAC,MAAMA,MAAM,EAAE,YAAa,CAAA;AACvD,SAAO;AACT,GAAG2E,IAAI,CAAC,MAAM,SAAS,GAAG,EAAE,GAAG1E,KAAI,CAAC,MAAM0E,EAAE,CAAC,IAAI,KAAKhB,KAAI,CAAC,MAAMoB,EAAE,IAAI,GAAG,EAAE,SAAS,EAAE,GAAGpE,KAAI,CAAC,GAAG,GAAGX,MAAM;AACzG,QAAMT,IAAI,KAAK,IAAI,GAAG,GAAGS,CAAC,GAAGH,IAAI,KAAK,IAAI,GAAG,GAAGG,CAAC;AACjD,MAAI,IAAI,GAAG4D,IAAI;AACf,QAAM,KAAKrE,IAAIM,KAAK;AACpB,MAAIN,MAAMM;AACR,IAAA+D,IAAI,GAAG,IAAI;AAAA,OACR;AACH,UAAMjE,IAAIJ,IAAIM;AACd,IAAA+D,IAAI,IAAI,MAAMjE,KAAK,IAAIJ,IAAIM,KAAKF,KAAKJ,IAAIM,IAAIN,MAAM,MAAM,KAAK,IAAIS,KAAKL,KAAK,IAAIK,IAAI,IAAI,KAAKT,MAAM,MAAM,KAAKS,IAAI,KAAKL,IAAI,IAAIJ,MAAMS,MAAM,KAAK,IAAI,KAAKL,IAAI,IAAI,KAAK;AAAA,EACvK;AACD,SAAO,EAAE,GAAG,GAAG,GAAGiE,GAAG,GAAG;AAC1B,GAAGkB,KAAI,CAAC,GAAG,GAAG9E,MAAM;AAClB,MAAIT,IAAIS;AACR,SAAOT,IAAI,MAAMA,KAAK,IAAIA,IAAI,MAAMA,KAAK,IAAIA,IAAI,IAAI,IAAI,KAAK,IAAI,MAAM,IAAIA,KAAKA,IAAI,IAAI,IAAI,IAAIA,IAAI,IAAI,IAAI,KAAK,IAAI,MAAM,IAAI,IAAIA,KAAK,IAAI;AAC/I,GAAG8E,KAAI,CAAC,GAAG,GAAGrE,MAAM;AAClB,MAAIT,IAAI,GAAGM,IAAI,GAAG,IAAI;AACtB,MAAI,MAAM;AACR,IAAAA,IAAIG,GAAG,IAAIA,GAAGT,IAAIS;AAAA,WACXA,GAAG;AACV,UAAM4D,IAAI5D,IAAI,MAAMA,KAAK,IAAI,KAAKA,IAAI,IAAIA,IAAI,GAAG,IAAI,IAAIA,IAAI4D;AAC7D,IAAArE,IAAIuF,GAAE,GAAGlB,GAAG,IAAI,IAAI,CAAC,GAAG/D,IAAIiF,GAAE,GAAGlB,GAAG,CAAC,GAAG,IAAIkB,GAAE,GAAGlB,GAAG,IAAI,IAAI,CAAC;AAAA,EAC9D;AACD,SAAO,EAAE,GAAGrE,GAAG,GAAGM,GAAG,GAAG;AAC1B,GAAGkG,KAAI,CAAC,GAAG,GAAG/F,MAAM;AAClB,MAAIT,IAAI,GAAGM,IAAI;AACf,QAAM,IAAI,KAAK,IAAI,GAAG,GAAGG,CAAC,GAAG4D,IAAI,KAAK,IAAI,GAAG,GAAG5D,CAAC,GAAG,IAAI,IAAI4D;AAC5D,MAAIA,MAAM;AACR,WAAO,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG;AAC1B,QAAM,KAAKrE,IAAI,IAAIS,GAAGH,IAAI,MAAMN,IAAI,MAAM,IAAIS,IAAI,IAAI,IAAI,GAAGH,IAAI,MAAM,IAAI,IAAI;AAC/E,QAAMF,KAAKE,IAAIN,KAAKqE,IAAI,MAAM;AAC9B,SAAO;AAAA,IACL,GAAGjE,MAAM,IAAI,IAAIA;AAAA,IACjB,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AACA,GAAGqG,KAAI,CAAC,GAAG,GAAGhG,MAAM;AAClB,MAAI,IAAIA,KAAK,GAAG;AACd,UAAM4D,IAAI,KAAK,IAAI5D;AACnB,WAAO,EAAE,GAAG4D,GAAG,GAAAA,GAAG,GAAGA,EAAC;AAAA,EACvB;AACD,MAAI,EAAE,GAAGrE,GAAG,GAAGM,GAAG,GAAG,EAAC,IAAKwE,GAAE,GAAG,GAAG,GAAG;AACtC,SAAO,CAAC9E,GAAGM,GAAG,CAAC,IAAI,CAACN,GAAGM,GAAG,CAAC,EAAE,IAAI,CAAC+D,MAAMA,KAAK,IAAI,IAAI5D,KAAK,CAAC,GAAG,EAAE,GAAGT,GAAG,GAAGM,GAAG,GAAG,EAAC;AAClF,GAAGa,KAAI,CAAC,GAAG,GAAGV,MAAM;AAClB,QAAMT,IAAI,KAAK,IAAI,GAAG,GAAGS,CAAC,GAAGH,IAAI,KAAK,IAAI,GAAG,GAAGG,CAAC;AACjD,MAAI,IAAI;AACR,QAAM4D,IAAIrE,GAAG,IAAIA,IAAIM,GAAGF,IAAIJ,MAAM,IAAI,IAAI,IAAIA;AAC9C,SAAOA,MAAMM,IAAI,IAAI,KAAK,MAAMN,MAAM,KAAK,IAAIS,KAAK,KAAK,IAAIA,IAAI,IAAI,KAAK,MAAMT,MAAM,KAAKS,IAAI,KAAK,IAAI,IAAIA,MAAMT,MAAM,KAAK,IAAI,KAAK,IAAI,IAAI,KAAK,IAAI,EAAE,GAAG,GAAG,GAAGI,GAAG,GAAGiE;AAC1K,GAAGa,KAAI,CAAC,GAAG,GAAGzE,MAAM;AAClB,QAAMT,IAAI,IAAI,GAAGM,IAAI,GAAG,IAAIG,GAAG4D,IAAI,KAAK,MAAMrE,CAAC,GAAG,IAAIA,IAAIqE,GAAGjE,IAAI,KAAK,IAAIE,IAAIsE,IAAI,KAAK,IAAI,IAAItE,IAAIK,IAAI,KAAK,KAAK,IAAI,KAAKL,IAAIoG,IAAIrC,IAAI,GAAGI,IAAI,CAAC,GAAGG,GAAGxE,GAAGA,GAAGO,GAAG,CAAC,EAAE+F,CAAC,GAAG9D,IAAI,CAACjC,GAAG,GAAG,GAAGiE,GAAGxE,GAAGA,CAAC,EAAEsG,CAAC,GAAGhE,IAAI,CAACtC,GAAGA,GAAGO,GAAG,GAAG,GAAGiE,CAAC,EAAE8B,CAAC;AACvN,SAAO,EAAE,GAAGjC,GAAG,GAAG7B,GAAG,GAAGF;AAC1B,GAAGiE,KAAI,CAAC,GAAG,GAAGlG,GAAGT,MAAM;AACrB,QAAMM,IAAI;AAAA,IACRuE,EAAEW,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC;AAAA,IACnBX,EAAEW,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC;AAAA,IACnBX,EAAEW,EAAE/E,CAAC,EAAE,SAAS,EAAE,CAAC;AAAA,EACvB;AACE,SAAOT,KAAKM,EAAE,CAAC,EAAE,OAAO,CAAC,MAAMA,EAAE,CAAC,EAAE,OAAO,CAAC,KAAKA,EAAE,CAAC,EAAE,OAAO,CAAC,MAAMA,EAAE,CAAC,EAAE,OAAO,CAAC,KAAKA,EAAE,CAAC,EAAE,OAAO,CAAC,MAAMA,EAAE,CAAC,EAAE,OAAO,CAAC,IAAIA,EAAE,CAAC,EAAE,OAAO,CAAC,IAAIA,EAAE,CAAC,EAAE,OAAO,CAAC,IAAIA,EAAE,CAAC,EAAE,OAAO,CAAC,IAAIA,EAAE,KAAK,EAAE;AACxL,GAAGsG,KAAI,CAAC,GAAG,GAAGnG,GAAGT,GAAGM,MAAM;AACxB,QAAM,IAAI;AAAA,IACRuE,EAAEW,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC;AAAA,IACnBX,EAAEW,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC;AAAA,IACnBX,EAAEW,EAAE/E,CAAC,EAAE,SAAS,EAAE,CAAC;AAAA,IACnBoE,EAAET,GAAEpE,CAAC,CAAC;AAAA,EACV;AACE,SAAOM,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE;AAC9O,GAAGuG,KAAI,CAAC,MAAM;AACZ,QAAM,IAAI,OAAO,CAAC,EAAE,KAAI,EAAG;AAC3B,MAAIN,GAAE,CAAC;AACL,WAAO,OAAO,OAAOrF,GAAE,CAAC,GAAG;AAAA,MACzB,GAAG;AAAA,MACH,QAAQ;AAAA,MACR,IAAI;AAAA,IACV,CAAK;AACH,MAAIsD,GAAE,CAAC;AACL,WAAO;AAAA,MACL,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG,MAAM,gBAAgB,IAAI;AAAA,MAC7B,QAAQ;AAAA,MACR,IAAI;AAAA,IACV;AACE,MAAI,GAAG/D,GAAGT,GAAGM,GAAG,CAAC,IAAIL,EAAE,IAAI,KAAK,CAAC,KAAK,CAAA;AACtC,SAAOQ,KAAKT,KAAKM,IAAI;AAAA,IACnB,GAAAG;AAAA,IACA,GAAGT;AAAA,IACH,GAAGM;AAAA,IACH,GAAG,MAAM,SAAS,IAAI;AAAA,IACtB,QAAQ;AAAA,IACR,IAAI;AAAA,EACL,KAAI,CAAG,EAAAG,GAAGT,GAAGM,GAAG,CAAC,IAAIL,EAAE,IAAI,KAAK,CAAC,KAAK,CAAA,GAAIQ,KAAKT,KAAKM,IAAI;AAAA,IACvD,GAAGG;AAAA,IACHT;AAAA,IACA,GAAGM;AAAA,IACH,GAAG,MAAM,SAAS,IAAI;AAAA,IACtB,QAAQ;AAAA,IACR,IAAI;AAAA,EACL,KAAI,CAAG,EAAAG,GAAGT,GAAGM,GAAG,CAAC,IAAIL,EAAE,IAAI,KAAK,CAAC,KAAK,CAAA,GAAIQ,KAAKT,KAAKM,IAAI;AAAA,IACvD,GAAGG;AAAA,IACHT;AAAA,IACA,GAAGM;AAAA,IACH,GAAG,MAAM,SAAS,IAAI;AAAA,IACtB,QAAQ;AAAA,IACR,IAAI;AAAA,EACL,KAAI,CAAG,EAAAG,GAAGT,GAAGM,GAAG,CAAC,IAAIL,EAAE,IAAI,KAAK,CAAC,KAAK,CAAA,GAAIQ,KAAKT,KAAKM,IAAI;AAAA,IACvD,GAAGG;AAAA,IACH,GAAGT;AAAA,IACH,GAAGM;AAAA,IACH,GAAG,MAAM,SAAS,IAAI;AAAA,IACtB,QAAQ;AAAA,IACR,IAAI;AAAA,EACR,KAAO,CAAA,EAAGG,GAAGT,GAAGM,GAAG,CAAC,IAAIL,EAAE,KAAK,KAAK,CAAC,KAAK,CAAE,GAAEQ,KAAKT,KAAKM,KAAK,IAAI;AAAA,IAC7D,GAAG8E,EAAE3E,CAAC;AAAA,IACN,GAAG2E,EAAEpF,CAAC;AAAA,IACN,GAAGoF,EAAE9E,CAAC;AAAA,IACN,GAAGI,GAAE,CAAC;AAAA,IACN,QAAQ;AAAA,IACR,IAAI;AAAA,EACL,KAAI,CAAG,EAAAD,GAAGT,GAAGM,CAAC,IAAIL,EAAE,KAAK,KAAK,CAAC,KAAK,CAAA,GAAIQ,KAAKT,KAAKM,IAAI;AAAA,IACrD,GAAG8E,EAAE3E,CAAC;AAAA,IACN,GAAG2E,EAAEpF,CAAC;AAAA,IACN,GAAGoF,EAAE9E,CAAC;AAAA,IACN,GAAG;AAAA,IACH,QAAQ;AAAA,IACR,IAAI;AAAA,EACR,KAAO,CAAA,EAAGG,GAAGT,GAAGM,GAAG,CAAC,IAAIL,EAAE,KAAK,KAAK,CAAC,KAAK,CAAE,GAAEQ,KAAKT,KAAKM,KAAK,IAAI;AAAA,IAC7D,GAAG8E,EAAE3E,IAAIA,CAAC;AAAA,IACV,GAAG2E,EAAEpF,IAAIA,CAAC;AAAA,IACV,GAAGoF,EAAE9E,IAAIA,CAAC;AAAA,IACV,GAAGI,GAAE,IAAI,CAAC;AAAA,IACV,QAAQ;AAAA,IACR,IAAI;AAAA,EACL,KAAI,CAAG,EAAAD,GAAGT,GAAGM,CAAC,IAAIL,EAAE,KAAK,KAAK,CAAC,KAAK,CAAA,GAAIQ,KAAKT,KAAKM,IAAI;AAAA,IACrD,GAAG8E,EAAE3E,IAAIA,CAAC;AAAA,IACV,GAAG2E,EAAEpF,IAAIA,CAAC;AAAA,IACV,GAAGoF,EAAE9E,IAAIA,CAAC;AAAA,IACV,GAAG;AAAA,IACH,QAAQ;AAAA,IACR,IAAI;AAAA,EACR,IAAM;AAAA,IACF,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,QAAQ;AAAA,IACR,IAAI,CAAC;AAAA,EACT;AACA,GAAGyE,KAAI,CAAC,MAAM;AACZ,MAAI,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAG,GAAEtE,IAAI,GAAGT,IAAI,GAAGM,GAAG,GAAG+D,GAAG,GAAGjE,GAAGwE,GAAGjE,GAAG+F,GAAGjC,IAAI,OAAO7B,IAAI;AACnF,UAAQ,CAACnC,KAAK,OAAOA,KAAK,cAAcA,IAAIoG,GAAEpG,CAAC,GAAGmC,IAAInC,EAAE,KAAKwD,GAAExD,GAAG,CAAC,KAAKN,EAAEM,EAAE,CAAC,KAAKN,EAAEM,EAAE,CAAC,KAAKN,EAAEM,EAAE,CAAC,MAAM,EAAE,GAAGE,GAAG,GAAG+F,GAAG,GAAGtG,EAAG,IAAGK,GAAG,CAACE,GAAG+F,GAAGtG,CAAC,IAAI,CAACO,GAAG+F,GAAGtG,CAAC,EAAE,IAAI,CAACsC,MAAMiB,EAAEjB,GAAGsB,GAAEtB,CAAC,IAAI,MAAM,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG/B,GAAG,GAAG+F,GAAG,GAAGtG,EAAG,GAAEqE,IAAI,YAAYhE,IAAIA,EAAE,SAAS,QAAQwD,GAAExD,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAG,CAAA,KAAKN,EAAEM,EAAE,CAAC,KAAKN,EAAEM,EAAE,CAAC,KAAKN,EAAEM,EAAE,CAAC,MAAM,EAAE,GAAGmE,GAAG,GAAAtE,GAAG,GAAG,EAAC,IAAKG,GAAGmE,IAAIjB,EAAEiB,GAAG,GAAG,GAAGtE,IAAIqD,EAAErD,GAAG,GAAG,GAAG,IAAIqD,EAAE,GAAG,GAAG,GAAG,IAAIuB,GAAEN,GAAGtE,GAAG,CAAC,GAAGmE,IAAI,QAAQR,GAAExD,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAC,CAAE,KAAKN,EAAEM,EAAE,CAAC,KAAKN,EAAEM,EAAE,CAAC,KAAKN,EAAEM,EAAE,CAAC,MAAM,EAAE,GAAGmE,GAAG,GAAAtE,GAAG,GAAG+D,EAAC,IAAK5D,GAAGmE,IAAIjB,EAAEiB,GAAG,GAAG,GAAGtE,IAAIqD,EAAErD,GAAG,GAAG,GAAG+D,IAAIV,EAAEU,GAAG,GAAG,GAAG,IAAIS,GAAEF,GAAGtE,GAAG+D,CAAC,GAAGI,IAAI,QAAQR,GAAExD,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAC,CAAE,KAAKN,EAAEM,EAAE,CAAC,KAAKN,EAAEM,EAAE,CAAC,KAAKN,EAAEM,EAAE,CAAC,MAAM,EAAE,GAAGmE,GAAG,GAAG,GAAG,GAAGxE,MAAMK,GAAGmE,IAAIjB,EAAEiB,GAAG,GAAG,GAAG,IAAIjB,EAAE,GAAG,GAAG,GAAGvD,IAAIuD,EAAEvD,GAAG,GAAG,GAAG,IAAIqG,GAAE7B,GAAG,GAAGxE,CAAC,GAAGqE,IAAI,QAAQtE,EAAEM,EAAE,CAAC,MAAMT,IAAIS,EAAE,GAAGT,IAAIgE,GAAEhE,CAAC,KAAK,WAAW,GAAGA,CAAC,EAAE,IAAI,IAAI2D,EAAE3D,GAAG,GAAG,IAAIA,IAAI;AAAA,IAC7xB,GAAG,EAAE;AAAA,IACL,GAAG,EAAE;AAAA,IACL,GAAG,EAAE;AAAA,IACL,GAAG+C,GAAE/C,CAAC;AAAA,IACN,QAAQyE;AAAA,IACR,IAAI7B;AAAA,EACR;AACA,GAAGkE,KAAK;AACR,MAAM/C,EAAE;AAAA;AAAA,EAEN,OAAO,WAAW9D;AAAA,EAClB,OAAO,iBAAiBqG;AAAA,EACxB,OAAO,eAAetC;AAAA,EACtB,OAAO,iBAAiB7D;AAAA,EACxB,OAAO,aAAaqE;AAAA,EACpB,OAAO,cAAc+B;AAAA,EACrB,OAAO,cAActC;AAAA,EACrB,OAAO,OAAOY;AAAA,EACd,OAAO,UAAU/B;AAAA,EACjB,OAAO,UAAUa;AAAA,EACjB,OAAO,aAAaZ;AAAA,EACpB,OAAO,iBAAiB7B;AAAA,EACxB,OAAO,sBAAsBR;AAAA,EAC7B,OAAO,sBAAsB0D;AAAA,EAC7B,OAAO,WAAWhD;AAAA,EAClB,OAAO,WAAWuF;AAAA,EAClB,OAAO,WAAWxF;AAAA,EAClB,OAAO,WAAWqF;AAAA,EAClB,OAAO,YAAYI;AAAA,EACnB,OAAO,WAAW1B;AAAA,EAClB,OAAO,WAAWA;AAAA,EAClB,OAAO,WAAWK;AAAA,EAClB,OAAO,WAAWkB;AAAA,EAClB,OAAO,kBAAkBrB;AAAA,EACzB,OAAO,sBAAsByB;AAAA,EAC7B,OAAO,aAAa9B;AAAA,EACpB,OAAO,YAAYS;AAAA,EACnB,OAAO,YAAYH;AAAA,EACnB,OAAO,YAAYvB;AAAA,EACnB,OAAO,UAAUgD;AAAA;AAAA,EAEjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA,YAAY,GAAGrG,GAAG;AAChB,UAAMT,IAAIS,KAAKoC,GAAE,SAASpC,CAAC,IAAIA,IAAI,IAAI,EAAEH,GAAM,GAAG,GAAG,GAAG+D,GAAG,GAAG,IAAIjE,GAAG,QAAQwE,EAAG,IAAGG,GAAE,CAAC;AACtF,SAAK,gBAAgB,GAAG,KAAK,IAAIzE,GAAG,KAAK,IAAI,GAAG,KAAK,IAAI+D,GAAG,KAAK,IAAI,GAAG,KAAK,KAAKjE,GAAG,KAAK,SAASJ,KAAK4E;AAAA,EACzG;AAAA;AAAA;AAAA;AAAA,EAID,IAAI,UAAU;AACZ,WAAO,KAAK;AAAA,EACb;AAAA;AAAA;AAAA;AAAA,EAID,IAAI,SAAS;AACX,WAAO,KAAK,aAAa;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMD,IAAI,YAAY;AACd,UAAM,EAAE,GAAG,GAAG,GAAGnE,GAAG,GAAGT,EAAG,IAAG;AAC7B,QAAIM,IAAI,GAAG,IAAI,GAAG+D,IAAI;AACtB,WAAO,KAAK,UAAU/D,IAAI,IAAI,QAAQA,MAAM,IAAI,SAAS,UAAU,KAAKG,KAAK,UAAU,IAAIA,IAAI,QAAQ,MAAMA,IAAI,SAAS,UAAU,KAAKT,KAAK,UAAUqE,IAAIrE,IAAI,QAAQqE,MAAMrE,IAAI,SAAS,UAAU,KAAK,SAASM,IAAI,SAAS,IAAI,SAAS+D;AAAA,EAC9O;AAAA;AAAA;AAAA;AAAA,EAID,IAAI,aAAa;AACf,UAAM,EAAE,GAAG,GAAG,GAAG5D,GAAG,GAAGT,EAAG,IAAG,KAAK;AAClC,YAAQ,IAAI,MAAMS,IAAI,MAAMT,IAAI,OAAO;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA,EAID,IAAI,OAAO;AACT,UAAM,EAAE,GAAG,GAAG,GAAGS,GAAG,GAAGT,EAAC,IAAK,KAAK,MAAK,GAAI,CAACM,CAAC,IAAI+E,GAAE,IAAI,CAAC,CAAC,GAAGhB,CAAC,MAAM;AACjE,YAAM;AAAA;AAAA,WAEDA,EAAE,IAAI,KAAK,QAAQ,MAAMA,EAAE,IAAI5D,KAAK,QAAQ,MAAM4D,EAAE,IAAIrE,KAAK,QAAQ,MAAM;AAAA;AAEhF,aAAO,CAAC,GAAG,CAAC;AAAA,IAClB,CAAK,EAAE,KAAK,CAAC,CAAG,EAAA,CAAC,GAAGqE,GAAG,MAAM,MAAM,KAAK,IAAI,GAAG,EAAE,IAAI,CAAC,CAAG,EAAAjE,CAAC,MAAMA,CAAC,CAAC,CAAC;AAC/D,WAAOE;AAAA,EACR;AAAA;AAAA;AAAA;AAAA,EAID,QAAQ;AACN,QAAI,EAAE,GAAG,GAAG,GAAGG,GAAG,GAAGT,GAAG,GAAGM,EAAG,IAAG;AACjC,WAAO,CAAC,GAAGG,GAAGT,CAAC,IAAI,CAAC,GAAGS,GAAGT,CAAC,EAAE,IAAI,CAAC,MAAMwF,EAAE,IAAI,MAAM,GAAG,IAAI,GAAG,GAAGlF,IAAIkF,EAAElF,IAAI,GAAG,IAAI,KAAK;AAAA,MACrF,GAAG;AAAA,MACH,GAAGG;AAAA,MACH,GAAGT;AAAA,MACH,GAAGM;AAAA,IACT;AAAA,EACG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMD,cAAc;AACZ,UAAM,EAAE,GAAG,GAAG,GAAGG,GAAG,GAAGT,GAAG,GAAGM,EAAG,IAAG,KAAK,SAAS,CAAC,GAAG+D,GAAG,CAAC,IAAI,CAAC,GAAG5D,GAAGT,CAAC,EAAE,IAAIwF,CAAC;AAC5E,WAAOlF,MAAM,IAAI,OAAO,CAAC,KAAK+D,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,KAAKA,CAAC,KAAK,CAAC,KAAK/D,CAAC;AAAA,EACvE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMD,kBAAkB;AAChB,UAAM,EAAE,GAAG,GAAG,GAAGG,GAAG,GAAGT,GAAG,GAAGM,EAAG,IAAG,KAAK,MAAK,GAAI,CAAC,GAAG+D,GAAG,CAAC,IAAI,CAAC,GAAG5D,GAAGT,CAAC,EAAE,IAAIwF,CAAC,GAAGpF,IAAIE,MAAM,IAAI,KAAK,MAAMkF,EAAElF,IAAI,GAAG,CAAC;AAClH,WAAO,OAAO,CAAC,IAAI+D,CAAC,IAAI,CAAC,GAAGjE,CAAC;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA,EAKD,MAAM,GAAG;AACP,UAAM,EAAE,GAAAK,GAAG,GAAGT,GAAG,GAAGM,GAAG,GAAG,EAAC,IAAK,KAAK,MAAK;AAC1C,WAAO,MAAM,IAAIqG,GAAElG,GAAGT,GAAGM,GAAG,CAAC,IAAIsG,GAAEnG,GAAGT,GAAGM,GAAG,GAAG,CAAC;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA;AAAA,EAKD,YAAY,GAAG;AACb,WAAO,IAAI,KAAK,MAAM,CAAC,CAAC;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA,EAID,OAAO,GAAG;AACR,UAAM,EAAE,GAAAG,GAAG,GAAGT,GAAG,GAAGM,GAAG,GAAG,EAAC,IAAK,KAAK,MAAK;AAC1C,WAAOsG,GAAEnG,GAAGT,GAAGM,GAAG,GAAG,CAAC;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA,EAID,aAAa,GAAG;AACd,WAAO,IAAI,KAAK,OAAO,CAAC,CAAC;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA,EAID,QAAQ;AACN,UAAM,EAAE,GAAG,GAAG,GAAGG,GAAG,GAAGT,GAAG,GAAGM,EAAC,IAAK,MAAM,EAAE,GAAG,GAAG,GAAG+D,GAAG,GAAG,MAAMlD,GAAE,GAAGV,GAAGT,CAAC;AACzE,WAAO;AAAA,MACL,GAAG;AAAA,MACH,GAAGqE;AAAA,MACH,GAAG;AAAA,MACH,GAAG/D;AAAA,IACT;AAAA,EACG;AAAA;AAAA;AAAA;AAAA,EAID,QAAQ;AACN,UAAM,EAAE,GAAG,GAAG,GAAGG,GAAG,GAAGT,GAAG,GAAGM,EAAC,IAAK,MAAM,EAAE,GAAG,GAAG,GAAG+D,GAAG,GAAG,MAAMjD,GAAE,GAAGX,GAAGT,CAAC;AACzE,WAAO;AAAA,MACL,GAAG;AAAA,MACH,GAAGqE;AAAA,MACH,GAAG;AAAA,MACH,GAAG/D;AAAA,IACT;AAAA,EACG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMD,cAAc;AACZ,QAAI,EAAE,GAAG,GAAG,GAAGG,GAAG,GAAGT,GAAG,GAAGM,EAAC,IAAK,KAAK,MAAK;AAC3C,WAAO,IAAIkF,EAAE,IAAI,GAAG,GAAG/E,IAAI+E,EAAE/E,IAAI,GAAG,GAAGT,IAAIwF,EAAExF,IAAI,GAAG,GAAGM,IAAIkF,EAAElF,IAAI,GAAG,IAAI,KAAKA,MAAM,IAAI,OAAO,CAAC,KAAKG,CAAC,MAAMT,CAAC,OAAO,QAAQ,CAAC,KAAKS,CAAC,MAAMT,CAAC,MAAMM,CAAC;AAAA,EACjJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMD,kBAAkB;AAChB,QAAI,EAAE,GAAG,GAAG,GAAGG,GAAG,GAAGT,GAAG,GAAGM,EAAC,IAAK,KAAK,MAAK;AAC3C,QAAIkF,EAAE,IAAI,GAAG,GAAG/E,IAAI+E,EAAE/E,IAAI,GAAG,GAAGT,IAAIwF,EAAExF,IAAI,GAAG,GAAGM,IAAIkF,EAAElF,IAAI,GAAG;AAC7D,UAAM,IAAIA,IAAI,MAAM,MAAMkF,EAAElF,CAAC,CAAC,MAAM;AACpC,WAAO,OAAO,CAAC,OAAOG,CAAC,KAAKT,CAAC,IAAI,CAAC;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA,EAID,QAAQ;AACN,UAAM,EAAE,GAAG,GAAG,GAAGS,GAAG,GAAGT,GAAG,GAAGM,EAAC,IAAK,MAAM,EAAE,GAAG,GAAG,GAAG+D,GAAG,GAAG,MAAMmC,GAAE,GAAG/F,GAAGT,CAAC;AACzE,WAAO;AAAA,MACL,GAAG;AAAA,MACH,GAAGqE;AAAA,MACH,GAAG;AAAA,MACH,GAAG/D;AAAA,IACT;AAAA,EACG;AAAA;AAAA;AAAA;AAAA,EAID,cAAc;AACZ,QAAI,EAAE,GAAG,GAAG,GAAGG,GAAG,GAAGT,GAAG,GAAGM,EAAC,IAAK,KAAK,MAAK;AAC3C,QAAIkF,EAAE,IAAI,GAAG,GAAG/E,IAAI+E,EAAE/E,IAAI,GAAG,GAAGT,IAAIwF,EAAExF,IAAI,GAAG,GAAGM,IAAIkF,EAAElF,IAAI,GAAG;AAC7D,UAAM,IAAIA,IAAI,MAAM,MAAMkF,EAAElF,CAAC,CAAC,MAAM;AACpC,WAAO,OAAO,CAAC,OAAOG,CAAC,KAAKT,CAAC,IAAI,CAAC;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA,EAID,SAAS,GAAG;AACV,WAAO,OAAO,KAAK,WAAW,QAAQ,KAAK,IAAI+C,GAAE,CAAC,GAAG;AAAA,EACtD;AAAA;AAAA;AAAA;AAAA,EAID,SAAS,GAAG;AACV,QAAI,OAAO,KAAK;AACd,aAAO;AACT,UAAM,EAAE,GAAGtC,GAAGT,GAAM,GAAGM,MAAM,KAAK,MAAK,GAAI,EAAE,GAAG,GAAG,GAAA+D,GAAG,GAAG,EAAG,IAAGS,GAAErE,GAAGqC,GAAE9C,IAAI,IAAI,GAAG,GAAGM,CAAC;AACrF,WAAO,OAAO,OAAO,MAAM,EAAE,GAAG,GAAG,GAAA+D,GAAG,GAAG,EAAG,CAAA,GAAG;AAAA,EAChD;AAAA;AAAA;AAAA;AAAA,EAID,WAAW,GAAG;AACZ,WAAO,OAAO,KAAK,WAAW,KAAK,SAAS,CAAC,CAAC,IAAI;AAAA,EACnD;AAAA;AAAA;AAAA;AAAA;AAAA,EAKD,YAAY;AACV,WAAO,KAAK,SAAS,IAAI;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA,EAID,QAAQ,GAAG;AACT,QAAI,OAAO,KAAK;AACd,aAAO;AACT,UAAM,EAAE,GAAG5D,GAAGT,GAAM,GAAGM,MAAM,KAAK,MAAK,GAAI,EAAE,GAAG,GAAG,GAAA+D,GAAG,GAAG,EAAG,IAAGS,GAAErE,GAAGT,GAAG8C,GAAExC,IAAI,IAAI,GAAG,CAAC;AACrF,WAAO,OAAO,OAAO,MAAM,EAAE,GAAG,GAAG,GAAA+D,GAAG,GAAG,EAAG,CAAA,GAAG;AAAA,EAChD;AAAA;AAAA;AAAA;AAAA,EAID,OAAO,GAAG;AACR,WAAO,OAAO,KAAK,WAAW,KAAK,QAAQ,CAAC,CAAC,IAAI;AAAA,EAClD;AAAA;AAAA;AAAA;AAAA;AAAA,EAKD,KAAK,GAAG;AACN,QAAI,OAAO,KAAK;AACd,aAAO;AACT,UAAM,EAAE,GAAG5D,GAAGT,GAAM,GAAGM,EAAG,IAAG,KAAK,MAAK,GAAI,EAAE,GAAG,GAAG,GAAA+D,GAAG,GAAG,EAAC,IAAKS,GAAEhC,IAAGrC,IAAI,MAAM,KAAK,MAAM,GAAG,GAAGT,GAAGM,CAAC;AACnG,WAAO,OAAO,OAAO,MAAM,EAAE,GAAG,GAAG,GAAA+D,GAAG,GAAG,EAAG,CAAA,GAAG;AAAA,EAChD;AAAA;AAAA,EAED,QAAQ;AACN,WAAO,IAAIN,EAAE,IAAI;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA,EAID,SAAS,GAAG;AACV,UAAM,EAAE,QAAQtD,EAAG,IAAG;AACtB,WAAOA,MAAM,QAAQ,KAAK,YAAY,CAAC,IAAIA,MAAM,QAAQ,KAAK,YAAa,IAAGA,MAAM,QAAQ,KAAK,gBAAgB,KAAK;EACvH;AACH;ACxmDA,MAAqBsG,GAAa;AAAA,EAChC,OAAc,QAAQC;AAAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,eAAeC,GAA4C;AACzD,QAAIC,IAAM,GACNC,IAAW,IACXC,IAAa,IACbC,IAAiB,CAAC,GAAG,GACrBC,IAAa;AAGb,QAAAL,EAAK,WAAW;AAClB,OAACC,GAAKC,GAAUC,GAAYE,CAAU,IAAIL;AAAA,aACjCA,EAAK,WAAW;AACxB,OAAAC,GAAKC,GAAUC,CAAU,IAAIH;AAAA,aACrBA,EAAK,WAAW,MACxB,CAAAE,GAAUC,CAAU,IAAIH,GACrB,CAACE,GAAUC,CAAU,EAAE,KAAK,CAAK/G,MAAAA,IAAI,CAAC;AACxC,YAAM,UAAU,wEAAwE;AAI5F,UAAMkH,IAAkB,CAAA,GAClBC,IAAU,MAAML,GAChBM,IAAOT,EAAM,WAAWI,KAAcA,IAAa,IAAI,IAAI,MAAM,CAAC,GAClEM,IAAa,CAAC,MAAM,KAAK,MAAM,MAAM,MAAM,KAAK,GAChDC,IAAY;AAAA,MAChB,CAAC,GAAG,GAAG,CAAC;AAAA,MACR,CAAC,GAAG,CAAC;AAAA,MACL,CAAC,GAAG,CAAC;AAAA,MACL,CAAC,GAAG,CAAC;AAAA,MACL,CAAC,IAAI,EAAE;AAAA,MACP,CAAC,IAAI,EAAE;AAAA,IAAA,GAEHC,IAAaD,EAAU,KAAK,OAAOE,EAAI,SAAST,CAAU,CAAC,GAI3DU,IAAYF,IACdF,EAAWC,EAAU,QAAQC,CAAU,CAAC,IACxC,OAAOR,KAAcA,IAAa,IAAI,IAAI,MAAM;AAGpD,aAAShH,IAAI,GAAGA,IAAIqH,IAAO,GAAGrH,KAAK;AACjC,MAAAiH,IAAiB,CAAC,GAAGA,GAAgB,MAAMS,IAAY1H,CAAC;AAI1D,aAASA,IAAI,GAAGA,IAAIgH,IAAaK,GAAMrH,KAAK;AAC1C,MAAAiH,IAAiB,CAAC,MAAMS,IAAY1H,GAAG,GAAGiH,CAAc;AAI1D,aAASjH,IAAI,GAAGA,IAAI+G,GAAU/G,KAAK,GAAG;AACpC,YAAM2H,KAAeb,IAAM9G,IAAIoH,KAAW,MAAO;AACjD,MAAAH,EAAe,QAAQ,CAAKzC,MAAA;AACpB,cAAAoD,IAAW,IAAIhB,EAAM,EAAE,GAAGe,GAAY,GAAG,GAAG,GAAAnD,EAAA,CAAG;AAC9C,QAAA2C,EAAA,KAAKD,IAAa,MAAMU,EAAS,SAASV,IAAa,GAAG,IAAIU,CAAQ;AAAA,MAAA,CAC9E;AAAA,IACH;AAEA,SAAK,MAAMd,GACX,KAAK,WAAWC,GAChB,KAAK,aAAaC,GAClB,KAAK,aAAaE,GAClB,KAAK,SAASC;AAAA,EAChB;AACF;ACrFA,MAAMU,KAAuC;AAAA,EAC3C,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,cAAc;AAAA,EACd,eAAe;AAAA,EACf,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,UAAU;AAAA,EACV,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,gBAAgB;AAAA,EAChB,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,WAAW;AACb,GCpBMC,KAAuB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GCXMC,KAAc,CAACC,MAAgC;AAC/C,MAAA,CAACC,EAASD,CAAG;AAAU,WAAA;AACvB,MAAA;AACF,SAAK,MAAMA,CAAG;AAAA,UACJ;AACH,WAAA;AAAA,EACT;AACO,SAAA;AACT,GChBME,KAAU,YCWVC,KAAe,CAACC,MAAmC;AACvD,QAAM,EAAE,QAAAC,GAAQ,IAAAC,GAAI,iBAAAC,EAAA,IAAoBH,GAClCI,IAAYC,EAAc;AAAA,IAC9B,SAAS;AAAA,IACT,WAAW,cAAcJ,CAAM;AAAA,EAAA,CAChC;AAEG,MAAAK,IAAa,CAAC,KAAK;AACvB,SAAIL,MAAW,QAAOK,IAAa,CAAC,OAAO,SAAS,QAAQ,OAAO,IAC1DL,MAAW,QAAOK,IAAa,CAAC,OAAO,cAAc,aAAa,OAAO,IACzEL,MAAW,UAAOK,IAAa,CAAC,OAAO,aAAa,aAAa,OAAO,IAEtEA,EAAA,QAAQ,CAAC3I,MAAoB;AACtC,UAAM,CAACyG,CAAC,IAAI6B,MAAW,QAAQ,CAAC,GAAG,IAAIM,GAAY5I,CAAC,EAAE,MAAM,EAAE,GACxD6I,IAAM,SAASP,CAAM,IAAItI,CAAC,IAAIuI,CAAE,IAChCO,IAAcN,EAAgB,GAAGxI,CAAC,OAAO,GACzC+I,IAAcL,EAAc,EAAE,SAAS,QAAS,CAAA;AACzCM,IAAAA,EAAAD,GAAa,OAAOF,CAAG,GACxBE,EAAA;AAAA,MACVL,EAAc;AAAA,QACZ,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,WAAW,GAAGjC,CAAC;AAAA,MAAA,CAChB;AAAA,MACDiC,EAAc;AAAA,QACZ,SAAS;AAAA,QACT,WAAWP;AAAA,QACX,WAAWW;AAAA,MAAA,CACZ;AAAA,IAAA;AAEH,UAAMG,IAASP,EAAc;AAAA,MAC3B,SAAS;AAAA,MACT,IAAIG;AAAA;AAAA,MAEJ,MAAMP,MAAW,QAAQ,SAAS;AAAA,MAClC,OAAOtI,MAAM,UAAU,QAAQ;AAAA,MAC/B,WAAW,eAAeA,CAAC;AAAA,MAC3B,cAAc;AAAA,MACd,YAAY;AAAA,IAAA,CACgB;AAG9B,QAAIkJ,IAAM,OACNC,IAAO;AACX,IAAInJ,MAAM,YACJsI,MAAW,SACPY,IAAA,OACCC,IAAA,OACEnJ,MAAM,UACTkJ,IAAA,OACCC,IAAA,OAGXC,EAAaH,GAAQ;AAAA,MACnB,KAAK;AAAA,MACL,KAAAC;AAAA,MACA,MAAAC;AAAA,IAAA,CACD,GACSV,EAAA,OAAOM,GAAaE,CAAM;AAAA,EAAA,CACrC,GACMR;AACT,GC9DMY,KAAmB,CAAChB,MAAmC;AACrD,QAAA,EAAE,QAAAC,GAAQ,iBAAAE,EAAoB,IAAAH,GAC9B,EAAE,UAAAiB,GAAU,YAAAC,GAAY,gBAAAC,GAAgB,iBAAAC,GAAiB,gBAAAC,GAAgB,gBAAAC,EAAmB,IAAAnB,GAE5FoB,IAAOtB,MAAW,QAAQ,MAAM,KAChCuB,IAAOvB,MAAW,QAAQ,MAAM,KAChCwB,IAAO;AAET,MAAAC,IAAazB,MAAW,QAAQ,GAAGgB,CAAQ,MAAME,CAAc,KAAK,GAAGA,CAAc,MAAMC,CAAe;AAE9G,EAAAM,IAAazB,MAAW,QAAQ,GAAGoB,CAAc,MAAMC,CAAc,KAAKI;AAE1E,QAAMC,IAAa1B,MAAW,QAAQ,GAAGmB,CAAe,KAAK,GAAGH,CAAQ,IAElEW,IAAgBvB,EAAc;AAAA,IAClC,SAAS;AAAA,IACT,WAAW,kBAAkBJ,CAAM;AAAA,EAAA,CACpC,GAEK4B,IAAe,iBACfC,IAAc;AA0BpB,SAxBiB;AAAA,IACf;AAAA,MACE,GAAG;AAAA,MACH,GAAGD;AAAA,MACH,GAAGH;AAAA,MACH,KAAK;AAAA,MACL,KAAKH;AAAA,IACP;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAGO;AAAA,MACH,GAAGH;AAAA,MACH,KAAK;AAAA,MACL,KAAKH;AAAA,IACP;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAGM;AAAA,MACH,GAAGZ;AAAA,MACH,KAAK;AAAA,MACL,KAAKO;AAAA,IACP;AAAA,EAAA,EAGO,QAAQ,CAAYM,MAAA;AAC3B,UAAM,EAAE,GAAAnK,GAAG,GAAAD,GAAG,GAAAyE,GAAG,KAAA4F,GAAK,KAAAnB,EAAQ,IAAAkB,GACxBE,IAAU5B,EAAc;AAAA,MAC5B,SAAS;AAAA,MACT,WAAW;AAAA,MACX,MAAM;AAAA,IAAA,CACP;AAEO,IAAA4B,EAAA;AAAA,MACN5B,EAAc;AAAA,QACZ,SAAS;AAAA,QACT,WAAW,gCAAgCzI,CAAC;AAAA,MAAA,CAC7C;AAAA,IAAA;AAGH,UAAMsK,IAAO7B,EAAc;AAAA,MACzB,SAAS;AAAA,MACT,WAAW,GAAG1I,CAAC;AAAA,MACf,UAAU;AAAA,MACV,WAAWyE;AAAA,MACX,MAAM;AAAA,MACN,UAAU;AAAA,MACV,cAAc,GAAG4F,CAAG;AAAA,MACpB,cAAc,GAAGnB,CAAG;AAAA,IAAA,CACrB;AAED,IAAAoB,EAAQ,OAAOC,CAAI,GACnBN,EAAc,OAAOK,CAAO;AAAA,EAAA,CAC7B,GAEML;AACT,GC9EMO,KAAe,CAACnC,GAAmBoC,GAAuCC,MAAmC;AACjH,QAAM,EAAE,OAAAC,GAAO,QAAArC,GAAQ,iBAAAE,EAAA,IAAoBH,GACrC,EAAE,eAAAuC,GAAe,cAAAC,EAAiB,IAAArC,GAClCsC,IAAgBJ,MAAc,iBAC9BK,IAAYN,aAAwB7D,IACpCoE,IAAYF,IAAgBD,IAAeD,GAC3CK,IAAcF,IAAYN,EAAa,SAASA,GAChDS,IAAcD,EAAY,QAC1B,EAAE,YAAAhE,EAAW,IAAI8D,IAAYN,IAAe,EAAE,YAAY,QAC1DU,IAAMlE,KAAc,CAAC,GAAG,EAAE,EAAE,KAAK,CAAKtE,MAAAuI,KAAevI,IAAI,KAAK,EAAEuI,IAAcvI,EAAE,KAAK,GACrFyI,IAAcN,KAAiBI,IAAcC;AACnD,MAAIE,IAAgB;AACpB,EAAAA,IAAgBD,KAAeF,IAAcC,IAAM,IAAI,IAAIE,GAC3DA,IAAgBD,KAAeF,IAAcC,IAAM,IAAI,IAAIE,GAC3DA,IAAgBD,KAAeF,IAAcC,IAAM,IAAI,IAAIE;AAC3D,QAAMC,IAAWD,KAAiBH,KAAeC,IAAM,IAAI,IAAI,IACzDI,IAAeH,KAAeF,IAAcI,IAAWH;AAC7D,MAAIK,IAAad;AACjB,EAAAc,KAAcD,IAAe,gBAAgB,IAC7CC,KAAcJ,IAAc,eAAe;AACrC,QAAAK,IAAML,IAAc,QAAQ;AAC9B,MAAAM,IAAaN,IAAc,OAAO;AACzB,EAAAM,IAAAP,IAAM,KAAKC,IAAc,MAAMM;AACtC,QAAAC,IAAa,GAAGL,IAAWI,CAAU,OACrCE,IAAkB,QAAQP,CAAa,MAAMK,CAAU,SAASL,IAAgB,CAAC,MAAMI,CAAG,KAG1FI,IAAOnD,EAAc;AAAA,IACzB,SAAS;AAAA,IACT,WAAW8C;AAAA,IACX,MAAM;AAAA,IACN,WAAWR;AAAA,EAAA,CACZ;AAED,SAAIO,KACFO,EAAgBD,GAAM;AAAA,IACpB,oBAAoB,GAAGH,CAAU;AAAA,IACjC,cAAc,GAAGP,CAAG;AAAA,IACpB,cAAcM;AAAA,IACd,iBAAiBE;AAAA,IACjB,uBAAuBC;AAAA,EAAA,CACxB,GAGHX,EAAY,QAAQ,CAAKtI,MAAA;AACvB,QAAI,CAACoJ,GAAOC,EAAK,IAAI,OAAOrJ,KAAM,WAAWA,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;AACnE,IAAIA,aAAakE,MACfkF,IAAQpJ,EAAE,eACFqJ,KAAAD;AAGV,UAAME,KADQ,IAAIpF,EAAMlE,aAAakE,IAAQlE,IAAIoJ,GAAOzD,CAAM,EACvC,SAAA,MAAe4D,GAAavB,GAAO,OAAO,GAG3DwB,KAASzD,EAAc;AAAA,MAC3B,SAAS;AAAA,MACT,WAAW,eAJEuD,KAAW,YAAY,EAIJ;AAAA,MAChC,WAAW,GAAGD,MAASD,CAAK;AAAA,MAC5B,UAAU;AAAA,MACV,MAAM;AAAA,MACN,cAAcE,KAAW,SAAS;AAAA,IAAA,CACnC;AACDjD,IAAAA,EAAamD,IAAQ,cAAc,GAAGJ,CAAK,EAAE,GAEzCjB,KACFgB,EAAgBK,IAAQ,EAAE,iBAAiBJ,EAAO,CAAA,GAGpDF,EAAK,OAAOM,EAAM;AAAA,EAAA,CACnB,GACMN;AACT,GCxDMO,KAAY,CAAC/D,MAAsB;AACjC,QAAA,EAAE,OAAAsC,GAAO,QAAA0B,GAAQ,QAAA/D,GAAQ,IAAAC,GAAI,iBAAAC,GAAiB,eAAA8D,GAAe,cAAAC,EAAiB,IAAAlE,GAC9EmE,IAAaN,GAAavB,GAAO,OAAO,KAAK,QAC7C,EAAE,WAAA8B,EAAc,IAAA5F,GAEhB,EAAE,aAAA6F,GAAa,aAAAC,GAAa,aAAA7D,GAAa,UAAA8D,MAAapE,GAGtDqE,IAAQJ,EAAU,SAASD,CAAU,IAAI,SAASA;AACxD,EAAAnE,EAAK,QAAQ,IAAIxB,EAAMgG,GAAOvE,CAAM;AAGpC,QAAMwE,IAAexE,MAAW,QAAQsE,IAAWhE,GAAYN,CAAM,GAE/DyE,IAAYrE,EAAc;AAAA,IAC9B,IAAI,cAAcH,CAAE;AAAA,IACpB,SAAS;AAAA,IACT,WAAW;AAAA,IACX,cAAc;AAAA,IACd,cAAc;AAAA,EAAA,CACf;AAES,EAAAwE,EAAA;AAAA,IACRrE,EAAc;AAAA,MACZ,SAAS;AAAA,MACT,WAAWP;AAAA,MACX,WAAW,GAAGwE,CAAW,KAAK7D,CAAW,KAAKgE,CAAY;AAAA,IAAA,CAC3D;AAAA,EAAA;AAGH,QAAME,IAAiBtE,EAAc;AAAA,IACnC,SAAS;AAAA,IACT,WAAW;AAAA,IACX,MAAM;AAAA,IACN,gBAAgB,cAAcH,CAAE;AAAA,EAAA,CACoB,GAEhD0B,IAAgBZ,GAAiBhB,CAAI,GACrCI,IAAYL,GAAaC,CAAI;AAOnC,MALe2E,EAAA,OAAO/C,GAAexB,CAAS,GAC9CkC,EAAM,OAAOoC,CAAS,GACtBV,EAAO,OAAOW,CAAc,GAGxBV,KAAiBC,GAAc;AACjC,UAAMU,IAAkBvE,EAAc;AAAA,MACpC,SAAS;AAAA,MACT,WAAW;AAAA,IAAA,CACZ;AAGD,IAAI6D,KACFU,EAAgB,OAAOzC,GAAanC,GAAMkE,GAAc,eAAe,CAAC,GAKtED,KAAiBA,EAAc,UACjCW,EAAgB,OAAOzC,GAAanC,GAAMiE,GAAe,gBAAgB,CAAC;AAG5E,UAAMY,IAAaxE,EAAc;AAAA,MAC/B,SAAS;AAAA,MACT,WAAW;AAAA,MACX,UAAU;AAAA,MACV,cAAc;AAAA,MACd,cAAc;AAAA,IAAA,CACf,GAEKyE,IAAQ,UAAU,4BAA4B,GAC9CC,IAAcC,GAAgBF,GAAO;AAAA,MACzC,SAAS;AAAA,IAAA,CACV;AACYnE,IAAAA,EAAAoE,GAAa,SAASD,CAAK,GAC3BnE,EAAAoE,GAAa,WAAW,aAAa,GACrCpE,EAAAoE,GAAaE,IAAY,MAAM;AAEtC,UAAAC,IAAOF,GAAgBF,GAAO;AAAA,MAClC,SAAS;AAAA,IAAA,CACV;AACYnE,IAAAA,EAAAuE,GAAM,KAAK,sDAAsD,GACjEvE,EAAAuE,GAAM,QAAQ,MAAM,GACjCH,EAAY,OAAOG,CAAI,GACZL,EAAA;AAAA,MACTxE,EAAc;AAAA,QACZ,SAAS;AAAA,QACT,WAAWP;AAAA,QACX,WAAW,GAAGuE,CAAW;AAAA,MAAA,CAC1B;AAAA,MACDU;AAAA,IAAA,GAGKf,EAAA,OAAOa,GAAYD,CAAe;AAAA,EAC3C;AAGA,EAAIX,KAAiBG,EAAU,SAASD,CAAU,MAChDnE,EAAK,QAAQmE,IAEFxD,EAAA2B,GAAO6C,GAAU,IAAI;AACpC,wBCpDMC,IAAoB,gBACpBC,KAAsB,mBAAmBD,CAAiB,MAC1DE,KAA4B,IAAIF,CAAiB,IACjDG,KAA0C;AAAA,EAC9C,iBAAiB9F;AAAA,EACjB,aAAaC;AAAA,EACb,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,eAAe;AACjB,GACM,EAAE,WAAA8F,GAAW,WAAApB,GAAc,IAAA5F,GAI3BiH,KAAyB,CAACC,MAA8BC,GAAyBD,GAASN,CAAiB,GAC3GQ,KAAkB,CAACF,MAA8B,IAAIG,GAAYH,CAAO,GAQxEI,KAAe,CAAC9F,GAAmB+F,MAAqB;AACtD,QAAA/L,IAAK+L,IAASC,KAAcC,IAC5B,EAAE,OAAA3D,GAAO,cAAA4D,GAAc,YAAAC,EAAA,IAAenG;AAEzC,EAAAhG,EAAAsI,GAAO8D,IAAcpG,EAAK,UAAU,GACpChG,EAAAkM,GAAcG,IAAiBrG,EAAK,YAAY,GAE/CmG,KACCnM,EAAAmM,GAAYE,IAAiBrG,EAAK,UAAU;AAEnD,GAKMsG,KAAsB,CAACtG,GAAmB+F,MAAqB;AAC7D,QAAA/L,IAAK+L,IAASC,KAAcC,IAC5B,EAAE,OAAA3D,GAAO,WAAAiE,GAAW,QAAAvC,EAAA,IAAWhE,GAC/BwG,IAAMC,EAAYnE,CAAK,GACvBoE,IAAMC,GAAUH,CAAG;AAEzB,EAAAxM,EAAGgG,EAAK,UAAU4G,IAAkB5G,EAAK,WAA4B,GAChEA,EAAA,aAAa,QAAQ,CAAK1F,MAAAN,EAAGM,GAAGuM,IAAc7G,EAAK,WAA4B,CAAC,GAElFhG,EAAA0M,GAAKI,IAAa9G,EAAK,YAAY,GACnChG,EAAA0M,GAAKK,IAAa/G,EAAK,MAAM,GAEhC,CAACsC,GAAO,GAAGtC,EAAK,MAAM,EAAE,QAAQ,CAAK1F,MAAAN,EAAGM,GAAG0M,IAAahH,EAAK,aAAa,CAAC,GAEvEuG,MACCvM,EAAAuM,GAAWF,IAAiBrG,EAAK,gBAAgB,GACjDhG,EAAAuM,GAAWM,IAAc7G,EAAK,cAA+B,IAG/DhG,EAAAwM,GAAKS,IAAkBjH,EAAK,WAA4B,GACxDhG,EAAAwM,GAAKU,IAAgBlH,EAAK,SAA0B,GACpDhG,EAAAgK,GAAQmD,IAAenH,EAAK,cAA+B,GAC3DhG,EAAAwM,GAAKY,IAAYpH,EAAK,aAA8B;AACzD,GAKMqH,KAAmB,CAACrH,MAAsB;AAC9CsH,EAAAA,GAActH,EAAK,OAAO,IAAI,YAAY,oBAAoB,CAAC;AACjE,GAKMuH,KAAiB,CAAC7B,MAAyB;AAE/C,EAAIA,KACD,CAAA,UAAU,KAAK,EAAE,QAAQ,OAAK8B,EAAY9B,GAASpL,CAAC,CAAC;AAE1D,GAKMmN,KAAe,CAACzH,GAAmB0H,MAA0B;AACjE,QAAM,EAAE,aAAAC,GAAa,WAAApB,GAAW,YAAAJ,GAAY,cAAAD,GAAc,QAAAlC,EAAW,IAAAhE,GAC/D4H,IAAWF,MAAaC,GACxBE,IAAeD,IAAWrB,IAAYoB,GACtCG,IAAYF,IAAWzB,IAAaD,GACpC6B,IAAWH,IAAwB1B,IAAbC;AAE5B,EAAK6B,EAAShE,GAAQ,MAAM,KAC1BiE,EAASjE,GAAQ,MAAM,GAErB6D,MACFL,EAAYK,GAAc,MAAM,GAChCN,GAAeM,CAAY,IAE7BI,EAASP,GAAU,QAAQ,GAC3BQ,GAAOR,CAAQ,GACfO,EAASP,GAAU,MAAM,GAErBE,KAAU5H,EAAK,OAAO,GAErBA,EAAK,WACRsG,GAAoBtG,GAAM,EAAI,GAC9BA,EAAK,uBAAuB,GAC5BA,EAAK,SAAS,IACDW,EAAAX,EAAK,OAAOmF,GAAU,GAAG,GAClCgB,KACWxF,EAAAwF,GAAYhB,GAAU,GAAG,IAI7BxE,EAAAoH,GAASI,IAAc,MAAM,GACtCL,KACWnH,EAAAmH,GAAWK,IAAc,OAAO;AAEjD;AAOA,MAAqBtC,GAAY;AAAA;AAAA,EAE/B,OAAc,QAAQrH;AAAAA,EACtB,OAAc,eAAeD;AAAA,EAC7B,OAAc,cAAckH;AAAA,EAC5B,OAAc,OAAOG;AAAA,EACrB,OAAc,WAAWP;AAAA;AAAA,EAEzB,OAAc,YAAYG;AAAA,EAC1B,OAAc,kBAAkB/B;AAAAA,EAChC,OAAc,eAAe9C;AAAAA,EAC7B,OAAc,wBAAwByH;AAAAA,EACtC,OAAc,UAAUC;AAAA,EACxB,OAAc,aAAa3I;AAAA,EAC3B,OAAc,oBAAoBD;AAAA,EAElC;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT;AAAA,EAMA,cAAsC,CAAA;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,YAAY6I,GAAmDC,GAAsC;AAC7F,UAAAjG,IAAQkG,EAAcF,CAAM;AAGlC,QAAI,OAAOA,IAAW;AAAmB,YAAA,IAAI,UAAU,mCAAmC;AACtF,QAAAzI,EAASyI,CAAM,KAAK,CAAChG;AAAO,YAAM,IAAI,UAAU,uBAAuBgG,CAAM,oBAAoB;AACrG,SAAK,QAAQhG;AAEP,UAAA0B,IAASyE,GAAQnG,GAAOgD,EAAyB;AACvD,QAAI,CAACtB;AAAc,YAAA,IAAI,UAAU,iDAAiD;AAElF,SAAK,SAASA,GACT,KAAA,KAAK0E,GAAOpG,GAAO8C,CAAiB,GACzC,KAAK,cAAc,QACnB,KAAK,SAAS,IACd,KAAK,mBAAmB;AAAA,MACtB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,IAAA,GAEP,KAAK,cAAc,IACnB,KAAK,gBAAgB,IACrB,KAAK,eAAe;AAGpB,UAAM,EAAE,QAAAnF,GAAQ,iBAAAE,GAAiB,aAAAwI,GAAa,eAAA1E,GAAe,cAAAC,MAAiB0E;AAAAA,MAC5EtG;AAAA,MACAiD;AAAA,MACAgD,KAAU,CAAC;AAAA,IAAA;AAGb,QAAIM,IAAwBnJ;AAE5B,IAAIoJ,GAAQH,CAAW,KAAKA,EAAY,WAAW,KACzBE,IAAAF,IACf9I,EAAS8I,CAAW,KAAKA,EAAY,MAAM,GAAG,EAAE,WAAW,OAC5CE,IAAAF,EAAY,MAAM,GAAG,IAIpCjJ,GAAA,QAAQ,CAAC/H,GAAGC,MAAM;AAC3B,WAAK,YAAYD,CAAC,IAAIkR,EAAsBjR,CAAC,EAAE;IAAK,CACrD;AAGK,UAAAmR,IACJlJ,EAASM,CAAe,KAAKR,GAAYQ,CAAe,IACnD,KAAK,MAAMA,CAAe,IAC3BA;AAaN,QAZA,KAAK,kBAAkBY,EAAa,EAAE,GAAGtB,GAAA,GAAqBsJ,CAAmB,GACjF,KAAK,QAAQ,IAAIvK,EAAM8D,EAAM,SAAS,QAAQrC,CAAM,GACpD,KAAK,SAASA,GAGV6I,GAAQ7E,CAAa,KAAKA,EAAc,SAC1C,KAAK,gBAAgBA,IACZpE,EAASoE,CAAa,KAAKA,EAAc,WAC7C,KAAA,gBAAgBA,EAAc,MAAM,GAAG,EAAE,IAAI,CAAA3J,MAAKA,EAAE,KAAM,CAAA,IAI7DwO,GAAQ5E,CAAY,KAAKA,EAAa;AACxC,WAAK,eAAeA;AAAA,aACXA,KAAgBvE,GAAYuE,CAAY,GAAG;AAC9C,YAAA,EAAE,KAAAxF,GAAK,UAAAC,GAAU,YAAAC,GAAY,YAAAE,MAAe,KAAK,MAAMoF,CAAY;AAMzE,WAAK,eAAe,IAAI3F,GAAaG,GAAKC,GAAUC,GAAYE,CAAU;AAAA,IAAA;AAC5E,MAAWe,EAASqE,CAAY,MACzB,KAAA,eAAeA,EAAa,MAAM,GAAG,EAAE,IAAI,CAAC5J,MAAcA,EAAE,KAAM,CAAA;AAIzE,IAAAyJ,GAAU,IAAI;AAEd,UAAM,CAAC4D,GAAapB,CAAS,IAAIyC,GAAuB,kBAAkBhF,CAAM;AAE3E,SAAA,eAAewE,EAAc,kBAAkBxE,CAAM,GACrD,KAAA,aAAawE,EAAc,gBAAgBxE,CAAM,GACtD,KAAK,cAAc2D,GACnB,KAAK,YAAYpB,GACjB,KAAK,SAAS,CAAC,GAAGyC,GAAuB,eAAehF,CAAM,CAAC;AAC/D,UAAM,CAACiF,CAAQ,IAAID,GAAuB,kBAAkBhF,CAAM;AAClE,SAAK,WAAWiF,GAChB,KAAK,eAAe,CAAC,GAAGD,GAAuB,QAAQC,CAAQ,CAAC,GAChE,KAAK,UAAU,CAAC,GAAGD,GAAuB,kBAAkBC,CAAQ,CAAC,GAGrE,KAAK,OAAO,GAIZnD,GAAa,MAAM,EAAI,GAGlBoD,GAAA,IAAI5G,GAAO8C,GAAmB,IAAI;AAAA,EACzC;AAAA;AAAA,EAGA,IAAI,QAAgB;AAClB,WAAO,KAAK,MAAM;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,IAAI,MAAMlK,GAAW;AACnB,SAAK,MAAM,QAAQA;AAAA,EACrB;AAAA;AAAA,EAGA,IAAI,cAAuB;AAClB,WAAA,KAAK,yBAAyB,SAAS,KAAK,cAAc,KAAK,CAAKZ,MAAA8J,GAAU,SAAS9J,CAAC,CAAC;AAAA,EAClG;AAAA;AAAA,EAGA,IAAI,MAAc;AACT,WAAA,KAAK,MAAM,MAAM,EAAI;AAAA,EAC9B;AAAA;AAAA,EAGA,IAAI,MAAY;AACP,WAAA,KAAK,MAAM;EACpB;AAAA;AAAA,EAGA,IAAI,MAAY;AACP,WAAA,KAAK,MAAM;EACpB;AAAA;AAAA,EAGA,IAAI,MAAY;AACP,WAAA,KAAK,MAAM;EACpB;AAAA;AAAA,EAGA,IAAI,MAAY;AACP,WAAA,KAAK,MAAM;EACpB;AAAA;AAAA,EAGA,IAAI,aAAqB;AACvB,WAAO,KAAK,MAAM;AAAA,EACpB;AAAA;AAAA,EAGA,IAAI,YAAoB;AACtB,WAAO,KAAK,MAAM;AAAA,EACpB;AAAA;AAAA,EAGA,IAAI,SAAkB;AACd,UAAA,EAAE,OAAAkK,GAAO,YAAA2E,EAAe,IAAA;AACvB,WAAAA,IAAa,OAAO3E,EAAM,IAAI;AAAA,EACvC;AAAA;AAAA,EAGA,IAAI,UAAmB;AACf,UAAA4E,IAAa,KAAK,MAAM;AAC9B,WAAOA,MAAe,MAAM,IAAI5K,EAAM4K,CAAU,EAAE;AAAA,EACpD;AAAA;AAAA,EAGA,IAAI,aAAqB;AACvB,UAAM,EAAE,aAAAT,GAAa,KAAAU,GAAK,KAAAC,GAAK,QAAArJ,MAAW,MAEpCvB,IAAM8G,EAAU6D,EAAI,IAAI,GAAG,GAC3BE,IAAmBtJ,MAAW,QAAQoJ,EAAI,IAAIC,EAAI,GAClDxK,IAAa0G,EAAU+D,IAAmB,GAAG,GAC7CC,IAAYhE,EAAU6D,EAAI,IAAI,GAAG,GACjCI,IAAOH,EAAI,IAAI;AAErB,QAAII,IAAY;AAIZ,QAAAF,MAAc,OAAO1K,MAAe;AACtC,MAAA4K,IAAYf,EAAY;AAAA,aACfa,MAAc;AACvB,MAAAE,IAAYf,EAAY;AAAA,aACf7J,MAAe;AACxB,MAAA4K,IAAYf,EAAY;AAAA,aACfjK,IAAM,MAAMA,KAAO;AAC5B,MAAAgL,IAAYf,EAAY;AAAA,aACfjK,KAAO,MAAMA,IAAM;AAC5B,MAAAgL,IAAYD,IAAO,MAAM3K,IAAa,KAAK6J,EAAY,SAASA,EAAY;AAAA,aACnEjK,KAAO,MAAMA,IAAM,IAAI;AAChC,YAAMiL,IAASjL,IAAM,MAAMA,IAAM,MAAM+K,IAAO,MAAM3K,IAAa,IAC3D8K,IAAUlL,KAAO,MAAMA,IAAM,MAAM+K,IAAO;AACpC,MAAAC,IAAAC,IAAShB,EAAY,OAAOA,EAAY,QACxCe,IAAAE,IAAUjB,EAAY,QAAQe;AAAA,IACjC;AAAA,MAAAhL,KAAO,MAAMA,IAAM,MAC5BgL,IAAYD,IAAO,KAAKd,EAAY,QAAQA,EAAY,OAC/CjK,KAAO,OAAOA,IAAM,MAC7BgL,IAAYf,EAAY,OACfjK,KAAO,OAAOA,IAAM,MAC7BgL,IAAYf,EAAY,OACfjK,KAAO,OAAOA,IAAM,MAC7BgL,IAAYf,EAAY,OACfjK,KAAO,OAAOA,IAAM,MAC7BgL,IAAYf,EAAY,SACfjK,KAAO,OAAOA,IAAM,MAC7BgL,IAAYf,EAAY,UACfjK,KAAO,OAAOA,IAAM,QAC7BgL,IAAYf,EAAY;AAEnB,WAAAe;AAAA,EACT;AAAA;AAAA,EAGA,gBAAsB;AACd,UAAA,EAAE,kBAAAG,GAAkB,SAAAC,EAAY,IAAA,MAChC,CAACC,GAAIC,GAAIC,CAAE,IAAIH,GACf,EAAE,cAAAI,EAAiB,IAAAH,GACnBrL,IAAMmL,EAAiB,MAAMK,GAC7B,EAAE,GAAAjS,GAAG,GAAA4D,GAAG,GAAAmB,EAAE,IAAI,IAAIwB,EAAM,EAAE,GAAGE,GAAK,GAAG,GAAG,GAAG,IAAK,CAAA,EAAE,SAClDyL,IAAY,+DACZC,IAAQ,IAAIP,EAAiB,MAAMK,GACnCG,IAAS7E,EAAU4E,IAAQ,GAAG,IAAI,KAElCE,IAAO,IAAI9L,EAAM;AAAA,MACrB,GAAGE;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG0L;AAAA,IAAA,CACJ,EAAE,YAAY,GACTG,IAAc;AAAA;AAAA;AAAA;AAAA;AAKpB9G,IAAAA,EAAgBsG,GAAI;AAAA,MAClB,YAAY,gDAAgDM,CAAM;AAAA,mDACrBA,CAAM,SAASC,CAAI;AAAA,QAC9DH,CAAS;AAAA,IAAA,CACZ,GACD1G,EAAgBuG,GAAI,EAAE,YAAYO,EAAa,CAAA,GAE/C9G,EAAgBwG,GAAI;AAAA,MAClB,YAAY,wBAAwBhS,CAAC,IAAI4D,CAAC,IAAImB,CAAC,eAAe/E,CAAC,IAAI4D,CAAC,IAAImB,CAAC;AAAA,IAAA,CAC1E;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,iBAAiB,CAAC,EAAE,eAAAwN,QAAuE;AACzF,IAAIA,KAAiB,CAAC,KAAK,OAAO,SAASA,CAAa,KACtD,KAAK,KAAK,EAAI;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASF,gBAAgB,CAAC,EAAE,MAAAC,QAAgC;AAC7C,IAAA,KAAK,UAAUA,MAASC,MAC1B,KAAK,KAAK;AAAA,EACZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASF,eAAe,CAAClT,MAAmB;AACjC,UAAM,EAAE,eAAAmT,EAAkB,IAAAlE,EAAY,KAAK,KAAK;AAEhD,SAAK,uBAAuB,IAIzB,CAACQ,IAAkB2D,EAAc,EAAE,SAASpT,EAAE,IAAI,KAAK,KAAK,eAC5DmT,KAAiB,KAAK,aAAa,SAASA,CAA4B,OAEzEnT,EAAE,gBAAgB,GAClBA,EAAE,eAAe;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQF,iBAAiB,CAACA,MAAqD;AAC/D,UAAA,EAAE,QAAA8Q,GAAQ,MAAAmC,EAAS,IAAAjT,GACnB,EAAE,wBAAAqT,GAAwB,oBAAAC,GAAoB,eAAAC,EAAA,IAAkBzC,GAChE0C,IAAqBD,KAAiB/C,EAAS+C,GAAe,eAAe,GAC7EE,IAAcF,IAAgB,CAAC,GAAGA,EAAc,QAAQ,IAAI,IAC5DG,IACJF,KAAsBG,GAAgBJ,GAAe,uBAAuB,EAAE,MAAM,GAAG,EAAE,QACrFK,IAAeH,EAAY,QAAQ3C,CAAM,GACzC+C,IAAkBD,IAAe,MAAMF,KAAgBD,EAAYG,IAAeF,CAAY,GAC9FI,IAAcF,IAAe,MAAMF,KAAgBD,EAAYG,IAAeF,CAAY;AAEhG,IAAI,CAACK,GAAcC,IAAYC,EAAQ,EAAE,SAAShB,CAAI,KAEpDjT,EAAE,eAAe,GAEfwT,IACEK,KAAmBZ,MAASe,KAC9BE,EAAML,CAA8B,IAC3BC,KAAeb,MAASc,IACjCG,EAAMJ,CAA0B,IACvBT,KAA0BJ,MAASkB,KAC5CD,EAAMb,CAAqC,IAClCC,KAAsBL,MAASmB,KACxCF,EAAMZ,CAAiC,IAEhCD,KAA0B,CAACc,IAAcH,EAAU,EAAE,SAASf,CAAI,IAC3EiB,EAAMb,CAAqC,IAClCC,KAAsB,CAACc,GAAeL,CAAY,EAAE,SAASd,CAAI,KAC1EiB,EAAMZ,CAAiC,GAGrC,CAACe,IAAUJ,EAAQ,EAAE,SAAShB,CAAI,KACpC,KAAK,iBAAiBjT,CAAC;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASF,mBAAmB,CAACA,MAAmB;AAC/B,UAAA,EAAE,QAAA8Q,EAAW,IAAA9Q,GACb,EAAE,WAAA+O,EAAc,IAAA,MAChBuF,KAAajI,GAAayE,GAAuB,YAAY,KAAK,IAAI;AAE5E,QAAI,CAACwD,EAAU;AAAQ;AACjB,UAAAC,IAAgBvD,EAAc,aAAajC,CAAS;AAC1D,QAAI/G,IAAWsM;AACf,IAAAtM,IAAW4E,GAAU,SAAS5E,CAAQ,IAAI,UAAUA,GACzCA,IAAAA,MAAa,gBAAgB,kBAAkBA;AAEpD,UAAA,EAAE,GAAAvH,GAAG,GAAA4D,GAAG,GAAAmB,GAAG,GAAAhF,MAAM,IAAIwG,EAAMgB,CAAQ;AAEzCuB,IAAAA,EAAa,KAAK,OAAO;AAAA,MACvB,GAAA9I;AAAA,MACA,GAAA4D;AAAA,MACA,GAAAmB;AAAA,MACA,GAAAhF;AAAA,IAAA,CACD,GAED,KAAK,OAAO,GAGR+T,MAAkBzD,MAEhByD,MACFvE,EAAYuE,GAAe,QAAQ,GACnCC,GAAgBD,GAAeE,EAAY,IAG7ChE,EAASK,GAAuB,QAAQ,GAC3B3H,EAAA2H,GAAuB2D,IAAc,MAAM,GAEpD7H,GAAU,SAAS0H,CAAS,MAC9B,KAAK,QAAQA,IAEfzE,GAAiB,IAAI;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQF,cAAc,CAAC7P,MAAqE;AAClF,UAAM,EAAE,QAAA8Q,GAAQ,OAAA4D,GAAO,OAAAC,EAAA,IAAU3U,GAC3B,EAAE,WAAA+O,GAAW,SAAAuD,GAAS,cAAAsC,EAAA,IAAiB,MACvC,CAACrC,GAAIC,GAAIC,CAAE,IAAIH,GACf,CAACuC,GAAIC,GAAIC,CAAE,IAAIH,GACfI,IAASJ,EAAa,SAAS9D,CAAM,IAAKA,EAAO,yBAAyCA,GAC1FmE,IAAarE,GAAsBoE,CAAM,GACzCE,IAAOC,GAAmB5C,CAAE,GAC5B6C,IAAUV,IAAQQ,EAAK,aAAaD,EAAW,MAC/CI,IAAUV,IAAQO,EAAK,YAAYD,EAAW;AAcpD,QAXInE,MAAWyB,KAAMzB,MAAW+D,KAC9B,KAAK,cAAcG,GACd,KAAA,eAAeI,GAASC,CAAO,KAC3BvE,MAAW0B,KAAM1B,MAAWgE,KACrC,KAAK,cAAcE,GACnB,KAAK,eAAeK,CAAO,MAClBvE,MAAW2B,KAAM3B,MAAWiE,OACrC,KAAK,cAAcC,GACnB,KAAK,YAAYK,CAAO,IAGtBtG,GAAW;AACP,YAAAwF,IAAgBvD,EAAc,aAAajC,CAAS;AAC1D,MAAIwF,MACFvE,EAAYuE,GAAe,QAAQ,GACnCC,GAAgBD,GAAeE,EAAY;AAAA,IAE/C;AACA,IAAAzU,EAAE,eAAe;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASnB,YAAY,CAAC,EAAE,QAAA8Q,QAAqD;AAC5D,UAAA,EAAE,QAAAtE,EAAW,IAAA,MACbwC,IAAMC,EAAYzC,CAAM,GACxB8I,IAActE,EAAc,GAAGlD,EAAyB,SAASkB,CAAG,MAAM,MAC1EuG,IAAYvG,EAAI;AAEtB,IAAI,CAAC,KAAK,gBAAgB,CAACuG,KAAa,CAACA,EAAU,SAAS,EAAE,WAAW,CAAC/I,EAAO,SAASsE,CAAM,KAC9F,KAAK,KAAKwE,CAAW,GAGvB,KAAK,cAAc;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQrB,cAAc,CAACtV,MAA0B;AACjC,UAAA,EAAE,aAAAwV,GAAa,SAAAlD,EAAY,IAAA,MAC3B,CAACC,GAAIC,GAAIC,CAAE,IAAIH,GACf,EAAE,OAAAoC,GAAO,OAAAC,EAAU,IAAA3U;AAEzB,QAAI,CAACwV;AAAa;AAEZ,UAAAC,IAAc7E,GAAsB4E,CAAW,GAC/CtG,IAAMiG,GAAmB5C,CAAE,GAC3B6C,IAAUV,IAAQxF,EAAI,aAAauG,EAAY,MAC/CJ,IAAUV,IAAQzF,EAAI,YAAYuG,EAAY;AAEpD,IAAID,MAAgBjD,KACb,KAAA,eAAe6C,GAASC,CAAO,GAGlCG,MAAgBhD,KAClB,KAAK,eAAe6C,CAAO,GAGzBG,MAAgB/C,KAClB,KAAK,YAAY4C,CAAO;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQF,cAAc,CAACrV,MAAgC;AACvC,UAAA,EAAE,QAAA8Q,GAAQ,MAAAmC,EAAS,IAAAjT;AAGrB,QAAA,CAAC,CAACgU,IAAYD,GAAcI,IAAcC,CAAa,EAAE,SAASnB,CAAI;AAAG;AAC7E,IAAAjT,EAAE,eAAe;AAEX,UAAA,EAAE,cAAA4U,GAAc,SAAAtC,EAAY,IAAA,MAC5B,EAAE,aAAAoD,GAAa,cAAAhD,EAAa,IAAIJ,EAAQ,CAAC,GACzC,CAACuC,GAAIC,GAAIC,CAAE,IAAIH,GACf,EAAE,eAAAzB,EAAA,IAAkBlE,EAAY4F,CAAE,GAClCc,IAAcf,EAAa,KAAK,CAAA9R,MAAKA,MAAMqQ,CAAa,GACxDyC,IAASlD,IAAe;AAG9B,QAAIiD,GAAa;AACf,UAAIP,IAAU,GACVC,IAAU;AAGd,UAAIvE,MAAW+D,GAAI;AACjB,cAAMgB,IAASH,IAAc;AAG7B,QAAI,CAACvB,IAAcC,CAAa,EAAE,SAASnB,CAAI,IAC7C,KAAK,iBAAiB,OAAOA,MAASmB,IAAgByB,IAAS,CAACA,IACvD,CAAC7B,IAAYD,CAAY,EAAE,SAASd,CAAI,MACjD,KAAK,iBAAiB,OAAOA,MAASc,IAAe6B,IAAS,CAACA,IAGjER,IAAU,KAAK,iBAAiB,KAChCC,IAAU,KAAK,iBAAiB,KAC3B,KAAA,eAAeD,GAASC,CAAO;AAAA,MAAA;AACtC,QAAWvE,MAAWgE,KACf,KAAA,iBAAiB,OAAO,CAACf,GAAcK,CAAa,EAAE,SAASnB,CAAI,IAAI2C,IAAS,CAACA,GAEtFP,IAAU,KAAK,iBAAiB,KAChC,KAAK,eAAeA,CAAO,KAClBvE,MAAWiE,MACf,KAAA,iBAAiB,OAAO,CAAChB,GAAcK,CAAa,EAAE,SAASnB,CAAI,IAAI2C,IAAS,CAACA,GAEtFP,IAAU,KAAK,iBAAiB,KAChC,KAAK,YAAYA,CAAO;AAE1B,WAAK,aAAarV,CAAC;AAAA,IACrB;AAAA,EAAA;AAAA;AAAA,EAIF,gBAAgB,MAAY;AACtB,QAAA8V;AACE,UAAA,EAAE,QAAAC,GAAQ,QAAAtN,GAAQ,OAAOuN,GAAc,OAAAlL,GAAO,kBAAAuH,GAAkB,SAAAC,EAAY,IAAA,MAC5E,EAAE,eAAAa,EAAA,IAAkBlE,EAAYnE,CAAK,GACrC,EAAE,cAAA4H,EAAA,IAAiBJ,EAAQ,CAAC,GAC5B,CAAC2D,GAAA,EAAA,EAAQC,CAAE,IAAIH,GACf,CAACxD,GAAIC,GAAIC,GAAI0D,CAAE,IACnB1N,MAAW,QACPsN,EAAO,IAAI,CAAK3V,MAAA,WAAWA,EAAE,KAAK,KAAKA,MAAM8V,IAAK,MAAM,EAAE,IAC1DH,EAAO,IAAI,CAAA3V,MAAK,WAAWA,EAAE,KAAK,KAAKA,MAAM6V,IAAK,MAAM,IAAI,GAC5DG,IAAkB,KAAK,eAAexJ,GAAU,SAASoJ,CAAY,GACrEpD,IAAQsD,IAAKC,IAAK,IAAI9D,EAAiB,MAAMK;AAGnD,QAAIS,MAAkBrI,KAAUqI,KAAiB4C,EAAO,SAAS5C,CAAiC,GAAI;AACpG,MAAIA,MAAkBrI,IAChBsL,IACYN,IAAAE,MAAiB,gBAAgB,kBAAkB,eAEnDF,IAAAE,IAEPvN,MAAW,QACpBqN,IAAcG,EAAG,QACRxN,MAAW,QACNqN,IAAA;AAAA,QACZ,GAAGvD;AAAA,QACH,GAAGC;AAAA,QACH,GAAGC;AAAA,QACH,GAAGG;AAAA,MAAA,IAEInK,MAAW,QACNqN,IAAA;AAAA,QACZ,GAAGvD;AAAA,QACH,GAAGC;AAAA,QACH,GAAGC;AAAA,QACH,GAAGG;AAAA,MAAA,IAGSkD,IAAA;AAAA,QACZ,GAAGvD;AAAA,QACH,GAAGC;AAAA,QACH,GAAGC;AAAA,QACH,GAAGG;AAAA,MAAA;AAID,YAAA,EAAE,GAAAnS,GAAG,GAAA4D,GAAG,GAAAmB,GAAG,GAAAhF,MAAM,IAAIwG,EAAM8O,CAAW;AAE5CvM,MAAAA,EAAa,KAAK,OAAO;AAAA,QACvB,GAAA9I;AAAA,QACA,GAAA4D;AAAA,QACA,GAAAmB;AAAA,QACA,GAAAhF;AAAA,MAAA,CACD,GACD,KAAK,oBAAoB,GACzB,KAAK,iBAAiB,GACtB,KAAK,aAAa,GAClB,KAAK,eAAe,GACpB,KAAK,cAAc,GAGf2S,MAAkBrI,KAASsL,MAC7B,KAAK,QAAQJ;AAAA,IAEjB;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWF,eAAevP,GAAWI,GAAiB;AACzC,QAAI,CAACuO,GAASC,CAAO,IAAI,CAAC,GAAG,CAAC;AACxB,UAAA,EAAE,kBAAAhD,GAAkB,SAAAC,EAAY,IAAA,MAChC,EAAE,cAAAI,GAAc,aAAAgD,EAAY,IAAIpD,EAAQ,CAAC;AAE/C,IAAI7L,IAAIiP,IAAuBN,IAAAM,IACtBjP,KAAK,MAAa2O,IAAA3O,IAEvBI,IAAI6L,IAAwB2C,IAAA3C,IACvB7L,KAAK,MAAawO,IAAAxO;AAErB,UAAAK,IAAMmL,EAAiB,MAAMK,GAE7BpL,IAAa8N,IAAUM,GAEvB1D,IAAY,IAAIqD,IAAU3C,GAC1BE,IAAQ,IAAIP,EAAiB,MAAMK,GAGnC,EAAE,GAAAjS,GAAG,GAAG,GAAA+E,GAAG,GAAAhF,EAAE,IAAI,IAAIwG,EAAM;AAAA,MAC/B,GAAGE;AAAA,MACH,GAAGI;AAAA,MACH,GAAG0K;AAAA,MACH,GAAGY;AAAA,IAAA,CACJ;AAEDrJ,IAAAA,EAAa,KAAK,OAAO;AAAA,MACvB,GAAA9I;AAAA,MACA;AAAA,MACA,GAAA+E;AAAA,MACA,GAAAhF;AAAA,IAAA,CACD,GAGD,KAAK,iBAAiB,MAAM4U,GAC5B,KAAK,iBAAiB,MAAMC,GAG5B,KAAK,iBAAiB,GACtB,KAAK,aAAa,GAClB,KAAK,eAAe,GACpB,KAAK,cAAc;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,eAAexO,GAAW;AAClB,UAAA,EAAE,kBAAAwL,GAAkB,SAAAC,EAAY,IAAA,MAChC,EAAE,cAAAI,GAAc,aAAAgD,EAAY,IAAIpD,EAAQ,CAAC;AAE/C,QAAI+C,IAAU;AAEd,IAAIxO,IAAI6L,IAAwB2C,IAAA3C,IACvB7L,KAAK,MAAawO,IAAAxO;AAE3B,UAAMK,IAAMmO,IAAU3C,GAChBpL,IAAa+K,EAAiB,MAAMqD,GACpC1D,IAAY,IAAIK,EAAiB,MAAMK,GACvCE,IAAQ,IAAIP,EAAiB,MAAMK,GAGnC,EAAE,GAAAjS,GAAG,GAAA4D,GAAG,GAAAmB,GAAG,GAAAhF,EAAE,IAAI,IAAIwG,EAAM;AAAA,MAC/B,GAAGE;AAAA,MACH,GAAGI;AAAA,MACH,GAAG0K;AAAA,MACH,GAAGY;AAAA,IAAA,CACJ;AAEDrJ,IAAAA,EAAa,KAAK,OAAO;AAAA,MACvB,GAAA9I;AAAA,MACA,GAAA4D;AAAA,MACA,GAAAmB;AAAA,MACA,GAAAhF;AAAA,IAAA,CACD,GAGD,KAAK,iBAAiB,MAAM6U,GAE5B,KAAK,iBAAiB,GACtB,KAAK,aAAa,GAClB,KAAK,eAAe,GACpB,KAAK,cAAc;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,YAAYxO,GAAW;AACf,UAAA,EAAE,SAAAyL,EAAY,IAAA,MACd,EAAE,cAAAI,EAAA,IAAiBJ,EAAQ,CAAC;AAClC,QAAI+C,IAAU;AAEd,IAAIxO,IAAI6L,IAAwB2C,IAAA3C,IACvB7L,KAAK,MAAawO,IAAAxO;AAGrB,UAAA+L,IAAQ,IAAIyC,IAAU3C;AACvB,SAAA,MAAM,SAASE,CAAK,GAEzB,KAAK,iBAAiB,MAAMyC,GAE5B,KAAK,iBAAiB,GACtB,KAAK,aAAa,GAClB,KAAK,eAAe,GACpB,KAAK,cAAc;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAS,MAAM;AACb,SAAK,uBAAuB,GAC5B,KAAK,iBAAiB,GACtB,KAAK,oBAAoB,GACzB,KAAK,aAAa,EAAI,GACtB,KAAK,eAAe,GACpB,KAAK,cAAc;AAAA,EAAA;AAAA;AAAA,EAIrB,yBAAyB;AACvB,UAAM,EAAE,OAAAvK,GAAO,aAAAqF,GAAa,WAAApB,EAAA,IAAc,MACpCsH,IAASzF,GAAsB9F,CAAK,GACpC,EAAE,KAAAwL,GAAK,QAAAC,EAAW,IAAAF,GAClB,EAAE,cAAcG,EAAa,IAAA1L,GAC7B2L,IAAetB,GAAmBrK,CAAK,EAAE,cAEzCoF,IADWM,EAASL,GAAa,MAAM,IACjBA,IAAcpB;AAC1C,QAAI,CAACmB;AAAU;AACT,UAAA,EAAE,cAAcwG,EAAe,IAAAxG,GAC/ByG,IAAiBF,IAAeF,GAChCK,IAAcN,GACdO,IAAeP,IAAMI,IAAaF,IAAWC,GAC7CK,IAAYR,IAAMI,IAAa;AAEhC,KAAAlG,EAASN,GAAU,QAAQ,KAAK,CAAC4G,MAAcH,IAAiBC,KAAeC,KAClF7G,EAAYE,GAAU,QAAQ,GAC9BO,EAASP,GAAU,KAAK,MAExBF,EAAYE,GAAU,KAAK,GAC3BO,EAASP,GAAU,QAAQ;AAAA,EAE/B;AAAA;AAAA,EAGA,sBAAsB;AACpB,UAAM,EAAE,SAAAoC,GAAS,OAAAtF,GAAO,KAAA8E,EAAA,IAAQ,MAC1B,EAAE,cAAAY,GAAc,aAAAgD,EAAY,IAAIpD,EAAQ,CAAC,GACzCM,IAAQ5F,EAAM,GACd9F,IAAM4K,EAAI,GAEVxK,IAAawK,EAAI,GACjBE,IAAYF,EAAI;AAEjB,SAAA,iBAAiB,MAAMxK,IAAaoO,GACpC,KAAA,iBAAiB,OAAO,IAAI1D,KAAaU,GACzC,KAAA,iBAAiB,MAAMxL,IAAMwL,GAC7B,KAAA,iBAAiB,OAAO,IAAIE,KAASF;AAAA,EAC5C;AAAA;AAAA,EAGA,mBAAmB;AACX,UAAA,EAAE,iBAAA/J,GAAiB,OAAAqE,GAAO,QAAAR,GAAQ,KAAAsF,GAAK,KAAAiF,GAAK,QAAAtO,GAAQ,cAAAmM,EAAiB,IAAA,MACrE,EAAE,iBAAAoC,GAAiB,UAAAjK,GAAU,YAAAkK,EAAA,IAAetO;AAClD,QAAI,EAAE,GAAAlI,GAAG,GAAA4D,GAAG,GAAAmB,EAAE,IAAIwH,EAAM;AACxB,UAAM,CAACkK,GAAOC,GAAOC,CAAK,IAAIxC,GACxB1N,IAAM8G,EAAU8D,EAAI,IAAI,GAAG,GAC3Bc,IAAQ5F,EAAM,GACd1F,IAAa0G,EAAU8D,EAAI,IAAI,GAAG,GAClCE,IAAYhE,EAAU8D,EAAI,IAAI,GAAG,GACjCI,IAAY,KAAK;AAEnB,QAAAmF,IAAa,GAAGtK,CAAQ,IAAIgK,EAAI,MAAM,EAAE,EAAE,KAAK,GAAG,CAAC;AAEvD,QAAItO,MAAW,OAAO;AACd,YAAA,EAAE,KAAA6O,EAAQ,IAAA,MACVC,IAAYvJ,EAAUsJ,EAAI,IAAI,GAAG,GACjCE,KAAYxJ,EAAUsJ,EAAI,IAAI,GAAG;AACvC,MAAAD,IAAa,QAAQnQ,CAAG,MAAMqQ,CAAS,MAAMC,EAAS,KACtDrO,EAAa+N,GAAOO,IAAe,GAAGF,CAAS,OAAOC,EAAS,GAAG,GAClErO,EAAa+N,GAAOQ,IAAc,GAAGH,CAAS,EAAE,GACnCpO,EAAAgO,GAAOQ,IAAiB,GAAGV,CAAU,KAAKI,CAAU,KAAKL,CAAe,KAAK9E,CAAS,GAAG,GACtG/I,EAAagO,GAAOM,IAAe,GAAGvQ,CAAG,GAAG,GAC5CiC,EAAagO,GAAOO,IAAc,GAAGxQ,CAAG,EAAE;AAAA,IAAA;AAEzC,OAAAzG,GAAG4D,GAAGmB,CAAC,IAAI,CAAC/E,GAAG4D,GAAGmB,CAAC,EAAE,IAAIwI,CAAS,GACtBqJ,IAAA5O,MAAW,QAAQ,QAAQvB,CAAG,MAAMI,CAAU,MAAM0K,CAAS,MAAMqF,GACnEA,IAAA5O,MAAW,QAAQ,QAAQhI,CAAC,KAAK4D,CAAC,KAAKmB,CAAC,KAAK6R,GAE1DlO,EAAa+N,GAAOO,IAAe,GAAGzF,CAAS,OAAO1K,CAAU,GAAG,GACnE6B,EAAa+N,GAAOQ,IAAc,GAAG1F,CAAS,EAAE,GACnC7I,EAAAgO,GAAOQ,IAAiB,GAAGV,CAAU,KAAKI,CAAU,KAAKL,CAAe,KAAK9E,CAAS,GAAG,GACtG/I,EAAagO,GAAOM,IAAe,GAAGvQ,CAAG,GAAG,GAC5CiC,EAAagO,GAAOO,IAAc,GAAGxQ,CAAG,EAAE;AAGtC,UAAA0Q,IAAa5J,EAAU4E,IAAQ,GAAG;AACxCzJ,IAAAA,EAAaiO,GAAOK,IAAe,GAAGG,CAAU,GAAG,GACnDzO,EAAaiO,GAAOM,IAAc,GAAGE,CAAU,EAAE;AAG3C,UAAA5P,IAAWgF,EAAM;AACvBf,IAAAA,EAAgB,KAAK,OAAO,EAAE,iBAAiBjE,EAAU,CAAA,GAKpD,KAAK,UAIJwI,EAAShE,GAAQ,WAAW,KAAGwD,EAAYxD,GAAQ,WAAW,GAC7DgE,EAAShE,GAAQ,UAAU,KAAGiE,EAASjE,GAAQ,UAAU,MAJ1DgE,EAAShE,GAAQ,UAAU,KAAGwD,EAAYxD,GAAQ,UAAU,GAC3DgE,EAAShE,GAAQ,WAAW,KAAGiE,EAASjE,GAAQ,WAAW;AAAA,EAKpE;AAAA;AAAA,EAGA,iBAAiB;AACT,UAAA,EAAE,cAAAoI,GAAc,kBAAAvC,EAAqB,IAAA;AAC3C,QAAI,EAAE,KAAAwF,GAAK,KAAAC,GAAK,KAAAC,GAAK,KAAAC,MAAQ3F;AAC7B,UAAM,CAAC4F,GAAUC,GAAUC,CAAQ,IAAIvD;AAEvC,KAACiD,GAAKC,GAAKC,GAAKC,CAAG,IAAI,CAACH,GAAKC,GAAKC,GAAKC,CAAG,EAAE,IAAIhK,CAAS,GAEzD/B,EAAgBgM,GAAU;AAAA,MACxB,WAAW,eAAeJ,IAAM,CAAC,MAAMC,IAAM,CAAC;AAAA,IAAA,CAC/C,GACD7L,EAAgBiM,GAAU,EAAE,WAAW,iBAAiBH,IAAM,CAAC,SAAS,GACxE9L,EAAgBkM,GAAU,EAAE,WAAW,iBAAiBH,IAAM,CAAC,SAAS;AAAA,EAC1E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,aAAaI,GAAuB;AAClC,UAAM,EAAE,OAAOC,GAAU,QAAA5P,GAAQ,QAAAsN,GAAQ,OAAA/I,GAAO,KAAA6E,EAAQ,IAAA,MAClD,CAACoE,GAAIqC,GAAIC,GAAIrC,CAAE,IAAIH,GACnBnD,IAAQ5E,EAAUhB,EAAM,IAAI,GAAG,GAC/B9F,IAAM8G,EAAU6D,EAAI,IAAI,GAAG;AAC7B,QAAA7J,IAAWgF,EAAM;AAGrB,QAAIvE,MAAW;AACF,MAAAT,IAAA,KAAK,MAAM,YAAY,EAAI,GACtCiO,EAAG,QAAQ,KAAK;AAAA,aACPxN,MAAW,OAAO;AAC3B,YAAMuJ,IAAYhE,EAAU6D,EAAI,IAAI,GAAG,GACjCvK,IAAa0G,EAAU6D,EAAI,IAAI,GAAG;AAC7B,MAAA7J,IAAA,KAAK,MAAM,eACnBiO,EAAA,QAAQ,GAAG/O,CAAG,IACdoR,EAAA,QAAQ,GAAGhR,CAAU,IACrBiR,EAAA,QAAQ,GAAGvG,CAAS,IACpBkE,EAAA,QAAQ,GAAGtD,CAAK;AAAA,IAAA,WACVnK,MAAW,OAAO;AAC3B,YAAM,EAAE,GAAAhE,GAAG,GAAAe,MAAM,KAAK,KAChB+R,IAAYvJ,EAAUvJ,IAAI,GAAG,GAC7B+S,IAAYxJ,EAAUxI,IAAI,GAAG;AAExB,MAAAwC,IAAA,KAAK,MAAM,eACnBiO,EAAA,QAAQ,GAAG/O,CAAG,IACdoR,EAAA,QAAQ,GAAGf,CAAS,IACpBgB,EAAA,QAAQ,GAAGf,CAAS,IACpBtB,EAAA,QAAQ,GAAGtD,CAAK;AAAA,IAAA,WACVnK,MAAW,OAAO;AAC3B,UAAI,EAAE,GAAAhI,GAAG,GAAA4D,GAAG,GAAAmB,EAAA,IAAM,KAAK;AACtB,OAAA/E,GAAG4D,GAAGmB,CAAC,IAAI,CAAC/E,GAAG4D,GAAGmB,CAAC,EAAE,IAAIwI,CAAS,GAExBhG,IAAA,KAAK,MAAM,eACnBiO,EAAA,QAAQ,GAAGxV,CAAC,IACZ6X,EAAA,QAAQ,GAAGjU,CAAC,IACZkU,EAAA,QAAQ,GAAG/S,CAAC,IACZ0Q,EAAA,QAAQ,GAAGtD,CAAK;AAAA,IACrB;AAGA,SAAK,QAAQ5K,GAGT,CAACoQ,KAAepQ,MAAaqQ,KAC/BxI,GAAiB,IAAI;AAAA,EAEzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,eAAe,CAAC7P,MAAc;AACxB,IAAAA,KAAGA,EAAE,eAAe;AAClB,UAAA,EAAE,aAAAmQ,EAAgB,IAAA;AAExB,IAAI,KAAK,UAAUK,EAASL,GAAa,MAAM,IAC7C,KAAK,KAAK,EAAI,IAEdF,GAAa,MAAME,CAAW;AAAA,EAChC;AAAA;AAAA,EAIF,aAAa,MAAM;AACX,UAAA,EAAE,aAAAA,EAAgB,IAAA;AAEpB,IAAC,CAAC,OAAO,QAAQ,EAAE,KAAK,CAAAhQ,MAAKqQ,EAASL,GAAahQ,CAAC,CAAC,KACvD8P,GAAa,MAAME,CAAW;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASF,aAAa,CAACnQ,MAAc;AACtB,IAAAA,KAAGA,EAAE,eAAe;AAClB,UAAA,EAAE,WAAA+O,EAAc,IAAA;AAEtB,IAAI,KAAK,UAAUyB,EAASzB,GAAW,MAAM,IAC3C,KAAK,KAAK,EAAI,IAEdkB,GAAa,MAAMlB,CAAS;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQF,KAAKyJ,GAA0B;AAC7B,QAAI,KAAK,QAAQ;AACf,YAAM,EAAE,cAAA9J,GAAc,YAAAC,GAAY,aAAAwB,GAAa,WAAApB,GAAW,QAAAvC,GAAQ,OAAA1B,EAAU,IAAA,MACtE2N,IAAajI,EAASL,GAAa,MAAM,GACzCE,IAAeoI,IAAatI,IAAcpB,GAC1C2J,IAAaD,IAAa/J,IAAeC,GACzCgK,IAAoBtI,KAAgBuI,GAA6BvI,CAAY;AAEnF,WAAK,QAAQ,KAAK,MAAM,SAAS,EAAI,GAGjCA,MACFL,EAAYK,GAAc,MAAM,GACnBlH,EAAAuP,GAAY/H,IAAc,OAAO,GAC9C,WAAW,MAAM;AACf,QAAAZ,GAAeM,CAAY,GAEtBW,EAAc,SAASxE,CAAM,MAChCwD,EAAYxD,GAAQ,MAAM,GAC1BsC,GAAoB,IAAI,GACxB,KAAK,SAAS;AAAA,SAEf6J,CAAiB,IAGjBH,KACHtE,EAAMxF,CAAY,GAEPvF,EAAA2B,GAAO6C,GAAU,IAAI,GAC9B+K,MAAe/J,KACJxF,EAAAwF,GAAYhB,GAAU,IAAI;AAAA,IAE3C;AAAA,EACF;AAAA;AAAA,EAGA,UAAU;AACF,UAAA,EAAE,OAAA7C,GAAO,QAAA0B,EAAW,IAAA;AAC1B,SAAK,KAAK,EAAI,GACd8B,GAAa,IAAI,GACjB,CAAC,GAAG9B,EAAO,QAAQ,EAAE,QAAQ,CAAMqM,MAAA;AACjC,MAAIA,MAAO/N,KAAO+N,EAAG,OAAO;AAAA,IAAA,CAC7B,GAEDrE,GAAgB1J,GAAO6C,CAAQ,GAC/B1B,EAAgBnB,GAAO,EAAE,iBAAiB,GAAI,CAAA,GAE7C,CAAA,aAAa,UAAU,EAAE,QAAQ,OAAKkF,EAAYxD,GAAQrM,CAAC,CAAC,GACxDuR,GAAA,OAAO5G,GAAO8C,CAAiB;AAAA,EACtC;AACF;","x_google_ignoreList":[0,1,2]}
         
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"color-picker.mjs","sources":["../../node_modules/.pnpm/@thednp+event-listener@2.0.2/node_modules/@thednp/event-listener/dist/event-listener.mjs","../../node_modules/.pnpm/@thednp+shorty@2.0.0-alpha17/node_modules/@thednp/shorty/dist/shorty.mjs","../../node_modules/.pnpm/@thednp+color@1.0.8/node_modules/@thednp/color/dist/index.mjs","../../src/ts/colorPalette.ts","../../src/ts/util/colorPickerLabels.ts","../../src/ts/util/colorNames.ts","../../src/ts/util/isValidJSON.ts","../../src/ts/util/vHidden.ts","../../src/ts/util/getColorForm.ts","../../src/ts/util/getColorControls.ts","../../src/ts/util/getColorMenu.ts","../../src/ts/util/setMarkup.ts","../../src/ts/index.ts"],"sourcesContent":["const e = {}, f = (t) => {\n  const { type: c, currentTarget: i } = t;\n  [...e[c]].forEach(([n, s]) => {\n    i === n && [...s].forEach(([o, a]) => {\n      o.apply(n, [t]), typeof a == \"object\" && a.once && r(n, c, o, a);\n    });\n  });\n}, E = (t, c, i, n) => {\n  e[c] || (e[c] = /* @__PURE__ */ new Map());\n  const s = e[c];\n  s.has(t) || s.set(t, /* @__PURE__ */ new Map());\n  const o = s.get(t), { size: a } = o;\n  o.set(i, n), a || t.addEventListener(c, f, n);\n}, r = (t, c, i, n) => {\n  const s = e[c], o = s && s.get(t), a = o && o.get(i), d = a !== void 0 ? a : n;\n  o && o.has(i) && o.delete(i), s && (!o || !o.size) && s.delete(t), (!s || !s.size) && delete e[c], (!o || !o.size) && t.removeEventListener(c, f, d);\n}, g = E, M = r;\nexport {\n  E as addListener,\n  f as globalListener,\n  M as off,\n  g as on,\n  e as registry,\n  r as removeListener\n};\n//# sourceMappingURL=event-listener.mjs.map\n","const pe = \"aria-checked\", me = \"aria-description\", fe = \"aria-describedby\", ge = \"aria-expanded\", ve = \"aria-haspopup\", Ee = \"aria-hidden\", be = \"aria-label\", he = \"aria-labelledby\", ye = \"aria-modal\", we = \"aria-pressed\", Ae = \"aria-selected\", Se = \"aria-valuemin\", Me = \"aria-valuemax\", Ne = \"aria-valuenow\", ke = \"aria-valuetext\", q = \"abort\", G = \"beforeunload\", J = \"blur\", K = \"change\", X = \"contextmenu\", P = \"DOMContentLoaded\", Y = \"DOMMouseScroll\", Z = \"error\", $ = \"focus\", _ = \"focusin\", tt = \"focusout\", et = \"gesturechange\", nt = \"gestureend\", ot = \"gesturestart\", st = \"keydown\", ct = \"keypress\", rt = \"keyup\", at = \"load\", it = \"click\", ut = \"dblclick\", lt = \"mousedown\", dt = \"mouseup\", pt = \"hover\", mt = \"mouseenter\", ft = \"mouseleave\", gt = \"mousein\", vt = \"mouseout\", Et = \"mouseover\", bt = \"mousemove\", ht = \"mousewheel\", yt = \"move\", wt = \"orientationchange\", At = \"pointercancel\", St = \"pointerdown\", Mt = \"pointerleave\", Nt = \"pointermove\", kt = \"pointerup\", Tt = \"readystatechange\", Dt = \"reset\", Ct = \"resize\", Ot = \"select\", Lt = \"selectend\", It = \"selectstart\", zt = \"scroll\", xt = \"submit\", Vt = \"touchstart\", Bt = \"touchmove\", Ht = \"touchcancel\", Pt = \"touchend\", Ft = \"unload\", Te = {\n  DOMContentLoaded: P,\n  DOMMouseScroll: Y,\n  abort: q,\n  beforeunload: G,\n  blur: J,\n  change: K,\n  click: it,\n  contextmenu: X,\n  dblclick: ut,\n  error: Z,\n  focus: $,\n  focusin: _,\n  focusout: tt,\n  gesturechange: et,\n  gestureend: nt,\n  gesturestart: ot,\n  hover: pt,\n  keydown: st,\n  keypress: ct,\n  keyup: rt,\n  load: at,\n  mousedown: lt,\n  mousemove: bt,\n  mousein: gt,\n  mouseout: vt,\n  mouseenter: mt,\n  mouseleave: ft,\n  mouseover: Et,\n  mouseup: dt,\n  mousewheel: ht,\n  move: yt,\n  orientationchange: wt,\n  pointercancel: At,\n  pointerdown: St,\n  pointerleave: Mt,\n  pointermove: Nt,\n  pointerup: kt,\n  readystatechange: Tt,\n  reset: Dt,\n  resize: Ct,\n  scroll: zt,\n  select: Ot,\n  selectend: Lt,\n  selectstart: It,\n  submit: xt,\n  touchcancel: Ht,\n  touchend: Pt,\n  touchmove: Bt,\n  touchstart: Vt,\n  unload: Ft\n}, De = \"drag\", Ce = \"dragstart\", Oe = \"dragenter\", Le = \"dragleave\", Ie = \"dragover\", ze = \"dragend\", xe = \"loadstart\", Ve = {\n  start: \"mousedown\",\n  end: \"mouseup\",\n  move: \"mousemove\",\n  cancel: \"mouseleave\"\n}, Be = { down: \"mousedown\", up: \"mouseup\" }, He = \"onmouseleave\" in document ? [\"mouseenter\", \"mouseleave\"] : (\n  /* istanbul ignore next */\n  [\"mouseover\", \"mouseout\"]\n), Pe = {\n  start: \"touchstart\",\n  end: \"touchend\",\n  move: \"touchmove\",\n  cancel: \"touchcancel\"\n}, Fe = { in: \"focusin\", out: \"focusout\" }, Ue = {\n  Backspace: \"Backspace\",\n  //  8\n  Tab: \"Tab\",\n  //  9\n  Enter: \"Enter\",\n  // 13\n  Shift: \"Shift\",\n  // 16\n  Control: \"Control\",\n  // 17\n  Alt: \"Alt\",\n  // 18\n  Pause: \"Pause\",\n  // 19\n  CapsLock: \"CapsLock\",\n  // 20\n  Escape: \"Escape\",\n  // 27\n  Scape: \"Space\",\n  // 32\n  ArrowLeft: \"ArrowLeft\",\n  // 37\n  ArrowUp: \"ArrowUp\",\n  // 38\n  ArrowRight: \"ArrowRight\",\n  // 39\n  ArrowDown: \"ArrowDown\",\n  // 40\n  Insert: \"Insert\",\n  // 45\n  Delete: \"Delete\",\n  // 46\n  Meta: \"Meta\",\n  // 91 windows key\n  ContextMenu: \"ContextMenu\",\n  // 93\n  ScrollLock: \"ScrollLock\"\n  // 145\n}, We = \"Alt\", Re = \"ArrowDown\", Qe = \"ArrowUp\", je = \"ArrowLeft\", qe = \"ArrowRight\", Ge = \"Backspace\", Je = \"CapsLock\", Ke = \"Control\", Xe = \"Delete\", Ye = \"Enter\", Ze = \"Escape\", $e = \"Insert\", _e = \"Meta\", tn = \"Pause\", en = \"ScrollLock\", nn = \"Shift\", on = \"Space\", sn = \"Tab\", Ut = \"animationDuration\", Wt = \"animationDelay\", F = \"animationName\", D = \"animationend\", Rt = \"transitionDuration\", Qt = \"transitionDelay\", C = \"transitionend\", U = \"transitionProperty\", cn = \"addEventListener\", rn = \"removeEventListener\", an = {\n  linear: \"linear\",\n  easingSinusoidalIn: \"cubic-bezier(0.47,0,0.745,0.715)\",\n  easingSinusoidalOut: \"cubic-bezier(0.39,0.575,0.565,1)\",\n  easingSinusoidalInOut: \"cubic-bezier(0.445,0.05,0.55,0.95)\",\n  easingQuadraticIn: \"cubic-bezier(0.550,0.085,0.680,0.530)\",\n  easingQuadraticOut: \"cubic-bezier(0.250,0.460,0.450,0.940)\",\n  easingQuadraticInOut: \"cubic-bezier(0.455,0.030,0.515,0.955)\",\n  easingCubicIn: \"cubic-bezier(0.55,0.055,0.675,0.19)\",\n  easingCubicOut: \"cubic-bezier(0.215,0.61,0.355,1)\",\n  easingCubicInOut: \"cubic-bezier(0.645,0.045,0.355,1)\",\n  easingQuarticIn: \"cubic-bezier(0.895,0.03,0.685,0.22)\",\n  easingQuarticOut: \"cubic-bezier(0.165,0.84,0.44,1)\",\n  easingQuarticInOut: \"cubic-bezier(0.77,0,0.175,1)\",\n  easingQuinticIn: \"cubic-bezier(0.755,0.05,0.855,0.06)\",\n  easingQuinticOut: \"cubic-bezier(0.23,1,0.32,1)\",\n  easingQuinticInOut: \"cubic-bezier(0.86,0,0.07,1)\",\n  easingExponentialIn: \"cubic-bezier(0.95,0.05,0.795,0.035)\",\n  easingExponentialOut: \"cubic-bezier(0.19,1,0.22,1)\",\n  easingExponentialInOut: \"cubic-bezier(1,0,0,1)\",\n  easingCircularIn: \"cubic-bezier(0.6,0.04,0.98,0.335)\",\n  easingCircularOut: \"cubic-bezier(0.075,0.82,0.165,1)\",\n  easingCircularInOut: \"cubic-bezier(0.785,0.135,0.15,0.86)\",\n  easingBackIn: \"cubic-bezier(0.6,-0.28,0.735,0.045)\",\n  easingBackOut: \"cubic-bezier(0.175,0.885,0.32,1.275)\",\n  easingBackInOut: \"cubic-bezier(0.68,-0.55,0.265,1.55)\"\n}, un = \"offsetHeight\", ln = \"offsetWidth\", dn = \"scrollHeight\", pn = \"scrollWidth\", mn = \"tabindex\", jt = navigator.userAgentData, A = jt, { userAgent: qt } = navigator, S = qt, z = /iPhone|iPad|iPod|Android/i;\nlet O = !1;\nA ? O = A.brands.some((t) => z.test(t.brand)) : O = z.test(S);\nconst fn = O, x = /(iPhone|iPod|iPad)/, gn = A ? A.brands.some((t) => x.test(t.brand)) : (\n  /* istanbul ignore next */\n  x.test(S)\n), vn = S ? S.includes(\"Firefox\") : (\n  /* istanbul ignore next */\n  !1\n), { head: M } = document, En = [\"webkitPerspective\", \"perspective\"].some((t) => t in M.style), Gt = (t, e, n, o) => {\n  const s = o || !1;\n  t.addEventListener(e, n, s);\n}, Jt = (t, e, n, o) => {\n  const s = o || !1;\n  t.removeEventListener(e, n, s);\n}, Kt = (t, e, n, o) => {\n  const s = (r) => {\n    (r.target === t || r.currentTarget === t) && (n.apply(t, [r]), Jt(t, e, s, o));\n  };\n  Gt(t, e, s, o);\n}, Xt = () => {\n}, bn = (() => {\n  let t = !1;\n  try {\n    const e = Object.defineProperty({}, \"passive\", {\n      get: () => (t = !0, t)\n    });\n    Kt(document, P, Xt, e);\n  } catch {\n  }\n  return t;\n})(), hn = [\"webkitTransform\", \"transform\"].some((t) => t in M.style), yn = \"ontouchstart\" in window || /* istanbul ignore next */\n\"msMaxTouchPoints\" in navigator, wn = [\"webkitAnimation\", \"animation\"].some((t) => t in M.style), An = [\"webkitTransition\", \"transition\"].some((t) => t in M.style), Yt = (t, e) => t.getAttribute(e), Sn = (t, e, n) => e.getAttributeNS(t, n), Mn = (t, e) => t.hasAttribute(e), Nn = (t, e, n) => e.hasAttributeNS(t, n), kn = (t, e, n) => t.setAttribute(e, n), Tn = (t, e, n, o) => e.setAttributeNS(t, n, o), Dn = (t, e) => t.removeAttribute(e), Cn = (t, e, n) => e.removeAttributeNS(t, n), On = (t, ...e) => {\n  t.classList.add(...e);\n}, Ln = (t, ...e) => {\n  t.classList.remove(...e);\n}, In = (t, e) => t.classList.contains(e), { body: zn } = document, { documentElement: xn } = document, Vn = (t) => Array.from(t), v = (t) => t != null && typeof t == \"object\" || !1, i = (t) => v(t) && typeof t.nodeType == \"number\" && [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].some((e) => t.nodeType === e) || !1, u = (t) => i(t) && t.nodeType === 1 || !1, E = /* @__PURE__ */ new Map(), L = {\n  data: E,\n  /**\n   * Sets web components data.\n   *\n   * @param element target element\n   * @param component the component's name or a unique key\n   * @param instance the component instance\n   */\n  set: (t, e, n) => {\n    if (!u(t))\n      return;\n    E.has(e) || E.set(e, /* @__PURE__ */ new Map()), E.get(e).set(t, n);\n  },\n  /**\n   * Returns all instances for specified component.\n   *\n   * @param component the component's name or a unique key\n   * @returns all the component instances\n   */\n  getAllFor: (t) => E.get(t) || null,\n  /**\n   * Returns the instance associated with the target.\n   *\n   * @param element target element\n   * @param component the component's name or a unique key\n   * @returns the instance\n   */\n  get: (t, e) => {\n    if (!u(t) || !e)\n      return null;\n    const n = L.getAllFor(e);\n    return t && n && n.get(t) || null;\n  },\n  /**\n   * Removes web components data.\n   *\n   * @param element target element\n   * @param component the component's name or a unique key\n   */\n  remove: (t, e) => {\n    const n = L.getAllFor(e);\n    !n || !u(t) || (n.delete(t), n.size === 0 && E.delete(e));\n  }\n}, Bn = (t, e) => L.get(t, e), N = (t) => typeof t == \"string\" || !1, W = (t) => v(t) && t.constructor.name === \"Window\" || !1, R = (t) => i(t) && t.nodeType === 9 || !1, d = (t) => W(t) ? t.document : R(t) ? t : i(t) ? t.ownerDocument : window.document, k = (t, ...e) => Object.assign(t, ...e), Zt = (t) => {\n  if (!t)\n    return;\n  if (N(t))\n    return d().createElement(t);\n  const { tagName: e } = t, n = Zt(e);\n  if (!n)\n    return;\n  const o = { ...t };\n  return delete o.tagName, k(n, o);\n}, $t = (t, e) => {\n  if (!t || !e)\n    return;\n  if (N(e))\n    return d().createElementNS(t, e);\n  const { tagName: n } = e, o = $t(t, n);\n  if (!o)\n    return;\n  const s = { ...e };\n  return delete s.tagName, k(o, s);\n}, Q = (t, e) => t.dispatchEvent(e), Hn = (t, e, n) => n.indexOf(t) === e, g = (t, e) => {\n  const n = getComputedStyle(t), o = e.replace(\"webkit\", \"Webkit\").replace(/([A-Z])/g, \"-$1\").toLowerCase();\n  return n.getPropertyValue(o);\n}, _t = (t) => {\n  const e = g(t, F), n = g(t, Wt), o = n.includes(\"ms\") ? (\n    /* istanbul ignore next */\n    1\n  ) : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : 0;\n  return Number.isNaN(s) ? (\n    /* istanbul ignore next */\n    0\n  ) : s;\n}, te = (t) => {\n  const e = g(t, F), n = g(t, Ut), o = n.includes(\"ms\") ? (\n    /* istanbul ignore next */\n    1\n  ) : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : 0;\n  return Number.isNaN(s) ? (\n    /* istanbul ignore next */\n    0\n  ) : s;\n}, Pn = (t, e) => {\n  let n = 0;\n  const o = new Event(D), s = te(t), r = _t(t);\n  if (s) {\n    const a = (l) => {\n      l.target === t && (e.apply(t, [l]), t.removeEventListener(D, a), n = 1);\n    };\n    t.addEventListener(D, a), setTimeout(() => {\n      n || Q(t, o);\n    }, s + r + 17);\n  } else\n    e.apply(t, [o]);\n}, ee = (t) => {\n  const e = g(t, U), n = g(t, Qt), o = n.includes(\"ms\") ? (\n    /* istanbul ignore next */\n    1\n  ) : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : (\n    /* istanbul ignore next */\n    0\n  );\n  return Number.isNaN(s) ? (\n    /* istanbul ignore next */\n    0\n  ) : s;\n}, ne = (t) => {\n  const e = g(t, U), n = g(t, Rt), o = n.includes(\"ms\") ? (\n    /* istanbul ignore next */\n    1\n  ) : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : (\n    /* istanbul ignore next */\n    0\n  );\n  return Number.isNaN(s) ? (\n    /* istanbul ignore next */\n    0\n  ) : s;\n}, Fn = (t, e) => {\n  let n = 0;\n  const o = new Event(C), s = ne(t), r = ee(t);\n  if (s) {\n    const a = (l) => {\n      l.target === t && (e.apply(t, [l]), t.removeEventListener(C, a), n = 1);\n    };\n    t.addEventListener(C, a), setTimeout(() => {\n      n || Q(t, o);\n    }, s + r + 17);\n  } else\n    e.apply(t, [o]);\n}, Un = (t) => Float32Array.from(Array.from(t)), Wn = (t) => Float64Array.from(Array.from(t)), Rn = (t, e) => t.focus(e), V = (t) => [\"true\", !0].includes(t) ? !0 : [\"false\", !1].includes(t) ? !1 : [\"null\", \"\", null, void 0].includes(t) ? null : t !== \"\" && !Number.isNaN(+t) ? +t : t, w = (t) => Object.entries(t), oe = (t) => t.toLowerCase(), Qn = (t, e, n, o) => {\n  const s = { ...n }, r = { ...t.dataset }, a = { ...e }, l = {}, p = \"title\";\n  return w(r).forEach(([c, m]) => {\n    const y = o && typeof c == \"string\" && c.includes(o) ? c.replace(o, \"\").replace(/[A-Z]/g, (j) => oe(j)) : c;\n    l[y] = V(m);\n  }), w(s).forEach(([c, m]) => {\n    s[c] = V(m);\n  }), w(e).forEach(([c, m]) => {\n    c in s ? a[c] = s[c] : c in l ? a[c] = l[c] : a[c] = c === p ? Yt(t, p) : m;\n  }), a;\n}, jn = (t, e) => v(t) && (Object.hasOwn(t, e) || e in t), qn = (t) => Object.keys(t), Gn = (t) => Object.values(t), Jn = (t) => Object.fromEntries(t), Kn = (t, e) => {\n  const n = new CustomEvent(t, {\n    cancelable: !0,\n    bubbles: !0\n  });\n  return v(e) && k(n, e), n;\n}, Xn = { passive: !0 }, Yn = (t) => t.offsetHeight, Zn = (t, e) => {\n  w(e).forEach(([n, o]) => {\n    if (o && N(n) && n.includes(\"--\"))\n      t.style.setProperty(n, o);\n    else {\n      const s = {};\n      s[n] = o, k(t.style, s);\n    }\n  });\n}, I = (t) => v(t) && t.constructor.name === \"Map\" || !1, se = (t) => typeof t == \"number\" || !1, f = /* @__PURE__ */ new Map(), $n = {\n  /**\n   * Sets a new timeout timer for an element, or element -> key association.\n   *\n   * @param element target element\n   * @param callback the callback\n   * @param delay the execution delay\n   * @param key a unique key\n   */\n  set: (t, e, n, o) => {\n    u(t) && (o && o.length ? (f.has(t) || f.set(t, /* @__PURE__ */ new Map()), f.get(t).set(o, setTimeout(e, n))) : f.set(t, setTimeout(e, n)));\n  },\n  /**\n   * Returns the timer associated with the target.\n   *\n   * @param element target element\n   * @param key a unique\n   * @returns the timer\n   */\n  get: (t, e) => {\n    if (!u(t))\n      return null;\n    const n = f.get(t);\n    return e && n && I(n) ? n.get(e) || /* istanbul ignore next */\n    null : se(n) ? n : null;\n  },\n  /**\n   * Clears the element's timer.\n   *\n   * @param element target element\n   * @param key a unique key\n   */\n  clear: (t, e) => {\n    if (!u(t))\n      return;\n    const n = f.get(t);\n    e && e.length && I(n) ? (clearTimeout(n.get(e)), n.delete(e), n.size === 0 && f.delete(t)) : (clearTimeout(n), f.delete(t));\n  }\n}, _n = (t) => t.toUpperCase(), h = (t, e) => {\n  const { width: n, height: o, top: s, right: r, bottom: a, left: l } = t.getBoundingClientRect();\n  let p = 1, c = 1;\n  if (e && u(t)) {\n    const { offsetWidth: m, offsetHeight: y } = t;\n    p = m > 0 ? Math.round(n) / m : (\n      /* istanbul ignore next */\n      1\n    ), c = y > 0 ? Math.round(o) / y : (\n      /* istanbul ignore next */\n      1\n    );\n  }\n  return {\n    width: n / p,\n    height: o / c,\n    top: s / c,\n    right: r / p,\n    bottom: a / c,\n    left: l / p,\n    x: l / p,\n    y: s / c\n  };\n}, to = (t) => d(t).body, T = (t) => d(t).documentElement, eo = (t) => d(t).head, no = (t) => {\n  const e = W(t), n = e ? t.scrollX : t.scrollLeft, o = e ? t.scrollY : t.scrollTop;\n  return { x: n, y: o };\n}, ce = (t) => i(t) && t.constructor.name === \"ShadowRoot\" || !1, oo = (t) => t.nodeName === \"HTML\" ? t : u(t) && t.assignedSlot || // step into the shadow DOM of the parent of a slotted node\ni(t) && t.parentNode || // DOM Element detected\nce(t) && t.host || // ShadowRoot detected\nT(t), re = (t) => {\n  if (!u(t))\n    return !1;\n  const { width: e, height: n } = h(t), { offsetWidth: o, offsetHeight: s } = t;\n  return Math.round(e) !== o || Math.round(n) !== s;\n}, so = (t, e, n) => {\n  const o = u(e), s = h(t, o && re(e)), r = { x: 0, y: 0 };\n  if (o) {\n    const a = h(e, !0);\n    r.x = a.x + e.clientLeft, r.y = a.y + e.clientTop;\n  }\n  return {\n    x: s.left + n.x - r.x,\n    y: s.top + n.y - r.y,\n    width: s.width,\n    height: s.height\n  };\n};\nlet B = 0, H = 0;\nconst b = /* @__PURE__ */ new Map(), ae = (t, e) => {\n  let n = e ? B : H;\n  if (e) {\n    const o = ae(t), s = b.get(o) || /* @__PURE__ */ new Map();\n    b.has(o) || b.set(o, s), I(s) && !s.has(e) ? (s.set(e, n), B += 1) : n = s.get(e);\n  } else {\n    const o = t.id || t;\n    b.has(o) ? n = b.get(o) : (b.set(o, n), H += 1);\n  }\n  return n;\n}, co = (t) => {\n  var e;\n  return t ? R(t) ? t.defaultView : i(t) ? (e = t == null ? void 0 : t.ownerDocument) == null ? void 0 : e.defaultView : t : window;\n}, ie = (t) => Array.isArray(t) || !1, ro = (t) => i(t) && t.nodeName === \"CANVAS\" || !1, ue = (t) => u(t) && !!t.shadowRoot || !1, ao = (t) => i(t) && [1, 2, 3, 4, 5, 6, 7, 8].some((e) => t.nodeType === e) || !1, io = (t) => {\n  if (!i(t))\n    return !1;\n  const { top: e, bottom: n } = h(t), { clientHeight: o } = T(t);\n  return e <= o && n >= 0;\n}, uo = (t) => {\n  if (!i(t))\n    return !1;\n  const { clientWidth: e, clientHeight: n } = T(t), { top: o, left: s, bottom: r, right: a } = h(t, !0);\n  return o >= 0 && s >= 0 && r <= n && a <= e;\n}, lo = (t) => ie(t) && t.every(u) || !1, po = (t) => typeof t == \"function\" || !1, mo = (t) => v(t) && t.constructor.name === \"HTMLCollection\" || !1, fo = (t) => u(t) && t.tagName === \"IMG\" || !1, go = (t) => {\n  if (!N(t))\n    return !1;\n  try {\n    JSON.parse(t);\n  } catch {\n    return !1;\n  }\n  return !0;\n}, vo = (t) => v(t) && t.constructor.name === \"WeakMap\" || !1, Eo = (t) => i(t) && [\"SVG\", \"Image\", \"Video\", \"Canvas\"].some((e) => t.constructor.name.includes(e)) || !1, bo = (t) => v(t) && t.constructor.name === \"NodeList\" || !1, ho = (t) => T(t).dir === \"rtl\", yo = (t) => i(t) && t.constructor.name.includes(\"SVG\") || !1, wo = (t) => i(t) && [\"TABLE\", \"TD\", \"TH\"].includes(t.nodeName) || !1, le = (t, e) => t ? t.closest(e) || // break out of `ShadowRoot`\nle(t.getRootNode().host, e) : null, Ao = (t, e) => u(t) ? t : (i(e) ? e : d()).querySelector(t), de = (t, e) => (i(e) ? e : d()).getElementsByTagName(t), So = (t) => [...de(\"*\", t)].filter(ue), Mo = (t, e) => d(e).getElementById(t) || null, No = (t, e) => (i(e) ? e : d()).querySelectorAll(t), ko = (t, e) => (e && i(e) ? e : d()).getElementsByClassName(\n  t\n), To = (t, e) => t.matches(e), Do = \"2.0.0alpha17\";\nexport {\n  Vn as ArrayFrom,\n  P as DOMContentLoadedEvent,\n  Y as DOMMouseScrollEvent,\n  L as Data,\n  Un as Float32ArrayFrom,\n  Wn as Float64ArrayFrom,\n  k as ObjectAssign,\n  w as ObjectEntries,\n  Jn as ObjectFromEntries,\n  jn as ObjectHasOwn,\n  qn as ObjectKeys,\n  Gn as ObjectValues,\n  $n as Timer,\n  q as abortEvent,\n  On as addClass,\n  cn as addEventListener,\n  Wt as animationDelay,\n  Ut as animationDuration,\n  D as animationEndEvent,\n  F as animationName,\n  pe as ariaChecked,\n  fe as ariaDescribedBy,\n  me as ariaDescription,\n  ge as ariaExpanded,\n  ve as ariaHasPopup,\n  Ee as ariaHidden,\n  be as ariaLabel,\n  he as ariaLabelledBy,\n  ye as ariaModal,\n  we as ariaPressed,\n  Ae as ariaSelected,\n  Me as ariaValueMax,\n  Se as ariaValueMin,\n  Ne as ariaValueNow,\n  ke as ariaValueText,\n  G as beforeunloadEvent,\n  an as bezierEasings,\n  J as blurEvent,\n  K as changeEvent,\n  le as closest,\n  X as contextmenuEvent,\n  Kn as createCustomEvent,\n  Zt as createElement,\n  $t as createElementNS,\n  Q as dispatchEvent,\n  Hn as distinct,\n  zn as documentBody,\n  xn as documentElement,\n  M as documentHead,\n  De as dragEvent,\n  ze as dragendEvent,\n  Oe as dragenterEvent,\n  Le as dragleaveEvent,\n  Ie as dragoverEvent,\n  Ce as dragstartEvent,\n  Pn as emulateAnimationEnd,\n  Fn as emulateTransitionEnd,\n  Z as errorEvent,\n  Rn as focus,\n  $ as focusEvent,\n  Fe as focusEvents,\n  _ as focusinEvent,\n  tt as focusoutEvent,\n  et as gesturechangeEvent,\n  nt as gestureendEvent,\n  ot as gesturestartEvent,\n  Yt as getAttribute,\n  Sn as getAttributeNS,\n  h as getBoundingClientRect,\n  So as getCustomElements,\n  d as getDocument,\n  to as getDocumentBody,\n  T as getDocumentElement,\n  eo as getDocumentHead,\n  _t as getElementAnimationDelay,\n  te as getElementAnimationDuration,\n  Mo as getElementById,\n  g as getElementStyle,\n  ee as getElementTransitionDelay,\n  ne as getElementTransitionDuration,\n  ko as getElementsByClassName,\n  de as getElementsByTagName,\n  Bn as getInstance,\n  no as getNodeScroll,\n  oo as getParentNode,\n  so as getRectRelativeToOffsetParent,\n  ae as getUID,\n  co as getWindow,\n  Mn as hasAttribute,\n  Nn as hasAttributeNS,\n  In as hasClass,\n  gn as isApple,\n  ie as isArray,\n  ro as isCanvas,\n  ue as isCustomElement,\n  R as isDocument,\n  ao as isElement,\n  io as isElementInScrollRange,\n  uo as isElementInViewport,\n  lo as isElementsArray,\n  vn as isFirefox,\n  po as isFunction,\n  mo as isHTMLCollection,\n  u as isHTMLElement,\n  fo as isHTMLImageElement,\n  go as isJSON,\n  I as isMap,\n  Eo as isMedia,\n  fn as isMobile,\n  i as isNode,\n  bo as isNodeList,\n  se as isNumber,\n  v as isObject,\n  ho as isRTL,\n  yo as isSVGElement,\n  re as isScaledElement,\n  ce as isShadowRoot,\n  N as isString,\n  wo as isTableElement,\n  vo as isWeakMap,\n  W as isWindow,\n  We as keyAlt,\n  Re as keyArrowDown,\n  je as keyArrowLeft,\n  qe as keyArrowRight,\n  Qe as keyArrowUp,\n  Ge as keyBackspace,\n  Je as keyCapsLock,\n  Ke as keyControl,\n  Xe as keyDelete,\n  Ye as keyEnter,\n  Ze as keyEscape,\n  $e as keyInsert,\n  _e as keyMeta,\n  tn as keyPause,\n  en as keyScrollLock,\n  nn as keyShift,\n  on as keySpace,\n  sn as keyTab,\n  Ue as keyboardEventKeys,\n  st as keydownEvent,\n  ct as keypressEvent,\n  rt as keyupEvent,\n  at as loadEvent,\n  xe as loadstartEvent,\n  To as matches,\n  Be as mouseClickEvents,\n  He as mouseHoverEvents,\n  Ve as mouseSwipeEvents,\n  it as mouseclickEvent,\n  ut as mousedblclickEvent,\n  lt as mousedownEvent,\n  mt as mouseenterEvent,\n  pt as mousehoverEvent,\n  gt as mouseinEvent,\n  ft as mouseleaveEvent,\n  bt as mousemoveEvent,\n  vt as mouseoutEvent,\n  Et as mouseoverEvent,\n  dt as mouseupEvent,\n  ht as mousewheelEvent,\n  yt as moveEvent,\n  Te as nativeEvents,\n  Xt as noop,\n  Qn as normalizeOptions,\n  V as normalizeValue,\n  Jt as off,\n  un as offsetHeight,\n  ln as offsetWidth,\n  Gt as on,\n  Kt as one,\n  wt as orientationchangeEvent,\n  Xn as passiveHandler,\n  At as pointercancelEvent,\n  St as pointerdownEvent,\n  Mt as pointerleaveEvent,\n  Nt as pointermoveEvent,\n  kt as pointerupEvent,\n  Ao as querySelector,\n  No as querySelectorAll,\n  Tt as readystatechangeEvent,\n  Yn as reflow,\n  Dn as removeAttribute,\n  Cn as removeAttributeNS,\n  Ln as removeClass,\n  rn as removeEventListener,\n  Dt as resetEvent,\n  Ct as resizeEvent,\n  zt as scrollEvent,\n  dn as scrollHeight,\n  pn as scrollWidth,\n  Ot as selectEvent,\n  Lt as selectendEvent,\n  It as selectstartEvent,\n  kn as setAttribute,\n  Tn as setAttributeNS,\n  Zn as setElementStyle,\n  xt as submitEvent,\n  En as support3DTransform,\n  wn as supportAnimation,\n  bn as supportPassive,\n  yn as supportTouch,\n  hn as supportTransform,\n  An as supportTransition,\n  mn as tabindex,\n  oe as toLowerCase,\n  _n as toUpperCase,\n  Pe as touchEvents,\n  Ht as touchcancelEvent,\n  Pt as touchendEvent,\n  Bt as touchmoveEvent,\n  Vt as touchstartEvent,\n  Qt as transitionDelay,\n  Rt as transitionDuration,\n  C as transitionEndEvent,\n  U as transitionProperty,\n  Ft as unloadEvent,\n  S as userAgent,\n  A as userAgentData,\n  Do as version\n};\n//# sourceMappingURL=shorty.mjs.map\n","const N = [\"transparent\", \"currentColor\", \"inherit\", \"revert\", \"initial\"], b = (o) => {\n  const t = Math.floor(o);\n  return o - t < 0.5 ? t : Math.round(o);\n}, T = [\n  [\n    \"aliceblue\",\n    {\n      r: 240,\n      g: 248,\n      b: 255\n    }\n  ],\n  [\n    \"antiquewhite\",\n    {\n      r: 250,\n      g: 235,\n      b: 215\n    }\n  ],\n  [\n    \"aqua\",\n    {\n      r: 0,\n      g: 255,\n      b: 255\n    }\n  ],\n  [\n    \"aquamarine\",\n    {\n      r: 127,\n      g: 255,\n      b: 212\n    }\n  ],\n  [\n    \"azure\",\n    {\n      r: 240,\n      g: 255,\n      b: 255\n    }\n  ],\n  [\n    \"beige\",\n    {\n      r: 245,\n      g: 245,\n      b: 220\n    }\n  ],\n  [\n    \"bisque\",\n    {\n      r: 255,\n      g: 228,\n      b: 196\n    }\n  ],\n  [\n    \"black\",\n    {\n      r: 0,\n      g: 0,\n      b: 0\n    }\n  ],\n  [\n    \"blanchedalmond\",\n    {\n      r: 255,\n      g: 235,\n      b: 205\n    }\n  ],\n  [\n    \"blue\",\n    {\n      r: 0,\n      g: 0,\n      b: 255\n    }\n  ],\n  [\n    \"blueviolet\",\n    {\n      r: 138,\n      g: 43,\n      b: 226\n    }\n  ],\n  [\n    \"brown\",\n    {\n      r: 165,\n      g: 42,\n      b: 42\n    }\n  ],\n  [\n    \"burlywood\",\n    {\n      r: 222,\n      g: 184,\n      b: 135\n    }\n  ],\n  [\n    \"cadetblue\",\n    {\n      r: 95,\n      g: 158,\n      b: 160\n    }\n  ],\n  [\n    \"chartreuse\",\n    {\n      r: 127,\n      g: 255,\n      b: 0\n    }\n  ],\n  [\n    \"chocolate\",\n    {\n      r: 210,\n      g: 105,\n      b: 30\n    }\n  ],\n  [\n    \"coral\",\n    {\n      r: 255,\n      g: 127,\n      b: 80\n    }\n  ],\n  [\n    \"cornflowerblue\",\n    {\n      r: 100,\n      g: 149,\n      b: 237\n    }\n  ],\n  [\n    \"cornsilk\",\n    {\n      r: 255,\n      g: 248,\n      b: 220\n    }\n  ],\n  [\n    \"crimson\",\n    {\n      r: 220,\n      g: 20,\n      b: 60\n    }\n  ],\n  [\n    \"cyan\",\n    {\n      r: 0,\n      g: 255,\n      b: 255\n    }\n  ],\n  [\n    \"darkblue\",\n    {\n      r: 0,\n      g: 0,\n      b: 139\n    }\n  ],\n  [\n    \"darkcyan\",\n    {\n      r: 0,\n      g: 139,\n      b: 139\n    }\n  ],\n  [\n    \"darkgoldenrod\",\n    {\n      r: 184,\n      g: 134,\n      b: 11\n    }\n  ],\n  [\n    \"darkgray\",\n    {\n      r: 169,\n      g: 169,\n      b: 169\n    }\n  ],\n  [\n    \"darkgreen\",\n    {\n      r: 0,\n      g: 100,\n      b: 0\n    }\n  ],\n  [\n    \"darkgrey\",\n    {\n      r: 169,\n      g: 169,\n      b: 169\n    }\n  ],\n  [\n    \"darkkhaki\",\n    {\n      r: 189,\n      g: 183,\n      b: 107\n    }\n  ],\n  [\n    \"darkmagenta\",\n    {\n      r: 139,\n      g: 0,\n      b: 139\n    }\n  ],\n  [\n    \"darkolivegreen\",\n    {\n      r: 85,\n      g: 107,\n      b: 47\n    }\n  ],\n  [\n    \"darkorange\",\n    {\n      r: 255,\n      g: 140,\n      b: 0\n    }\n  ],\n  [\n    \"darkorchid\",\n    {\n      r: 153,\n      g: 50,\n      b: 204\n    }\n  ],\n  [\n    \"darkred\",\n    {\n      r: 139,\n      g: 0,\n      b: 0\n    }\n  ],\n  [\n    \"darksalmon\",\n    {\n      r: 233,\n      g: 150,\n      b: 122\n    }\n  ],\n  [\n    \"darkseagreen\",\n    {\n      r: 143,\n      g: 188,\n      b: 143\n    }\n  ],\n  [\n    \"darkslateblue\",\n    {\n      r: 72,\n      g: 61,\n      b: 139\n    }\n  ],\n  [\n    \"darkslategray\",\n    {\n      r: 47,\n      g: 79,\n      b: 79\n    }\n  ],\n  [\n    \"darkslategrey\",\n    {\n      r: 47,\n      g: 79,\n      b: 79\n    }\n  ],\n  [\n    \"darkturquoise\",\n    {\n      r: 0,\n      g: 206,\n      b: 209\n    }\n  ],\n  [\n    \"darkviolet\",\n    {\n      r: 148,\n      g: 0,\n      b: 211\n    }\n  ],\n  [\n    \"deeppink\",\n    {\n      r: 255,\n      g: 20,\n      b: 147\n    }\n  ],\n  [\n    \"deepskyblue\",\n    {\n      r: 0,\n      g: 191,\n      b: 255\n    }\n  ],\n  [\n    \"dimgray\",\n    {\n      r: 105,\n      g: 105,\n      b: 105\n    }\n  ],\n  [\n    \"dimgrey\",\n    {\n      r: 105,\n      g: 105,\n      b: 105\n    }\n  ],\n  [\n    \"dodgerblue\",\n    {\n      r: 30,\n      g: 144,\n      b: 255\n    }\n  ],\n  [\n    \"firebrick\",\n    {\n      r: 178,\n      g: 34,\n      b: 34\n    }\n  ],\n  [\n    \"floralwhite\",\n    {\n      r: 255,\n      g: 250,\n      b: 240\n    }\n  ],\n  [\n    \"forestgreen\",\n    {\n      r: 34,\n      g: 139,\n      b: 34\n    }\n  ],\n  [\n    \"fuchsia\",\n    {\n      r: 255,\n      g: 0,\n      b: 255\n    }\n  ],\n  [\n    \"gainsboro\",\n    {\n      r: 220,\n      g: 220,\n      b: 220\n    }\n  ],\n  [\n    \"ghostwhite\",\n    {\n      r: 248,\n      g: 248,\n      b: 255\n    }\n  ],\n  [\n    \"goldenrod\",\n    {\n      r: 218,\n      g: 165,\n      b: 32\n    }\n  ],\n  [\n    \"gold\",\n    {\n      r: 255,\n      g: 215,\n      b: 0\n    }\n  ],\n  [\n    \"gray\",\n    {\n      r: 128,\n      g: 128,\n      b: 128\n    }\n  ],\n  [\n    \"green\",\n    {\n      r: 0,\n      g: 128,\n      b: 0\n    }\n  ],\n  [\n    \"greenyellow\",\n    {\n      r: 173,\n      g: 255,\n      b: 47\n    }\n  ],\n  [\n    \"grey\",\n    {\n      r: 128,\n      g: 128,\n      b: 128\n    }\n  ],\n  [\n    \"honeydew\",\n    {\n      r: 240,\n      g: 255,\n      b: 240\n    }\n  ],\n  [\n    \"hotpink\",\n    {\n      r: 255,\n      g: 105,\n      b: 180\n    }\n  ],\n  [\n    \"indianred\",\n    {\n      r: 205,\n      g: 92,\n      b: 92\n    }\n  ],\n  [\n    \"indigo\",\n    {\n      r: 75,\n      g: 0,\n      b: 130\n    }\n  ],\n  [\n    \"ivory\",\n    {\n      r: 255,\n      g: 255,\n      b: 240\n    }\n  ],\n  [\n    \"khaki\",\n    {\n      r: 240,\n      g: 230,\n      b: 140\n    }\n  ],\n  [\n    \"lavenderblush\",\n    {\n      r: 255,\n      g: 240,\n      b: 245\n    }\n  ],\n  [\n    \"lavender\",\n    {\n      r: 230,\n      g: 230,\n      b: 250\n    }\n  ],\n  [\n    \"lawngreen\",\n    {\n      r: 124,\n      g: 252,\n      b: 0\n    }\n  ],\n  [\n    \"lemonchiffon\",\n    {\n      r: 255,\n      g: 250,\n      b: 205\n    }\n  ],\n  [\n    \"lightblue\",\n    {\n      r: 173,\n      g: 216,\n      b: 230\n    }\n  ],\n  [\n    \"lightcoral\",\n    {\n      r: 240,\n      g: 128,\n      b: 128\n    }\n  ],\n  [\n    \"lightcyan\",\n    {\n      r: 224,\n      g: 255,\n      b: 255\n    }\n  ],\n  [\n    \"lightgoldenrodyellow\",\n    {\n      r: 250,\n      g: 250,\n      b: 210\n    }\n  ],\n  [\n    \"lightgray\",\n    {\n      r: 211,\n      g: 211,\n      b: 211\n    }\n  ],\n  [\n    \"lightgreen\",\n    {\n      r: 144,\n      g: 238,\n      b: 144\n    }\n  ],\n  [\n    \"lightgrey\",\n    {\n      r: 211,\n      g: 211,\n      b: 211\n    }\n  ],\n  [\n    \"lightpink\",\n    {\n      r: 255,\n      g: 182,\n      b: 193\n    }\n  ],\n  [\n    \"lightsalmon\",\n    {\n      r: 255,\n      g: 160,\n      b: 122\n    }\n  ],\n  [\n    \"lightseagreen\",\n    {\n      r: 32,\n      g: 178,\n      b: 170\n    }\n  ],\n  [\n    \"lightskyblue\",\n    {\n      r: 135,\n      g: 206,\n      b: 250\n    }\n  ],\n  [\n    \"lightslategray\",\n    {\n      r: 119,\n      g: 136,\n      b: 153\n    }\n  ],\n  [\n    \"lightslategrey\",\n    {\n      r: 119,\n      g: 136,\n      b: 153\n    }\n  ],\n  [\n    \"lightsteelblue\",\n    {\n      r: 176,\n      g: 196,\n      b: 222\n    }\n  ],\n  [\n    \"lightyellow\",\n    {\n      r: 255,\n      g: 255,\n      b: 224\n    }\n  ],\n  [\n    \"lime\",\n    {\n      r: 0,\n      g: 255,\n      b: 0\n    }\n  ],\n  [\n    \"limegreen\",\n    {\n      r: 50,\n      g: 205,\n      b: 50\n    }\n  ],\n  [\n    \"linen\",\n    {\n      r: 250,\n      g: 240,\n      b: 230\n    }\n  ],\n  [\n    \"magenta\",\n    {\n      r: 255,\n      g: 0,\n      b: 255\n    }\n  ],\n  [\n    \"maroon\",\n    {\n      r: 128,\n      g: 0,\n      b: 0\n    }\n  ],\n  [\n    \"mediumaquamarine\",\n    {\n      r: 102,\n      g: 205,\n      b: 170\n    }\n  ],\n  [\n    \"mediumblue\",\n    {\n      r: 0,\n      g: 0,\n      b: 205\n    }\n  ],\n  [\n    \"mediumorchid\",\n    {\n      r: 186,\n      g: 85,\n      b: 211\n    }\n  ],\n  [\n    \"mediumpurple\",\n    {\n      r: 147,\n      g: 112,\n      b: 219\n    }\n  ],\n  [\n    \"mediumseagreen\",\n    {\n      r: 60,\n      g: 179,\n      b: 113\n    }\n  ],\n  [\n    \"mediumslateblue\",\n    {\n      r: 123,\n      g: 104,\n      b: 238\n    }\n  ],\n  [\n    \"mediumspringgreen\",\n    {\n      r: 0,\n      g: 250,\n      b: 154\n    }\n  ],\n  [\n    \"mediumturquoise\",\n    {\n      r: 72,\n      g: 209,\n      b: 204\n    }\n  ],\n  [\n    \"mediumvioletred\",\n    {\n      r: 199,\n      g: 21,\n      b: 133\n    }\n  ],\n  [\n    \"midnightblue\",\n    {\n      r: 25,\n      g: 25,\n      b: 112\n    }\n  ],\n  [\n    \"mintcream\",\n    {\n      r: 245,\n      g: 255,\n      b: 250\n    }\n  ],\n  [\n    \"mistyrose\",\n    {\n      r: 255,\n      g: 228,\n      b: 225\n    }\n  ],\n  [\n    \"moccasin\",\n    {\n      r: 255,\n      g: 228,\n      b: 181\n    }\n  ],\n  [\n    \"navajowhite\",\n    {\n      r: 255,\n      g: 222,\n      b: 173\n    }\n  ],\n  [\n    \"navy\",\n    {\n      r: 0,\n      g: 0,\n      b: 128\n    }\n  ],\n  [\n    \"oldlace\",\n    {\n      r: 253,\n      g: 245,\n      b: 230\n    }\n  ],\n  [\n    \"olive\",\n    {\n      r: 128,\n      g: 128,\n      b: 0\n    }\n  ],\n  [\n    \"olivedrab\",\n    {\n      r: 107,\n      g: 142,\n      b: 35\n    }\n  ],\n  [\n    \"orange\",\n    {\n      r: 255,\n      g: 165,\n      b: 0\n    }\n  ],\n  [\n    \"orangered\",\n    {\n      r: 255,\n      g: 69,\n      b: 0\n    }\n  ],\n  [\n    \"orchid\",\n    {\n      r: 218,\n      g: 112,\n      b: 214\n    }\n  ],\n  [\n    \"palegoldenrod\",\n    {\n      r: 238,\n      g: 232,\n      b: 170\n    }\n  ],\n  [\n    \"palegreen\",\n    {\n      r: 152,\n      g: 251,\n      b: 152\n    }\n  ],\n  [\n    \"paleturquoise\",\n    {\n      r: 175,\n      g: 238,\n      b: 238\n    }\n  ],\n  [\n    \"palevioletred\",\n    {\n      r: 219,\n      g: 112,\n      b: 147\n    }\n  ],\n  [\n    \"papayawhip\",\n    {\n      r: 255,\n      g: 239,\n      b: 213\n    }\n  ],\n  [\n    \"peachpuff\",\n    {\n      r: 255,\n      g: 218,\n      b: 185\n    }\n  ],\n  [\n    \"peru\",\n    {\n      r: 205,\n      g: 133,\n      b: 63\n    }\n  ],\n  [\n    \"pink\",\n    {\n      r: 255,\n      g: 192,\n      b: 203\n    }\n  ],\n  [\n    \"plum\",\n    {\n      r: 221,\n      g: 160,\n      b: 221\n    }\n  ],\n  [\n    \"powderblue\",\n    {\n      r: 176,\n      g: 224,\n      b: 230\n    }\n  ],\n  [\n    \"purple\",\n    {\n      r: 128,\n      g: 0,\n      b: 128\n    }\n  ],\n  [\n    \"rebeccapurple\",\n    {\n      r: 102,\n      g: 51,\n      b: 153\n    }\n  ],\n  [\n    \"red\",\n    {\n      r: 255,\n      g: 0,\n      b: 0\n    }\n  ],\n  [\n    \"rosybrown\",\n    {\n      r: 188,\n      g: 143,\n      b: 143\n    }\n  ],\n  [\n    \"royalblue\",\n    {\n      r: 65,\n      g: 105,\n      b: 225\n    }\n  ],\n  [\n    \"saddlebrown\",\n    {\n      r: 139,\n      g: 69,\n      b: 19\n    }\n  ],\n  [\n    \"salmon\",\n    {\n      r: 250,\n      g: 128,\n      b: 114\n    }\n  ],\n  [\n    \"sandybrown\",\n    {\n      r: 244,\n      g: 164,\n      b: 96\n    }\n  ],\n  [\n    \"seagreen\",\n    {\n      r: 46,\n      g: 139,\n      b: 87\n    }\n  ],\n  [\n    \"seashell\",\n    {\n      r: 255,\n      g: 245,\n      b: 238\n    }\n  ],\n  [\n    \"sienna\",\n    {\n      r: 160,\n      g: 82,\n      b: 45\n    }\n  ],\n  [\n    \"silver\",\n    {\n      r: 192,\n      g: 192,\n      b: 192\n    }\n  ],\n  [\n    \"skyblue\",\n    {\n      r: 135,\n      g: 206,\n      b: 235\n    }\n  ],\n  [\n    \"slateblue\",\n    {\n      r: 106,\n      g: 90,\n      b: 205\n    }\n  ],\n  [\n    \"slategray\",\n    {\n      r: 112,\n      g: 128,\n      b: 144\n    }\n  ],\n  [\n    \"slategrey\",\n    {\n      r: 112,\n      g: 128,\n      b: 144\n    }\n  ],\n  [\n    \"snow\",\n    {\n      r: 255,\n      g: 250,\n      b: 250\n    }\n  ],\n  [\n    \"springgreen\",\n    {\n      r: 0,\n      g: 255,\n      b: 127\n    }\n  ],\n  [\n    \"steelblue\",\n    {\n      r: 70,\n      g: 130,\n      b: 180\n    }\n  ],\n  [\n    \"tan\",\n    {\n      r: 210,\n      g: 180,\n      b: 140\n    }\n  ],\n  [\n    \"teal\",\n    {\n      r: 0,\n      g: 128,\n      b: 128\n    }\n  ],\n  [\n    \"thistle\",\n    {\n      r: 216,\n      g: 191,\n      b: 216\n    }\n  ],\n  [\n    \"tomato\",\n    {\n      r: 255,\n      g: 99,\n      b: 71\n    }\n  ],\n  [\n    \"turquoise\",\n    {\n      r: 64,\n      g: 224,\n      b: 208\n    }\n  ],\n  [\n    \"violet\",\n    {\n      r: 238,\n      g: 130,\n      b: 238\n    }\n  ],\n  [\n    \"wheat\",\n    {\n      r: 245,\n      g: 222,\n      b: 179\n    }\n  ],\n  [\n    \"white\",\n    {\n      r: 255,\n      g: 255,\n      b: 255\n    }\n  ],\n  [\n    \"whitesmoke\",\n    {\n      r: 245,\n      g: 245,\n      b: 245\n    }\n  ],\n  [\n    \"yellow\",\n    {\n      r: 255,\n      g: 255,\n      b: 0\n    }\n  ],\n  [\n    \"yellowgreen\",\n    {\n      r: 154,\n      g: 205,\n      b: 50\n    }\n  ]\n], B = \"deg|rad|grad|turn\", U = \"[-\\\\+]?\\\\d+%?\", D = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\", L = `[-\\\\+]?\\\\d*\\\\.?\\\\d+(?:${B})?`, v = `(?:${D})|(?:${U})`, F = `(?:${v})|(?:${L}?)`, rr = \"(?:[\\\\s|\\\\(\\\\s|\\\\s\\\\(\\\\s]+)?\", tr = \"(?:[\\\\s|\\\\)\\\\s]+)?\", O = \"(?:[,|\\\\s]+)\", er = \"(?:[,|\\\\/\\\\s]*)?\", $ = `${rr}(${F})${O}(${v})${O}(${v})${er}(${v})?${tr}`, f = {\n  CSS_UNIT: new RegExp(F),\n  ANGLES: B,\n  CSS_ANGLE: L,\n  CSS_INTEGER: U,\n  CSS_NUMBER: D,\n  CSS_UNIT2: F,\n  PERMISSIVE_MATCH: $,\n  hwb: new RegExp(`hwb${$}`),\n  rgb: new RegExp(`rgb(?:a)?${$}`),\n  hsl: new RegExp(`hsl(?:a)?${$}`),\n  hsv: new RegExp(`hsv(?:a)?${$}`),\n  hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n  hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n  hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n  hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n}, V = (o) => N.includes(o), k = (o, t) => o !== null && typeof o == \"object\" && Object.keys(t).every((r) => r in o), Z = (o) => `${o}`.includes(\".\") && parseFloat(o) === 1, R = (o) => typeof o == \"string\" && o.includes(\"%\"), c = (o) => !!f.CSS_UNIT.exec(`${o}`), z = [\"rgb\", \"hex\", \"hsl\", \"hsv\", \"hwb\"], J = (o) => N.includes(o) || [\"#\", ...z].some((t) => o.includes(t)) ? !1 : T.some(([t]) => o === t), u = (o, t) => {\n  let r = o;\n  if (typeof o == \"number\" && Math.min(o, 0) === 0 && // round values to 6 decimals Math.round(N * (10 ** 6)) / 10 ** 6\n  Math.max(o, 1) === 1)\n    return o;\n  Z(o) && (r = \"100%\");\n  const e = R(r);\n  return r = t === 360 ? parseFloat(r) : Math.min(t, Math.max(0, parseFloat(r))), e && (r = r * t / 100), Math.abs(r - t) < 1e-6 ? 1 : (t === 360 ? r = (r < 0 ? r % t + t : r % t) / t : r = r % t / t, r);\n}, M = (o) => {\n  let t = parseFloat(o);\n  return (Number.isNaN(t) || t < 0 || t > 1) && (t = 1), t;\n}, x = (o) => Math.min(1, Math.max(0, o)), p = (o) => o.length === 1 ? `0${o}` : String(o), K = (o) => {\n  const [[, t]] = T.filter(([r]) => r === o.toLowerCase());\n  return t;\n}, h = (o) => parseInt(o, 16), E = (o) => h(o) / 255, Q = (o) => b(o * 255).toString(16), _ = (o, t, r) => {\n  const e = Math.max(o, t, r), s = Math.min(o, t, r);\n  let n = 0, g = 0;\n  const a = (e + s) / 2;\n  if (e === s)\n    g = 0, n = 0;\n  else {\n    const i = e - s;\n    g = a > 0.5 ? i / (2 - e - s) : i / (e + s), e === o && (n = (t - r) / i + (t < r ? 6 : 0)), e === t && (n = (r - o) / i + 2), e === r && (n = (o - t) / i + 4), n /= 6;\n  }\n  return { h: n, s: g, l: a };\n}, H = (o, t, r) => {\n  let e = r;\n  return e < 0 && (e += 1), e > 1 && (e -= 1), e < 1 / 6 ? o + (t - o) * (6 * e) : e < 1 / 2 ? t : e < 2 / 3 ? o + (t - o) * (2 / 3 - e) * 6 : o;\n}, y = (o, t, r) => {\n  let e = 0, s = 0, n = 0;\n  if (t === 0)\n    s = r, n = r, e = r;\n  else if (r) {\n    const g = r < 0.5 ? r * (1 + t) : r + t - r * t, a = 2 * r - g;\n    e = H(a, g, o + 1 / 3), s = H(a, g, o), n = H(a, g, o - 1 / 3);\n  }\n  return { r: e, g: s, b: n };\n}, G = (o, t, r) => {\n  let e = 0, s = 0;\n  const n = Math.min(o, t, r), g = Math.max(o, t, r), a = 1 - g;\n  if (g === n)\n    return { h: 0, w: n, b: a };\n  o === n ? (e = t - r, s = 3) : (e = t === n ? r - o : o - t, s = t === n ? 5 : 1);\n  const i = (s - e / (g - n)) / 6;\n  return {\n    h: i === 1 ? 0 : i,\n    w: n,\n    b: a\n  };\n}, X = (o, t, r) => {\n  if (t + r >= 1) {\n    const g = t / (t + r);\n    return { r: g, g, b: g };\n  }\n  let { r: e, g: s, b: n } = y(o, 1, 0.5);\n  return [e, s, n] = [e, s, n].map((g) => g * (1 - t - r) + t), { r: e, g: s, b: n };\n}, P = (o, t, r) => {\n  const e = Math.max(o, t, r), s = Math.min(o, t, r);\n  let n = 0;\n  const g = e, a = e - s, i = e === 0 ? 0 : a / e;\n  return e === s ? n = 0 : (o === e && (n = (t - r) / a + (t < r ? 6 : 0)), t === e && (n = (r - o) / a + 2), r === e && (n = (o - t) / a + 4), n /= 6), { h: n, s: i, v: g };\n}, I = (o, t, r) => {\n  const e = o * 6, s = t, n = r, g = Math.floor(e), a = e - g, i = n * (1 - s), l = n * (1 - a * s), d = n * (1 - (1 - a) * s), m = g % 6, w = [n, l, i, i, d, n][m], S = [d, n, n, l, i, i][m], A = [i, i, d, n, n, l][m];\n  return { r: w, g: S, b: A };\n}, j = (o, t, r, e) => {\n  const s = [\n    p(b(o).toString(16)),\n    p(b(t).toString(16)),\n    p(b(r).toString(16))\n  ];\n  return e && s[0].charAt(0) === s[0].charAt(1) && s[1].charAt(0) === s[1].charAt(1) && s[2].charAt(0) === s[2].charAt(1) ? s[0].charAt(0) + s[1].charAt(0) + s[2].charAt(0) : s.join(\"\");\n}, C = (o, t, r, e, s) => {\n  const n = [\n    p(b(o).toString(16)),\n    p(b(t).toString(16)),\n    p(b(r).toString(16)),\n    p(Q(e))\n  ];\n  return s && n[0].charAt(0) === n[0].charAt(1) && n[1].charAt(0) === n[1].charAt(1) && n[2].charAt(0) === n[2].charAt(1) && n[3].charAt(0) === n[3].charAt(1) ? n[0].charAt(0) + n[1].charAt(0) + n[2].charAt(0) + n[3].charAt(0) : n.join(\"\");\n}, Y = (o) => {\n  const t = String(o).trim().toLowerCase();\n  if (J(t))\n    return Object.assign(K(t), {\n      a: 1,\n      format: \"rgb\",\n      ok: !0\n    });\n  if (V(t))\n    return {\n      r: 0,\n      g: 0,\n      b: 0,\n      a: t === \"transparent\" ? 0 : 1,\n      format: \"rgb\",\n      ok: !0\n    };\n  let [, r, e, s, n] = f.rgb.exec(t) || [];\n  return r && e && s ? {\n    r,\n    g: e,\n    b: s,\n    a: n !== void 0 ? n : 1,\n    format: \"rgb\",\n    ok: !0\n  } : ([, r, e, s, n] = f.hsl.exec(t) || [], r && e && s ? {\n    h: r,\n    s: e,\n    l: s,\n    a: n !== void 0 ? n : 1,\n    format: \"hsl\",\n    ok: !0\n  } : ([, r, e, s, n] = f.hsv.exec(t) || [], r && e && s ? {\n    h: r,\n    s: e,\n    v: s,\n    a: n !== void 0 ? n : 1,\n    format: \"hsv\",\n    ok: !0\n  } : ([, r, e, s, n] = f.hwb.exec(t) || [], r && e && s ? {\n    h: r,\n    w: e,\n    b: s,\n    a: n !== void 0 ? n : 1,\n    format: \"hwb\",\n    ok: !0\n  } : ([, r, e, s, n] = f.hex8.exec(t) || [], r && e && s && n ? {\n    r: h(r),\n    g: h(e),\n    b: h(s),\n    a: E(n),\n    format: \"hex\",\n    ok: !0\n  } : ([, r, e, s] = f.hex6.exec(t) || [], r && e && s ? {\n    r: h(r),\n    g: h(e),\n    b: h(s),\n    a: 1,\n    format: \"hex\",\n    ok: !0\n  } : ([, r, e, s, n] = f.hex4.exec(t) || [], r && e && s && n ? {\n    r: h(r + r),\n    g: h(e + e),\n    b: h(s + s),\n    a: E(n + n),\n    format: \"hex\",\n    ok: !0\n  } : ([, r, e, s] = f.hex3.exec(t) || [], r && e && s ? {\n    r: h(r + r),\n    g: h(e + e),\n    b: h(s + s),\n    a: 1,\n    format: \"hex\",\n    ok: !0\n  } : {\n    r: 0,\n    g: 0,\n    b: 0,\n    a: 1,\n    format: \"rgb\",\n    ok: !o\n  })))))));\n}, q = (o) => {\n  let t = { r: 0, g: 0, b: 0 }, r = o, e = 1, s, n, g, a, i, l, d, m, w = \"rgb\", S = !1;\n  return (!r || typeof r == \"string\") && (r = Y(r), S = r.ok), k(r, t) && c(r.r) && c(r.g) && c(r.b) && ({ r: d, g: m, b: i } = r, [d, m, i] = [d, m, i].map((A) => u(A, R(A) ? 100 : 255)), t = { r: d, g: m, b: i }, w = \"format\" in r ? r.format : \"rgb\"), k(r, { h: 0, s: 0, v: 0 }) && c(r.h) && c(r.s) && c(r.v) && ({ h: l, s, v: n } = r, l = u(l, 360), s = u(s, 100), n = u(n, 100), t = I(l, s, n), w = \"hsv\"), k(r, { h: 0, s: 0, l: 0 }) && c(r.h) && c(r.s) && c(r.l) && ({ h: l, s, l: g } = r, l = u(l, 360), s = u(s, 100), g = u(g, 100), t = y(l, s, g), w = \"hsl\"), k(r, { h: 0, w: 0, b: 0 }) && c(r.h) && c(r.w) && c(r.b) && ({ h: l, w: a, b: i } = r, l = u(l, 360), a = u(a, 100), i = u(i, 100), t = X(l, a, i), w = \"hwb\"), c(r.a) && (e = r.a, e = R(e) || parseFloat(`${e}`) > 1 ? u(e, 100) : e), {\n    r: t.r,\n    g: t.g,\n    b: t.b,\n    a: M(e),\n    format: w,\n    ok: S\n  };\n}, sr = \"1.0.8\";\nclass W {\n  // bring main utilities to front\n  static matchers = f;\n  static isOnePointZero = Z;\n  static isPercentage = R;\n  static isValidCSSUnit = c;\n  static isNonColor = V;\n  static isColorName = J;\n  static isColorType = k;\n  static pad2 = p;\n  static clamp01 = x;\n  static bound01 = u;\n  static boundAlpha = M;\n  static getRGBFromName = K;\n  static convertHexToDecimal = E;\n  static convertDecimalToHex = Q;\n  static rgbToHsl = _;\n  static rgbToHex = j;\n  static rgbToHsv = P;\n  static rgbToHwb = G;\n  static rgbaToHex = C;\n  static hslToRgb = I;\n  static hsvToRgb = I;\n  static hueToRgb = H;\n  static hwbToRgb = X;\n  static parseIntFromHex = h;\n  static stringInputToObject = Y;\n  static inputToRGB = q;\n  static roundPart = b;\n  static webColors = T;\n  static nonColors = N;\n  static version = sr;\n  // main public properties\n  r;\n  g;\n  b;\n  a;\n  format;\n  ok;\n  originalInput;\n  // main public methods\n  constructor(t, r) {\n    const e = r && z.includes(r) ? r : \"\", { r: s, g: n, b: g, a, ok: i, format: l } = q(t);\n    this.originalInput = t, this.r = s, this.g = n, this.b = g, this.a = a, this.ok = i, this.format = e || l;\n  }\n  /**\n   * Checks if the current input value is a valid colour.\n   */\n  get isValid() {\n    return this.ok;\n  }\n  /**\n   * Checks if the current colour requires a light text colour.\n   */\n  get isDark() {\n    return this.brightness < 120;\n  }\n  /**\n   * Returns the perceived luminance of a colour.\n   *\n   * @see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n   */\n  get luminance() {\n    const { r: t, g: r, b: e } = this;\n    let s = 0, n = 0, g = 0;\n    return t <= 0.03928 ? s = t / 12.92 : s = ((t + 0.055) / 1.055) ** 2.4, r <= 0.03928 ? n = r / 12.92 : n = ((r + 0.055) / 1.055) ** 2.4, e <= 0.03928 ? g = e / 12.92 : g = ((e + 0.055) / 1.055) ** 2.4, 0.2126 * s + 0.7152 * n + 0.0722 * g;\n  }\n  /**\n   * Returns the perceived brightness of the colour.\n   */\n  get brightness() {\n    const { r: t, g: r, b: e } = this.toRgb();\n    return (t * 299 + r * 587 + e * 114) / 1e3;\n  }\n  /**\n   * Returns the web colour name closest to the current colour.\n   */\n  get name() {\n    const { r: t, g: r, b: e } = this.toRgb(), [s] = T.map(([n, g]) => {\n      const a = (\n        // ((rgb.r - r) ** 2 + (rgb.g - g) ** 2 + (rgb.b - b) ** 2) ** 0.5; // standard\n        (((g.r - t) * 0.3) ** 2 + ((g.g - r) * 0.6) ** 2 + ((g.b - e) * 0.1) ** 2) ** 0.5\n      );\n      return [n, a];\n    }).find(([, n], g, a) => n === Math.min(...a.map(([, i]) => i)));\n    return s;\n  }\n  /**\n   * Returns the colour as an RGBA object.\n   */\n  toRgb() {\n    let { r: t, g: r, b: e, a: s } = this;\n    return [t, r, e] = [t, r, e].map((n) => b(n * 255 * 100) / 100), s = b(s * 100) / 100, {\n      r: t,\n      g: r,\n      b: e,\n      a: s\n    };\n  }\n  /**\n   * Returns the RGBA values concatenated into a CSS3 Module string format.\n   * * rgb(255,255,255)\n   * * rgba(255,255,255,0.5)\n   */\n  toRgbString() {\n    const { r: t, g: r, b: e, a: s } = this.toRgb(), [n, g, a] = [t, r, e].map(b);\n    return s === 1 ? `rgb(${n}, ${g}, ${a})` : `rgba(${n}, ${g}, ${a}, ${s})`;\n  }\n  /**\n   * Returns the RGBA values concatenated into a CSS4 Module string format.\n   * * rgb(255 255 255)\n   * * rgb(255 255 255 / 50%)\n   */\n  toRgbCSS4String() {\n    const { r: t, g: r, b: e, a: s } = this.toRgb(), [n, g, a] = [t, r, e].map(b), i = s === 1 ? \"\" : ` / ${b(s * 100)}%`;\n    return `rgb(${n} ${g} ${a}${i})`;\n  }\n  /**\n   * Returns the hexadecimal value of the colour. When the parameter is *true*\n   * it will find a 3 characters shorthand of the decimal value.\n   */\n  toHex(t) {\n    const { r, g: e, b: s, a: n } = this.toRgb();\n    return n === 1 ? j(r, e, s, t) : C(r, e, s, n, t);\n  }\n  /**\n   * Returns the CSS valid hexadecimal vaue of the colour. When the parameter is *true*\n   * it will find a 3 characters shorthand of the value.\n   */\n  toHexString(t) {\n    return `#${this.toHex(t)}`;\n  }\n  /**\n   * Returns the HEX8 value of the colour.\n   */\n  toHex8(t) {\n    const { r, g: e, b: s, a: n } = this.toRgb();\n    return C(r, e, s, n, t);\n  }\n  /**\n   * Returns the HEX8 value of the colour.\n   */\n  toHex8String(t) {\n    return `#${this.toHex8(t)}`;\n  }\n  /**\n   * Returns the colour as a HSVA object.\n   */\n  toHsv() {\n    const { r: t, g: r, b: e, a: s } = this, { h: n, s: g, v: a } = P(t, r, e);\n    return {\n      h: n,\n      s: g,\n      v: a,\n      a: s\n    };\n  }\n  /**\n   * Returns the colour as an HSLA object.\n   */\n  toHsl() {\n    const { r: t, g: r, b: e, a: s } = this, { h: n, s: g, l: a } = _(t, r, e);\n    return {\n      h: n,\n      s: g,\n      l: a,\n      a: s\n    };\n  }\n  /**\n   * Returns the HSLA values concatenated into a CSS3 Module format string.\n   * * `hsl(150, 100%, 50%)`\n   * * `hsla(150, 100%, 50%, 0.5)`\n   */\n  toHslString() {\n    let { h: t, s: r, l: e, a: s } = this.toHsl();\n    return t = b(t * 360), r = b(r * 100), e = b(e * 100), s = b(s * 100) / 100, s === 1 ? `hsl(${t}, ${r}%, ${e}%)` : `hsla(${t}, ${r}%, ${e}%, ${s})`;\n  }\n  /**\n   * Returns the HSLA values concatenated into a CSS4 Module format string.\n   * * `hsl(150deg 100% 50%)`\n   * * `hsl(150deg 100% 50% / 50%)`\n   */\n  toHslCSS4String() {\n    let { h: t, s: r, l: e, a: s } = this.toHsl();\n    t = b(t * 360), r = b(r * 100), e = b(e * 100), s = b(s * 100);\n    const n = s < 100 ? ` / ${b(s)}%` : \"\";\n    return `hsl(${t}deg ${r}% ${e}%${n})`;\n  }\n  /**\n   * Returns the colour as an HWBA object.\n   */\n  toHwb() {\n    const { r: t, g: r, b: e, a: s } = this, { h: n, w: g, b: a } = G(t, r, e);\n    return {\n      h: n,\n      w: g,\n      b: a,\n      a: s\n    };\n  }\n  /**\n   * Returns the HWBA values concatenated into a string.\n   */\n  toHwbString() {\n    let { h: t, w: r, b: e, a: s } = this.toHwb();\n    t = b(t * 360), r = b(r * 100), e = b(e * 100), s = b(s * 100);\n    const n = s < 100 ? ` / ${b(s)}%` : \"\";\n    return `hwb(${t}deg ${r}% ${e}%${n})`;\n  }\n  /**\n   * Sets the alpha value of the current colour.\n   */\n  setAlpha(t) {\n    return typeof t != \"number\" ? this : (this.a = M(t), this);\n  }\n  /**\n   * Saturate the colour with a given amount.\n   */\n  saturate(t) {\n    if (typeof t != \"number\")\n      return this;\n    const { h: r, s: e, l: s } = this.toHsl(), { r: n, g, b: a } = y(r, x(e + t / 100), s);\n    return Object.assign(this, { r: n, g, b: a }), this;\n  }\n  /**\n   * Desaturate the colour with a given amount.\n   */\n  desaturate(t) {\n    return typeof t == \"number\" ? this.saturate(-t) : this;\n  }\n  /**\n   * Completely desaturates a colour into greyscale.\n   * Same as calling `desaturate(100)`\n   */\n  greyscale() {\n    return this.saturate(-100);\n  }\n  /**\n   * Increase the colour lightness with a given amount.\n   */\n  lighten(t) {\n    if (typeof t != \"number\")\n      return this;\n    const { h: r, s: e, l: s } = this.toHsl(), { r: n, g, b: a } = y(r, e, x(s + t / 100));\n    return Object.assign(this, { r: n, g, b: a }), this;\n  }\n  /**\n   * Decrease the colour lightness with a given amount.\n   */\n  darken(t) {\n    return typeof t == \"number\" ? this.lighten(-t) : this;\n  }\n  /**\n   * Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n   * Values outside of this range will be wrapped into this range.\n   */\n  spin(t) {\n    if (typeof t != \"number\")\n      return this;\n    const { h: r, s: e, l: s } = this.toHsl(), { r: n, g, b: a } = y(x((r * 360 + t) % 360 / 360), e, s);\n    return Object.assign(this, { r: n, g, b: a }), this;\n  }\n  /** Returns a clone of the current `Color` instance. */\n  clone() {\n    return new W(this);\n  }\n  /**\n   * Returns the colour value in CSS valid string format.\n   */\n  toString(t) {\n    const { format: r } = this;\n    return r === \"hex\" ? this.toHexString(t) : r === \"hsl\" ? this.toHslString() : r === \"hwb\" ? this.toHwbString() : this.toRgbString();\n  }\n}\nexport {\n  W as default\n};\n//# sourceMappingURL=index.mjs.map\n","import Color from '@thednp/color';\n// import { isNumber } from '@thednp/shorty';\n\n/**\n * Returns a color palette with a given set of parameters.\n *\n * @example\n * new ColorPalette(0, 12, 10, 80);\n * // => { hue: 0, hueSteps: 12, lightSteps: 10, saturation: 80, colors: Array<Color> }\n */\nexport default class ColorPalette {\n  public static Color = Color;\n  hue: number;\n  hueSteps: number;\n  lightSteps: number;\n  saturation: number;\n  colors: Color[];\n  /**\n   * The `hue` parameter is optional, which would be set to 0.\n   * * `args.hue` the starting Hue [0, 360]\n   * * `args.hueSteps` Hue Steps Count [5, 24]\n   * * `args.lightSteps` Lightness Steps Count [5, 12]\n   * * `args.saturation` Saturation [0, 100]\n   */\n  constructor(...args: [number?, number?, number?, number?]) {\n    let hue = 0;\n    let hueSteps = 12;\n    let lightSteps = 10;\n    let lightnessArray = [0.5];\n    let saturation = 100;\n    // if (!args.every(n => isNumber(n))) throw TypeError('ColorPalette only accepts numbers.');\n\n    if (args.length === 4) {\n      [hue, hueSteps, lightSteps, saturation] = args as [number, number, number, number];\n    } else if (args.length === 3) {\n      [hue, hueSteps, lightSteps] = args as [number, number, number];\n    } else if (args.length === 2) {\n      [hueSteps, lightSteps] = args as [number, number];\n      if ([hueSteps, lightSteps].some(n => n < 1)) {\n        throw TypeError('ColorPalette: the two minimum arguments must be numbers higher than 0.');\n      }\n    }\n\n    const colors: Color[] = [];\n    const hueStep = 360 / hueSteps;\n    const half = Color.roundPart((lightSteps - (lightSteps % 2 ? 1 : 0)) / 2);\n    const steps1To13 = [0.25, 0.2, 0.15, 0.11, 0.09, 0.075];\n    const lightSets = [\n      [1, 2, 3],\n      [4, 5],\n      [6, 7],\n      [8, 9],\n      [10, 11],\n      [12, 13],\n    ];\n    const closestSet = lightSets.find(set => set.includes(lightSteps));\n\n    // find a lightStep that won't go beyond black and white\n    // something within the [10-90] range of lightness\n    const lightStep = closestSet\n      ? steps1To13[lightSets.indexOf(closestSet)]\n      : 100 / (lightSteps + (lightSteps % 2 ? 0 : 1)) / 100;\n\n    // light tints\n    for (let i = 1; i < half + 1; i += 1) {\n      lightnessArray = [...lightnessArray, 0.5 + lightStep * i];\n    }\n\n    // dark tints\n    for (let i = 1; i < lightSteps - half; i += 1) {\n      lightnessArray = [0.5 - lightStep * i, ...lightnessArray];\n    }\n\n    // feed `colors` Array\n    for (let i = 0; i < hueSteps; i += 1) {\n      const currentHue = ((hue + i * hueStep) % 360) / 360;\n      lightnessArray.forEach(l => {\n        const newColor = new Color({ h: currentHue, s: 1, l });\n        colors.push(saturation < 100 ? newColor.saturate(saturation - 100) : newColor);\n      });\n    }\n\n    this.hue = hue;\n    this.hueSteps = hueSteps;\n    this.lightSteps = lightSteps;\n    this.saturation = saturation;\n    this.colors = colors;\n  }\n}\n","import ColorPickerLabels from '../interface/colorPickerLabels';\n\n/** The labels presented to the user. */\nconst colorPickerLabels: ColorPickerLabels = {\n  pickerLabel: 'Colour Picker',\n  appearanceLabel: 'Colour Appearance',\n  valueLabel: 'Colour Value',\n  toggleLabel: 'Select Colour',\n  presetsLabel: 'Colour Presets',\n  defaultsLabel: 'Colour Defaults',\n  formatLabel: 'Format',\n  alphaLabel: 'Alpha',\n  hexLabel: 'Hexadecimal',\n  hueLabel: 'Hue',\n  whitenessLabel: 'Whiteness',\n  blacknessLabel: 'Blackness',\n  saturationLabel: 'Saturation',\n  lightnessLabel: 'Lightness',\n  redLabel: 'Red',\n  greenLabel: 'Green',\n  blueLabel: 'Blue',\n};\n\nexport default colorPickerLabels;\n","/** A list of 17 color names used for WAI-ARIA compliance. */\nconst colorNames: string[] = [\n  'white',\n  'black',\n  'grey',\n  'red',\n  'orange',\n  'brown',\n  'gold',\n  'olive',\n  'yellow',\n  'lime',\n  'green',\n  'teal',\n  'cyan',\n  'blue',\n  'violet',\n  'magenta',\n  'pink',\n];\nexport default colorNames;\n","import { isString } from '@thednp/shorty';\n\n/**\n * Check if a string is valid JSON string.\n *\n * @param str the string input\n * @returns the query result\n */\nconst isValidJSON = (str: unknown): str is string => {\n  if (!isString(str)) return false;\n  try {\n    JSON.parse(str);\n  } catch (e) {\n    return false;\n  }\n  return true;\n};\n\nexport default isValidJSON;\n","const vHidden = 'v-hidden';\nexport default vHidden;\n","import { createElement, setAttribute, ObjectAssign, toUpperCase } from '@thednp/shorty';\n\nimport vHidden from './vHidden';\nimport ColorPicker from '../index';\n\n/**\n * Returns the color form for `ColorPicker`.\n *\n * @param self the `ColorPicker` instance\n * @returns a new `<div>` element with color component `<input>`\n */\nconst getColorForm = (self: ColorPicker): HTMLElement => {\n  const { format, id, componentLabels } = self;\n  const colorForm = createElement({\n    tagName: 'div',\n    className: `color-form ${format}`,\n  }) as HTMLElement;\n\n  let components = ['hex'];\n  if (format === 'rgb') components = ['red', 'green', 'blue', 'alpha'];\n  else if (format === 'hsl') components = ['hue', 'saturation', 'lightness', 'alpha'];\n  else if (format === 'hwb') components = ['hue', 'whiteness', 'blackness', 'alpha'];\n\n  components.forEach((c: string): void => {\n    const [C] = format === 'hex' ? ['#'] : toUpperCase(c).split('');\n    const cID = `color_${format}_${c}_${id}`;\n    const formatLabel = componentLabels[`${c}Label`];\n    const cInputLabel = createElement({ tagName: 'label' }) as HTMLElement;\n    setAttribute(cInputLabel, 'for', cID);\n    cInputLabel.append(\n      createElement({\n        tagName: 'span',\n        ariaHidden: 'true',\n        innerText: `${C}:`,\n      }) as HTMLElement,\n      createElement({\n        tagName: 'span',\n        className: vHidden,\n        innerText: formatLabel,\n      }) as HTMLElement,\n    );\n    const cInput = createElement({\n      tagName: 'input',\n      id: cID,\n      // name: cID, - prevent saving the value to a form\n      type: format === 'hex' ? 'text' : 'number',\n      value: c === 'alpha' ? '100' : '0',\n      className: `color-input ${c}`,\n      autocomplete: 'off',\n      spellcheck: false,\n    } as Partial<HTMLInputElement>) as HTMLInputElement;\n\n    // alpha\n    let max = '100';\n    let step = '1';\n    if (c !== 'alpha') {\n      if (format === 'rgb') {\n        max = '255';\n        step = '1';\n      } else if (c === 'hue') {\n        max = '360';\n        step = '1';\n      }\n    }\n    ObjectAssign(cInput, {\n      min: '0',\n      max,\n      step,\n    });\n    colorForm.append(cInputLabel, cInput);\n  });\n  return colorForm;\n};\n\nexport default getColorForm;\n","import { createElement } from '@thednp/shorty';\n\nimport ColorPicker from '..';\n\n/**\n * Returns all color controls for `ColorPicker`.\n *\n * @param self the `ColorPicker` instance\n * @returns color controls\n */\nconst getColorControls = (self: ColorPicker): HTMLElement => {\n  const { format, componentLabels } = self;\n  const { hueLabel, alphaLabel, lightnessLabel, saturationLabel, whitenessLabel, blacknessLabel } = componentLabels;\n\n  const max1 = format === 'hsl' ? 360 : 100;\n  const max2 = format === 'hsl' ? 100 : 360;\n  const max3 = 100;\n\n  let ctrl1Label = format === 'hsl' ? `${hueLabel} & ${lightnessLabel}` : `${lightnessLabel} & ${saturationLabel}`;\n\n  ctrl1Label = format === 'hwb' ? `${whitenessLabel} & ${blacknessLabel}` : ctrl1Label;\n\n  const ctrl2Label = format === 'hsl' ? `${saturationLabel}` : `${hueLabel}`;\n\n  const colorControls = createElement({\n    tagName: 'div',\n    className: `color-controls ${format}`,\n  }) as HTMLElement;\n\n  const colorPointer = 'color-pointer';\n  const colorSlider = 'color-slider';\n\n  const controls = [\n    {\n      i: 1,\n      c: colorPointer,\n      l: ctrl1Label,\n      min: 0,\n      max: max1,\n    },\n    {\n      i: 2,\n      c: colorSlider,\n      l: ctrl2Label,\n      min: 0,\n      max: max2,\n    },\n    {\n      i: 3,\n      c: colorSlider,\n      l: alphaLabel,\n      min: 0,\n      max: max3,\n    },\n  ];\n\n  controls.forEach(template => {\n    const { i, c, l, min, max } = template;\n    const control = createElement({\n      tagName: 'div',\n      className: 'color-control',\n      role: 'presentation',\n    }) as HTMLElement;\n\n    control.append(\n      createElement({\n        tagName: 'div',\n        className: `visual-control visual-control${i}`,\n      }) as HTMLElement,\n    );\n\n    const knob = createElement({\n      tagName: 'div',\n      className: `${c} knob`,\n      ariaLive: 'polite',\n      ariaLabel: l,\n      role: 'slider',\n      tabIndex: 0,\n      ariaValueMin: `${min}`,\n      ariaValueMax: `${max}`,\n    }) as HTMLElement;\n\n    control.append(knob);\n    colorControls.append(control);\n  });\n\n  return colorControls;\n};\n\nexport default getColorControls;\n","import { setAttribute, getAttribute, createElement, setElementStyle } from '@thednp/shorty';\n\nimport Color from '@thednp/color';\nimport ColorPalette from '../colorPalette';\nimport ColorPicker from '../index';\n\n/**\n * Returns a color-defaults with given values and class.\n */\nconst getColorMenu = (self: ColorPicker, colorsSource: ColorPalette | string[], menuClass: string): HTMLElement => {\n  const { input, format, componentLabels } = self;\n  const { defaultsLabel, presetsLabel } = componentLabels;\n  const isOptionsMenu = menuClass === 'color-options';\n  const isPalette = colorsSource instanceof ColorPalette;\n  const menuLabel = isOptionsMenu ? presetsLabel : defaultsLabel;\n  const colorsArray = isPalette ? colorsSource.colors : colorsSource;\n  const colorsCount = colorsArray.length;\n  const { lightSteps } = isPalette ? colorsSource : { lightSteps: null };\n  const fit = lightSteps || [9, 10].find(x => colorsCount >= x * 2 && !(colorsCount % x)) || 5;\n  const isMultiLine = isOptionsMenu && colorsCount > fit;\n  let rowCountHover = 2;\n  rowCountHover = isMultiLine && colorsCount > fit * 2 ? 3 : rowCountHover;\n  rowCountHover = isMultiLine && colorsCount > fit * 3 ? 4 : rowCountHover;\n  rowCountHover = isMultiLine && colorsCount > fit * 4 ? 5 : rowCountHover;\n  const rowCount = rowCountHover - (colorsCount <= fit * 3 ? 1 : 2);\n  const isScrollable = isMultiLine && colorsCount > rowCount * fit;\n  let finalClass = menuClass;\n  finalClass += isScrollable ? ' scrollable' : '';\n  finalClass += isMultiLine ? ' multiline' : '';\n  const gap = isMultiLine ? '1px' : '0.25rem';\n  let optionSize = isMultiLine ? 1.75 : 2;\n  optionSize = fit > 5 && isMultiLine ? 1.5 : optionSize;\n  const menuHeight = `${rowCount * optionSize}rem`;\n  const menuHeightHover = `calc(${rowCountHover} * ${optionSize}rem + ${rowCountHover - 1} * ${gap})`;\n\n  // <UL> is an `HTMLElement`\n  const menu = createElement({\n    tagName: 'ul',\n    className: finalClass,\n    role: 'listbox',\n    ariaLabel: menuLabel,\n  }) as HTMLElement;\n\n  if (isScrollable) {\n    setElementStyle(menu, {\n      '--grid-item-size': `${optionSize}rem`,\n      '--grid-fit': `${fit}`,\n      '--grid-gap': gap,\n      '--grid-height': menuHeight,\n      '--grid-hover-height': menuHeightHover,\n    });\n  }\n\n  colorsArray.forEach(x => {\n    let [value, label] = typeof x === 'string' ? x.trim().split(':') : [];\n    if (x instanceof Color) {\n      value = x.toHexString();\n      label = value;\n    }\n    const color = new Color(x instanceof Color ? x : value, format);\n    const isActive = color.toString() === getAttribute(input, 'value');\n    const active = isActive ? ' active' : '';\n\n    const option = createElement({\n      tagName: 'li',\n      className: `color-option${active}`,\n      innerText: `${label || value}`,\n      tabIndex: 0,\n      role: 'option',\n      ariaSelected: isActive ? 'true' : 'false',\n    }) as HTMLElement;\n    setAttribute(option, 'data-value', `${value}`);\n\n    if (isOptionsMenu) {\n      setElementStyle(option, { backgroundColor: value });\n    }\n\n    menu.append(option);\n  });\n  return menu;\n};\n\nexport default getColorMenu;\n","import {\n  getAttribute,\n  setAttribute,\n  toUpperCase,\n  ariaHidden,\n  tabindex,\n  createElement,\n  createElementNS,\n} from '@thednp/shorty';\n\nimport Color from '@thednp/color';\n\nimport getColorForm from './getColorForm';\nimport getColorControls from './getColorControls';\nimport getColorMenu from './getColorMenu';\nimport vHidden from './vHidden';\n\nimport ColorPicker from '../index';\n\n/**\n * Generate HTML markup and update instance properties.\n *\n * @param self\n */\nconst setMarkup = (self: ColorPicker) => {\n  const { input, parent, format, id, componentLabels, colorKeywords, colorPresets } = self;\n  const colorValue = getAttribute(input, 'value') || '#fff';\n  const { nonColors } = Color;\n\n  const { toggleLabel, pickerLabel, formatLabel, hexLabel } = componentLabels;\n\n  // update color\n  const color = nonColors.includes(colorValue) ? '#fff' : colorValue;\n  self.color = new Color(color, format);\n\n  // set initial controls dimensions\n  const formatString = format === 'hex' ? hexLabel : toUpperCase(format);\n\n  const pickerBtn = createElement({\n    id: `picker-btn-${id}`,\n    tagName: 'button',\n    className: 'picker-toggle btn-appearance',\n    ariaExpanded: 'false',\n    ariaHasPopup: 'true',\n  }) as HTMLElement;\n\n  pickerBtn.append(\n    createElement({\n      tagName: 'span',\n      className: vHidden,\n      innerText: `${pickerLabel}. ${formatLabel}: ${formatString}`,\n    }) as HTMLElement,\n  );\n\n  const pickerDropdown = createElement({\n    tagName: 'div',\n    className: 'color-dropdown picker',\n    role: 'group',\n    ariaLabelledBy: `picker-btn-${id}`,\n  } as Partial<HTMLElement> & { ariaLabelledBy: string }) as HTMLElement;\n\n  const colorControls = getColorControls(self);\n  const colorForm = getColorForm(self);\n\n  pickerDropdown.append(colorControls, colorForm);\n  input.before(pickerBtn);\n  parent.append(pickerDropdown);\n\n  // set colour key menu template\n  if (colorKeywords || colorPresets) {\n    const presetsDropdown = createElement({\n      tagName: 'div',\n      className: 'color-dropdown scrollable menu',\n    }) as HTMLElement;\n\n    // color presets\n    if (colorPresets) {\n      presetsDropdown.append(getColorMenu(self, colorPresets, 'color-options'));\n    }\n\n    // explicit defaults [reset, initial, inherit, transparent, currentColor]\n    // also custom defaults [default: #069, complementary: #930]\n    if (colorKeywords && colorKeywords.length) {\n      presetsDropdown.append(getColorMenu(self, colorKeywords, 'color-defaults'));\n    }\n\n    const presetsBtn = createElement({\n      tagName: 'button',\n      className: 'menu-toggle btn-appearance',\n      tabIndex: -1,\n      ariaExpanded: 'false',\n      ariaHasPopup: 'true',\n    }) as HTMLElement;\n\n    const xmlns = encodeURI('http://www.w3.org/2000/svg');\n    const presetsIcon = createElementNS(xmlns, {\n      tagName: 'svg',\n    }) as HTMLElement;\n    setAttribute(presetsIcon, 'xmlns', xmlns);\n    setAttribute(presetsIcon, 'viewBox', '0 0 512 512');\n    setAttribute(presetsIcon, ariaHidden, 'true');\n\n    const path = createElementNS(xmlns, {\n      tagName: 'path',\n    }) as HTMLElement;\n    setAttribute(path, 'd', 'M98,158l157,156L411,158l27,27L255,368L71,185L98,158z');\n    setAttribute(path, 'fill', '#fff');\n    presetsIcon.append(path);\n    presetsBtn.append(\n      createElement({\n        tagName: 'span',\n        className: vHidden,\n        innerText: `${toggleLabel}`,\n      }) as HTMLElement,\n      presetsIcon,\n    );\n\n    parent.append(presetsBtn, presetsDropdown);\n  }\n\n  // solve non-colors after settings save\n  if (colorKeywords && nonColors.includes(colorValue)) {\n    self.value = colorValue;\n  }\n  setAttribute(input, tabindex, '-1');\n};\n\nexport default setMarkup;\n","import { addListener, removeListener } from '@thednp/event-listener';\n\nimport {\n  ariaDescription,\n  ariaSelected,\n  ariaValueNow,\n  ariaValueText,\n  ariaExpanded,\n  keyArrowDown,\n  keyArrowUp,\n  keyArrowLeft,\n  keyArrowRight,\n  keyEnter,\n  keySpace,\n  keyEscape,\n  focusinEvent,\n  mouseclickEvent,\n  keydownEvent,\n  changeEvent,\n  touchmoveEvent,\n  pointerdownEvent,\n  pointermoveEvent,\n  pointerupEvent,\n  tabindex,\n  focusoutEvent,\n  resizeEvent,\n  keyupEvent,\n  scrollEvent,\n  dispatchEvent,\n  getElementsByClassName,\n  closest,\n  querySelector,\n  getElementTransitionDuration,\n  getBoundingClientRect,\n  getUID,\n  getElementStyle,\n  getDocumentElement,\n  getDocument,\n  ObjectAssign,\n  ObjectFromEntries,\n  Data,\n  getInstance,\n  setElementStyle,\n  normalizeOptions,\n  reflow,\n  focus,\n  hasClass,\n  addClass,\n  removeClass,\n  setAttribute,\n  getAttribute,\n  removeAttribute,\n  isArray,\n  isString,\n  getWindow,\n} from '@thednp/shorty';\n\n// ColorPicker Util\n// ================\nimport Color from '@thednp/color';\nimport type { RGBA, HWBA, HSLA, HSVA } from '@thednp/color';\n\nimport ColorPalette from './colorPalette';\nimport colorPickerLabels from './util/colorPickerLabels';\nimport colorNames from './util/colorNames';\nimport isValidJSON from './util/isValidJSON';\nimport setMarkup from './util/setMarkup';\n\nimport ColorPickerOptions from './interface/colorPickerOptions';\nimport ColorPickerLabels from './interface/colorPickerLabels';\nimport type ColorNames from './interface/ColorNames';\nimport { version } from '../../package.json';\n\n// ColorPicker GC\n// ==============\nconst colorPickerString = 'color-picker';\nconst colorPickerSelector = `[data-function=\"${colorPickerString}\"]`;\nconst colorPickerParentSelector = `.${colorPickerString}`;\nconst colorPickerDefaults: ColorPickerOptions = {\n  componentLabels: colorPickerLabels,\n  colorLabels: colorNames,\n  format: 'rgb',\n  colorPresets: false,\n  colorKeywords: false,\n};\nconst { roundPart, nonColors } = Color;\n\n// ColorPicker Static Methods\n// ==========================\nconst getColorPickerInstance = (element: HTMLInputElement) => getInstance<ColorPicker>(element, colorPickerString);\nconst initColorPicker = (element: HTMLInputElement) => new ColorPicker(element);\n\n// ColorPicker Private Methods\n// ===========================\n\n/**\n * Add / remove `ColorPicker` main event listeners.\n */\nconst toggleEvents = (self: ColorPicker, action?: boolean) => {\n  const fn = action ? addListener : removeListener;\n  const { input, pickerToggle, menuToggle } = self;\n\n  fn(input, focusinEvent, self.showPicker);\n  fn(pickerToggle, mouseclickEvent, self.togglePicker);\n\n  if (menuToggle) {\n    fn(menuToggle, mouseclickEvent, self.toggleMenu);\n  }\n};\n\n/**\n * Add / remove `ColorPicker` event listeners active only when open.\n */\nconst toggleEventsOnShown = (self: ColorPicker, action?: boolean) => {\n  const fn = action ? addListener : removeListener;\n  const { input, colorMenu, parent } = self;\n  const doc = getDocument(input);\n  const win = getWindow(doc);\n\n  fn(self.controls, pointerdownEvent, self.pointerDown as EventListener);\n  self.controlKnobs.forEach(x => fn(x, keydownEvent, self.handleKnobs as EventListener));\n\n  fn(win, scrollEvent, self.handleScroll);\n  fn(win, resizeEvent, self.update);\n\n  [input, ...self.inputs].forEach(x => fn(x, changeEvent, self.changeHandler));\n\n  if (colorMenu) {\n    fn(colorMenu, mouseclickEvent, self.menuClickHandler);\n    fn(colorMenu, keydownEvent, self.menuKeyHandler as EventListener);\n  }\n\n  fn(doc, pointermoveEvent, self.pointerMove as EventListener);\n  fn(doc, pointerupEvent, self.pointerUp as EventListener);\n  fn(parent, focusoutEvent, self.handleFocusOut as EventListener);\n  fn(doc, keyupEvent, self.handleDismiss as EventListener);\n};\n\n/**\n * Triggers the `ColorPicker` original event.\n */\nconst firePickerChange = (self: ColorPicker) => {\n  dispatchEvent(self.input, new CustomEvent('colorpicker.change'));\n};\n\n/**\n * Hides a visible dropdown.\n */\nconst removePosition = (element: HTMLElement) => {\n  /* istanbul ignore else */\n  if (element) {\n    ['bottom', 'top'].forEach(x => removeClass(element, x));\n  }\n};\n\n/**\n * Shows a `ColorPicker` dropdown and close the curent open dropdown.\n */\nconst showDropdown = (self: ColorPicker, dropdown: HTMLElement) => {\n  const { colorPicker, colorMenu, menuToggle, pickerToggle, parent } = self;\n  const isPicker = dropdown === colorPicker;\n  const openDropdown = isPicker ? colorMenu : colorPicker;\n  const activeBtn = isPicker ? menuToggle : pickerToggle;\n  const nextBtn = !isPicker ? menuToggle : pickerToggle;\n\n  if (!hasClass(parent, 'open')) {\n    addClass(parent, 'open');\n  }\n  if (openDropdown) {\n    removeClass(openDropdown, 'show');\n    removePosition(openDropdown);\n  }\n  addClass(dropdown, 'bottom');\n  reflow(dropdown);\n  addClass(dropdown, 'show');\n\n  if (isPicker) self.update();\n\n  if (!self.isOpen) {\n    toggleEventsOnShown(self, true);\n    self.updateDropdownPosition();\n    self.isOpen = true;\n    setAttribute(self.input, tabindex, '0');\n    if (menuToggle) {\n      setAttribute(menuToggle, tabindex, '0');\n    }\n  }\n\n  setAttribute(nextBtn, ariaExpanded, 'true');\n  if (activeBtn) {\n    setAttribute(activeBtn, ariaExpanded, 'false');\n  }\n};\n\n/**\n * Color Picker Web Component\n *\n * @see http://thednp.github.io/color-picker\n */\nexport default class ColorPicker {\n  // bring utils to staic\n  public static Color = Color;\n  public static ColorPalette = ColorPalette;\n  public static getInstance = getColorPickerInstance;\n  public static init = initColorPicker;\n  public static selector = colorPickerSelector;\n  // utils important for render\n  public static roundPart = roundPart;\n  public static setElementStyle = setElementStyle;\n  public static setAttribute = setAttribute;\n  public static getBoundingClientRect = getBoundingClientRect;\n  public static version = version;\n  public static colorNames = colorNames;\n  public static colorPickerLabels = colorPickerLabels;\n\n  id: number;\n  input: HTMLInputElement;\n  color: Color;\n  format = 'rgb';\n  parent: HTMLElement;\n  dragElement: HTMLElement | undefined;\n  isOpen = false;\n  controlPositions: {\n    c1x: number;\n    c1y: number;\n    c2y: number;\n    c3y: number;\n  };\n  colorLabels: ColorNames = ObjectFromEntries(colorNames.map(c => [c, c])) as ColorNames;\n  colorKeywords: string[] | false;\n  colorPresets: ColorPalette | string[] | false;\n  componentLabels: ColorPickerLabels;\n  pickerToggle: HTMLElement;\n  menuToggle: HTMLElement;\n  colorPicker: HTMLElement;\n  colorMenu: HTMLElement;\n  controls: HTMLElement;\n  inputs: HTMLInputElement[];\n  controlKnobs: HTMLElement[];\n  visuals: HTMLElement[];\n\n  /**\n   * Returns a new `ColorPicker` instance. The target of this constructor\n   * must be an `HTMLInputElement`.\n   *\n   * @param target the target `<input>` element\n   * @param config instance options\n   */\n  constructor(target: (HTMLElement & HTMLInputElement) | string, config?: Partial<ColorPickerOptions>) {\n    const input = querySelector(target) as HTMLInputElement;\n\n    // invalidate\n    if (typeof target === 'undefined') throw new TypeError(`ColorPicker target not specified.`);\n    if (isString(target) && !input) throw new TypeError(`ColorPicker target \"${target}\" cannot be found.`);\n    this.input = input;\n\n    const parent = closest(input, colorPickerParentSelector);\n    if (!parent) throw new TypeError('ColorPicker requires a specific markup to work.');\n\n    this.parent = parent;\n    this.id = getUID(input, colorPickerString);\n    this.dragElement = undefined;\n    this.isOpen = false;\n    this.controlPositions = {\n      c1x: 0,\n      c1y: 0,\n      c2y: 0,\n      c3y: 0,\n    };\n    // this.colorLabels = {};\n    this.colorKeywords = false;\n    this.colorPresets = false;\n\n    // process options\n    const { format, componentLabels, colorLabels, colorKeywords, colorPresets } = normalizeOptions(\n      input,\n      colorPickerDefaults,\n      config || {},\n    );\n\n    let translatedColorLabels = colorNames;\n    /* istanbul ignore else */\n    if (isArray(colorLabels) && colorLabels.length === 17) {\n      translatedColorLabels = colorLabels;\n    } else if (isString(colorLabels) && colorLabels.split(',').length === 17) {\n      translatedColorLabels = colorLabels.split(',');\n    }\n\n    // expose colour labels to all methods\n    ObjectAssign(this.colorLabels, ObjectFromEntries(translatedColorLabels.map((c, i) => [colorNames[i], c])));\n\n    // update and expose component labels\n    const tempComponentLabels =\n      isString(componentLabels) && isValidJSON(componentLabels)\n        ? (JSON.parse(componentLabels) as ColorPickerLabels)\n        : componentLabels;\n    this.componentLabels = ObjectAssign({ ...colorPickerLabels }, tempComponentLabels);\n    this.color = new Color(input.value || '#fff', format);\n    this.format = format;\n\n    // set colour defaults\n    if (isArray(colorKeywords) && colorKeywords.length) {\n      this.colorKeywords = colorKeywords;\n    } else if (isString(colorKeywords) && colorKeywords.length) {\n      this.colorKeywords = colorKeywords.split(',').map(x => x.trim());\n    }\n\n    // set colour presets\n    if (isArray(colorPresets) && colorPresets.length) {\n      this.colorPresets = colorPresets;\n    } else if (colorPresets && isValidJSON(colorPresets)) {\n      const { hue, hueSteps, lightSteps, saturation } = JSON.parse(colorPresets) as {\n        hue: number;\n        hueSteps: number;\n        lightSteps: number;\n        saturation: number;\n      };\n      this.colorPresets = new ColorPalette(hue, hueSteps, lightSteps, saturation);\n    } else if (isString(colorPresets)) {\n      this.colorPresets = colorPresets.split(',').map((x: string) => x.trim());\n    }\n\n    // generate markup\n    setMarkup(this);\n\n    const [colorPicker, colorMenu] = getElementsByClassName('color-dropdown', parent);\n    // set main elements\n    this.pickerToggle = querySelector('.picker-toggle', parent) as HTMLElement;\n    this.menuToggle = querySelector('.menu-toggle', parent) as HTMLElement;\n    this.colorPicker = colorPicker;\n    this.colorMenu = colorMenu;\n    this.inputs = [...getElementsByClassName('color-input', parent)] as HTMLInputElement[];\n    const [controls] = getElementsByClassName('color-controls', parent);\n    this.controls = controls;\n    this.controlKnobs = [...getElementsByClassName('knob', controls)];\n    this.visuals = [...getElementsByClassName('visual-control', controls)];\n\n    // update colour picker controls, inputs and visuals\n    this.update();\n    // console.log(this)\n\n    // add main events listeners\n    toggleEvents(this, true);\n\n    // set component data\n    Data.set(input, colorPickerString, this);\n  }\n\n  /** Returns the current colour value */\n  get value(): string {\n    return this.input.value;\n  }\n\n  /**\n   * Sets a new colour value.\n   *\n   * @param {string} v new colour value\n   */\n  set value(v: string) {\n    this.input.value = v;\n  }\n\n  /** Check if the colour presets include any non-colour. */\n  get hasNonColor(): boolean {\n    return this.colorKeywords instanceof Array && this.colorKeywords.some(x => nonColors.includes(x));\n  }\n\n  /** Returns hexadecimal value of the current colour. */\n  get hex(): string {\n    return this.color.toHex(true);\n  }\n\n  /** Returns the current colour value in {h,s,v,a} object format. */\n  get hsv(): HSVA {\n    return this.color.toHsv();\n  }\n\n  /** Returns the current colour value in {h,s,l,a} object format. */\n  get hsl(): HSLA {\n    return this.color.toHsl();\n  }\n\n  /** Returns the current colour value in {h,w,b,a} object format. */\n  get hwb(): HWBA {\n    return this.color.toHwb();\n  }\n\n  /** Returns the current colour value in {r,g,b,a} object format. */\n  get rgb(): RGBA {\n    return this.color.toRgb();\n  }\n\n  /** Returns the current colour brightness. */\n  get brightness(): number {\n    return this.color.brightness;\n  }\n\n  /** Returns the current colour luminance. */\n  get luminance(): number {\n    return this.color.luminance;\n  }\n\n  /** Checks if the current colour requires a light text colour. */\n  get isDark(): boolean {\n    const { color, brightness } = this;\n    return brightness < 120 && color.a > 0.33;\n  }\n\n  /** Checks if the current input value is a valid colour. */\n  get isValid(): boolean {\n    const inputValue = this.input.value;\n    return inputValue !== '' && new Color(inputValue).isValid;\n  }\n\n  /** Returns the colour appearance, usually the closest colour name for the current value. */\n  get appearance(): string {\n    const { colorLabels, hsl, hsv, format } = this;\n\n    const hue = roundPart(hsl.h * 360);\n    const saturationSource = format === 'hsl' ? hsl.s : hsv.s;\n    const saturation = roundPart(saturationSource * 100);\n    const lightness = roundPart(hsl.l * 100);\n    const hsvl = hsv.v * 100;\n\n    let colorName = 'black';\n\n    // determine color appearance\n    /* istanbul ignore else */\n    if (lightness === 100 && saturation === 0) {\n      colorName = colorLabels.white;\n    } else if (lightness === 0) {\n      colorName = colorLabels.black;\n    } else if (saturation === 0) {\n      colorName = colorLabels.grey;\n    } else if (hue < 15 || hue >= 345) {\n      colorName = colorLabels.red;\n    } else if (hue >= 15 && hue < 45) {\n      colorName = hsvl > 80 && saturation > 80 ? colorLabels.orange : colorLabels.brown;\n    } else if (hue >= 45 && hue < 75) {\n      const isGold = hue > 46 && hue < 54 && hsvl < 80 && saturation > 90;\n      const isOlive = hue >= 54 && hue < 75 && hsvl < 80;\n      colorName = isGold ? colorLabels.gold : colorLabels.yellow;\n      colorName = isOlive ? colorLabels.olive : colorName;\n    } else if (hue >= 75 && hue < 155) {\n      colorName = hsvl < 68 ? colorLabels.green : colorLabels.lime;\n    } else if (hue >= 155 && hue < 175) {\n      colorName = colorLabels.teal;\n    } else if (hue >= 175 && hue < 195) {\n      colorName = colorLabels.cyan;\n    } else if (hue >= 195 && hue < 255) {\n      colorName = colorLabels.blue;\n    } else if (hue >= 255 && hue < 270) {\n      colorName = colorLabels.violet;\n    } else if (hue >= 270 && hue < 295) {\n      colorName = colorLabels.magenta;\n    } else if (hue >= 295 && hue < 345) {\n      colorName = colorLabels.pink;\n    }\n    return colorName;\n  }\n\n  /** Updates `ColorPicker` visuals. */\n  updateVisuals(): void {\n    const { controlPositions, visuals } = this;\n    const [v1, v2, v3] = visuals;\n    const { offsetHeight } = v1;\n    const hue = controlPositions.c2y / offsetHeight;\n    const { r, g, b } = new Color({ h: hue, s: 1, l: 0.5 }).toRgb();\n    const whiteGrad = 'linear-gradient(rgb(255,255,255) 0%, rgb(255,255,255) 100%)';\n    const alpha = 1 - controlPositions.c3y / offsetHeight;\n    const roundA = roundPart(alpha * 100) / 100;\n\n    const fill = new Color({\n      h: hue,\n      s: 1,\n      l: 0.5,\n      a: alpha,\n    }).toRgbString();\n    const hueGradient = `linear-gradient(\n      rgb(255,0,0) 0%, rgb(255,255,0) 16.67%,\n      rgb(0,255,0) 33.33%, rgb(0,255,255) 50%,\n      rgb(0,0,255) 66.67%, rgb(255,0,255) 83.33%,\n      rgb(255,0,0) 100%)`;\n    setElementStyle(v1, {\n      background: `linear-gradient(rgba(0,0,0,0) 0%, rgba(0,0,0,${roundA}) 100%),\n      linear-gradient(to right, rgba(255,255,255,${roundA}) 0%, ${fill} 100%),\n      ${whiteGrad}`,\n    });\n    setElementStyle(v2, { background: hueGradient });\n\n    setElementStyle(v3, {\n      background: `linear-gradient(rgba(${r},${g},${b},1) 0%,rgba(${r},${g},${b},0) 100%)`,\n    });\n  }\n\n  /**\n   * The `ColorPicker` *focusout* event listener when open.\n   *\n   * @param e\n   * @this {ColorPicker}\n   */\n  handleFocusOut = ({ relatedTarget }: FocusEvent & { relatedTarget: HTMLElement }): void => {\n    if (relatedTarget && !this.parent.contains(relatedTarget)) {\n      this.hide(true);\n    }\n  };\n\n  /**\n   * The `ColorPicker` *keyup* event listener when open.\n   *\n   * @param e\n   * @this {ColorPicker}\n   */\n  handleDismiss = ({ code }: KeyboardEvent): void => {\n    if (this.isOpen && code === keyEscape) {\n      this.hide();\n    }\n  };\n\n  /**\n   * The `ColorPicker` *scroll* event listener when open.\n   *\n   * @param e\n   */\n  handleScroll = (e: Event) => {\n    const { activeElement } = getDocument(this.input);\n\n    this.updateDropdownPosition();\n\n    /* istanbul ignore next */\n    if (\n      ([pointermoveEvent, touchmoveEvent].includes(e.type) && this.dragElement) ||\n      (activeElement && this.controlKnobs.includes(activeElement as HTMLElement))\n    ) {\n      e.stopPropagation();\n      e.preventDefault();\n    }\n  };\n\n  /**\n   * The `ColorPicker` keyboard event listener for menu navigation.\n   *\n   * @param e\n   */\n  menuKeyHandler = (e: KeyboardEvent & { target: HTMLElement }) => {\n    const { target, code } = e;\n    const { previousElementSibling, nextElementSibling, parentElement } = target;\n    const isColorOptionsMenu = parentElement && hasClass(parentElement, 'color-options');\n    const allSiblings = parentElement ? [...parentElement.children] : [];\n    const columnsCount =\n      isColorOptionsMenu && getElementStyle(parentElement, 'grid-template-columns').split(' ').length;\n    const currentIndex = allSiblings.indexOf(target);\n    const previousElement = currentIndex > -1 && columnsCount && allSiblings[currentIndex - columnsCount];\n    const nextElement = currentIndex > -1 && columnsCount && allSiblings[currentIndex + columnsCount];\n\n    if ([keyArrowDown, keyArrowUp, keySpace].includes(code)) {\n      // prevent scroll when navigating the menu via arrow keys / Space\n      e.preventDefault();\n    }\n    if (isColorOptionsMenu) {\n      if (previousElement && code === keyArrowUp) {\n        focus(previousElement as HTMLElement);\n      } else if (nextElement && code === keyArrowDown) {\n        focus(nextElement as HTMLElement);\n      } else if (previousElementSibling && code === keyArrowLeft) {\n        focus(previousElementSibling as HTMLElement);\n      } else if (nextElementSibling && code === keyArrowRight) {\n        focus(nextElementSibling as HTMLElement);\n      }\n    } else if (previousElementSibling && [keyArrowLeft, keyArrowUp].includes(code)) {\n      focus(previousElementSibling as HTMLElement);\n    } else if (nextElementSibling && [keyArrowRight, keyArrowDown].includes(code)) {\n      focus(nextElementSibling as HTMLElement);\n    }\n\n    if ([keyEnter, keySpace].includes(code)) {\n      this.menuClickHandler(e);\n    }\n  };\n\n  /**\n   * The `ColorPicker` click event listener for the colour menu presets / defaults.\n   *\n   * @param e\n   * @this {ColorPicker}\n   */\n  menuClickHandler = (e: Event) => {\n    const { target } = e;\n    const { colorMenu } = this;\n    const newOption = (getAttribute(target as HTMLElement, 'data-value') || '').trim();\n    // invalidate for targets other than color options\n    if (!newOption.length) return;\n    const currentActive = querySelector('li.active', colorMenu);\n    let newColor = newOption;\n    newColor = nonColors.includes(newColor) ? 'white' : newColor;\n    newColor = newColor === 'transparent' ? 'rgba(0,0,0,0)' : newColor;\n\n    const { r, g, b, a } = new Color(newColor);\n\n    ObjectAssign(this.color, {\n      r,\n      g,\n      b,\n      a,\n    });\n\n    this.update();\n\n    /* istanbul ignore else */\n    if (currentActive !== target) {\n      /* istanbul ignore else */\n      if (currentActive) {\n        removeClass(currentActive, 'active');\n        removeAttribute(currentActive, ariaSelected);\n      }\n\n      addClass(target as HTMLElement, 'active');\n      setAttribute(target as HTMLElement, ariaSelected, 'true');\n\n      if (nonColors.includes(newOption)) {\n        this.value = newOption;\n      }\n      firePickerChange(this);\n    }\n  };\n\n  /**\n   * The `ColorPicker` *touchstart* / *mousedown* events listener for control knobs.\n   *\n   * @param e\n   */\n  pointerDown = (e: PointerEvent & { target: HTMLElement }) => {\n    if (e.button !== 0) return;\n    const { target, pageX, pageY } = e;\n    const { colorMenu, visuals, controlKnobs } = this;\n    const [v1, v2, v3] = visuals;\n    const [c1, c2, c3] = controlKnobs;\n    const visual = controlKnobs.includes(target) ? (target.previousElementSibling as HTMLElement) : target;\n    const visualRect = getBoundingClientRect(visual);\n    const html = getDocumentElement(v1);\n    const offsetX = pageX - html.scrollLeft - visualRect.left;\n    const offsetY = pageY - html.scrollTop - visualRect.top;\n\n    /* istanbul ignore else */\n    if (target === v1 || target === c1) {\n      this.dragElement = visual;\n      this.changeControl1(offsetX, offsetY);\n    } else if (target === v2 || target === c2) {\n      this.dragElement = visual;\n      this.changeControl2(offsetY);\n    } else if (target === v3 || target === c3) {\n      this.dragElement = visual;\n      this.changeAlpha(offsetY);\n    }\n\n    if (colorMenu) {\n      const currentActive = querySelector('li.active', colorMenu);\n      if (currentActive) {\n        removeClass(currentActive, 'active');\n        removeAttribute(currentActive, ariaSelected);\n      }\n    }\n    e.preventDefault();\n  };\n\n  /**\n   * The `ColorPicker` *touchend* / *mouseup* events listener for control knobs.\n   *\n   * @param e\n   * @this\n   */\n  pointerUp = ({ target }: PointerEvent & { target: HTMLElement }) => {\n    const { parent } = this;\n    const doc = getDocument(parent);\n    const currentOpen = querySelector(`${colorPickerParentSelector}.open`, doc) !== null;\n    const selection = doc.getSelection();\n\n    if (!this.dragElement && (!selection || !selection.toString().length) && !parent.contains(target)) {\n      this.hide(currentOpen);\n    }\n\n    this.dragElement = undefined;\n  };\n\n  /**\n   * The `ColorPicker` *touchmove* / *mousemove* events listener for control knobs.\n   *\n   * @param {PointerEvent} e\n   */\n  pointerMove = (e: PointerEvent) => {\n    const { dragElement, visuals } = this;\n    const [v1, v2, v3] = visuals;\n    const { pageX, pageY } = e;\n\n    if (!dragElement) return;\n\n    const controlRect = getBoundingClientRect(dragElement);\n    const win = getDocumentElement(v1);\n    const offsetX = pageX - win.scrollLeft - controlRect.left;\n    const offsetY = pageY - win.scrollTop - controlRect.top;\n\n    if (dragElement === v1) {\n      this.changeControl1(offsetX, offsetY);\n    }\n\n    if (dragElement === v2) {\n      this.changeControl2(offsetY);\n    }\n\n    if (dragElement === v3) {\n      this.changeAlpha(offsetY);\n    }\n  };\n\n  /**\n   * The `ColorPicker` *keydown* event listener for control knobs.\n   *\n   * @param e\n   */\n  handleKnobs = (e: Event & { code: string }) => {\n    const { target, code } = e;\n\n    // only react to arrow buttons\n    if (![keyArrowUp, keyArrowDown, keyArrowLeft, keyArrowRight].includes(code)) return;\n    e.preventDefault();\n\n    const { controlKnobs, visuals } = this;\n    const { offsetWidth, offsetHeight } = visuals[0];\n    const [c1, c2, c3] = controlKnobs;\n    const { activeElement } = getDocument(c1);\n    const currentKnob = controlKnobs.find(x => x === activeElement);\n    const yRatio = offsetHeight / 360;\n\n    /* istanbul ignore else */\n    if (currentKnob) {\n      let offsetX = 0;\n      let offsetY = 0;\n\n      /* istanbul ignore else */\n      if (target === c1) {\n        const xRatio = offsetWidth / 100;\n\n        /* istanbul ignore else */\n        if ([keyArrowLeft, keyArrowRight].includes(code)) {\n          this.controlPositions.c1x += code === keyArrowRight ? xRatio : -xRatio;\n        } else if ([keyArrowUp, keyArrowDown].includes(code)) {\n          this.controlPositions.c1y += code === keyArrowDown ? yRatio : -yRatio;\n        }\n\n        offsetX = this.controlPositions.c1x;\n        offsetY = this.controlPositions.c1y;\n        this.changeControl1(offsetX, offsetY);\n      } else if (target === c2) {\n        this.controlPositions.c2y += [keyArrowDown, keyArrowRight].includes(code) ? yRatio : -yRatio;\n\n        offsetY = this.controlPositions.c2y;\n        this.changeControl2(offsetY);\n      } else if (target === c3) {\n        this.controlPositions.c3y += [keyArrowDown, keyArrowRight].includes(code) ? yRatio : -yRatio;\n\n        offsetY = this.controlPositions.c3y;\n        this.changeAlpha(offsetY);\n      }\n      this.handleScroll(e);\n    }\n  };\n\n  /** The event listener of the colour form inputs. */\n  changeHandler = (): void => {\n    let colorSource;\n    const { inputs, format, value: currentValue, input, controlPositions, visuals } = this;\n    const { activeElement } = getDocument(input);\n    const { offsetHeight } = visuals[0];\n    const [i1, , , i4] = inputs;\n    const [v1, v2, v3, v4] =\n      format === 'rgb'\n        ? inputs.map(i => parseFloat(i.value) / (i === i4 ? 100 : 1))\n        : inputs.map(i => parseFloat(i.value) / (i !== i1 ? 100 : 360));\n    const isNonColorValue = this.hasNonColor && nonColors.includes(currentValue);\n    const alpha = i4 ? v4 : 1 - controlPositions.c3y / offsetHeight;\n\n    /* istanbul ignore else */\n    if (activeElement === input || (activeElement && inputs.includes(activeElement as HTMLInputElement))) {\n      if (activeElement === input) {\n        if (isNonColorValue) {\n          colorSource = currentValue === 'transparent' ? 'rgba(0,0,0,0)' : 'rgb(0,0,0)';\n        } else {\n          colorSource = currentValue;\n        }\n      } else if (format === 'hex') {\n        colorSource = i1.value;\n      } else if (format === 'hsl') {\n        colorSource = {\n          h: v1,\n          s: v2,\n          l: v3,\n          a: alpha,\n        };\n      } else if (format === 'hwb') {\n        colorSource = {\n          h: v1,\n          w: v2,\n          b: v3,\n          a: alpha,\n        };\n      } else {\n        colorSource = {\n          r: v1,\n          g: v2,\n          b: v3,\n          a: alpha,\n        };\n      }\n\n      const { r, g, b, a } = new Color(colorSource);\n\n      ObjectAssign(this.color, {\n        r,\n        g,\n        b,\n        a,\n      });\n      this.setControlPositions();\n      this.updateAppearance();\n      this.updateInputs();\n      this.updateControls();\n      this.updateVisuals();\n\n      // set non-color keyword\n      if (activeElement === input && isNonColorValue) {\n        this.value = currentValue;\n      }\n    }\n  };\n\n  /**\n   * Updates `ColorPicker` first control:\n   * * `lightness` and `saturation` for HEX/RGB;\n   * * `lightness` and `hue` for HSL.\n   *\n   * @param X the X component of the offset\n   * @param Y the Y component of the offset\n   */\n  changeControl1(X: number, Y: number): void {\n    let [offsetX, offsetY] = [0, 0];\n    const { controlPositions, visuals } = this;\n    const { offsetHeight, offsetWidth } = visuals[0];\n\n    if (X > offsetWidth) offsetX = offsetWidth;\n    else if (X >= 0) offsetX = X;\n\n    if (Y > offsetHeight) offsetY = offsetHeight;\n    else if (Y >= 0) offsetY = Y;\n\n    const hue = controlPositions.c2y / offsetHeight;\n\n    const saturation = offsetX / offsetWidth;\n\n    const lightness = 1 - offsetY / offsetHeight;\n    const alpha = 1 - controlPositions.c3y / offsetHeight;\n\n    // new color\n    const { r, g, b, a } = new Color({\n      h: hue,\n      s: saturation,\n      v: lightness,\n      a: alpha,\n    });\n\n    ObjectAssign(this.color, {\n      r,\n      g,\n      b,\n      a,\n    });\n\n    // new positions\n    this.controlPositions.c1x = offsetX;\n    this.controlPositions.c1y = offsetY;\n\n    // update color picker\n    this.updateAppearance();\n    this.updateInputs();\n    this.updateControls();\n    this.updateVisuals();\n  }\n\n  /**\n   * Updates `ColorPicker` second control:\n   * * `hue` for HEX/RGB/HWB;\n   * * `saturation` for HSL.\n   *\n   * @param Y the Y offset\n   */\n  changeControl2(Y: number) {\n    const { controlPositions, visuals } = this;\n    const { offsetHeight, offsetWidth } = visuals[0];\n\n    let offsetY = 0;\n\n    if (Y > offsetHeight) offsetY = offsetHeight;\n    else if (Y >= 0) offsetY = Y;\n\n    const hue = offsetY / offsetHeight;\n    const saturation = controlPositions.c1x / offsetWidth;\n    const lightness = 1 - controlPositions.c1y / offsetHeight;\n    const alpha = 1 - controlPositions.c3y / offsetHeight;\n\n    // new color\n    const { r, g, b, a } = new Color({\n      h: hue,\n      s: saturation,\n      v: lightness,\n      a: alpha,\n    });\n\n    ObjectAssign(this.color, {\n      r,\n      g,\n      b,\n      a,\n    });\n\n    // new position\n    this.controlPositions.c2y = offsetY;\n    // update color picker\n    this.updateAppearance();\n    this.updateInputs();\n    this.updateControls();\n    this.updateVisuals();\n  }\n\n  /**\n   * Updates `ColorPicker` last control,\n   * the `alpha` channel.\n   *\n   * @param Y\n   */\n  changeAlpha(Y: number) {\n    const { visuals } = this;\n    const { offsetHeight } = visuals[0];\n    let offsetY = 0;\n\n    if (Y > offsetHeight) offsetY = offsetHeight;\n    else if (Y >= 0) offsetY = Y;\n\n    // update color alpha\n    const alpha = 1 - offsetY / offsetHeight;\n    this.color.setAlpha(alpha);\n    // update position\n    this.controlPositions.c3y = offsetY;\n    // update color picker\n    this.updateAppearance();\n    this.updateInputs();\n    this.updateControls();\n    this.updateVisuals();\n  }\n\n  /**\n   * Updates `ColorPicker` control positions on:\n   * * initialization\n   * * window resize\n   */\n  update = () => {\n    this.updateDropdownPosition();\n    this.updateAppearance();\n    this.setControlPositions();\n    this.updateInputs(true);\n    this.updateControls();\n    this.updateVisuals();\n  };\n\n  /** Updates the open dropdown position on *scroll* event. */\n  updateDropdownPosition() {\n    const { input, colorPicker, colorMenu } = this;\n    const elRect = getBoundingClientRect(input);\n    const { top, bottom } = elRect;\n    const { offsetHeight: elHeight } = input;\n    const windowHeight = getDocumentElement(input).clientHeight;\n    const isPicker = hasClass(colorPicker, 'show');\n    const dropdown = isPicker ? colorPicker : colorMenu;\n    if (!dropdown) return;\n    const { offsetHeight: dropHeight } = dropdown;\n    const distanceBottom = windowHeight - bottom;\n    const distanceTop = top;\n    const bottomExceed = top + dropHeight + elHeight > windowHeight; // show\n    const topExceed = top - dropHeight < 0; // show-top\n\n    if ((hasClass(dropdown, 'bottom') || !topExceed) && distanceBottom < distanceTop && bottomExceed) {\n      removeClass(dropdown, 'bottom');\n      addClass(dropdown, 'top');\n    } else {\n      removeClass(dropdown, 'top');\n      addClass(dropdown, 'bottom');\n    }\n  }\n\n  /** Updates control knobs' positions. */\n  setControlPositions() {\n    const { visuals, color, hsv } = this;\n    const { offsetHeight, offsetWidth } = visuals[0];\n    const alpha = color.a;\n    const hue = hsv.h;\n\n    const saturation = hsv.s;\n    const lightness = hsv.v;\n\n    this.controlPositions.c1x = saturation * offsetWidth;\n    this.controlPositions.c1y = (1 - lightness) * offsetHeight;\n    this.controlPositions.c2y = hue * offsetHeight;\n    this.controlPositions.c3y = (1 - alpha) * offsetHeight;\n  }\n\n  /** Update the visual appearance label and control knob labels. */\n  updateAppearance() {\n    const { componentLabels, color, parent, hsv, hex, format, controlKnobs } = this;\n    const { appearanceLabel, hexLabel, valueLabel } = componentLabels;\n    let { r, g, b } = color.toRgb();\n    const [knob1, knob2, knob3] = controlKnobs;\n    const hue = roundPart(hsv.h * 360);\n    const alpha = color.a;\n    const saturation = roundPart(hsv.s * 100);\n    const lightness = roundPart(hsv.v * 100);\n    const colorName = this.appearance;\n\n    let colorLabel = `${hexLabel} ${hex.split('').join(' ')}`;\n\n    if (format === 'hwb') {\n      const { hwb } = this;\n      const whiteness = roundPart(hwb.w * 100);\n      const blackness = roundPart(hwb.b * 100);\n      colorLabel = `HWB: ${hue}°, ${whiteness}%, ${blackness}%`;\n      setAttribute(knob1, ariaValueText, `${whiteness}% & ${blackness}%`);\n      setAttribute(knob1, ariaValueNow, `${whiteness}`);\n      setAttribute(knob2, ariaDescription, `${valueLabel}: ${colorLabel}. ${appearanceLabel}: ${colorName}.`);\n      setAttribute(knob2, ariaValueText, `${hue}%`);\n      setAttribute(knob2, ariaValueNow, `${hue}`);\n    } else {\n      [r, g, b] = [r, g, b].map(roundPart);\n      colorLabel = format === 'hsl' ? `HSL: ${hue}°, ${saturation}%, ${lightness}%` : colorLabel;\n      colorLabel = format === 'rgb' ? `RGB: ${r}, ${g}, ${b}` : colorLabel;\n\n      setAttribute(knob1, ariaValueText, `${lightness}% & ${saturation}%`);\n      setAttribute(knob1, ariaValueNow, `${lightness}`);\n      setAttribute(knob2, ariaDescription, `${valueLabel}: ${colorLabel}. ${appearanceLabel}: ${colorName}.`);\n      setAttribute(knob2, ariaValueText, `${hue}°`);\n      setAttribute(knob2, ariaValueNow, `${hue}`);\n    }\n\n    const alphaValue = roundPart(alpha * 100);\n    setAttribute(knob3, ariaValueText, `${alphaValue}%`);\n    setAttribute(knob3, ariaValueNow, `${alphaValue}`);\n\n    // update the input backgroundColor\n    const newColor = color.toString();\n    setElementStyle(this.input, { backgroundColor: newColor });\n\n    // toggle dark/light classes will also style the placeholder\n    // dark sets color white, light sets color black\n    // isDark ? '#000' : '#fff'\n    if (!this.isDark) {\n      if (hasClass(parent, 'txt-dark')) removeClass(parent, 'txt-dark');\n      if (!hasClass(parent, 'txt-light')) addClass(parent, 'txt-light');\n    } else {\n      if (hasClass(parent, 'txt-light')) removeClass(parent, 'txt-light');\n      if (!hasClass(parent, 'txt-dark')) addClass(parent, 'txt-dark');\n    }\n  }\n\n  /** Updates the control knobs actual positions. */\n  updateControls() {\n    const { controlKnobs, controlPositions } = this;\n    let { c1x, c1y, c2y, c3y } = controlPositions;\n    const [control1, control2, control3] = controlKnobs;\n    // round control positions\n    [c1x, c1y, c2y, c3y] = [c1x, c1y, c2y, c3y].map(roundPart);\n\n    setElementStyle(control1, {\n      transform: `translate3d(${c1x - 4}px,${c1y - 4}px,0)`,\n    });\n    setElementStyle(control2, { transform: `translate3d(0,${c2y - 4}px,0)` });\n    setElementStyle(control3, { transform: `translate3d(0,${c3y - 4}px,0)` });\n  }\n\n  /**\n   * Updates all color form inputs.\n   *\n   * @param isPrevented when `true`, the component original event is prevented\n   */\n  updateInputs(isPrevented?: boolean) {\n    const { value: oldColor, format, inputs, color, hsl } = this;\n    const [i1, i2, i3, i4] = inputs;\n    const alpha = roundPart(color.a * 100);\n    const hue = roundPart(hsl.h * 360);\n    let newColor = color.toString();\n\n    /* istanbul ignore else */\n    if (format === 'hex') {\n      newColor = this.color.toHexString(true);\n      i1.value = this.hex;\n    } else if (format === 'hsl') {\n      const lightness = roundPart(hsl.l * 100);\n      const saturation = roundPart(hsl.s * 100);\n      newColor = this.color.toHslString();\n      i1.value = `${hue}`;\n      i2.value = `${saturation}`;\n      i3.value = `${lightness}`;\n      i4.value = `${alpha}`;\n    } else if (format === 'hwb') {\n      const { w, b } = this.hwb;\n      const whiteness = roundPart(w * 100);\n      const blackness = roundPart(b * 100);\n\n      newColor = this.color.toHwbString();\n      i1.value = `${hue}`;\n      i2.value = `${whiteness}`;\n      i3.value = `${blackness}`;\n      i4.value = `${alpha}`;\n    } else if (format === 'rgb') {\n      let { r, g, b } = this.rgb;\n      [r, g, b] = [r, g, b].map(roundPart);\n\n      newColor = this.color.toRgbString();\n      i1.value = `${r}`;\n      i2.value = `${g}`;\n      i3.value = `${b}`;\n      i4.value = `${alpha}`;\n    }\n\n    // update the color value\n    this.value = newColor;\n\n    // don't trigger the custom event unless it's really changed\n    if (!isPrevented && newColor !== oldColor) {\n      firePickerChange(this);\n    }\n  }\n\n  /**\n   * Toggle the `ColorPicker` dropdown visibility.\n   *\n   * @param e\n   */\n  togglePicker = (e?: Event) => {\n    if (e) e.preventDefault();\n    const { colorPicker } = this;\n\n    if (this.isOpen && hasClass(colorPicker, 'show')) {\n      this.hide(true);\n    } else {\n      showDropdown(this, colorPicker);\n    }\n  };\n\n  /** Shows the `ColorPicker` dropdown. */\n  showPicker = () => {\n    const { colorPicker } = this;\n\n    if (!['top', 'bottom'].some(c => hasClass(colorPicker, c))) {\n      showDropdown(this, colorPicker);\n    }\n  };\n\n  /**\n   * Toggles the visibility of the `ColorPicker` presets menu.\n   *\n   * @param e\n   * @this {ColorPicker}\n   */\n  toggleMenu = (e?: Event) => {\n    if (e) e.preventDefault();\n    const { colorMenu } = this;\n\n    if (this.isOpen && hasClass(colorMenu, 'show')) {\n      this.hide(true);\n    } else {\n      showDropdown(this, colorMenu);\n    }\n  };\n\n  /**\n   * Hides the currently open `ColorPicker` dropdown.\n   *\n   * @param {boolean=} focusPrevented\n   */\n  hide(focusPrevented?: boolean) {\n    if (this.isOpen) {\n      const { pickerToggle, menuToggle, colorPicker, colorMenu, parent, input } = this;\n      const openPicker = hasClass(colorPicker, 'show');\n      const openDropdown = openPicker ? colorPicker : colorMenu;\n      const relatedBtn = openPicker ? pickerToggle : menuToggle;\n      const animationDuration = openDropdown && getElementTransitionDuration(openDropdown);\n\n      this.value = this.color.toString(true);\n\n      /* istanbul ignore else */\n      if (openDropdown) {\n        removeClass(openDropdown, 'show');\n        setAttribute(relatedBtn, ariaExpanded, 'false');\n        setTimeout(() => {\n          removePosition(openDropdown);\n          /* istanbul ignore else */\n          if (!querySelector('.show', parent)) {\n            removeClass(parent, 'open');\n            toggleEventsOnShown(this);\n            this.isOpen = false;\n          }\n        }, animationDuration);\n      }\n\n      if (!focusPrevented) {\n        focus(pickerToggle);\n      }\n      setAttribute(input, tabindex, '-1');\n      if (relatedBtn === menuToggle) {\n        setAttribute(menuToggle, tabindex, '-1');\n      }\n    }\n  }\n\n  /** Removes `ColorPicker` from target `<input>`. */\n  dispose() {\n    const { input, parent } = this;\n    this.hide(true);\n    toggleEvents(this);\n    [...parent.children].forEach(el => {\n      if (el !== input) el.remove();\n    });\n\n    removeAttribute(input, tabindex);\n    setElementStyle(input, { backgroundColor: '' });\n\n    ['txt-light', 'txt-dark'].forEach(c => removeClass(parent, c));\n    Data.remove(input, colorPickerString);\n  }\n}\n"],"names":["e","f","t","c","i","n","s","o","a","r","E","d","me","ge","Ee","Ae","Ne","ke","K","P","_","tt","st","rt","it","St","Nt","kt","Ct","zt","Bt","Re","Qe","je","qe","Ye","Ze","on","Rt","U","mn","jt","A","qt","S","z","x","M","Gt","Jt","Kt","Xt","Yt","kn","Dn","On","Ln","In","v","u","L","Bn","N","W","R","k","Zt","$t","Q","g","ne","Rn","V","w","oe","Qn","l","p","m","y","j","Jn","Yn","Zn","I","_n","h","T","B","H","b","ae","co","ie","le","Ao","ko","D","F","rr","tr","O","er","$","Z","J","G","X","C","Y","q","sr","ColorPalette","Color","args","hue","hueSteps","lightSteps","lightnessArray","saturation","colors","hueStep","half","steps1To13","lightSets","closestSet","set","lightStep","currentHue","newColor","colorPickerLabels","colorNames","isValidJSON","str","isString","vHidden","getColorForm","self","format","id","componentLabels","colorForm","createElement","components","toUpperCase","cID","formatLabel","cInputLabel","setAttribute","cInput","max","step","ObjectAssign","getColorControls","hueLabel","alphaLabel","lightnessLabel","saturationLabel","whitenessLabel","blacknessLabel","max1","max2","max3","ctrl1Label","ctrl2Label","colorControls","colorPointer","colorSlider","template","min","control","knob","getColorMenu","colorsSource","menuClass","input","defaultsLabel","presetsLabel","isOptionsMenu","isPalette","menuLabel","colorsArray","colorsCount","fit","isMultiLine","rowCountHover","rowCount","isScrollable","finalClass","gap","optionSize","menuHeight","menuHeightHover","menu","setElementStyle","value","label","isActive","getAttribute","option","setMarkup","parent","colorKeywords","colorPresets","colorValue","nonColors","toggleLabel","pickerLabel","hexLabel","color","formatString","pickerBtn","pickerDropdown","presetsDropdown","presetsBtn","xmlns","presetsIcon","createElementNS","ariaHidden","path","tabindex","colorPickerString","colorPickerSelector","colorPickerParentSelector","colorPickerDefaults","roundPart","getColorPickerInstance","element","getInstance","initColorPicker","ColorPicker","toggleEvents","action","fn","addListener","removeListener","pickerToggle","menuToggle","focusinEvent","mouseclickEvent","toggleEventsOnShown","colorMenu","doc","getDocument","win","getWindow","pointerdownEvent","keydownEvent","scrollEvent","resizeEvent","changeEvent","pointermoveEvent","pointerupEvent","focusoutEvent","keyupEvent","firePickerChange","dispatchEvent","removePosition","removeClass","showDropdown","dropdown","colorPicker","isPicker","openDropdown","activeBtn","nextBtn","hasClass","addClass","reflow","ariaExpanded","getBoundingClientRect","version","ObjectFromEntries","target","config","querySelector","closest","getUID","colorLabels","normalizeOptions","translatedColorLabels","isArray","tempComponentLabels","getElementsByClassName","controls","Data","brightness","inputValue","hsl","hsv","saturationSource","lightness","hsvl","colorName","isGold","isOlive","controlPositions","visuals","v1","v2","v3","offsetHeight","whiteGrad","alpha","roundA","fill","hueGradient","relatedTarget","code","keyEscape","activeElement","touchmoveEvent","previousElementSibling","nextElementSibling","parentElement","isColorOptionsMenu","allSiblings","columnsCount","getElementStyle","currentIndex","previousElement","nextElement","keyArrowDown","keyArrowUp","keySpace","focus","keyArrowLeft","keyArrowRight","keyEnter","newOption","currentActive","removeAttribute","ariaSelected","pageX","pageY","controlKnobs","c1","c2","c3","visual","visualRect","html","getDocumentElement","offsetX","offsetY","currentOpen","selection","dragElement","controlRect","offsetWidth","currentKnob","yRatio","xRatio","colorSource","inputs","currentValue","i1","i4","v4","isNonColorValue","elRect","top","bottom","elHeight","windowHeight","dropHeight","distanceBottom","distanceTop","bottomExceed","topExceed","hex","appearanceLabel","valueLabel","knob1","knob2","knob3","colorLabel","hwb","whiteness","blackness","ariaValueText","ariaValueNow","ariaDescription","alphaValue","c1x","c1y","c2y","c3y","control1","control2","control3","isPrevented","oldColor","i2","i3","focusPrevented","openPicker","relatedBtn","animationDuration","getElementTransitionDuration","el"],"mappings":"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,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACF;AAAA,EACD;AAAA,IACE;AAAA,IACA;AAAA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","x_google_ignoreList":[0,1,2]}
         
     |